From 3bbd9fdb44dc0e1d10f2e071e38bb72b6ca307e3 Mon Sep 17 00:00:00 2001 From: Serhii Mamontov Date: Mon, 7 Oct 2019 23:57:33 +0300 Subject: [PATCH 1/8] Add Message Actions API support (#174) * feat: add message actions Add Message Actions API support which allow to: add, remove and fetch previously added actions. feat: modify fetch messages endpoint to fetch message actions Add new arguments to fetch messages function which allow to fetch previously added actions and message metadata. feat: add new event handler for message actions Add new handler which can be used to track message actions addition / removal events. --- .pubnub.yml | 574 +++++++++--------- src/core/components/endpoint.js | 3 +- src/core/components/listener_manager.js | 7 + src/core/components/subscription_manager.js | 20 + src/core/constants/operations.js | 5 + .../endpoints/actions/add_message_action.js | 71 +++ .../endpoints/actions/get_message_actions.js | 70 +++ .../actions/remove_message_action.js | 57 ++ src/core/endpoints/fetch_messages.js | 28 +- src/core/endpoints/history/get_history.js | 6 + src/core/flow_interfaces.js | 72 ++- src/core/pubnub-common.js | 31 + src/nativescript/index.js | 4 +- src/networking/modules/web-node.js | 6 + .../endpoints/fetch_messages.test.js | 179 +++++- .../integration/endpoints/grant_token.test.js | 2 +- test/integration/endpoints/history.test.js | 70 ++- .../endpoints/message_actions.test.js | 534 ++++++++++++++++ test/unit/networking.test.js | 14 +- 19 files changed, 1437 insertions(+), 316 deletions(-) create mode 100644 src/core/endpoints/actions/add_message_action.js create mode 100644 src/core/endpoints/actions/get_message_actions.js create mode 100644 src/core/endpoints/actions/remove_message_action.js create mode 100644 test/integration/endpoints/message_actions.test.js diff --git a/.pubnub.yml b/.pubnub.yml index 21fcc5126..b90ad824a 100644 --- a/.pubnub.yml +++ b/.pubnub.yml @@ -1,660 +1,660 @@ ---- -changelog: - - - changes: - - +--- +changelog: + - + changes: + - text: "Ensures history response is an array before iterating it" type: bug date: 2019-09-27 version: v4.26.1 - - - changes: - - + - + changes: + - text: "Add support for auth tokens with Objects for Users, Spaces and Memberships" type: bug date: 2019-09-20 version: v4.26.0 - - - changes: - - + - + changes: + - text: "Fix issue with subdomains ending in 'ps'" type: bug date: 2019-09-03 version: v4.25.2 - - - changes: - - + - + changes: + - text: "Fix titanium build to support recent version" type: bug date: 2019-08-23 version: v4.25.1 - - - changes: - - + - + changes: + - text: "Add Objects support for Users, Spaces and Memberships" type: improvement date: 2019-08-16 version: v4.25.0 - - - changes: - - + - + changes: + - text: "Fix regression: 'PubNub is not a constructor' in Node.js" type: bug date: 2019-08-09 version: v4.24.6 - - - changes: - - + - + changes: + - text: "Add Signals support" type: improvement date: 2019-08-07 version: v4.24.5 - - - changes: - - + - + changes: + - text: "Add minimum presence timeout" type: improvement date: 2019-07-26 version: v4.24.4 - - - changes: - - + - + changes: + - text: "Added support to enable heartbeat requests while subscribe when heartbeat interval is provided" type: improvement date: 2019-06-19 version: v4.24.3 - - - changes: - - + - + changes: + - text: "Added try catch block to handle exception for JSON.parse function" type: improvement - - + - text: "Updated default origin to ps.pndsn.com" type: improvement date: 2019-06-13 version: v4.24.2 - - - changes: - - + - + changes: + - text: "Maintains the state when the presence heartbeat is explicitly disabled" type: improvement date: 2019-06-06 version: v4.24.1 - - - changes: - - + - + changes: + - text: "Disables the presence heartbeat by default when a subscribe is called. Presence heartbeat can still be enabled explicitly." type: improvement date: 2019-05-09 version: v4.24.0 - - - changes: - - + - + changes: + - text: "The `timetoken` parameter is deprecated in the `message-counts` function. Use 'channelTimetokens' instead, pass one value in 'channelTimetokens' to achieve the same results." type: improvement date: 2019-03-14 version: v4.23.0 - - - changes: - - + - + changes: + - text: "message counts" type: feature - - + - text: "use null instead of '' for NativeScript networking module" type: improvement date: 2019-03-04 version: v4.22.0 - - - changes: - - + - + changes: + - text: "update dependencies" type: improvement - - + - text: "fix flow process on nativescript" type: improvement date: 2018-12-20 version: v4.21.7 - - - changes: - - + - + changes: + - text: "fix POST for nativescript adapter over android" type: bug date: 2018-10-04 version: v4.21.6 - - - changes: - - + - + changes: + - text: "update dependencies" type: improvement date: 2018-08-06 version: v4.21.5 - - - changes: - - + - + changes: + - text: "return error parameter into errorData when logVerbosity = true" type: improvement date: 2018-08-04 version: v4.21.4 - - - changes: - - + - + changes: + - text: "update dependencies" type: improvement date: 2018-07-10 version: v4.21.3 - - - changes: - - + - + changes: + - text: "add stringifiedTimeToken into the fetch endpoint" type: improvement date: 2018-06-12 version: v4.21.2 - - - changes: - - + - + changes: + - text: "avoid security vulnerability in growl < 1.10.0" type: bug date: 2018-06-08 version: v4.21.1 - - - changes: - - + - + changes: + - text: "subscribe without using the heartbeat loop with flag withHeartbeats = false" type: feature date: 2018-06-06 version: v4.21.0 - - - changes: - - + - + changes: + - text: "fix timetoken announces" type: bug - - + - text: "categorize ETIMEDOUT errors as PNNetworkIssuesCategory" type: improvement date: 2018-04-24 version: v4.20.3 - - - changes: - - + - + changes: + - text: "fix signature to delete message" type: bug date: 2018-02-28 version: v4.20.2 - - - changes: - - + - + changes: + - text: "allow set ssl to false for nodejs" type: improvement date: 2018-01-29 version: v4.20.1 - - - changes: - - + - + changes: + - text: "add support for heartbeat sending without subscription via .presence()" type: feature - - + - text: "add method setProxy for Nodejs" type: feature - - + - text: "set ssl to true for nodejs by default" type: feature date: 2018-01-04 version: v4.20.0 - - - changes: - - + - + changes: + - text: "add support for Native Script" type: feature - - + - text: "add missing flow types" type: improvement - - + - text: "upgrade superagent to ^3.8.1" type: improvement date: 2017-12-05 version: v4.19.0 - - - changes: - - + - + changes: + - text: "keepAlive is now initialized globally instead of per-call, allowing better connection reuse" type: improvement - - + - text: "added sdkName configuration parameter which allow completely override pnsdk in request query" type: feature date: 2017-11-20 version: v4.18.0 - - - changes: - - + - + changes: + - text: "allow disabling of heartbeats by passing 0 during initialization." type: improvement date: 2017-10-19 version: v4.17.0 - - - changes: - - + - + changes: + - text: "fix UUID library to work in browsers." type: bug date: 2017-10-19 version: v4.16.2 - - - changes: - - + - + changes: + - text: "fix incorrect packaging of lil-uuid and uuid" type: bug date: 2017-10-12 version: v4.16.1 - - - changes: - - + - + changes: + - text: "support delete messages from history" type: feature - - + - text: "swap uuid generator with support for IE9 and IE10" type: improvement date: 2017-10-10 version: v4.16.0 - - - changes: - - + - + changes: + - text: "fix typo to enable http keep alive support" type: improvement date: 2017-08-21 version: v4.15.1 - - - changes: - - + - + changes: + - text: "Support optional message deduping via the dedupeOnSubscribe config" type: improvement - - + - text: "Do not issue leave events if the channel mix is empty." type: improvement date: 2017-08-21 version: v4.15.0 - - - changes: - - + - + changes: + - text: "Allow disable of heartbeats by passing heartbeatInterval = 0" type: improvement date: 2017-08-14 version: v4.14.0 - - - changes: - - + - + changes: + - text: "patch up 503 reporting" type: improvement - - + - text: "fix issue with where now and invalid server response" type: improvement - - + - text: "fix issue with here now and invalid server response" type: improvement date: 2017-07-27 version: v4.13.0 - - - changes: - - + - + changes: + - text: "fix issue of net with android for titanium" type: improvement - - + - text: "add additional hooks for connectivity" type: feature - - + - text: "add auto network detection" type: feature date: 2017-06-19 version: v4.12.0 - - - changes: - - + - + changes: + - text: "fix issue of net with android for react-native" type: improvement date: 2017-05-23 version: v4.10.0 - - - changes: - - + - + changes: + - text: "metadata is now passed on message envelope" type: feature date: ~ version: v4.9.2 - - - changes: - - + - + changes: + - text: "add support custom encryption and decryption" type: feature date: 2017-05-18 version: v4.9.1 - - - changes: - - + - + changes: + - text: "integrate fetch for react-native SDK" type: feature - - + - text: "announce when subscription get reactivated" type: improvement - - + - text: "stop heartbeats for responses with status PNBadRequestCategory" type: improvement date: ~ version: v4.9.0 - - - changes: - - + - + changes: + - text: "allow manual control over network state via listenToBrowserNetworkEvents" type: feature date: 2017-04-06 version: v4.8.0 - - - changes: - - + - + changes: + - text: "add support for titanium SDK" type: feature - - + - text: "fix support for react-native SDK" type: improvement - - + - text: "add validation for web distribution" type: improvement date: 2017-03-30 version: v4.7.0 - - - changes: - - + - + changes: + - text: "add support for presence deltas." type: feature - - + - text: "keep track of new and upcoming timetokens on status messages" type: feature date: 2017-03-27 version: v4.6.0 - - - changes: - - + - + changes: + - text: "add optional support for keepAlive by passing the keepAlive config into the init logic" type: feature date: 2017-03-08 version: v4.5.0 - - - changes: - - + - + changes: + - text: "add guard to check for channel or channel group on state setting" type: improvement - - + - text: "add guard to check for publish, secret keys when performing a grant" type: improvement date: 2017-02-14 version: v4.4.4 - - - changes: - - + - + changes: + - text: "downgrade superagent to v2; add new entry point for react native." type: improvement date: 2017-02-07 version: v4.4.3 - - - changes: - - + - + changes: + - text: "adjust compilation for webpack based compilations" type: improvement date: 2017-01-31 version: v4.4.2 - - - changes: - - + - + changes: + - text: "proxy support for node" type: improvement date: 2017-01-31 version: v4.4.1 - - - changes: - - + - + changes: + - text: "upgrade dependencies; fix up linting." type: improvement - - + - text: "handle network outage cases for correct reporting." type: improvement date: 2017-01-23 version: v4.4.0 - - - changes: - - + - + changes: + - text: "bump version after v3 release." type: improvement date: 2016-12-16 version: v4.3.3 - - - changes: - - + - + changes: + - text: "removes bundling of package.json into the dist file" type: improvement date: 2016-11-28 version: v4.3.2 - - - changes: - - + - + changes: + - text: "SDK now supports the restore config to allow message catch-up" type: improvement date: 2016-11-22 version: v4.3.1 - - - changes: - - + - + changes: + - text: "bulk history exposed via pubnub.fetchMessages" type: improvement - - + - text: "publish supports custom ttl interval" type: improvement - - + - text: "v2 for audit and grant; no consumer facing changes." type: improvement - - + - text: "fixes for param validation on usage of promises" type: improvement date: 2016-11-18 version: v4.3.0 - - - changes: - - + - + changes: + - text: "SDK reports on the id of the publisher in the message" type: improvement date: 2016-11-04 version: v4.2.5 - - - changes: - - + - + changes: + - text: "Detection of support of promises improved." type: improvement date: 2016-11-01 version: v4.2.4 - - - changes: - - + - + changes: + - text: "Fixes on encoding of apostraphes." type: improvement date: 2016-11-01 version: v4.2.3 - - - changes: - - + - + changes: + - text: "Add promise support on setState operation (@jskrzypek)" type: improvement - - + - text: "Add hooks to stop polling time when the number of subscriptions drops to 0 (@jasonpoe)" type: improvement date: 2016-10-31 version: v4.2.2 - - - changes: - - + - + changes: + - text: "Encode signatures to avoid sending restricted characters" type: improvement date: 2016-10-30 version: v4.2.1 - - - changes: - - + - + changes: + - text: "Add optional support for promises on all endpoints." type: improvement - - + - text: "History always returns timetokens in the payloads." type: improvement - - + - text: "Optionally, if queue size is set, send status on queue size threshold" type: improvement date: 2016-10-26 version: v4.2.0 - - - changes: - - + - + changes: + - text: "Fix state setting for channels with reserved tags." type: improvement date: 2016-10-17 version: v4.1.1 - - - changes: - - + - + changes: + - text: "Reset timetoken when all unsubscribes happen" type: improvement - - + - text: "Sign requests when a a secret key is passed" type: improvement date: 2016-10-13 version: v4.1.0 - - - changes: - - + - + changes: + - text: "Propogate status events to the status callback on subscribe operations." type: improvement date: 2016-10-05 version: v4.0.13 - - - changes: - - + - + changes: + - text: "affectedChannels and affectedChannelGroups are now populated on subscribe / unsubscribe events" type: improvement date: 2016-10-03 version: v4.0.12 - - - changes: - - + - + changes: + - text: "Dependency upgrades" type: improvement date: 2016-09-27 version: v4.0.11 - - - changes: - - + - + changes: + - text: "Expose decryption and encryption as a global" type: improvement date: 2016-09-14 version: v4.0.10 - - - changes: - - + - + changes: + - text: "Channel / subscription items are populated in" type: improvement - - + - text: "Constants for operation and category are exposed on global object" type: improvement date: 2016-09-09 version: v4.0.9 - - - changes: - - + - + changes: + - text: "Re-publish of v4.0.7" type: improvement date: 2016-08-25 version: v4.0.8 - - - changes: - - + - + changes: + - text: "Dependency upgrades" type: improvement - - + - text: "Try..catch wrapped around localStorage for iframe compliance" type: improvement date: 2016-08-25 version: v4.0.7 - - - changes: - - + - + changes: + - text: "Adjustment of reconnection policies for web distributions." type: improvement - - + - text: "PNSDK support for partner identification" type: improvement date: 2016-08-18 version: v4.0.6 - - - changes: - - + - + changes: + - text: "Stop exposing .babelrc which causes unpredictable behavior on react native." type: improvement date: 2016-08-10 version: v4.0.5 - - - changes: - - + - + changes: + - text: "Adjust handling of presence payloads for state settings." type: improvement - - + - text: "Exposing generateUUID method to create uuids." type: feature - - + - text: "Triggering disconnect, reconnect events on Web distributions." type: improvement - - + - text: "React Native adjustments to package.json information." type: improvement date: 2016-08-09 version: v4.0.4 - - - changes: - - + - + changes: + - text: "Global Here Now parsing adjustments." type: improvement date: 2016-08-07 version: v4.0.3 - - - changes: - - + - + changes: + - text: "Adjustments to internet disconnects on node." type: improvement date: 2016-08-03 version: v4.0.2 - - - changes: - - + - + changes: + - text: "Fixes to avoid double encoding on JSON payloads." type: bug date: 2016-08-01 version: v4.0.1 - - - changes: - - + - + changes: + - text: "New iteration of JS / Node SDK family" type: feature version: v4.0.0 -features: - access: +features: + access: - ACCESS-GRANT - ACCESS-SECRET-KEY-ALL-ACCESS - ACCESS-GRANT-TOKEN - channel-groups: + channel-groups: - CHANNEL-GROUPS-ADD-CHANNELS - CHANNEL-GROUPS-REMOVE-CHANNELS - CHANNEL-GROUPS-REMOVE-GROUPS - CHANNEL-GROUPS-LIST-CHANNELS-IN-GROUP - notify: + notify: - REQUEST-MESSAGE-COUNT-EXCEEDED - presence: + presence: - PRESENCE-HERE-NOW - PRESENCE-WHERE-NOW - PRESENCE-SET-STATE - PRESENCE-GET-STATE - PRESENCE-HEARTBEAT - publish: + publish: - PUBLISH-STORE-FLAG - PUBLISH-RAW-JSON - PUBLISH-WITH-METADATA @@ -664,12 +664,12 @@ features: - PUBLISH-FIRE - PUBLISH-REPLICATION-FLAG - PUBLISH-MESSAGE-TTL - push: + push: - PUSH-ADD-DEVICE-TO-CHANNELS - PUSH-REMOVE-DEVICE-FROM-CHANNELS - PUSH-LIST-CHANNELS-FROM-DEVICE - PUSH-REMOVE-DEVICE - storage: + storage: - STORAGE-REVERSE - STORAGE-INCLUDE-TIMETOKEN - STORAGE-START-END @@ -677,7 +677,10 @@ features: - STORAGE-DELETE-MESSAGES - STORAGE-FETCH-MESSAGES - STORAGE-MESSAGE-COUNT - subscribe: + - STORAGE-HISTORY-WITH-META + - STORAGE-FETCH-WITH-META + - STORAGE-FETCH-WITH-MESSAGE-ACTIONS + subscribe: - SUBSCRIBE-CHANNELS - SUBSCRIBE-CHANNEL-GROUPS - SUBSCRIBE-PRESENCE-CHANNELS @@ -690,6 +693,7 @@ features: - SUBSCRIBE-USER-LISTENER - SUBSCRIBE-SPACE-LISTENER - SUBSCRIBE-MEMBERSHIP-LISTENER + - SUBSCRIBE-MESSAGE-ACTIONS-LISTENER signal: - SIGNAL-SEND objects: @@ -711,7 +715,11 @@ features: - OBJECTS-ADD-MEMBERS - OBJECTS-UPDATE-MEMBERS - OBJECTS-REMOVE-MEMBERS - time: + message-actions: + - MESSAGE-ACTIONS-GET + - MESSAGE-ACTIONS-ADD + - MESSAGE-ACTIONS-REMOVE + time: - TIME-TIME token-management: - TOKEN-PARSE-TOKEN @@ -720,18 +728,18 @@ features: - TOKEN-GET-TOKEN - TOKEN-GET-TOKENS - TOKEN-CLEAR-TOKENS -files: +files: - dist/web/pubnub.js - dist/web/pubnub.min.js name: javascript schema: 1 scm: github.com/pubnub/javascript -supported-platforms: - - - frameworks: +supported-platforms: + - + frameworks: - "Angular 1" - "Angular 2 using Javascript Plain" - platforms: + platforms: - "Safari 10 and up" - "Mozilla Firefox 51 and up" - "Google Chrome 56 and up" @@ -739,15 +747,15 @@ supported-platforms: - "IE 9 and up" - "Microsoft Edge 38 and up" version: "Pubnub Javascript for Web" - - - editors: + - + editors: - 0.12 - 4 - 5 - 6 - 7 - 8 - platforms: + platforms: - "OSX 10.12 and up" - "Ubuntu 14.04 and above" - "Windows 7, 8, 10" diff --git a/src/core/components/endpoint.js b/src/core/components/endpoint.js index 948617e57..ecbccb31b 100644 --- a/src/core/components/endpoint.js +++ b/src/core/components/endpoint.js @@ -138,7 +138,8 @@ export default function(modules, endpoint, ...args) { let callInstance; let networkingParams = { url, operation: endpoint.getOperation(), - timeout: endpoint.getRequestTimeout(modules) + timeout: endpoint.getRequestTimeout(modules), + headers: endpoint.getRequestHeaders ? endpoint.getRequestHeaders() : {} }; outgoingParams.uuid = config.UUID; diff --git a/src/core/components/listener_manager.js b/src/core/components/listener_manager.js index 9be731ed3..9e0957f72 100644 --- a/src/core/components/listener_manager.js +++ b/src/core/components/listener_manager.js @@ -3,6 +3,7 @@ import { MessageAnnouncement, StatusAnnouncement, SignalAnnouncement, + MessageActionAnnouncement, ObjectAnnouncement, CallbackStruct, PresenceAnnouncement, @@ -58,6 +59,12 @@ export default class { }); } + announceMessageAction(announce: MessageActionAnnouncement) { + this._listeners.forEach((listener) => { + if (listener.messageAction) listener.messageAction(announce); + }); + } + announceUser(announce: ObjectAnnouncement) { this._listeners.forEach((listener) => { if (listener.user) listener.user(announce); diff --git a/src/core/components/subscription_manager.js b/src/core/components/subscription_manager.js index 9d2e70eba..c6ef782dd 100644 --- a/src/core/components/subscription_manager.js +++ b/src/core/components/subscription_manager.js @@ -6,6 +6,7 @@ import ReconnectionManager from '../components/reconnection_manager'; import DedupingManager from '../components/deduping_manager'; import utils from '../utils'; import { + MessageActionAnnouncement, MessageAnnouncement, SignalAnnouncement, ObjectAnnouncement, @@ -673,6 +674,25 @@ export default class { } else if (message.payload.type === 'membership') { this._listenerManager.announceMembership(announce); } + } else if (message.messageType === 3) { + // this is a message action + let announce: MessageActionAnnouncement = {}; + announce.channel = channel; + announce.subscription = subscriptionMatch; + announce.timetoken = publishMetaData.publishTimetoken; + announce.publisher = message.issuingClientId; + + announce.data = { + messageTimetoken: message.payload.data.messageTimetoken, + actionTimetoken: message.payload.data.actionTimetoken, + type: message.payload.data.type, + uuid: message.issuingClientId, + value: message.payload.data.value, + }; + + announce.event = message.payload.event; + + this._listenerManager.announceMessageAction(announce); } else { let announce: MessageAnnouncement = {}; announce.channel = null; diff --git a/src/core/constants/operations.js b/src/core/constants/operations.js index 6632efb7e..a7cbf8ea6 100644 --- a/src/core/constants/operations.js +++ b/src/core/constants/operations.js @@ -13,6 +13,11 @@ export default { PNPublishOperation: 'PNPublishOperation', PNSignalOperation: 'PNSignalOperation', + // Actions API + PNAddMessageActionOperation: 'PNAddActionOperation', + PNRemoveMessageActionOperation: 'PNRemoveMessageActionOperation', + PNGetMessageActionsOperation: 'PNGetMessageActionsOperation', + // Objects API PNCreateUserOperation: 'PNCreateUserOperation', diff --git a/src/core/endpoints/actions/add_message_action.js b/src/core/endpoints/actions/add_message_action.js new file mode 100644 index 000000000..33df5c8eb --- /dev/null +++ b/src/core/endpoints/actions/add_message_action.js @@ -0,0 +1,71 @@ +/* @flow */ + +import { + AddMessageActionInput, + AddMessageActionResponse, + ModulesInject, +} from '../../flow_interfaces'; +import operationConstants from '../../constants/operations'; + + +export function getOperation(): string { + return operationConstants.PNAddMessageActionOperation; +} + +export function validateParams( + { config }: ModulesInject, + incomingParams: AddMessageActionInput +) { + let { action, channel, messageTimetoken } = incomingParams; + + if (!messageTimetoken) return 'Missing message timetoken'; + if (!config.subscribeKey) return 'Missing Subscribe Key'; + if (!channel) return 'Missing message channel'; + if (!action) return 'Missing Action'; + if (!action.value) return 'Missing Action.value'; + if (!action.type) return 'Missing Action.type'; + if (action.type.length > 15) return 'Action.type value exceed maximum length of 15'; +} + +export function usePost() { + return true; +} + +export function postURL( + { config }: ModulesInject, + incomingParams: AddMessageActionInput +): string { + let { channel, messageTimetoken } = incomingParams; + + return `/v1/message-actions/${config.subscribeKey}/channel/${channel}/message/${messageTimetoken}`; +} + +export function getRequestTimeout({ config }: ModulesInject) { + return config.getTransactionTimeout(); +} + +export function getRequestHeaders(): Object { + return { 'Content-Type': 'application/json' }; +} + +export function isAuthSupported() { + return true; +} + +export function prepareParams(): Object { + return {}; +} + +export function postPayload( + modules: ModulesInject, + incomingParams: AddMessageActionInput +): string { + return incomingParams.action; +} + +export function handleResponse( + modules: ModulesInject, + addMessageActionResponse: Object +): AddMessageActionResponse { + return { data: addMessageActionResponse.data }; +} diff --git a/src/core/endpoints/actions/get_message_actions.js b/src/core/endpoints/actions/get_message_actions.js new file mode 100644 index 000000000..8b59add31 --- /dev/null +++ b/src/core/endpoints/actions/get_message_actions.js @@ -0,0 +1,70 @@ +/* @flow */ + +import { + GetMessageActionsInput, + GetMessageActionsResponse, + ModulesInject, +} from '../../flow_interfaces'; +import operationConstants from '../../constants/operations'; + + +export function getOperation(): string { + return operationConstants.PNGetMessageActionsOperation; +} + +export function validateParams( + { config }: ModulesInject, + incomingParams: GetMessageActionsInput +) { + let { channel } = incomingParams; + + if (!config.subscribeKey) return 'Missing Subscribe Key'; + if (!channel) return 'Missing message channel'; +} + + +export function getURL( + { config }: ModulesInject, + incomingParams: GetMessageActionsInput +): string { + let { channel } = incomingParams; + + return `/v1/message-actions/${config.subscribeKey}/channel/${channel}`; +} + +export function getRequestTimeout({ config }: ModulesInject) { + return config.getTransactionTimeout(); +} + +export function isAuthSupported() { + return true; +} + +export function prepareParams( + modules: ModulesInject, + incomingParams: GetMessageActionsInput +): Object { + const { limit, start, end } = incomingParams; + let outgoingParams: Object = {}; + + if (limit) outgoingParams.limit = limit; + if (start) outgoingParams.start = start; + if (end) outgoingParams.end = end; + + return outgoingParams; +} + +export function handleResponse( + modules: ModulesInject, + getMessageActionsResponse: Object +): GetMessageActionsResponse { + /** @type GetMessageActionsResponse */ + let response = { data: getMessageActionsResponse.data }; + + if (response.data.length) { + response.end = response.data[response.data.length - 1].actionTimetoken; + response.start = response.data[0].actionTimetoken; + } + + return response; +} diff --git a/src/core/endpoints/actions/remove_message_action.js b/src/core/endpoints/actions/remove_message_action.js new file mode 100644 index 000000000..bb7eda612 --- /dev/null +++ b/src/core/endpoints/actions/remove_message_action.js @@ -0,0 +1,57 @@ +/* @flow */ + +import { + RemoveMessageActionInput, + RemoveMessageActionResponse, + ModulesInject, +} from '../../flow_interfaces'; +import operationConstants from '../../constants/operations'; + + +export function getOperation(): string { + return operationConstants.PNRemoveMessageActionOperation; +} + +export function validateParams( + { config }: ModulesInject, + incomingParams: RemoveMessageActionInput +) { + let { channel, actionTimetoken, messageTimetoken } = incomingParams; + + if (!messageTimetoken) return 'Missing message timetoken'; + if (!actionTimetoken) return 'Missing action timetoken'; + if (!config.subscribeKey) return 'Missing Subscribe Key'; + if (!channel) return 'Missing message channel'; +} + +export function useDelete() { + return true; +} + +export function getURL( + { config }: ModulesInject, + incomingParams: RemoveMessageActionInput +): string { + let { channel, actionTimetoken, messageTimetoken } = incomingParams; + + return `/v1/message-actions/${config.subscribeKey}/channel/${channel}/message/${messageTimetoken}/action/${actionTimetoken}`; +} + +export function getRequestTimeout({ config }: ModulesInject) { + return config.getTransactionTimeout(); +} + +export function isAuthSupported() { + return true; +} + +export function prepareParams(): Object { + return {}; +} + +export function handleResponse( + modules: ModulesInject, + removeMessageActionResponse: Object +): RemoveMessageActionResponse { + return { data: removeMessageActionResponse.data }; +} diff --git a/src/core/endpoints/fetch_messages.js b/src/core/endpoints/fetch_messages.js index 6a75c36e3..0d28b4bc2 100644 --- a/src/core/endpoints/fetch_messages.js +++ b/src/core/endpoints/fetch_messages.js @@ -29,22 +29,27 @@ export function validateParams( modules: ModulesInject, incomingParams: FetchMessagesArguments ) { - let { channels } = incomingParams; + let { channels, includeMessageActions = false } = incomingParams; let { config } = modules; if (!channels || channels.length === 0) return 'Missing channels'; if (!config.subscribeKey) return 'Missing Subscribe Key'; + + if (includeMessageActions && channels.length > 1) { + throw new TypeError('History can return actions data for a single channel only. Either pass a single channel or disable the includeMessageActions flag.'); + } } export function getURL( modules: ModulesInject, incomingParams: FetchMessagesArguments ): string { - let { channels = [] } = incomingParams; + let { channels = [], includeMessageActions = false } = incomingParams; let { config } = modules; + const endpoint = !includeMessageActions ? 'history' : 'history-with-actions'; let stringifiedChannels = channels.length > 0 ? channels.join(',') : ','; - return `/v3/history/sub-key/${ + return `/v3/${endpoint}/sub-key/${ config.subscribeKey }/channel/${utils.encodeString(stringifiedChannels)}`; } @@ -61,13 +66,20 @@ export function prepareParams( modules: ModulesInject, incomingParams: FetchMessagesArguments ): Object { - const { start, end, count, stringifiedTimeToken = false } = incomingParams; + const { + start, + end, + count, + stringifiedTimeToken = false, + includeMeta = false, + } = incomingParams; let outgoingParams: Object = {}; if (count) outgoingParams.max = count; if (start) outgoingParams.start = start; if (end) outgoingParams.end = end; if (stringifiedTimeToken) outgoingParams.string_message_token = 'true'; + if (includeMeta) outgoingParams.include_meta = 'true'; return outgoingParams; } @@ -89,6 +101,14 @@ export function handleResponse( announce.subscription = null; announce.timetoken = messageEnvelope.timetoken; announce.message = __processMessage(modules, messageEnvelope.message); + + if (messageEnvelope.actions) { + announce.data = messageEnvelope.actions; + } + if (messageEnvelope.meta) { + announce.meta = messageEnvelope.meta; + } + response.channels[channelName].push(announce); }); }); diff --git a/src/core/endpoints/history/get_history.js b/src/core/endpoints/history/get_history.js index 2a9b4c96a..7dfe2bd97 100644 --- a/src/core/endpoints/history/get_history.js +++ b/src/core/endpoints/history/get_history.js @@ -64,6 +64,7 @@ export function prepareParams( reverse, count = 100, stringifiedTimeToken = false, + includeMeta = false, } = incomingParams; let outgoingParams: Object = { include_token: 'true', @@ -74,6 +75,7 @@ export function prepareParams( if (end) outgoingParams.end = end; if (stringifiedTimeToken) outgoingParams.string_message_token = 'true'; if (reverse != null) outgoingParams.reverse = reverse.toString(); + if (includeMeta) outgoingParams.include_meta = 'true'; return outgoingParams; } @@ -95,6 +97,10 @@ export function handleResponse( entry: __processMessage(modules, serverHistoryItem.message), }; + if (serverHistoryItem.meta) { + item.meta = serverHistoryItem.meta; + } + response.messages.push(item); }); } diff --git a/src/core/flow_interfaces.js b/src/core/flow_interfaces.js index b1427f448..503cfdadb 100644 --- a/src/core/flow_interfaces.js +++ b/src/core/flow_interfaces.js @@ -10,7 +10,12 @@ declare module 'superagent' { export type CallbackStruct = { status: Function, presence: Function, - message: Function + message: Function, + signal: Function, + messageAction: Function, + user: Function, + space: Function, + membership: Function } export type ProxyStruct = { @@ -77,8 +82,9 @@ type SupportedParams = { uuid: EndpointKeyDefinition, } -export type endpointDefinition = { +export type EndpointDefinition = { params: SupportedParams, + headers?: Object, timeout: number, url: string } @@ -216,6 +222,7 @@ type FetchHistoryArguments = { start: number | string, // start timetoken for history fetching end: number | string, // end timetoken for history fetching includeTimetoken: boolean, // include time token for each history call + includeMeta: boolean, // include message meta for each history entry reverse: boolean, count: number } @@ -231,11 +238,14 @@ type FetchMessagesArguments = { channels: string, // fetch history from a channel start: number | string, // start timetoken for history fetching end: number | string, // end timetoken for history fetching + includeMeta: boolean, // include message meta for each history entry + includeMessageActions: boolean, // include message actions for each history entry count: number } type HistoryItem = { timetoken: number | string | null, + meta: Object | null, entry: any, } @@ -494,6 +504,64 @@ type SignalArguments = { channel: string } +// Actions + +interface MessageAction { + type: string, + value: string, +} + +interface PublishedMessageAction extends MessageAction { + messageTimetoken: string, + actionTimetoken: string, + uuid: string, +} + +type MessageActionAnnouncement = { + data: PublishedMessageAction, + event: string, + + channel: string, + subscription: string, + + timetoken: number | string, + userMetadata: Object, + publisher: string +} + +interface AddMessageActionInput { + messageTimetoken: string, + channel: string, + action: MessageAction, +} + +interface AddMessageActionResponse { + data: PublishedMessageAction, +} + +interface RemoveMessageActionInput { + messageTimetoken: string, + actionTimetoken: string, + channel: string, +} + +interface RemoveMessageActionResponse { + data: {}, +} + +interface GetMessageActionsInput { + channel: string, + start?: number | string, + end?: number | string, + limit?: number, +} + +interface GetMessageActionsResponse { + data: Array, + start?: string, + end?: string, +} + // Users Object type UserListInput = { diff --git a/src/core/pubnub-common.js b/src/core/pubnub-common.js index cdbc5942f..c7b501c1c 100644 --- a/src/core/pubnub-common.js +++ b/src/core/pubnub-common.js @@ -26,6 +26,12 @@ import * as presenceGetStateConfig from './endpoints/presence/get_state'; import * as presenceSetStateConfig from './endpoints/presence/set_state'; import * as presenceHereNowConfig from './endpoints/presence/here_now'; +// Actions API + +import * as addMessageActionEndpointConfig from './endpoints/actions/add_message_action'; +import * as removeMessageActionEndpointConfig from './endpoints/actions/remove_message_action'; +import * as getMessageActionEndpointConfig from './endpoints/actions/get_message_actions'; + // Objects API import * as createUserEndpointConfig from './endpoints/users/create_user'; @@ -101,6 +107,11 @@ export default class { unsubscribe: Function; unsubscribeAll: Function; + // Actions API + addMessageAction: Function; + removeMessageAction: Function; + getMessageActions: Function; + // Objects API createUser: Function; @@ -304,6 +315,26 @@ export default class { fetchMessagesEndpointConfig ); + // Actions API + + this.addMessageAction = endpointCreator.bind( + this, + modules, + addMessageActionEndpointConfig + ); + + this.removeMessageAction = endpointCreator.bind( + this, + modules, + removeMessageActionEndpointConfig + ); + + this.getMessageActions = endpointCreator.bind( + this, + modules, + getMessageActionEndpointConfig + ); + // Objects API this.createUser = endpointCreator.bind( diff --git a/src/nativescript/index.js b/src/nativescript/index.js index 3e12b1b58..2b7b1aaa3 100644 --- a/src/nativescript/index.js +++ b/src/nativescript/index.js @@ -3,13 +3,13 @@ import PubNubCore from '../core/pubnub-common'; import Networking from '../networking'; import Database from '../db/common'; -import { del, get, post } from '../networking/modules/nativescript'; +import { del, get, post, patch } from '../networking/modules/nativescript'; import { InternalSetupStruct } from '../core/flow_interfaces'; export default class extends PubNubCore { constructor(setup: InternalSetupStruct) { setup.db = new Database(); - setup.networking = new Networking({ del, get, post }); + setup.networking = new Networking({ del, get, post, patch }); setup.sdkFamily = 'NativeScript'; super(setup); } diff --git a/src/networking/modules/web-node.js b/src/networking/modules/web-node.js index 355afea60..27d39a80b 100644 --- a/src/networking/modules/web-node.js +++ b/src/networking/modules/web-node.js @@ -101,6 +101,8 @@ function xdr( status.error = true; status.category = this._detectErrorCategory(status); return callback(status, null); + } else if (parsedResponse.error && parsedResponse.error.message) { + status.errorData = parsedResponse.error; } return callback(status, parsedResponse); @@ -114,6 +116,7 @@ export function get( ): superagent { let superagentConstruct = superagent .get(this.getStandardOrigin() + endpoint.url) + .set(endpoint.headers) .query(params); return xdr.call(this, superagentConstruct, endpoint, callback); } @@ -127,6 +130,7 @@ export function post( let superagentConstruct = superagent .post(this.getStandardOrigin() + endpoint.url) .query(params) + .set(endpoint.headers) .send(body); return xdr.call(this, superagentConstruct, endpoint, callback); } @@ -140,6 +144,7 @@ export function patch( let superagentConstruct = superagent .patch(this.getStandardOrigin() + endpoint.url) .query(params) + .set(endpoint.headers) .send(body); return xdr.call(this, superagentConstruct, endpoint, callback); } @@ -151,6 +156,7 @@ export function del( ): superagent { let superagentConstruct = superagent .delete(this.getStandardOrigin() + endpoint.url) + .set(endpoint.headers) .query(params); return xdr.call(this, superagentConstruct, endpoint, callback); } diff --git a/test/integration/endpoints/fetch_messages.test.js b/test/integration/endpoints/fetch_messages.test.js index 6d8ca1d17..af22d837d 100644 --- a/test/integration/endpoints/fetch_messages.test.js +++ b/test/integration/endpoints/fetch_messages.test.js @@ -1,4 +1,4 @@ -/* global describe, beforeEach, it, before, after */ +/* global describe, beforeEach, afterEach, it, before, after */ /* eslint no-console: 0 */ import assert from 'assert'; @@ -6,30 +6,118 @@ import nock from 'nock'; import utils from '../../utils'; import PubNub from '../../../src/node/index'; +function publishMessagesToChannel(client: PubNub, count: Number, channel: String, completion: Function) { + let publishCompleted = 0; + let messages = []; + + const publish = (messageIdx) => { + let payload = { message: { messageIdx: [channel, messageIdx].join(': '), time: Date.now() }, channel }; + + if (messageIdx % 2 === 0) { + payload.meta = { time: payload.message.time }; + } + + client.publish(payload, (status, response) => { + publishCompleted++; + + if (!status.error) { + messages.push({ message: payload.message, timetoken: response.timetoken }); + messages = messages.sort((left, right) => left.timetoken - right.timetoken); + } else { + console.error('Publish did fail:', status); + } + + if (publishCompleted < count) { + publish(publishCompleted); + } else if (publishCompleted === count) { + completion(messages); + } + } + ); + }; + + publish(publishCompleted); +} + +function addActionsInChannel(client: PubNub, count: Number, messageTimetokens: Array, channel: String, completion: Function) { + const types = ['reaction', 'receipt', 'custom']; + const values = [ + PubNub.generateUUID(), PubNub.generateUUID(), PubNub.generateUUID(), PubNub.generateUUID(), PubNub.generateUUID(), + PubNub.generateUUID(), PubNub.generateUUID(), PubNub.generateUUID(), PubNub.generateUUID(), PubNub.generateUUID() + ]; + let actionsToAdd = []; + let actionsAdded = 0; + let actions = []; + + for (let messageIdx = 0; messageIdx < messageTimetokens.length; messageIdx++) { + const messageTimetoken = messageTimetokens[messageIdx]; + + for (let messageActionIdx = 0; messageActionIdx < count; messageActionIdx++) { + /** @type MessageAction */ + const action = { type: types[(messageActionIdx + 1)%3], value: values[(messageActionIdx + 1)%10] }; + + actionsToAdd.push({ messageTimetoken, action }); + } + } + + const addAction = (actionIdx) => { + const { messageTimetoken, action } = actionsToAdd[actionIdx]; + + client.addMessageAction( + { channel, messageTimetoken, action }, + (status, response) => { + actionsAdded++; + + if (!status.error) { + actions.push(response.data); + actions = actions.sort((left, right) => left.actionTimetoken - right.actionTimetoken); + } else { + console.error('Action add did fail:', status); + } + + if (actionsAdded < actionsToAdd.length) { + addAction(actionsAdded); + } else if (actionsAdded === actionsToAdd.length) { + completion(actions); + } + } + ); + }; + + addAction(actionsAdded); +} + + describe('fetch messages endpoints', () => { + const subscribeKey = process.env.SUBSCRIBE_KEY || 'demo'; + const publishKey = process.env.PUBLISH_KEY || 'demo'; let pubnub; - before(() => { - nock.disableNetConnect(); + after(() => { + nock.enableNetConnect(); }); - after(() => { + afterEach(() => { nock.enableNetConnect(); + pubnub.removeAllListeners(); + pubnub.unsubscribeAll(); + pubnub.stop(); }); beforeEach(() => { nock.cleanAll(); pubnub = new PubNub({ - subscribeKey: 'mySubKey', - publishKey: 'myPublishKey', + subscribeKey: subscribeKey, + publishKey: publishKey, uuid: 'myUUID', }); }); it('supports payload', (done) => { + nock.disableNetConnect(); const scope = utils .createNock() - .get('/v3/history/sub-key/mySubKey/channel/ch1%2Cch2') + .get(`/v3/history/sub-key/${subscribeKey}/channel/ch1%2Cch2`) .query({ max: '10', pnsdk: `PubNub-JS-Nodejs/${pubnub.getVersion()}`, @@ -91,9 +179,10 @@ describe('fetch messages endpoints', () => { }); it('supports encrypted payload', (done) => { + nock.disableNetConnect(); const scope = utils .createNock() - .get('/v3/history/sub-key/mySubKey/channel/ch1%2Cch2') + .get(`/v3/history/sub-key/${subscribeKey}/channel/ch1%2Cch2`) .query({ max: '10', pnsdk: `PubNub-JS-Nodejs/${pubnub.getVersion()}`, @@ -154,4 +243,78 @@ describe('fetch messages endpoints', () => { } ); }); + + it('supports metadata', (done) => { + const channel = PubNub.generateUUID(); + const expectedMessagesCount = 10; + + publishMessagesToChannel(pubnub, expectedMessagesCount, channel, (messages) => { + pubnub.fetchMessages({ channels: [channel], count: 25, includeMeta: true }, (status, response) => { + const channelMessages = response.channels[channel]; + + assert.deepEqual(channelMessages[0].meta, { time: messages[0].message.time }); + assert(!channelMessages[1].meta); + done(); + }); + }); + }).timeout(60000); + + it('throws when requested actions for multiple channels', () => { + let errorCatched = false; + + try { + pubnub.fetchMessages( + { channels: ['channelA', 'channelB'], includeMessageActions: true }, + (status, response) => {} + ); + } catch (error) { + assert.equal(error.message, 'History can return actions data for a single channel only. Either pass a single channel or disable the includeMessageActions flag.'); + errorCatched = true; + } + + assert(errorCatched); + }); + + it('supports actions', (done) => { + const channel = PubNub.generateUUID(); + const expectedMessagesCount = 2; + const expectedActionsCount = 4; + + publishMessagesToChannel(pubnub, expectedMessagesCount, channel, (messages) => { + const messageTimetokens = messages.map((message) => message.timetoken ); + + addActionsInChannel(pubnub, expectedActionsCount, messageTimetokens, channel, (actions) => { + setTimeout(() => { + pubnub.fetchMessages({ channels: [channel], includeMessageActions: true }, (status, response) => { + assert.equal(status.error, false); + const fetchedMessages = response.channels[channel]; + const actionsByType = fetchedMessages[0].data; + let historyActionsCount = 0; + + Object.keys(actionsByType).forEach((actionType) => { + Object.keys(actionsByType[actionType]).forEach((actionValue) => { + let actionFound = false; + historyActionsCount++; + + actions.forEach((action) => { + if (action.value === actionValue) { + actionFound = true; + } + }); + + assert.equal(actionFound, true); + }); + }); + + assert.equal(historyActionsCount, expectedActionsCount); + assert.equal(fetchedMessages[0].timetoken, messageTimetokens[0]); + assert.equal(fetchedMessages[fetchedMessages.length - 1].timetoken, + messageTimetokens[messageTimetokens.length - 1]); + + done(); + }); + }, 2000); + }); + }); + }).timeout(60000); }); diff --git a/test/integration/endpoints/grant_token.test.js b/test/integration/endpoints/grant_token.test.js index 8fef80ccf..d1a9a65f6 100644 --- a/test/integration/endpoints/grant_token.test.js +++ b/test/integration/endpoints/grant_token.test.js @@ -261,8 +261,8 @@ describe('grant token endpoint', () => { } }, (status) => { - assert.equal(status.error, false); assert.equal(scope.isDone(), true); + assert.equal(status.error, false); done(); } ); diff --git a/test/integration/endpoints/history.test.js b/test/integration/endpoints/history.test.js index b6f829faf..f18f9d824 100644 --- a/test/integration/endpoints/history.test.js +++ b/test/integration/endpoints/history.test.js @@ -1,4 +1,4 @@ -/* global describe, beforeEach, it, before, after */ +/* global describe, beforeEach, afterEach, it, before, after */ /* eslint no-console: 0 */ import assert from 'assert'; @@ -6,30 +6,70 @@ import nock from 'nock'; import utils from '../../utils'; import PubNub from '../../../src/node/index'; +function publishMessagesToChannel(client: PubNub, count: Number, channel: String, completion: Function) { + let publishCompleted = 0; + let messages = []; + + const publish = (messageIdx) => { + let payload = { message: { messageIdx: [channel, messageIdx].join(': '), time: Date.now() }, channel }; + + if (messageIdx % 2 === 0) { + payload.meta = { time: payload.message.time }; + } + + client.publish(payload, (status, response) => { + publishCompleted++; + + if (!status.error) { + messages.push({ message: payload.message, timetoken: response.timetoken }); + messages = messages.sort((left, right) => left.timetoken - right.timetoken); + } else { + console.error('Publish did fail:', status); + } + + if (publishCompleted < count) { + publish(publishCompleted); + } else if (publishCompleted === count) { + completion(messages); + } + } + ); + }; + + publish(publishCompleted); +} + + describe('history endpoints', () => { + const subscribeKey = process.env.SUBSCRIBE_KEY || 'demo'; + const publishKey = process.env.PUBLISH_KEY || 'demo'; let pubnub; - before(() => { - nock.disableNetConnect(); + after(() => { + nock.enableNetConnect(); }); - after(() => { + afterEach(() => { nock.enableNetConnect(); + pubnub.removeAllListeners(); + pubnub.unsubscribeAll(); + pubnub.stop(); }); beforeEach(() => { nock.cleanAll(); pubnub = new PubNub({ - subscribeKey: 'mySubKey', - publishKey: 'myPublishKey', + subscribeKey: subscribeKey, + publishKey: publishKey, uuid: 'myUUID', }); }); it('supports payload with timetoken', (done) => { + nock.disableNetConnect(); const scope = utils .createNock() - .get('/v2/history/sub-key/mySubKey/channel/ch1') + .get(`/v2/history/sub-key/${subscribeKey}/channel/ch1`) .query({ count: '100', include_token: 'true', @@ -59,9 +99,10 @@ describe('history endpoints', () => { }); it('supports encrypted payload with timetoken', (done) => { + nock.disableNetConnect(); const scope = utils .createNock() - .get('/v2/history/sub-key/mySubKey/channel/ch1') + .get(`/v2/history/sub-key/${subscribeKey}/channel/ch1`) .query({ count: '100', include_token: 'true', @@ -90,4 +131,17 @@ describe('history endpoints', () => { } ); }); + + it('supports metadata', (done) => { + const channel = PubNub.generateUUID(); + const expectedMessagesCount = 10; + + publishMessagesToChannel(pubnub, expectedMessagesCount, channel, (messages) => { + pubnub.history({ channel, includeMeta: true }, (status, response) => { + assert.deepEqual(response.messages[0].meta, { time: messages[0].message.time }); + assert(!response.messages[1].meta); + done(); + }); + }); + }).timeout(60000); }); diff --git a/test/integration/endpoints/message_actions.test.js b/test/integration/endpoints/message_actions.test.js new file mode 100644 index 000000000..b488c90c9 --- /dev/null +++ b/test/integration/endpoints/message_actions.test.js @@ -0,0 +1,534 @@ +/* global describe, beforeEach, afterEach, it, before, after, jasmine */ +/* eslint no-console: 0 */ + +import PubNub from '../../../src/node/index'; +import utils from "../../utils"; +import assert from 'assert'; +import nock from 'nock'; + + +function publishMessages(client: PubNub, count: Number, channel: String, completion: Function) { + let publishCompleted = 0; + let timetokens = []; + + const publish = (messageIdx) => { + const message = { messageIdx, time: Date.now() }; + + client.publish( + { message, channel }, + (status, response) => { + publishCompleted++; + + if (!status.error) { + timetokens.push(response.timetoken); + } else { + console.error('Publish did fail:', status); + } + + if (publishCompleted < count) { + publish(publishCompleted); + } else if (publishCompleted === count) { + completion(timetokens.sort((left, right) => left - right)); + } + } + ); + }; + + publish(publishCompleted); +} + +function addActions(client: PubNub, count: Number, messageTimetokens: Array, channel: String, completion: Function) { + const types = ['reaction', 'receipt', 'custom']; + const values = [ + PubNub.generateUUID(), PubNub.generateUUID(), PubNub.generateUUID(), PubNub.generateUUID(), PubNub.generateUUID(), + PubNub.generateUUID(), PubNub.generateUUID(), PubNub.generateUUID(), PubNub.generateUUID(), PubNub.generateUUID() + ]; + let actionsToAdd = []; + let actionsAdded = 0; + let timetokens = []; + + for (let messageIdx = 0; messageIdx < messageTimetokens.length; messageIdx++) { + const messageTimetoken = messageTimetokens[messageIdx]; + + for (let messageActionIdx = 0; messageActionIdx < count; messageActionIdx++) { + /** @type MessageAction */ + const action = { type: types[(messageActionIdx + 1) % 3], value: values[(messageActionIdx + 1) % 10] }; + + actionsToAdd.push({ messageTimetoken, action }); + } + } + + const addAction = (actionIdx) => { + const { messageTimetoken, action } = actionsToAdd[actionIdx]; + + client.addMessageAction( + { channel, messageTimetoken, action }, + (status, response) => { + actionsAdded++; + + if (!status.error) { + timetokens.push(response.data.actionTimetoken); + } else { + console.error('Action add did fail:', action, '\n', status); + } + + if (actionsAdded < actionsToAdd.length) { + addAction(actionsAdded); + } else if (actionsAdded === actionsToAdd.length) { + completion(timetokens.sort((left, right) => left - right)); + } + } + ); + }; + + addAction(actionsAdded); +} + + +describe('message actions endpoints', () => { + const subscribeKey = process.env.SUBSCRIBE_KEY || 'demo'; + const publishKey = process.env.PUBLISH_KEY || 'demo'; + let pubnub; + + after(() => { + nock.enableNetConnect(); + }); + + afterEach(() => { + nock.enableNetConnect(); + pubnub.removeAllListeners(); + pubnub.unsubscribeAll(); + pubnub.stop(); + }); + + beforeEach(() => { + nock.cleanAll(); + pubnub = new PubNub({ + subscribeKey: subscribeKey, + publishKey: publishKey, + uuid: 'myUUID', + authKey: 'myAuthKey', + }); + }); + + describe('addMessageAction', () => { + describe('##validation', () => { + it('fails if \'action\' is missing', (done) => { + nock.disableNetConnect(); + const scope = utils + .createNock() + .post(`/v1/message-actions/${subscribeKey}/channel/test-channel/message/1234567890`) + .reply(200, {}); + + pubnub.addMessageAction({ + channel: 'test-channel', + messageTimetoken: '1234567890', + }) + .catch((err) => { + assert.equal(scope.isDone(), false); + assert.equal(err.status.message, 'Missing Action'); + done(); + }); + }); + + it('fails if \'type\' is missing', (done) => { + nock.disableNetConnect(); + const scope = utils + .createNock() + .post(`/v1/message-actions/${subscribeKey}/channel/test-channel/message/1234567890`) + .reply(200, {}); + const action = { value: 'test value' }; + + pubnub.addMessageAction({ + channel: 'test-channel', + messageTimetoken: '1234567890', + action, + }) + .catch((err) => { + assert.equal(scope.isDone(), false); + assert.equal(err.status.message, 'Missing Action.type'); + done(); + }); + }); + + it('fails if \'type\' is too long', (done) => { + nock.disableNetConnect(); + const scope = utils + .createNock() + .post(`/v1/message-actions/${subscribeKey}/channel/test-channel/message/1234567890`) + .reply(200, {}); + const action = { type: PubNub.generateUUID(), value: 'test value' }; + + pubnub.addMessageAction({ + channel: 'test-channel', + messageTimetoken: '1234567890', + action, + }) + .catch((err) => { + assert.equal(scope.isDone(), false); + assert.equal(err.status.message, 'Action.type value exceed maximum length of 15'); + done(); + }); + }); + + it('fails if \'value\' is missing', (done) => { + nock.disableNetConnect(); + const scope = utils + .createNock() + .post(`/v1/message-actions/${subscribeKey}/channel/test-channel/message/1234567890`) + .reply(200, {}); + const action = { type: 'custom' }; + + pubnub.addMessageAction({ + channel: 'test-channel', + messageTimetoken: '1234567890', + action, + }) + .catch((err) => { + assert.equal(scope.isDone(), false); + assert.equal(err.status.message, 'Missing Action.value'); + done(); + }); + }); + + it('fails if \'messageTimetoken\' is missing', (done) => { + nock.disableNetConnect(); + const scope = utils + .createNock() + .post(`/v1/message-actions/${subscribeKey}/channel/test-channel/message/`) + .reply(200, {}); + const action = { type: 'custom', value: 'test value' }; + + pubnub.addMessageAction({ + channel: 'test-channel', + action, + }) + .catch((err) => { + assert.equal(scope.isDone(), false); + assert.equal(err.status.message, 'Missing message timetoken'); + done(); + }); + }); + + it('fails if \'channel\' is missing', (done) => { + nock.disableNetConnect(); + const scope = utils + .createNock() + .post(`/v1/message-actions/${subscribeKey}/channel/test-channel/message/1234567890`) + .reply(200, {}); + const action = { type: 'custom', value: 'test value' }; + + pubnub.addMessageAction({ + messageTimetoken: '1234567890', + action, + }) + .catch((err) => { + assert.equal(scope.isDone(), false); + assert.equal(err.status.message, 'Missing message channel'); + done(); + }); + }); + }); + + it('add message action', (done) => { + /** @type MessageAction */ + const messageAction = { type: 'custom', value: PubNub.generateUUID() }; + const channel = PubNub.generateUUID(); + + publishMessages(pubnub,1, channel, (timetokens) => { + pubnub.addMessageAction( + { channel: channel, messageTimetoken: timetokens[0], action: messageAction }, + (status, response) => { + assert.equal(status.error, false); + assert.equal(response.data.type, messageAction.type); + assert.equal(response.data.value, messageAction.value); + assert.equal(response.data.uuid, pubnub.getUUID()); + assert.equal(response.data.messageTimetoken, timetokens[0]); + assert(response.data.actionTimetoken); + + done(); + } + ); + }); + }).timeout(60000); + + it('add message action and 207 status code', (done) => { + nock.disableNetConnect(); + const scope = utils + .createNock() + .post(`/v1/message-actions/${subscribeKey}/channel/test-channel/message/1234567890`) + .query({ + pnsdk: `PubNub-JS-Nodejs/${pubnub.getVersion()}`, + uuid: 'myUUID', + auth: 'myAuthKey' + }) + .reply(207, { + "status": 207, + "data": { + "type": "reaction", + "value": "smiley_face", + "uuid": "user-456", + "actionTimetoken": '15610547826970050', + "messageTimetoken": '15610547826969050' + }, + "error": { + "message": "Stored but failed to publish message action.", + "source": "actions" + } + }); + + pubnub.addMessageAction( + { channel: 'test-channel', messageTimetoken: '1234567890', action: { type: 'custom', value: 'test' } }, + (status, response) => { + assert.equal(scope.isDone(), true); + assert.equal(status.statusCode, 207); + assert(status.errorData.message); + + done(); + } + ); + }); + + it('add message action should trigger event', (done) => { + /** @type MessageAction */ + const messageAction = { type: 'custom', value: PubNub.generateUUID() }; + const channel = PubNub.generateUUID(); + let messageTimetoken = null; + + pubnub.addListener({ + status: (status) => { + if (status.category === 'PNConnectedCategory') { + pubnub.publish( + { channel, message: { hello: 'test' }, sendByPost: true }, + (status, response) => { + messageTimetoken = response.timetoken; + + pubnub.addMessageAction( + { channel, messageTimetoken, action: messageAction } + ); + } + ); + } + }, + messageAction: (messageActionEvent) => { + assert(messageActionEvent.data); + assert.equal(messageActionEvent.data.type, messageAction.type); + assert.equal(messageActionEvent.data.value, messageAction.value); + assert.equal(messageActionEvent.data.uuid, pubnub.getUUID()); + assert.equal(messageActionEvent.data.messageTimetoken, messageTimetoken); + assert(messageActionEvent.data.actionTimetoken); + assert.equal(messageActionEvent.event, 'added'); + + done(); + } + }); + + pubnub.subscribe({ channels: [channel] }); + }).timeout(60000); + }); + + describe('removeMessageAction', () => { + describe('##validation', () => { + it('fails if \'messageTimetoken\' is missing', (done) => { + nock.disableNetConnect(); + const scope = utils + .createNock() + .delete(`/v1/message-actions/${subscribeKey}/channel/test-channel/message/1234567890/action/12345678901`) + .reply(200, {}); + + pubnub.removeMessageAction({ + channel: 'test-channel', + actionTimetoken: '1234567890', + }) + .catch((err) => { + assert.equal(scope.isDone(), false); + assert.equal(err.status.message, 'Missing message timetoken'); + + done(); + }); + }); + + it('fails if \'actionTimetoken\' is missing', (done) => { + nock.disableNetConnect(); + const scope = utils + .createNock() + .delete(`/v1/message-actions/${subscribeKey}/channel/test-channel/message/1234567890/action/12345678901`) + .reply(200, {}); + + pubnub.removeMessageAction({ + channel: 'test-channel', + messageTimetoken: '1234567890', + }) + .catch((err) => { + assert.equal(scope.isDone(), false); + assert.equal(err.status.message, 'Missing action timetoken'); + + done(); + }); + }); + + it('fails if \'channel\' is missing', (done) => { + nock.disableNetConnect(); + const scope = utils + .createNock() + .delete(`/v1/message-actions/${subscribeKey}/channel/test-channel/message/1234567890/action/12345678901`) + .reply(200, {}); + + pubnub.removeMessageAction({ + messageTimetoken: '1234567890', + actionTimetoken: '12345678901', + }) + .catch((err) => { + assert.equal(scope.isDone(), false); + assert.equal(err.status.message, 'Missing message channel'); + + done(); + }); + }); + }); + + it('remove message action', (done) => { + const channel = PubNub.generateUUID(); + + publishMessages(pubnub, 1, channel, (messageTimetokens) => { + addActions(pubnub, 1, messageTimetokens, channel, (actionTimetokens) => { + pubnub.getMessageActions({ channel }, (status, response) => { + assert.equal(status.error, false); + assert.equal(response.data.length, actionTimetokens.length); + + pubnub.removeMessageAction( + { channel, actionTimetoken: actionTimetokens[0], messageTimetoken: messageTimetokens[0] }, + (status) => { + assert.equal(status.error, false); + + setTimeout(() => { + pubnub.getMessageActions({ channel }, (status, response) => { + assert.equal(status.error, false); + assert.equal(response.data.length, 0); + + done(); + }); + }, 2000); + } + ); + }); + }); + }); + }).timeout(60000); + + it('remove message action should trigger event', (done) => { + const channel = PubNub.generateUUID(); + + publishMessages(pubnub, 1, channel, (messageTimetokens) => { + addActions(pubnub, 1, messageTimetokens, channel, (actionTimetokens) => { + pubnub.addListener({ + status: (status) => { + if (status.category === 'PNConnectedCategory') { + pubnub.removeMessageAction( + {channel, actionTimetoken: actionTimetokens[0], messageTimetoken: messageTimetokens[0]}, + (status) => { + assert.equal(status.error, false); + } + ); + } + }, + messageAction: (messageActionEvent) => { + assert(messageActionEvent.data); + assert.equal(messageActionEvent.data.uuid, pubnub.getUUID()); + assert.equal(messageActionEvent.data.messageTimetoken, messageTimetokens[0]); + assert.equal(messageActionEvent.data.actionTimetoken, actionTimetokens[0]); + assert.equal(messageActionEvent.event, 'removed'); + + done(); + } + }); + + pubnub.subscribe({ channels: [channel] }); + }); + }); + }).timeout(60000); + }); + + describe('getMessageAction', () => { + describe('##validation', () => { + it('fails if \'channel\' is missing', (done) => { + nock.disableNetConnect(); + const scope = utils + .createNock() + .get(`/v1/message-actions/${subscribeKey}/channel/test-channel`) + .reply(200, {}); + + pubnub.getMessageActions({}).catch((err) => { + assert.equal(scope.isDone(), false); + assert.equal(err.status.message, 'Missing message channel'); + + done(); + }); + }); + }); + + it('fetch message actions', (done) => { + const channel = PubNub.generateUUID(); + + publishMessages(pubnub, 2, channel, (messageTimetokens) => { + addActions(pubnub, 3, messageTimetokens, channel, (actionTimetokens) => { + const lastPublishedActionTimetoken = actionTimetokens[actionTimetokens.length - 1]; + const firstPublishedActionTimetoken = actionTimetokens[0]; + + pubnub.getMessageActions({ channel }, (status, response) => { + assert.equal(status.error, false); + const firstFetchedActionTimetoken = response.data[0].actionTimetoken; + const lastFetchedActionTimetoken = response.data[response.data.length - 1].actionTimetoken; + assert.equal(firstFetchedActionTimetoken, firstPublishedActionTimetoken); + assert.equal(lastFetchedActionTimetoken, lastPublishedActionTimetoken); + assert.equal(response.data.length, actionTimetokens.length); + assert.equal(response.start, firstPublishedActionTimetoken); + assert.equal(response.end, lastPublishedActionTimetoken); + + done(); + }); + }); + }); + }).timeout(60000); + + it('fetch next message actions page', (done) => { + const channel = PubNub.generateUUID(); + + publishMessages(pubnub, 2, channel, (messageTimetokens) => { + addActions(pubnub, 5, messageTimetokens, channel, (actionTimetokens) => { + const lastPublishedActionTimetoken = actionTimetokens[actionTimetokens.length - 1]; + const halfSize = Math.floor(actionTimetokens.length * 0.5); + const firstPublishedActionTimetoken = actionTimetokens[0]; + const middleMinusOnePublishedActionTimetoken = actionTimetokens[halfSize - 1]; + const middlePublishedActionTimetoken = actionTimetokens[halfSize]; + + pubnub.getMessageActions({ channel, limit: halfSize }, (status, response) => { + assert.equal(status.error, false); + const firstFetchedActionTimetoken = response.data[0].actionTimetoken; + const lastFetchedActionTimetoken = response.data[response.data.length - 1].actionTimetoken; + assert.equal(firstFetchedActionTimetoken, middlePublishedActionTimetoken); + assert.equal(lastFetchedActionTimetoken, lastPublishedActionTimetoken); + assert.equal(response.data.length, halfSize); + assert.equal(response.start, middlePublishedActionTimetoken); + assert.equal(response.end, lastPublishedActionTimetoken); + + pubnub.getMessageActions( + { channel, start: middlePublishedActionTimetoken, limit: halfSize }, + (status, response) => { + assert.equal(status.error, false); + const firstFetchedActionTimetoken = response.data[0].actionTimetoken; + const lastFetchedActionTimetoken = response.data[response.data.length - 1].actionTimetoken; + assert.equal(firstFetchedActionTimetoken, firstPublishedActionTimetoken); + assert.equal(lastFetchedActionTimetoken, middleMinusOnePublishedActionTimetoken); + assert.equal(response.data.length, halfSize); + assert.equal(response.start, firstPublishedActionTimetoken); + assert.equal(response.end, middleMinusOnePublishedActionTimetoken); + + done(); + }); + }); + }); + }); + }).timeout(60000); + }); +}); diff --git a/test/unit/networking.test.js b/test/unit/networking.test.js index 28a61d030..7847987a9 100644 --- a/test/unit/networking.test.js +++ b/test/unit/networking.test.js @@ -25,7 +25,7 @@ describe('keep-alive agent', () => { const networking = setupNetwork(false, false); const superagentGetSpy = sinon.spy(superagent, 'get'); - networking.GET({}, { url: '/time/0' }, () => {}); + networking.GET({}, { url: '/time/0', headers: {} }, () => {}); assert(superagentGetSpy.called, 'superagent not called with get'); assert(superagentGetSpy.returnValues[0], 'request instance not created'); assert(!superagentGetSpy.returnValues[0]._agent, 'keep-alive agent should not be created'); @@ -37,7 +37,7 @@ describe('keep-alive agent', () => { const networking = setupNetwork(false, true); const superagentGetSpy = sinon.spy(superagent, 'get'); - networking.GET({}, { url: '/time/0' }, () => {}); + networking.GET({}, { url: '/time/0', headers: {} }, () => {}); assert(superagentGetSpy.returnValues[0]._agent, 'keep-alive agent not created'); assert(superagentGetSpy.returnValues[0]._agent.defaultPort !== 443, 'keep-alive agent should access TLS (80) port'); @@ -48,8 +48,8 @@ describe('keep-alive agent', () => { const networking = setupNetwork(false, true); const superagentGetSpy = sinon.spy(superagent, 'get'); - networking.GET({}, { url: '/time/0' }, () => {}); - networking.GET({}, { url: '/time/0' }, () => {}); + networking.GET({}, { url: '/time/0', headers: {} }, () => {}); + networking.GET({}, { url: '/time/0', headers: {} }, () => {}); assert(superagentGetSpy.returnValues[0]._agent === superagentGetSpy.returnValues[1]._agent, 'same user-agent should be used'); superagentGetSpy.restore(); @@ -59,7 +59,7 @@ describe('keep-alive agent', () => { const networking = setupNetwork(true, true); const superagentGetSpy = sinon.spy(superagent, 'get'); - networking.GET({}, { url: '/time/0' }, () => {}); + networking.GET({}, { url: '/time/0', headers: {} }, () => {}); assert(superagentGetSpy.returnValues[0]._agent, 'keep-alive agent not created'); assert(superagentGetSpy.returnValues[0]._agent.defaultPort === 443, 'keep-alive agent should access SSL (443) port'); @@ -70,8 +70,8 @@ describe('keep-alive agent', () => { const networking = setupNetwork(true, true); const superagentGetSpy = sinon.spy(superagent, 'get'); - networking.GET({}, { url: '/time/0' }, () => {}); - networking.GET({}, { url: '/time/0' }, () => {}); + networking.GET({}, { url: '/time/0', headers: {} }, () => {}); + networking.GET({}, { url: '/time/0', headers: {} }, () => {}); assert(superagentGetSpy.returnValues[0]._agent === superagentGetSpy.returnValues[1]._agent, 'same user-agent should be used'); superagentGetSpy.restore(); From f11b50f7545e85624cec7a44d0807ebe8961d7ca Mon Sep 17 00:00:00 2001 From: Serhii Mamontov Date: Tue, 8 Oct 2019 00:10:18 +0300 Subject: [PATCH 2/8] feat: 4.27.0 release New version release with Message Actions API support. --- .pubnub.yml | 15 ++++++++++++++- CHANGELOG.md | 15 ++++++++++++++- README.md | 4 ++-- package.json | 2 +- src/core/components/config.js | 2 +- 5 files changed, 32 insertions(+), 6 deletions(-) diff --git a/.pubnub.yml b/.pubnub.yml index b90ad824a..efc738f39 100644 --- a/.pubnub.yml +++ b/.pubnub.yml @@ -1,5 +1,18 @@ --- changelog: + - + changes: + - + text: "Add Message Actions API support which allow to: add, remove and fetch previously added actions" + type: feature + - + text: "Add new arguments to fetch messages function which allow to fetch previously added actions and message metadata" + type: feature + - + text: "Add new handler which can be used to track message actions addition / removal events" + type: feature + date: 2019-10-08 + version: v4.27.0 - changes: - @@ -760,4 +773,4 @@ supported-platforms: - "Ubuntu 14.04 and above" - "Windows 7, 8, 10" version: "Pubnub Javascript for Node" -version: "4.26.1" +version: "4.27.0" diff --git a/CHANGELOG.md b/CHANGELOG.md index 4af0e2e2e..0be2acf98 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,17 @@ -## [v4.26.1](https://github.com/pubnub/javascript/tree/v4.26.1) +## [v4.27.0](https://github.com/pubnub/javascript/tree/v4.27.0) + September-27-2019 + + + [Full Changelog](https://github.com/pubnub/javascript/compare/v4.26.1...v4.27.0) + + + +- ⭐ Add Message Actions API support which allow to: add, remove and fetch previously added action +- ⭐ Add new arguments to fetch messages function which allow to fetch previously added actions and message metadata +- ⭐ Add new handler which can be used to track message actions addition / removal events + + +## [v4.26.1](https://github.com/pubnub/javascript/tree/v4.26.1) September-27-2019 diff --git a/README.md b/README.md index 3d5b6d9fa..de8f70d5c 100644 --- a/README.md +++ b/README.md @@ -22,5 +22,5 @@ please use the [master_3x](https://github.com/pubnub/javascript/tree/master_3x) -* https://cdn.pubnub.com/sdk/javascript/pubnub.4.26.1.min.js -* https://cdn.pubnub.com/sdk/javascript/pubnub.4.26.1.js +* https://cdn.pubnub.com/sdk/javascript/pubnub.4.27.0.min.js +* https://cdn.pubnub.com/sdk/javascript/pubnub.4.27.0.js diff --git a/package.json b/package.json index 0d3c1bf08..34b14bb31 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pubnub", - "version": "4.26.1", + "version": "4.27.0", "author": "PubNub ", "description": "Publish & Subscribe Real-time Messaging with PubNub", "bin": {}, diff --git a/src/core/components/config.js b/src/core/components/config.js index f240a1d63..02c27e9b8 100644 --- a/src/core/components/config.js +++ b/src/core/components/config.js @@ -296,7 +296,7 @@ export default class { } getVersion(): string { - return '4.26.1'; + return '4.27.0'; } _decideUUID(providedUUID: string): string { From 8a7818ada1f19cead0a31dcf9371550ec1c6a0e0 Mon Sep 17 00:00:00 2001 From: davidnub Date: Mon, 7 Oct 2019 14:42:20 -0700 Subject: [PATCH 3/8] Updated package-lock file - David --- package-lock.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index 224cb8946..70f6e3fef 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "pubnub", - "version": "4.26.1", + "version": "4.27.0", "lockfileVersion": 1, "requires": true, "dependencies": { From 9c10bcc7bc525ed5d606d297773f833c3e26f69d Mon Sep 17 00:00:00 2001 From: davidnub Date: Mon, 7 Oct 2019 14:43:21 -0700 Subject: [PATCH 4/8] Add compiled files - David --- dist/titanium/pubnub.js | 469 +++++++++++++--- dist/titanium/pubnub.min.js | 2 +- dist/web/pubnub.js | 515 ++++++++++++++---- dist/web/pubnub.min.js | 2 +- lib/core/components/config.js | 2 +- lib/core/components/config.js.map | 2 +- lib/core/components/endpoint.js | 3 +- lib/core/components/endpoint.js.map | 2 +- lib/core/components/listener_manager.js | 7 + lib/core/components/listener_manager.js.map | 2 +- lib/core/components/subscription_manager.js | 34 +- .../components/subscription_manager.js.map | 2 +- lib/core/constants/operations.js | 3 + lib/core/constants/operations.js.map | 2 +- .../endpoints/actions/add_message_action.js | 80 +++ .../actions/add_message_action.js.map | 1 + .../endpoints/actions/get_message_actions.js | 69 +++ .../actions/get_message_actions.js.map | 1 + .../actions/remove_message_action.js | 66 +++ .../actions/remove_message_action.js.map | 1 + lib/core/endpoints/fetch_messages.js | 29 +- lib/core/endpoints/fetch_messages.js.map | 2 +- lib/core/endpoints/history/get_history.js | 10 +- lib/core/endpoints/history/get_history.js.map | 2 +- lib/core/flow_interfaces.js.map | 2 +- lib/core/pubnub-common.js | 15 + lib/core/pubnub-common.js.map | 2 +- lib/nativescript/index.js | 3 +- lib/nativescript/index.js.map | 2 +- lib/networking/modules/web-node.js | 10 +- lib/networking/modules/web-node.js.map | 2 +- 31 files changed, 1120 insertions(+), 224 deletions(-) create mode 100644 lib/core/endpoints/actions/add_message_action.js create mode 100644 lib/core/endpoints/actions/add_message_action.js.map create mode 100644 lib/core/endpoints/actions/get_message_actions.js create mode 100644 lib/core/endpoints/actions/get_message_actions.js.map create mode 100644 lib/core/endpoints/actions/remove_message_action.js create mode 100644 lib/core/endpoints/actions/remove_message_action.js.map diff --git a/dist/titanium/pubnub.js b/dist/titanium/pubnub.js index 1a6b85e82..c30cab604 100644 --- a/dist/titanium/pubnub.js +++ b/dist/titanium/pubnub.js @@ -1,4 +1,4 @@ -/*! 4.26.1 / Consumer */ +/*! 4.27.0 / Consumer */ exports["PubNub"] = /******/ (function(modules) { // webpackBootstrap /******/ // The module cache @@ -116,6 +116,9 @@ var _default = { PNUnsubscribeOperation: 'PNUnsubscribeOperation', PNPublishOperation: 'PNPublishOperation', PNSignalOperation: 'PNSignalOperation', + PNAddMessageActionOperation: 'PNAddActionOperation', + PNRemoveMessageActionOperation: 'PNRemoveMessageActionOperation', + PNGetMessageActionsOperation: 'PNGetMessageActionsOperation', PNCreateUserOperation: 'PNCreateUserOperation', PNUpdateUserOperation: 'PNUpdateUserOperation', PNDeleteUserOperation: 'PNDeleteUserOperation', @@ -468,7 +471,7 @@ var _default = function () { }, { key: "getVersion", value: function getVersion() { - return '4.26.1'; + return '4.27.0'; } }, { key: "_decideUUID", @@ -831,6 +834,13 @@ var _default = function () { if (listener.signal) listener.signal(announce); }); } + }, { + key: "announceMessageAction", + value: function announceMessageAction(announce) { + this._listeners.forEach(function (listener) { + if (listener.messageAction) listener.messageAction(announce); + }); + } }, { key: "announceUser", value: function announceUser(announce) { @@ -941,13 +951,13 @@ exports["default"] = void 0; var _pubnubCommon = _interopRequireDefault(__webpack_require__(10)); -var _networking = _interopRequireDefault(__webpack_require__(61)); +var _networking = _interopRequireDefault(__webpack_require__(64)); -var _common = _interopRequireDefault(__webpack_require__(62)); +var _common = _interopRequireDefault(__webpack_require__(65)); -var _common2 = _interopRequireDefault(__webpack_require__(63)); +var _common2 = _interopRequireDefault(__webpack_require__(66)); -var _titanium = __webpack_require__(65); +var _titanium = __webpack_require__(68); var _flow_interfaces = __webpack_require__(0); @@ -1045,63 +1055,69 @@ var presenceSetStateConfig = _interopRequireWildcard(__webpack_require__(31)); var presenceHereNowConfig = _interopRequireWildcard(__webpack_require__(32)); -var createUserEndpointConfig = _interopRequireWildcard(__webpack_require__(33)); +var addMessageActionEndpointConfig = _interopRequireWildcard(__webpack_require__(33)); + +var removeMessageActionEndpointConfig = _interopRequireWildcard(__webpack_require__(34)); -var updateUserEndpointConfig = _interopRequireWildcard(__webpack_require__(34)); +var getMessageActionEndpointConfig = _interopRequireWildcard(__webpack_require__(35)); -var deleteUserEndpointConfig = _interopRequireWildcard(__webpack_require__(35)); +var createUserEndpointConfig = _interopRequireWildcard(__webpack_require__(36)); -var getUserEndpointConfig = _interopRequireWildcard(__webpack_require__(36)); +var updateUserEndpointConfig = _interopRequireWildcard(__webpack_require__(37)); -var getUsersEndpointConfig = _interopRequireWildcard(__webpack_require__(37)); +var deleteUserEndpointConfig = _interopRequireWildcard(__webpack_require__(38)); -var createSpaceEndpointConfig = _interopRequireWildcard(__webpack_require__(38)); +var getUserEndpointConfig = _interopRequireWildcard(__webpack_require__(39)); -var updateSpaceEndpointConfig = _interopRequireWildcard(__webpack_require__(39)); +var getUsersEndpointConfig = _interopRequireWildcard(__webpack_require__(40)); -var deleteSpaceEndpointConfig = _interopRequireWildcard(__webpack_require__(40)); +var createSpaceEndpointConfig = _interopRequireWildcard(__webpack_require__(41)); -var getSpacesEndpointConfig = _interopRequireWildcard(__webpack_require__(41)); +var updateSpaceEndpointConfig = _interopRequireWildcard(__webpack_require__(42)); -var getSpaceEndpointConfig = _interopRequireWildcard(__webpack_require__(42)); +var deleteSpaceEndpointConfig = _interopRequireWildcard(__webpack_require__(43)); -var getMembersEndpointConfig = _interopRequireWildcard(__webpack_require__(43)); +var getSpacesEndpointConfig = _interopRequireWildcard(__webpack_require__(44)); -var addMembersEndpointConfig = _interopRequireWildcard(__webpack_require__(44)); +var getSpaceEndpointConfig = _interopRequireWildcard(__webpack_require__(45)); -var updateMembersEndpointConfig = _interopRequireWildcard(__webpack_require__(45)); +var getMembersEndpointConfig = _interopRequireWildcard(__webpack_require__(46)); -var removeMembersEndpointConfig = _interopRequireWildcard(__webpack_require__(46)); +var addMembersEndpointConfig = _interopRequireWildcard(__webpack_require__(47)); -var getMembershipsEndpointConfig = _interopRequireWildcard(__webpack_require__(47)); +var updateMembersEndpointConfig = _interopRequireWildcard(__webpack_require__(48)); -var updateMembershipsEndpointConfig = _interopRequireWildcard(__webpack_require__(48)); +var removeMembersEndpointConfig = _interopRequireWildcard(__webpack_require__(49)); -var joinSpacesEndpointConfig = _interopRequireWildcard(__webpack_require__(49)); +var getMembershipsEndpointConfig = _interopRequireWildcard(__webpack_require__(50)); -var leaveSpacesEndpointConfig = _interopRequireWildcard(__webpack_require__(50)); +var updateMembershipsEndpointConfig = _interopRequireWildcard(__webpack_require__(51)); -var auditEndpointConfig = _interopRequireWildcard(__webpack_require__(51)); +var joinSpacesEndpointConfig = _interopRequireWildcard(__webpack_require__(52)); -var grantEndpointConfig = _interopRequireWildcard(__webpack_require__(52)); +var leaveSpacesEndpointConfig = _interopRequireWildcard(__webpack_require__(53)); -var grantTokenEndpointConfig = _interopRequireWildcard(__webpack_require__(53)); +var auditEndpointConfig = _interopRequireWildcard(__webpack_require__(54)); -var publishEndpointConfig = _interopRequireWildcard(__webpack_require__(54)); +var grantEndpointConfig = _interopRequireWildcard(__webpack_require__(55)); -var signalEndpointConfig = _interopRequireWildcard(__webpack_require__(55)); +var grantTokenEndpointConfig = _interopRequireWildcard(__webpack_require__(56)); -var historyEndpointConfig = _interopRequireWildcard(__webpack_require__(56)); +var publishEndpointConfig = _interopRequireWildcard(__webpack_require__(57)); -var deleteMessagesEndpointConfig = _interopRequireWildcard(__webpack_require__(57)); +var signalEndpointConfig = _interopRequireWildcard(__webpack_require__(58)); -var messageCountsEndpointConfig = _interopRequireWildcard(__webpack_require__(58)); +var historyEndpointConfig = _interopRequireWildcard(__webpack_require__(59)); -var fetchMessagesEndpointConfig = _interopRequireWildcard(__webpack_require__(59)); +var deleteMessagesEndpointConfig = _interopRequireWildcard(__webpack_require__(60)); + +var messageCountsEndpointConfig = _interopRequireWildcard(__webpack_require__(61)); + +var fetchMessagesEndpointConfig = _interopRequireWildcard(__webpack_require__(62)); var timeEndpointConfig = _interopRequireWildcard(__webpack_require__(8)); -var subscribeEndpointConfig = _interopRequireWildcard(__webpack_require__(60)); +var subscribeEndpointConfig = _interopRequireWildcard(__webpack_require__(63)); var _operations = _interopRequireDefault(__webpack_require__(1)); @@ -1177,6 +1193,12 @@ var _default = function () { _defineProperty(this, "unsubscribeAll", void 0); + _defineProperty(this, "addMessageAction", void 0); + + _defineProperty(this, "removeMessageAction", void 0); + + _defineProperty(this, "getMessageActions", void 0); + _defineProperty(this, "createUser", void 0); _defineProperty(this, "updateUser", void 0); @@ -1347,6 +1369,9 @@ var _default = function () { this.deleteMessages = _endpoint["default"].bind(this, modules, deleteMessagesEndpointConfig); this.messageCounts = _endpoint["default"].bind(this, modules, messageCountsEndpointConfig); this.fetchMessages = _endpoint["default"].bind(this, modules, fetchMessagesEndpointConfig); + this.addMessageAction = _endpoint["default"].bind(this, modules, addMessageActionEndpointConfig); + this.removeMessageAction = _endpoint["default"].bind(this, modules, removeMessageActionEndpointConfig); + this.getMessageActions = _endpoint["default"].bind(this, modules, getMessageActionEndpointConfig); this.createUser = _endpoint["default"].bind(this, modules, createUserEndpointConfig); this.updateUser = _endpoint["default"].bind(this, modules, updateUserEndpointConfig); this.deleteUser = _endpoint["default"].bind(this, modules, deleteUserEndpointConfig); @@ -3070,28 +3095,44 @@ var _default = function () { } else if (message.payload.type === 'membership') { _this7._listenerManager.announceMembership(_announce2); } - } else { + } else if (message.messageType === 3) { var _announce3 = {}; - _announce3.channel = null; - _announce3.subscription = null; - _announce3.actualChannel = subscriptionMatch != null ? channel : null; - _announce3.subscribedChannel = subscriptionMatch != null ? subscriptionMatch : channel; _announce3.channel = channel; _announce3.subscription = subscriptionMatch; _announce3.timetoken = publishMetaData.publishTimetoken; _announce3.publisher = message.issuingClientId; + _announce3.data = { + messageTimetoken: message.payload.data.messageTimetoken, + actionTimetoken: message.payload.data.actionTimetoken, + type: message.payload.data.type, + uuid: message.issuingClientId, + value: message.payload.data.value + }; + _announce3.event = message.payload.event; + + _this7._listenerManager.announceMessageAction(_announce3); + } else { + var _announce4 = {}; + _announce4.channel = null; + _announce4.subscription = null; + _announce4.actualChannel = subscriptionMatch != null ? channel : null; + _announce4.subscribedChannel = subscriptionMatch != null ? subscriptionMatch : channel; + _announce4.channel = channel; + _announce4.subscription = subscriptionMatch; + _announce4.timetoken = publishMetaData.publishTimetoken; + _announce4.publisher = message.issuingClientId; if (message.userMetadata) { - _announce3.userMetadata = message.userMetadata; + _announce4.userMetadata = message.userMetadata; } if (_this7._config.cipherKey) { - _announce3.message = _this7._crypto.decrypt(message.payload); + _announce4.message = _this7._crypto.decrypt(message.payload); } else { - _announce3.message = message.payload; + _announce4.message = message.payload; } - _this7._listenerManager.announceMessage(_announce3); + _this7._listenerManager.announceMessage(_announce4); } }); this._region = payload.metadata.region; @@ -3763,7 +3804,8 @@ function _default(modules, endpoint) { var networkingParams = { url: url, operation: endpoint.getOperation(), - timeout: endpoint.getRequestTimeout(modules) + timeout: endpoint.getRequestTimeout(modules), + headers: endpoint.getRequestHeaders ? endpoint.getRequestHeaders() : {} }; outgoingParams.uuid = config.UUID; outgoingParams.pnsdk = generatePNSDK(config); @@ -4949,6 +4991,236 @@ function handleResponse(modules, serverResponse, incomingParams) { "use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.getOperation = getOperation; +exports.validateParams = validateParams; +exports.usePost = usePost; +exports.postURL = postURL; +exports.getRequestTimeout = getRequestTimeout; +exports.getRequestHeaders = getRequestHeaders; +exports.isAuthSupported = isAuthSupported; +exports.prepareParams = prepareParams; +exports.postPayload = postPayload; +exports.handleResponse = handleResponse; + +var _flow_interfaces = __webpack_require__(0); + +var _operations = _interopRequireDefault(__webpack_require__(1)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function getOperation() { + return _operations["default"].PNAddMessageActionOperation; +} + +function validateParams(_ref, incomingParams) { + var config = _ref.config; + var action = incomingParams.action, + channel = incomingParams.channel, + messageTimetoken = incomingParams.messageTimetoken; + if (!messageTimetoken) return 'Missing message timetoken'; + if (!config.subscribeKey) return 'Missing Subscribe Key'; + if (!channel) return 'Missing message channel'; + if (!action) return 'Missing Action'; + if (!action.value) return 'Missing Action.value'; + if (!action.type) return 'Missing Action.type'; + if (action.type.length > 15) return 'Action.type value exceed maximum length of 15'; +} + +function usePost() { + return true; +} + +function postURL(_ref2, incomingParams) { + var config = _ref2.config; + var channel = incomingParams.channel, + messageTimetoken = incomingParams.messageTimetoken; + return "/v1/message-actions/".concat(config.subscribeKey, "/channel/").concat(channel, "/message/").concat(messageTimetoken); +} + +function getRequestTimeout(_ref3) { + var config = _ref3.config; + return config.getTransactionTimeout(); +} + +function getRequestHeaders() { + return { + 'Content-Type': 'application/json' + }; +} + +function isAuthSupported() { + return true; +} + +function prepareParams() { + return {}; +} + +function postPayload(modules, incomingParams) { + return incomingParams.action; +} + +function handleResponse(modules, addMessageActionResponse) { + return { + data: addMessageActionResponse.data + }; +} + +/***/ }), +/* 34 */ +/***/ (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__(0); + +var _operations = _interopRequireDefault(__webpack_require__(1)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function getOperation() { + return _operations["default"].PNRemoveMessageActionOperation; +} + +function validateParams(_ref, incomingParams) { + var config = _ref.config; + var channel = incomingParams.channel, + actionTimetoken = incomingParams.actionTimetoken, + messageTimetoken = incomingParams.messageTimetoken; + if (!messageTimetoken) return 'Missing message timetoken'; + if (!actionTimetoken) return 'Missing action timetoken'; + if (!config.subscribeKey) return 'Missing Subscribe Key'; + if (!channel) return 'Missing message channel'; +} + +function useDelete() { + return true; +} + +function getURL(_ref2, incomingParams) { + var config = _ref2.config; + var channel = incomingParams.channel, + actionTimetoken = incomingParams.actionTimetoken, + messageTimetoken = incomingParams.messageTimetoken; + return "/v1/message-actions/".concat(config.subscribeKey, "/channel/").concat(channel, "/message/").concat(messageTimetoken, "/action/").concat(actionTimetoken); +} + +function getRequestTimeout(_ref3) { + var config = _ref3.config; + return config.getTransactionTimeout(); +} + +function isAuthSupported() { + return true; +} + +function prepareParams() { + return {}; +} + +function handleResponse(modules, removeMessageActionResponse) { + return { + data: removeMessageActionResponse.data + }; +} + +/***/ }), +/* 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__(0); + +var _operations = _interopRequireDefault(__webpack_require__(1)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function getOperation() { + return _operations["default"].PNGetMessageActionsOperation; +} + +function validateParams(_ref, incomingParams) { + var config = _ref.config; + var channel = incomingParams.channel; + if (!config.subscribeKey) return 'Missing Subscribe Key'; + if (!channel) return 'Missing message channel'; +} + +function getURL(_ref2, incomingParams) { + var config = _ref2.config; + var channel = incomingParams.channel; + return "/v1/message-actions/".concat(config.subscribeKey, "/channel/").concat(channel); +} + +function getRequestTimeout(_ref3) { + var config = _ref3.config; + return config.getTransactionTimeout(); +} + +function isAuthSupported() { + return true; +} + +function prepareParams(modules, incomingParams) { + var limit = incomingParams.limit, + start = incomingParams.start, + end = incomingParams.end; + var outgoingParams = {}; + if (limit) outgoingParams.limit = limit; + if (start) outgoingParams.start = start; + if (end) outgoingParams.end = end; + return outgoingParams; +} + +function handleResponse(modules, getMessageActionsResponse) { + var response = { + data: getMessageActionsResponse.data + }; + + if (response.data.length) { + response.end = response.data[response.data.length - 1].actionTimetoken; + response.start = response.data[0].actionTimetoken; + } + + return response; +} + +/***/ }), +/* 36 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + Object.defineProperty(exports, "__esModule", { value: true }); @@ -5062,7 +5334,7 @@ function handleResponse(modules, usersResponse) { } /***/ }), -/* 34 */ +/* 37 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -5183,7 +5455,7 @@ function handleResponse(modules, usersResponse) { } /***/ }), -/* 35 */ +/* 38 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -5250,7 +5522,7 @@ function handleResponse(modules, usersResponse) { } /***/ }), -/* 36 */ +/* 39 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -5336,7 +5608,7 @@ function handleResponse(modules, usersResponse) { } /***/ }), -/* 37 */ +/* 40 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -5431,7 +5703,7 @@ function handleResponse(modules, usersResponse) { } /***/ }), -/* 38 */ +/* 41 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -5550,7 +5822,7 @@ function handleResponse(modules, spacesResponse) { } /***/ }), -/* 39 */ +/* 42 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -5671,7 +5943,7 @@ function handleResponse(modules, spacesResponse) { } /***/ }), -/* 40 */ +/* 43 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -5738,7 +6010,7 @@ function handleResponse(modules, spacesResponse) { } /***/ }), -/* 41 */ +/* 44 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -5833,7 +6105,7 @@ function handleResponse(modules, spacesResponse) { } /***/ }), -/* 42 */ +/* 45 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -5919,7 +6191,7 @@ function handleResponse(modules, spacesResponse) { } /***/ }), -/* 43 */ +/* 46 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6025,7 +6297,7 @@ function handleResponse(modules, membersResponse) { } /***/ }), -/* 44 */ +/* 47 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6171,7 +6443,7 @@ function handleResponse(modules, membersResponse) { } /***/ }), -/* 45 */ +/* 48 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6359,7 +6631,7 @@ function handleResponse(modules, membersResponse) { } /***/ }), -/* 46 */ +/* 49 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6499,7 +6771,7 @@ function handleResponse(modules, membersResponse) { } /***/ }), -/* 47 */ +/* 50 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6605,7 +6877,7 @@ function handleResponse(modules, membershipsResponse) { } /***/ }), -/* 48 */ +/* 51 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6793,7 +7065,7 @@ function handleResponse(modules, membershipsResponse) { } /***/ }), -/* 49 */ +/* 52 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -6939,7 +7211,7 @@ function handleResponse(modules, membershipsResponse) { } /***/ }), -/* 50 */ +/* 53 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7079,7 +7351,7 @@ function handleResponse(modules, membershipsResponse) { } /***/ }), -/* 51 */ +/* 54 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7152,7 +7424,7 @@ function handleResponse(modules, serverResponse) { } /***/ }), -/* 52 */ +/* 55 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7243,7 +7515,7 @@ function handleResponse() { } /***/ }), -/* 53 */ +/* 56 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7412,7 +7684,7 @@ function handleResponse(modules, response) { } /***/ }), -/* 54 */ +/* 57 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7540,7 +7812,7 @@ function handleResponse(modules, serverResponse) { } /***/ }), -/* 55 */ +/* 58 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7612,7 +7884,7 @@ function handleResponse(modules, serverResponse) { } /***/ }), -/* 56 */ +/* 59 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7682,7 +7954,9 @@ function prepareParams(modules, incomingParams) { _incomingParams$count = incomingParams.count, count = _incomingParams$count === void 0 ? 100 : _incomingParams$count, _incomingParams$strin = incomingParams.stringifiedTimeToken, - stringifiedTimeToken = _incomingParams$strin === void 0 ? false : _incomingParams$strin; + stringifiedTimeToken = _incomingParams$strin === void 0 ? false : _incomingParams$strin, + _incomingParams$inclu = incomingParams.includeMeta, + includeMeta = _incomingParams$inclu === void 0 ? false : _incomingParams$inclu; var outgoingParams = { include_token: 'true' }; @@ -7691,6 +7965,7 @@ function prepareParams(modules, incomingParams) { if (end) outgoingParams.end = end; if (stringifiedTimeToken) outgoingParams.string_message_token = 'true'; if (reverse != null) outgoingParams.reverse = reverse.toString(); + if (includeMeta) outgoingParams.include_meta = 'true'; return outgoingParams; } @@ -7707,6 +7982,11 @@ function handleResponse(modules, serverResponse) { timetoken: serverHistoryItem.timetoken, entry: __processMessage(modules, serverHistoryItem.message) }; + + if (serverHistoryItem.meta) { + item.meta = serverHistoryItem.meta; + } + response.messages.push(item); }); } @@ -7715,7 +7995,7 @@ function handleResponse(modules, serverResponse) { } /***/ }), -/* 57 */ +/* 60 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7785,7 +8065,7 @@ function handleResponse(modules, serverResponse) { } /***/ }), -/* 58 */ +/* 61 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7873,7 +8153,7 @@ function handleResponse(modules, serverResponse) { } /***/ }), -/* 59 */ +/* 62 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7915,18 +8195,27 @@ function getOperation() { } function validateParams(modules, incomingParams) { - var channels = incomingParams.channels; + var channels = incomingParams.channels, + _incomingParams$inclu = incomingParams.includeMessageActions, + includeMessageActions = _incomingParams$inclu === void 0 ? false : _incomingParams$inclu; var config = modules.config; if (!channels || channels.length === 0) return 'Missing channels'; if (!config.subscribeKey) return 'Missing Subscribe Key'; + + if (includeMessageActions && channels.length > 1) { + throw new TypeError('History can return actions data for a single channel only. Either pass a single channel or disable the includeMessageActions flag.'); + } } function getURL(modules, incomingParams) { var _incomingParams$chann = incomingParams.channels, - channels = _incomingParams$chann === void 0 ? [] : _incomingParams$chann; + channels = _incomingParams$chann === void 0 ? [] : _incomingParams$chann, + _incomingParams$inclu2 = incomingParams.includeMessageActions, + includeMessageActions = _incomingParams$inclu2 === void 0 ? false : _incomingParams$inclu2; var config = modules.config; + var endpoint = !includeMessageActions ? 'history' : 'history-with-actions'; var stringifiedChannels = channels.length > 0 ? channels.join(',') : ','; - return "/v3/history/sub-key/".concat(config.subscribeKey, "/channel/").concat(_utils["default"].encodeString(stringifiedChannels)); + return "/v3/".concat(endpoint, "/sub-key/").concat(config.subscribeKey, "/channel/").concat(_utils["default"].encodeString(stringifiedChannels)); } function getRequestTimeout(_ref) { @@ -7943,12 +8232,15 @@ function prepareParams(modules, incomingParams) { end = incomingParams.end, count = incomingParams.count, _incomingParams$strin = incomingParams.stringifiedTimeToken, - stringifiedTimeToken = _incomingParams$strin === void 0 ? false : _incomingParams$strin; + stringifiedTimeToken = _incomingParams$strin === void 0 ? false : _incomingParams$strin, + _incomingParams$inclu3 = incomingParams.includeMeta, + includeMeta = _incomingParams$inclu3 === void 0 ? false : _incomingParams$inclu3; var outgoingParams = {}; if (count) outgoingParams.max = count; if (start) outgoingParams.start = start; if (end) outgoingParams.end = end; if (stringifiedTimeToken) outgoingParams.string_message_token = 'true'; + if (includeMeta) outgoingParams.include_meta = 'true'; return outgoingParams; } @@ -7964,6 +8256,15 @@ function handleResponse(modules, serverResponse) { announce.subscription = null; announce.timetoken = messageEnvelope.timetoken; announce.message = __processMessage(modules, messageEnvelope.message); + + if (messageEnvelope.actions) { + announce.data = messageEnvelope.actions; + } + + if (messageEnvelope.meta) { + announce.meta = messageEnvelope.meta; + } + response.channels[channelName].push(announce); }); }); @@ -7971,7 +8272,7 @@ function handleResponse(modules, serverResponse) { } /***/ }), -/* 60 */ +/* 63 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -8090,7 +8391,7 @@ function handleResponse(modules, serverResponse) { } /***/ }), -/* 61 */ +/* 64 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -8260,7 +8561,7 @@ exports["default"] = _default; module.exports = exports.default; /***/ }), -/* 62 */ +/* 65 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -8307,7 +8608,7 @@ exports["default"] = _default; module.exports = exports.default; /***/ }), -/* 63 */ +/* 66 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -8318,7 +8619,7 @@ Object.defineProperty(exports, "__esModule", { }); exports["default"] = void 0; -var _cborSync = _interopRequireDefault(__webpack_require__(64)); +var _cborSync = _interopRequireDefault(__webpack_require__(67)); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } @@ -8365,7 +8666,7 @@ exports["default"] = _default; module.exports = exports.default; /***/ }), -/* 64 */ +/* 67 */ /***/ (function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) { @@ -8999,7 +9300,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_ }); /***/ }), -/* 65 */ +/* 68 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -9015,7 +9316,7 @@ exports.del = del; var _flow_interfaces = __webpack_require__(0); -var _utils = __webpack_require__(66); +var _utils = __webpack_require__(69); function log(url, qs, res) { var _pickLogger = function _pickLogger() { @@ -9113,7 +9414,7 @@ function del(params, endpoint, callback) { } /***/ }), -/* 66 */ +/* 69 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; diff --git a/dist/titanium/pubnub.min.js b/dist/titanium/pubnub.min.js index d61aa782d..6e214661a 100644 --- a/dist/titanium/pubnub.min.js +++ b/dist/titanium/pubnub.min.js @@ -1 +1 @@ -exports.PubNub=function(n){var r={};function i(e){if(r[e])return r[e].exports;var t=r[e]={i:e,l:!1,exports:{}};return n[e].call(t.exports,t,t.exports,i),t.l=!0,t.exports}return i.m=n,i.c=r,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)i.d(n,r,function(e){return t[e]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="",i(i.s=9)}([function(e,t,n){"use strict";e.exports={}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;t.default={PNTimeOperation:"PNTimeOperation",PNHistoryOperation:"PNHistoryOperation",PNDeleteMessagesOperation:"PNDeleteMessagesOperation",PNFetchMessagesOperation:"PNFetchMessagesOperation",PNMessageCounts:"PNMessageCountsOperation",PNSubscribeOperation:"PNSubscribeOperation",PNUnsubscribeOperation:"PNUnsubscribeOperation",PNPublishOperation:"PNPublishOperation",PNSignalOperation:"PNSignalOperation",PNCreateUserOperation:"PNCreateUserOperation",PNUpdateUserOperation:"PNUpdateUserOperation",PNDeleteUserOperation:"PNDeleteUserOperation",PNGetUserOperation:"PNGetUsersOperation",PNGetUsersOperation:"PNGetUsersOperation",PNCreateSpaceOperation:"PNCreateSpaceOperation",PNUpdateSpaceOperation:"PNUpdateSpaceOperation",PNDeleteSpaceOperation:"PNDeleteSpaceOperation",PNGetSpaceOperation:"PNGetSpacesOperation",PNGetSpacesOperation:"PNGetSpacesOperation",PNGetMembersOperation:"PNGetMembersOperation",PNUpdateMembersOperation:"PNUpdateMembersOperation",PNGetMembershipsOperation:"PNGetMembershipsOperation",PNUpdateMembershipsOperation:"PNUpdateMembershipsOperation",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",PNAccessManagerGrantToken:"PNAccessManagerGrantToken",PNAccessManagerAudit:"PNAccessManagerAudit"},e.exports=t.default},function(e,t,n){"use strict";function r(e){return encodeURIComponent(e).replace(/[!~*'()]/g,function(e){return"%".concat(e.charCodeAt(0).toString(16).toUpperCase())})}function i(e){return function(e){var t=[];return Object.keys(e).forEach(function(e){return t.push(e)}),t}(e).sort()}e.exports={signPamFromParams:function(t){return i(t).map(function(e){return"".concat(e,"=").concat(r(t[e]))}).join("&")},endsWith:function(e,t){return-1!==e.indexOf(t,this.length-t.length)},createPromise:function(){var n,r;return{promise:new Promise(function(e,t){n=e,r=t}),reject:r,fulfill:n}},encodeString:r}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r,i=(r=n(5))&&r.__esModule?r:{default:r};n(0);function s(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 e=this.words,t=this.sigBytes;e[t>>>2]&=4294967295<<32-t%4*8,e.length=a.ceil(t/4)},clone:function(){var e=r.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],n=0;n>>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 u.init(n,t/2)}},o=i.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 u.init(n,t)}},c=i.Utf8={stringify:function(e){try{return decodeURIComponent(escape(o.stringify(e)))}catch(e){throw Error("Malformed UTF-8 data")}},parse:function(e){return o.parse(unescape(encodeURIComponent(e)))}},f=t.BufferedBlockAlgorithm=r.extend({reset:function(){this._data=new u.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=c.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(e){var t=this._data,n=t.words,r=t.sigBytes,i=this.blockSize,s=r/(4*i);if(e=(s=e?a.ceil(s):a.max((0|s)-this._minBufferSize,0))*i,r=a.min(4*e,r),e){for(var o=0;o>>7)^(h<<14|h>>>18)^h>>>3)+g[l-7]+((d<<15|d>>>17)^(d<<13|d>>>19)^d>>>10)+g[l-16]}h=f+((a<<26|a>>>6)^(a<<21|a>>>11)^(a<<7|a>>>25))+(a&u^~a&c)+p[l]+g[l],d=((r<<30|r>>>2)^(r<<19|r>>>13)^(r<<10|r>>>22))+(r&i^r&s^i&s),f=c,c=u,u=a,a=o+h|0,o=s,s=i,i=r,r=h+d|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]+a|0,n[5]=n[5]+u|0,n[6]=n[6]+c|0,n[7]=n[7]+f|0},_doFinalize:function(){var e=this._data,t=e.words,n=8*this._nDataBytes,r=8*e.sigBytes;return t[r>>>5]|=128<<24-r%32,t[14+(64+r>>>9<<4)]=i.floor(n/4294967296),t[15+(64+r>>>9<<4)]=n,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}});e.SHA256=n._createHelper(r),e.HmacSHA256=n._createHmacHelper(r)}(Math),c=(r=C).enc.Utf8,r.algo.HMAC=r.lib.Base.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=c.parse(t));var n=e.blockSize,r=4*n;t.sigBytes>r&&(t=e.finalize(t)),t.clamp();for(var i=this._oKey=t.clone(),s=this._iKey=t.clone(),o=i.words,a=s.words,u=0;u>>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;o<4&&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 t=e.length,n=this._map;!(r=n.charAt(64))||-1!=(r=e.indexOf(r))&&(t=r);for(var r=[],i=0,s=0;s>>6-s%4*2;r[i>>>2]|=(o|a)<<24-i%4*8,i++}return u.create(r,i)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="},function(s){function O(e,t,n,r,i,s,o){return((e=e+(t&n|~t&r)+i+o)<>>32-s)+t}function T(e,t,n,r,i,s,o){return((e=e+(t&r|n&~r)+i+o)<>>32-s)+t}function S(e,t,n,r,i,s,o){return((e=e+(t^n^r)+i+o)<>>32-s)+t}function M(e,t,n,r,i,s,o){return((e=e+(n^(t|~r))+i+o)<>>32-s)+t}for(var e=C,t=(r=e.lib).WordArray,n=r.Hasher,r=e.algo,w=[],i=0;i<64;i++)w[i]=4294967296*s.abs(s.sin(i+1))|0;r=r.MD5=n.extend({_doReset:function(){this._hash=new t.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(e,t){for(var n=0;n<16;n++){var r=e[o=t+n];e[o]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8)}n=this._hash.words;var i,s,o=e[t+0],a=(r=e[t+1],e[t+2]),u=e[t+3],c=e[t+4],f=e[t+5],l=e[t+6],h=e[t+7],d=e[t+8],p=e[t+9],g=e[t+10],v=e[t+11],b=e[t+12],y=e[t+13],m=e[t+14],_=e[t+15],k=n[0],P=M(P=M(P=M(P=M(P=S(P=S(P=S(P=S(P=T(P=T(P=T(P=T(P=O(P=O(P=O(P=O(P=n[1],s=O(s=n[2],i=O(i=n[3],k=O(k,P,s,i,o,7,w[0]),P,s,r,12,w[1]),k,P,a,17,w[2]),i,k,u,22,w[3]),s=O(s,i=O(i,k=O(k,P,s,i,c,7,w[4]),P,s,f,12,w[5]),k,P,l,17,w[6]),i,k,h,22,w[7]),s=O(s,i=O(i,k=O(k,P,s,i,d,7,w[8]),P,s,p,12,w[9]),k,P,g,17,w[10]),i,k,v,22,w[11]),s=O(s,i=O(i,k=O(k,P,s,i,b,7,w[12]),P,s,y,12,w[13]),k,P,m,17,w[14]),i,k,_,22,w[15]),s=T(s,i=T(i,k=T(k,P,s,i,r,5,w[16]),P,s,l,9,w[17]),k,P,v,14,w[18]),i,k,o,20,w[19]),s=T(s,i=T(i,k=T(k,P,s,i,f,5,w[20]),P,s,g,9,w[21]),k,P,_,14,w[22]),i,k,c,20,w[23]),s=T(s,i=T(i,k=T(k,P,s,i,p,5,w[24]),P,s,m,9,w[25]),k,P,u,14,w[26]),i,k,d,20,w[27]),s=T(s,i=T(i,k=T(k,P,s,i,y,5,w[28]),P,s,a,9,w[29]),k,P,h,14,w[30]),i,k,b,20,w[31]),s=S(s,i=S(i,k=S(k,P,s,i,f,4,w[32]),P,s,d,11,w[33]),k,P,v,16,w[34]),i,k,m,23,w[35]),s=S(s,i=S(i,k=S(k,P,s,i,r,4,w[36]),P,s,c,11,w[37]),k,P,h,16,w[38]),i,k,g,23,w[39]),s=S(s,i=S(i,k=S(k,P,s,i,y,4,w[40]),P,s,o,11,w[41]),k,P,u,16,w[42]),i,k,l,23,w[43]),s=S(s,i=S(i,k=S(k,P,s,i,p,4,w[44]),P,s,b,11,w[45]),k,P,_,16,w[46]),i,k,a,23,w[47]),s=M(s,i=M(i,k=M(k,P,s,i,o,6,w[48]),P,s,h,10,w[49]),k,P,m,15,w[50]),i,k,f,21,w[51]),s=M(s,i=M(i,k=M(k,P,s,i,b,6,w[52]),P,s,u,10,w[53]),k,P,g,15,w[54]),i,k,r,21,w[55]),s=M(s,i=M(i,k=M(k,P,s,i,d,6,w[56]),P,s,_,10,w[57]),k,P,l,15,w[58]),i,k,y,21,w[59]),s=M(s,i=M(i,k=M(k,P,s,i,c,6,w[60]),P,s,v,10,w[61]),k,P,a,15,w[62]),i,k,p,21,w[63]);n[0]=n[0]+k|0,n[1]=n[1]+P|0,n[2]=n[2]+s|0,n[3]=n[3]+i|0},_doFinalize:function(){var e=this._data,t=e.words,n=8*this._nDataBytes,r=8*e.sigBytes;t[r>>>5]|=128<<24-r%32;var i=s.floor(n/4294967296);for(t[15+(r+64>>>9<<4)]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8),t[14+(r+64>>>9<<4)]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),e.sigBytes=4*(t.length+1),this._process(),t=(e=this._hash).words,n=0;n<4;n++)r=t[n],t[n]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8);return e},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}}),e.MD5=n._createHelper(r),e.HmacMD5=n._createHmacHelper(r)}(Math),a=(s=(o=C).lib).Base,f=s.WordArray,l=(s=o.algo).EvpKDF=a.extend({cfg:a.extend({keySize:4,hasher:s.MD5,iterations:1}),init:function(e){this.cfg=this.cfg.extend(e)},compute:function(e,t){for(var n=(o=this.cfg).hasher.create(),r=f.create(),i=r.words,s=o.keySize,o=o.iterations;i.length>>2]}},e.BlockCipher=s.extend({cfg:s.cfg.extend({mode:u,padding:c}),reset:function(){s.reset.call(this);var e=(t=this.cfg).iv,t=t.mode;if(this._xformMode==this._ENC_XFORM_MODE)var n=t.createEncryptor;else n=t.createDecryptor,this._minBufferSize=1;this._mode=n.call(t,this,e&&e.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 f=e.CipherParams=t.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),l=(u=(h.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext;return((e=e.salt)?o.create([1398893684,1701076831]).concat(e).concat(t):t).toString(r)},parse:function(e){var t=(e=r.parse(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 f.create({ciphertext:e,salt:n})}},e.SerializableCipher=t.extend({cfg:t.extend({format:u}),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,f.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}})),h=(h.kdf={}).OpenSSL={execute:function(e,t,n,r){return r=r||o.random(8),e=i.create({keySize:t+n}).compute(e,r),n=o.create(e.words.slice(t),4*n),e.sigBytes=4*t,f.create({key:e,iv:n,salt:r})}},d=e.PasswordBasedCipher=l.extend({cfg:l.cfg.extend({kdf:h}),encrypt:function(e,t,n,r){return n=(r=this.cfg.extend(r)).kdf.execute(n,e.keySize,e.ivSize),r.iv=n.iv,(e=l.encrypt.call(this,e,t,n.key,r)).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,l.decrypt.call(this,e,t,n.key,r)}})}(),function(){for(var e=C,t=e.lib.BlockCipher,n=e.algo,o=[],r=[],i=[],s=[],a=[],u=[],c=[],f=[],l=[],h=[],d=[],p=0;p<256;p++)d[p]=p<128?p<<1:p<<1^283;var g=0,v=0;for(p=0;p<256;p++){var b=(b=v^v<<1^v<<2^v<<3^v<<4)>>>8^255&b^99;o[g]=b;var y=d[r[b]=g],m=d[y],_=d[m],k=257*d[b]^16843008*b;i[g]=k<<24|k>>>8,s[g]=k<<16|k>>>16,a[g]=k<<8|k>>>24,u[g]=k,k=16843009*_^65537*m^257*y^16843008*g,c[b]=k<<24|k>>>8,f[b]=k<<16|k>>>16,l[b]=k<<8|k>>>24,h[b]=k,g?(g=y^d[d[d[_^y]]],v^=d[d[v]]):g=v=1}var P=[0,1,2,4,8,16,32,64,128,27,54];n=n.AES=t.extend({_doReset:function(){for(var e=(n=this._key).words,t=n.sigBytes/4,n=4*((this._nRounds=t+6)+1),r=this._keySchedule=[],i=0;i>>24]<<24|o[s>>>16&255]<<16|o[s>>>8&255]<<8|o[255&s]):(s=o[(s=s<<8|s>>>24)>>>24]<<24|o[s>>>16&255]<<16|o[s>>>8&255]<<8|o[255&s],s^=P[i/t|0]<<24),r[i]=r[i-t]^s}for(e=this._invKeySchedule=[],t=0;t>>24]]^f[o[s>>>16&255]]^l[o[s>>>8&255]]^h[o[255&s]]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,i,s,a,u,o)},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,c,f,l,h,r),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],f=e[t+1]^n[1],l=e[t+2]^n[2],h=e[t+3]^n[3],d=4,p=1;p>>24]^i[f>>>16&255]^s[l>>>8&255]^o[255&h]^n[d++],v=r[f>>>24]^i[l>>>16&255]^s[h>>>8&255]^o[255&c]^n[d++],b=r[l>>>24]^i[h>>>16&255]^s[c>>>8&255]^o[255&f]^n[d++];h=r[h>>>24]^i[c>>>16&255]^s[f>>>8&255]^o[255&l]^n[d++],c=g,f=v,l=b}g=(a[c>>>24]<<24|a[f>>>16&255]<<16|a[l>>>8&255]<<8|a[255&h])^n[d++],v=(a[f>>>24]<<24|a[l>>>16&255]<<16|a[h>>>8&255]<<8|a[255&c])^n[d++],b=(a[l>>>24]<<24|a[h>>>16&255]<<16|a[c>>>8&255]<<8|a[255&f])^n[d++],h=(a[h>>>24]<<24|a[c>>>16&255]<<16|a[f>>>8&255]<<8|a[255&l])^n[d++],e[t]=g,e[t+1]=v,e[t+2]=b,e[t+3]=h},keySize:8});e.AES=t._createHelper(n)}(),C.mode.ECB=((h=C.lib.BlockCipherMode.extend()).Encryptor=h.extend({processBlock:function(e,t){this._cipher.encryptBlock(e,t)}}),h.Decryptor=h.extend({processBlock:function(e,t){this._cipher.decryptBlock(e,t)}}),h),e.exports=C},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;r(n(6)),r(n(3)),r(n(7));var c=r(n(14)),f=r(n(15)),l=r(n(2)),a=(n(0),r(n(4)));function r(e){return e&&e.__esModule?e:{default:e}}function i(e,t){for(var n=0;n=s){var o={};o.category=a.default.PNRequestMessageCountExceededCategory,o.operation=t.operation,this._listenerManager.announceStatus(o)}r.forEach(function(e){var t=e.channel,n=e.subscriptionMatch,r=e.publishMetaData;if(t===n&&(n=null),c){if(u._dedupingManager.isDuplicate(e))return;u._dedupingManager.addEntry(e)}if(l.default.endsWith(e.channel,"-pnpres")){var i={channel:null,subscription:null};i.actualChannel=null!=n?t:null,i.subscribedChannel=null!=n?n:t,t&&(i.channel=t.substring(0,t.lastIndexOf("-pnpres"))),n&&(i.subscription=n.substring(0,n.lastIndexOf("-pnpres"))),i.action=e.payload.action,i.state=e.payload.data,i.timetoken=r.publishTimetoken,i.occupancy=e.payload.occupancy,i.uuid=e.payload.uuid,i.timestamp=e.payload.timestamp,e.payload.join&&(i.join=e.payload.join),e.payload.leave&&(i.leave=e.payload.leave),e.payload.timeout&&(i.timeout=e.payload.timeout),u._listenerManager.announcePresence(i)}else if(1===e.messageType){var s={channel:null,subscription:null};s.channel=t,s.subscription=n,s.timetoken=r.publishTimetoken,s.publisher=e.issuingClientId,e.userMetadata&&(s.userMetadata=e.userMetadata),s.message=e.payload,u._listenerManager.announceSignal(s)}else if(2===e.messageType){var o={channel:null,subscription:null};o.channel=t,o.subscription=n,o.timetoken=r.publishTimetoken,o.publisher=e.issuingClientId,e.userMetadata&&(o.userMetadata=e.userMetadata),o.message={event:e.payload.event,type:e.payload.type,data:e.payload.data},"user"===e.payload.type?u._listenerManager.announceUser(o):"space"===e.payload.type?u._listenerManager.announceSpace(o):"membership"===e.payload.type&&u._listenerManager.announceMembership(o)}else{var a={channel:null,subscription:null};a.actualChannel=null!=n?t:null,a.subscribedChannel=null!=n?n:t,a.channel=t,a.subscription=n,a.timetoken=r.publishTimetoken,a.publisher=e.issuingClientId,e.userMetadata&&(a.userMetadata=e.userMetadata),u._config.cipherKey?a.message=u._crypto.decrypt(e.payload):a.message=e.payload,u._listenerManager.announceMessage(a)}}),this._region=e.metadata.region,this._startSubscribeLoop()}}},{key:"_stopSubscribeLoop",value:function(){this._subscribeCall&&("function"==typeof this._subscribeCall.abort&&this._subscribeCall.abort(),this._subscribeCall=null)}}])&&i(s.prototype,o),void(u&&i(s,u)),p);function p(e){var t=e.subscribeEndpoint,n=e.leaveEndpoint,r=e.heartbeatEndpoint,i=e.setStateEndpoint,s=e.timeEndpoint,o=e.config,a=e.crypto,u=e.listenerManager;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,p),h(this,"_crypto",void 0),h(this,"_config",void 0),h(this,"_listenerManager",void 0),h(this,"_reconnectionManager",void 0),h(this,"_leaveEndpoint",void 0),h(this,"_heartbeatEndpoint",void 0),h(this,"_setStateEndpoint",void 0),h(this,"_subscribeEndpoint",void 0),h(this,"_channels",void 0),h(this,"_presenceChannels",void 0),h(this,"_heartbeatChannels",void 0),h(this,"_heartbeatChannelGroups",void 0),h(this,"_channelGroups",void 0),h(this,"_presenceChannelGroups",void 0),h(this,"_currentTimetoken",void 0),h(this,"_lastTimetoken",void 0),h(this,"_storedTimetoken",void 0),h(this,"_region",void 0),h(this,"_subscribeCall",void 0),h(this,"_heartbeatTimer",void 0),h(this,"_subscriptionStatusAnnounced",void 0),h(this,"_autoNetworkDetection",void 0),h(this,"_isOnline",void 0),h(this,"_pendingChannelSubscriptions",void 0),h(this,"_pendingChannelGroupSubscriptions",void 0),h(this,"_dedupingManager",void 0),this._listenerManager=u,this._config=o,this._leaveEndpoint=n,this._heartbeatEndpoint=r,this._setStateEndpoint=i,this._subscribeEndpoint=t,this._crypto=a,this._channels={},this._presenceChannels={},this._heartbeatChannels={},this._heartbeatChannelGroups={},this._channelGroups={},this._presenceChannelGroups={},this._pendingChannelSubscriptions=[],this._pendingChannelGroupSubscriptions=[],this._currentTimetoken=0,this._lastTimetoken=0,this._storedTimetoken=null,this._subscriptionStatusAnnounced=!1,this._isOnline=!0,this._reconnectionManager=new c.default({timeEndpoint:s}),this._dedupingManager=new f.default({config:o})}t.default=d,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r;(r=n(8))&&r.__esModule,n(0);function i(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=[]}}])&&i(o.prototype,a),void(u&&i(o,u)),f);function f(e){var t=e.config;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,f),s(this,"_config",void 0),s(this,"hashHistory",void 0),this.hashHistory=[],this._config=t}t.default=c,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r;(r=n(3))&&r.__esModule,n(0);function i(e){return(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})(e)}function s(e,t){for(var n=0;n=this._maxSubDomain&&(this._currentSubDomain=1),e=this._currentSubDomain.toString(),this._providedFQDN.replace("ps.pndsn.com","ps".concat(e,".pndsn.com"))):this._providedFQDN;var e}},{key:"hasModule",value:function(e){return e in this._modules}},{key:"shiftStandardOrigin",value:function(){return this._standardOrigin=this.nextOrigin(),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:"PATCH",value:function(e,t,n,r){return this._modules.patch(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 r.default.PNNetworkIssuesCategory;if("ECONNREFUSED"===e.code)return r.default.PNNetworkIssuesCategory;if("ECONNRESET"===e.code)return r.default.PNNetworkIssuesCategory;if("EAI_AGAIN"===e.code)return r.default.PNNetworkIssuesCategory;if(0===e.status||e.hasOwnProperty("status")&&void 0===e.status)return r.default.PNNetworkIssuesCategory;if(e.timeout)return r.default.PNTimeoutCategory;if("ETIMEDOUT"===e.code)return r.default.PNNetworkIssuesCategory;if(e.response){if(e.response.badRequest)return r.default.PNBadRequestCategory;if(e.response.forbidden)return r.default.PNAccessDeniedCategory}return r.default.PNUnknownCategory}}])&&s(a.prototype,u),void(c&&s(a,c)),l);function l(t){var n=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,l),o(this,"_modules",void 0),o(this,"_config",void 0),o(this,"_maxSubDomain",void 0),o(this,"_currentSubDomain",void 0),o(this,"_standardOrigin",void 0),o(this,"_subscribeOrigin",void 0),o(this,"_providedFQDN",void 0),o(this,"_requestTimeout",void 0),o(this,"_coreParams",void 0),this._modules={},Object.keys(t).forEach(function(e){n._modules[e]=t[e].bind(n)})}t.default=f,e.exports=t.default},function(e,t,n){"use strict";function r(e,t){for(var n=0;n>10,n=1023&e,r=32768&e;if(31==t)return 0==n?r?-1/0:1/0:NaN;var i=t?Math.pow(2,t-25)*(1024+n):Math.pow(2,-24)*n;return r?-i:i},readFloat32:function(){var e=this.readUint32(),t=(2147483647&e)>>23,n=8388607&e,r=2147483648&e;if(255==t)return 0==n?r?-1/0:1/0:NaN;var i=t?Math.pow(2,t-23-127)*(8388608+n):Math.pow(2,-149)*n;return r?-i:i},readFloat64:function(){var e=this.readUint32(),t=this.readUint32(),n=e>>20&2047,r=4294967296*(1048575&e)+t,i=2147483648&e;if(2047==n)return 0===r?i?-1/0:1/0:NaN;var s=n?Math.pow(2,n-52-1023)*(4503599627370496+r):Math.pow(2,-1074)*r;return i?-s:s},readUint16:function(){return 256*this.readByte()+this.readByte()},readUint32:function(){return 65536*this.readUint16()+this.readUint16()},readUint64:function(){return 4294967296*this.readUint32()+this.readUint32()}},t.prototype={writeByte:r("writeByte"),result:r("result"),writeFloat16:r("writeFloat16"),writeFloat32:r("writeFloat32"),writeFloat64:r("writeFloat64"),writeUint16:function(e){this.writeByte(e>>8&255),this.writeByte(255&e)},writeUint32:function(e){this.writeUint16(e>>16&65535),this.writeUint16(65535&e)},writeUint64:function(e){if(9007199254740992<=e||e<=-9007199254740992)throw new Error("Cannot encode Uint64 of: "+e+" magnitude to big (floating point errors)");this.writeUint32(Math.floor(e/4294967296)),this.writeUint32(e%4294967296)},writeString:r("writeString"),canWriteBinary:function(e){return!1},writeBinary:r("writeChunk")};var h=new Error;function d(e){var t=function(e){var t=e.readByte();return{type:t>>5,value:31&t}}(e);switch(t.type){case 0:return l(t,e);case 1:return-1-l(t,e);case 2:return e.readChunk(l(t,e));case 3:var n=e.readChunk(l(t,e));return n.toString("utf-8");case 4:case 5:var r=l(t,e),i=[];if(null!==r){5===t.type&&(r*=2);for(var s=0;s=this.latestBuffer.length&&(this.completeBuffers.push(this.latestBuffer),this.latestBuffer=Buffer.alloc(this.defaultBufferLength),this.latestBufferOffset=0),this.byteLength++},n.prototype.writeFloat32=function(e){var t=Buffer.alloc(4);t.writeFloatBE(e,0),this.writeBuffer(t)},n.prototype.writeFloat64=function(e){var t=Buffer.alloc(8);t.writeDoubleBE(e,0),this.writeBuffer(t)},n.prototype.writeString=function(e,t){var n=Buffer.from(e,"utf-8");t(n.length),this.writeBuffer(n)},n.prototype.canWriteBinary=function(e){return e instanceof Buffer},n.prototype.writeBinary=function(e,t){t(e.length),this.writeBuffer(e)},n.prototype.writeBuffer=function(e){if(!(e instanceof Buffer))throw new TypeError("BufferWriter only accepts Buffers");this.latestBufferOffset?this.latestBuffer.length-this.latestBufferOffset>=e.length?(e.copy(this.latestBuffer,this.latestBufferOffset),this.latestBufferOffset+=e.length,this.latestBufferOffset>=this.latestBuffer.length&&(this.completeBuffers.push(this.latestBuffer),this.latestBuffer=Buffer.alloc(this.defaultBufferLength),this.latestBufferOffset=0)):(this.completeBuffers.push(this.latestBuffer.slice(0,this.latestBufferOffset)),this.completeBuffers.push(e),this.latestBuffer=Buffer.alloc(this.defaultBufferLength),this.latestBufferOffset=0):this.completeBuffers.push(e),this.byteLength+=e.length},n.prototype.result=function(){for(var e=Buffer.alloc(this.byteLength),t=0,n=0;n>>>>>"),s.log("[".concat(a," / ").concat(o,"]"),"\n",e,"\n",t,"\n",n),s.log("-----")}(n,r,t.responseText),o(u,e)},t.onerror=function(e){return u.error=!0,u.errorData=e.error,u.category=a._detectErrorCategory(e.error),o(u,null)},t.timeout="android"===Ti.Platform.osname?2147483647:1/0,t.send(i)}},function(e,t,n){"use strict";function i(e){return(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})(e)}function s(t,n,r){null!=r?Array.isArray(r)?r.forEach(function(e){s(t,n,e)}):"object"===i(r)?Object.keys(r).forEach(function(e){s(t,"".concat(n,"[").concat(e,"]"),r[e])}):t.push("".concat(encodeURIComponent(n),"=").concat(encodeURIComponent(r))):null===r&&t.push(encodeURIComponent("".concat(encodeURIComponent(n))))}Object.defineProperty(t,"__esModule",{value:!0}),t.encodedKeyValuePair=s,t.buildUrl=function(e,t){var n=[];return Object.keys(t).forEach(function(e){s(n,e,t[e])}),"".concat(e,"?").concat(n.join("&"))}}]),module.exports=exports.PubNub; \ No newline at end of file +exports.PubNub=function(n){var r={};function i(e){if(r[e])return r[e].exports;var t=r[e]={i:e,l:!1,exports:{}};return n[e].call(t.exports,t,t.exports,i),t.l=!0,t.exports}return i.m=n,i.c=r,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)i.d(n,r,function(e){return t[e]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="",i(i.s=9)}([function(e,t,n){"use strict";e.exports={}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;t.default={PNTimeOperation:"PNTimeOperation",PNHistoryOperation:"PNHistoryOperation",PNDeleteMessagesOperation:"PNDeleteMessagesOperation",PNFetchMessagesOperation:"PNFetchMessagesOperation",PNMessageCounts:"PNMessageCountsOperation",PNSubscribeOperation:"PNSubscribeOperation",PNUnsubscribeOperation:"PNUnsubscribeOperation",PNPublishOperation:"PNPublishOperation",PNSignalOperation:"PNSignalOperation",PNAddMessageActionOperation:"PNAddActionOperation",PNRemoveMessageActionOperation:"PNRemoveMessageActionOperation",PNGetMessageActionsOperation:"PNGetMessageActionsOperation",PNCreateUserOperation:"PNCreateUserOperation",PNUpdateUserOperation:"PNUpdateUserOperation",PNDeleteUserOperation:"PNDeleteUserOperation",PNGetUserOperation:"PNGetUsersOperation",PNGetUsersOperation:"PNGetUsersOperation",PNCreateSpaceOperation:"PNCreateSpaceOperation",PNUpdateSpaceOperation:"PNUpdateSpaceOperation",PNDeleteSpaceOperation:"PNDeleteSpaceOperation",PNGetSpaceOperation:"PNGetSpacesOperation",PNGetSpacesOperation:"PNGetSpacesOperation",PNGetMembersOperation:"PNGetMembersOperation",PNUpdateMembersOperation:"PNUpdateMembersOperation",PNGetMembershipsOperation:"PNGetMembershipsOperation",PNUpdateMembershipsOperation:"PNUpdateMembershipsOperation",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",PNAccessManagerGrantToken:"PNAccessManagerGrantToken",PNAccessManagerAudit:"PNAccessManagerAudit"},e.exports=t.default},function(e,t,n){"use strict";function r(e){return encodeURIComponent(e).replace(/[!~*'()]/g,function(e){return"%".concat(e.charCodeAt(0).toString(16).toUpperCase())})}function i(e){return function(e){var t=[];return Object.keys(e).forEach(function(e){return t.push(e)}),t}(e).sort()}e.exports={signPamFromParams:function(t){return i(t).map(function(e){return"".concat(e,"=").concat(r(t[e]))}).join("&")},endsWith:function(e,t){return-1!==e.indexOf(t,this.length-t.length)},createPromise:function(){var n,r;return{promise:new Promise(function(e,t){n=e,r=t}),reject:r,fulfill:n}},encodeString:r}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r,i=(r=n(5))&&r.__esModule?r:{default:r};n(0);function s(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 e=this.words,t=this.sigBytes;e[t>>>2]&=4294967295<<32-t%4*8,e.length=a.ceil(t/4)},clone:function(){var e=r.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],n=0;n>>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 u.init(n,t/2)}},o=i.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 u.init(n,t)}},c=i.Utf8={stringify:function(e){try{return decodeURIComponent(escape(o.stringify(e)))}catch(e){throw Error("Malformed UTF-8 data")}},parse:function(e){return o.parse(unescape(encodeURIComponent(e)))}},f=t.BufferedBlockAlgorithm=r.extend({reset:function(){this._data=new u.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=c.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(e){var t=this._data,n=t.words,r=t.sigBytes,i=this.blockSize,s=r/(4*i);if(e=(s=e?a.ceil(s):a.max((0|s)-this._minBufferSize,0))*i,r=a.min(4*e,r),e){for(var o=0;o>>7)^(d<<14|d>>>18)^d>>>3)+g[l-7]+((h<<15|h>>>17)^(h<<13|h>>>19)^h>>>10)+g[l-16]}d=f+((a<<26|a>>>6)^(a<<21|a>>>11)^(a<<7|a>>>25))+(a&u^~a&c)+p[l]+g[l],h=((r<<30|r>>>2)^(r<<19|r>>>13)^(r<<10|r>>>22))+(r&i^r&s^i&s),f=c,c=u,u=a,a=o+d|0,o=s,s=i,i=r,r=d+h|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]+a|0,n[5]=n[5]+u|0,n[6]=n[6]+c|0,n[7]=n[7]+f|0},_doFinalize:function(){var e=this._data,t=e.words,n=8*this._nDataBytes,r=8*e.sigBytes;return t[r>>>5]|=128<<24-r%32,t[14+(64+r>>>9<<4)]=i.floor(n/4294967296),t[15+(64+r>>>9<<4)]=n,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}});e.SHA256=n._createHelper(r),e.HmacSHA256=n._createHmacHelper(r)}(Math),c=(r=C).enc.Utf8,r.algo.HMAC=r.lib.Base.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=c.parse(t));var n=e.blockSize,r=4*n;t.sigBytes>r&&(t=e.finalize(t)),t.clamp();for(var i=this._oKey=t.clone(),s=this._iKey=t.clone(),o=i.words,a=s.words,u=0;u>>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;o<4&&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 t=e.length,n=this._map;!(r=n.charAt(64))||-1!=(r=e.indexOf(r))&&(t=r);for(var r=[],i=0,s=0;s>>6-s%4*2;r[i>>>2]|=(o|a)<<24-i%4*8,i++}return u.create(r,i)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="},function(s){function T(e,t,n,r,i,s,o){return((e=e+(t&n|~t&r)+i+o)<>>32-s)+t}function O(e,t,n,r,i,s,o){return((e=e+(t&r|n&~r)+i+o)<>>32-s)+t}function M(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 e=C,t=(r=e.lib).WordArray,n=r.Hasher,r=e.algo,w=[],i=0;i<64;i++)w[i]=4294967296*s.abs(s.sin(i+1))|0;r=r.MD5=n.extend({_doReset:function(){this._hash=new t.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(e,t){for(var n=0;n<16;n++){var r=e[o=t+n];e[o]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8)}n=this._hash.words;var i,s,o=e[t+0],a=(r=e[t+1],e[t+2]),u=e[t+3],c=e[t+4],f=e[t+5],l=e[t+6],d=e[t+7],h=e[t+8],p=e[t+9],g=e[t+10],v=e[t+11],b=e[t+12],y=e[t+13],m=e[t+14],_=e[t+15],k=n[0],P=S(P=S(P=S(P=S(P=M(P=M(P=M(P=M(P=O(P=O(P=O(P=O(P=T(P=T(P=T(P=T(P=n[1],s=T(s=n[2],i=T(i=n[3],k=T(k,P,s,i,o,7,w[0]),P,s,r,12,w[1]),k,P,a,17,w[2]),i,k,u,22,w[3]),s=T(s,i=T(i,k=T(k,P,s,i,c,7,w[4]),P,s,f,12,w[5]),k,P,l,17,w[6]),i,k,d,22,w[7]),s=T(s,i=T(i,k=T(k,P,s,i,h,7,w[8]),P,s,p,12,w[9]),k,P,g,17,w[10]),i,k,v,22,w[11]),s=T(s,i=T(i,k=T(k,P,s,i,b,7,w[12]),P,s,y,12,w[13]),k,P,m,17,w[14]),i,k,_,22,w[15]),s=O(s,i=O(i,k=O(k,P,s,i,r,5,w[16]),P,s,l,9,w[17]),k,P,v,14,w[18]),i,k,o,20,w[19]),s=O(s,i=O(i,k=O(k,P,s,i,f,5,w[20]),P,s,g,9,w[21]),k,P,_,14,w[22]),i,k,c,20,w[23]),s=O(s,i=O(i,k=O(k,P,s,i,p,5,w[24]),P,s,m,9,w[25]),k,P,u,14,w[26]),i,k,h,20,w[27]),s=O(s,i=O(i,k=O(k,P,s,i,y,5,w[28]),P,s,a,9,w[29]),k,P,d,14,w[30]),i,k,b,20,w[31]),s=M(s,i=M(i,k=M(k,P,s,i,f,4,w[32]),P,s,h,11,w[33]),k,P,v,16,w[34]),i,k,m,23,w[35]),s=M(s,i=M(i,k=M(k,P,s,i,r,4,w[36]),P,s,c,11,w[37]),k,P,d,16,w[38]),i,k,g,23,w[39]),s=M(s,i=M(i,k=M(k,P,s,i,y,4,w[40]),P,s,o,11,w[41]),k,P,u,16,w[42]),i,k,l,23,w[43]),s=M(s,i=M(i,k=M(k,P,s,i,p,4,w[44]),P,s,b,11,w[45]),k,P,_,16,w[46]),i,k,a,23,w[47]),s=S(s,i=S(i,k=S(k,P,s,i,o,6,w[48]),P,s,d,10,w[49]),k,P,m,15,w[50]),i,k,f,21,w[51]),s=S(s,i=S(i,k=S(k,P,s,i,b,6,w[52]),P,s,u,10,w[53]),k,P,g,15,w[54]),i,k,r,21,w[55]),s=S(s,i=S(i,k=S(k,P,s,i,h,6,w[56]),P,s,_,10,w[57]),k,P,l,15,w[58]),i,k,y,21,w[59]),s=S(s,i=S(i,k=S(k,P,s,i,c,6,w[60]),P,s,v,10,w[61]),k,P,a,15,w[62]),i,k,p,21,w[63]);n[0]=n[0]+k|0,n[1]=n[1]+P|0,n[2]=n[2]+s|0,n[3]=n[3]+i|0},_doFinalize:function(){var e=this._data,t=e.words,n=8*this._nDataBytes,r=8*e.sigBytes;t[r>>>5]|=128<<24-r%32;var i=s.floor(n/4294967296);for(t[15+(r+64>>>9<<4)]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8),t[14+(r+64>>>9<<4)]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),e.sigBytes=4*(t.length+1),this._process(),t=(e=this._hash).words,n=0;n<4;n++)r=t[n],t[n]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8);return e},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}}),e.MD5=n._createHelper(r),e.HmacMD5=n._createHmacHelper(r)}(Math),a=(s=(o=C).lib).Base,f=s.WordArray,l=(s=o.algo).EvpKDF=a.extend({cfg:a.extend({keySize:4,hasher:s.MD5,iterations:1}),init:function(e){this.cfg=this.cfg.extend(e)},compute:function(e,t){for(var n=(o=this.cfg).hasher.create(),r=f.create(),i=r.words,s=o.keySize,o=o.iterations;i.length>>2]}},e.BlockCipher=s.extend({cfg:s.cfg.extend({mode:u,padding:c}),reset:function(){s.reset.call(this);var e=(t=this.cfg).iv,t=t.mode;if(this._xformMode==this._ENC_XFORM_MODE)var n=t.createEncryptor;else n=t.createDecryptor,this._minBufferSize=1;this._mode=n.call(t,this,e&&e.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 f=e.CipherParams=t.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),l=(u=(d.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext;return((e=e.salt)?o.create([1398893684,1701076831]).concat(e).concat(t):t).toString(r)},parse:function(e){var t=(e=r.parse(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 f.create({ciphertext:e,salt:n})}},e.SerializableCipher=t.extend({cfg:t.extend({format:u}),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,f.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}})),d=(d.kdf={}).OpenSSL={execute:function(e,t,n,r){return r=r||o.random(8),e=i.create({keySize:t+n}).compute(e,r),n=o.create(e.words.slice(t),4*n),e.sigBytes=4*t,f.create({key:e,iv:n,salt:r})}},h=e.PasswordBasedCipher=l.extend({cfg:l.cfg.extend({kdf:d}),encrypt:function(e,t,n,r){return n=(r=this.cfg.extend(r)).kdf.execute(n,e.keySize,e.ivSize),r.iv=n.iv,(e=l.encrypt.call(this,e,t,n.key,r)).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,l.decrypt.call(this,e,t,n.key,r)}})}(),function(){for(var e=C,t=e.lib.BlockCipher,n=e.algo,o=[],r=[],i=[],s=[],a=[],u=[],c=[],f=[],l=[],d=[],h=[],p=0;p<256;p++)h[p]=p<128?p<<1:p<<1^283;var g=0,v=0;for(p=0;p<256;p++){var b=(b=v^v<<1^v<<2^v<<3^v<<4)>>>8^255&b^99;o[g]=b;var y=h[r[b]=g],m=h[y],_=h[m],k=257*h[b]^16843008*b;i[g]=k<<24|k>>>8,s[g]=k<<16|k>>>16,a[g]=k<<8|k>>>24,u[g]=k,k=16843009*_^65537*m^257*y^16843008*g,c[b]=k<<24|k>>>8,f[b]=k<<16|k>>>16,l[b]=k<<8|k>>>24,d[b]=k,g?(g=y^h[h[h[_^y]]],v^=h[h[v]]):g=v=1}var P=[0,1,2,4,8,16,32,64,128,27,54];n=n.AES=t.extend({_doReset:function(){for(var e=(n=this._key).words,t=n.sigBytes/4,n=4*((this._nRounds=t+6)+1),r=this._keySchedule=[],i=0;i>>24]<<24|o[s>>>16&255]<<16|o[s>>>8&255]<<8|o[255&s]):(s=o[(s=s<<8|s>>>24)>>>24]<<24|o[s>>>16&255]<<16|o[s>>>8&255]<<8|o[255&s],s^=P[i/t|0]<<24),r[i]=r[i-t]^s}for(e=this._invKeySchedule=[],t=0;t>>24]]^f[o[s>>>16&255]]^l[o[s>>>8&255]]^d[o[255&s]]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,i,s,a,u,o)},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,c,f,l,d,r),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],f=e[t+1]^n[1],l=e[t+2]^n[2],d=e[t+3]^n[3],h=4,p=1;p>>24]^i[f>>>16&255]^s[l>>>8&255]^o[255&d]^n[h++],v=r[f>>>24]^i[l>>>16&255]^s[d>>>8&255]^o[255&c]^n[h++],b=r[l>>>24]^i[d>>>16&255]^s[c>>>8&255]^o[255&f]^n[h++];d=r[d>>>24]^i[c>>>16&255]^s[f>>>8&255]^o[255&l]^n[h++],c=g,f=v,l=b}g=(a[c>>>24]<<24|a[f>>>16&255]<<16|a[l>>>8&255]<<8|a[255&d])^n[h++],v=(a[f>>>24]<<24|a[l>>>16&255]<<16|a[d>>>8&255]<<8|a[255&c])^n[h++],b=(a[l>>>24]<<24|a[d>>>16&255]<<16|a[c>>>8&255]<<8|a[255&f])^n[h++],d=(a[d>>>24]<<24|a[c>>>16&255]<<16|a[f>>>8&255]<<8|a[255&l])^n[h++],e[t]=g,e[t+1]=v,e[t+2]=b,e[t+3]=d},keySize:8});e.AES=t._createHelper(n)}(),C.mode.ECB=((d=C.lib.BlockCipherMode.extend()).Encryptor=d.extend({processBlock:function(e,t){this._cipher.encryptBlock(e,t)}}),d.Decryptor=d.extend({processBlock:function(e,t){this._cipher.decryptBlock(e,t)}}),d),e.exports=C},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;r(n(6)),r(n(3)),r(n(7));var c=r(n(14)),f=r(n(15)),l=r(n(2)),a=(n(0),r(n(4)));function r(e){return e&&e.__esModule?e:{default:e}}function i(e,t){for(var n=0;n=s){var o={};o.category=a.default.PNRequestMessageCountExceededCategory,o.operation=t.operation,this._listenerManager.announceStatus(o)}r.forEach(function(e){var t=e.channel,n=e.subscriptionMatch,r=e.publishMetaData;if(t===n&&(n=null),f){if(c._dedupingManager.isDuplicate(e))return;c._dedupingManager.addEntry(e)}if(l.default.endsWith(e.channel,"-pnpres")){var i={channel:null,subscription:null};i.actualChannel=null!=n?t:null,i.subscribedChannel=null!=n?n:t,t&&(i.channel=t.substring(0,t.lastIndexOf("-pnpres"))),n&&(i.subscription=n.substring(0,n.lastIndexOf("-pnpres"))),i.action=e.payload.action,i.state=e.payload.data,i.timetoken=r.publishTimetoken,i.occupancy=e.payload.occupancy,i.uuid=e.payload.uuid,i.timestamp=e.payload.timestamp,e.payload.join&&(i.join=e.payload.join),e.payload.leave&&(i.leave=e.payload.leave),e.payload.timeout&&(i.timeout=e.payload.timeout),c._listenerManager.announcePresence(i)}else if(1===e.messageType){var s={channel:null,subscription:null};s.channel=t,s.subscription=n,s.timetoken=r.publishTimetoken,s.publisher=e.issuingClientId,e.userMetadata&&(s.userMetadata=e.userMetadata),s.message=e.payload,c._listenerManager.announceSignal(s)}else if(2===e.messageType){var o={channel:null,subscription:null};o.channel=t,o.subscription=n,o.timetoken=r.publishTimetoken,o.publisher=e.issuingClientId,e.userMetadata&&(o.userMetadata=e.userMetadata),o.message={event:e.payload.event,type:e.payload.type,data:e.payload.data},"user"===e.payload.type?c._listenerManager.announceUser(o):"space"===e.payload.type?c._listenerManager.announceSpace(o):"membership"===e.payload.type&&c._listenerManager.announceMembership(o)}else if(3===e.messageType){var a={};a.channel=t,a.subscription=n,a.timetoken=r.publishTimetoken,a.publisher=e.issuingClientId,a.data={messageTimetoken:e.payload.data.messageTimetoken,actionTimetoken:e.payload.data.actionTimetoken,type:e.payload.data.type,uuid:e.issuingClientId,value:e.payload.data.value},a.event=e.payload.event,c._listenerManager.announceMessageAction(a)}else{var u={channel:null,subscription:null};u.actualChannel=null!=n?t:null,u.subscribedChannel=null!=n?n:t,u.channel=t,u.subscription=n,u.timetoken=r.publishTimetoken,u.publisher=e.issuingClientId,e.userMetadata&&(u.userMetadata=e.userMetadata),c._config.cipherKey?u.message=c._crypto.decrypt(e.payload):u.message=e.payload,c._listenerManager.announceMessage(u)}}),this._region=e.metadata.region,this._startSubscribeLoop()}}},{key:"_stopSubscribeLoop",value:function(){this._subscribeCall&&("function"==typeof this._subscribeCall.abort&&this._subscribeCall.abort(),this._subscribeCall=null)}}])&&i(s.prototype,o),void(u&&i(s,u)),p);function p(e){var t=e.subscribeEndpoint,n=e.leaveEndpoint,r=e.heartbeatEndpoint,i=e.setStateEndpoint,s=e.timeEndpoint,o=e.config,a=e.crypto,u=e.listenerManager;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,p),d(this,"_crypto",void 0),d(this,"_config",void 0),d(this,"_listenerManager",void 0),d(this,"_reconnectionManager",void 0),d(this,"_leaveEndpoint",void 0),d(this,"_heartbeatEndpoint",void 0),d(this,"_setStateEndpoint",void 0),d(this,"_subscribeEndpoint",void 0),d(this,"_channels",void 0),d(this,"_presenceChannels",void 0),d(this,"_heartbeatChannels",void 0),d(this,"_heartbeatChannelGroups",void 0),d(this,"_channelGroups",void 0),d(this,"_presenceChannelGroups",void 0),d(this,"_currentTimetoken",void 0),d(this,"_lastTimetoken",void 0),d(this,"_storedTimetoken",void 0),d(this,"_region",void 0),d(this,"_subscribeCall",void 0),d(this,"_heartbeatTimer",void 0),d(this,"_subscriptionStatusAnnounced",void 0),d(this,"_autoNetworkDetection",void 0),d(this,"_isOnline",void 0),d(this,"_pendingChannelSubscriptions",void 0),d(this,"_pendingChannelGroupSubscriptions",void 0),d(this,"_dedupingManager",void 0),this._listenerManager=u,this._config=o,this._leaveEndpoint=n,this._heartbeatEndpoint=r,this._setStateEndpoint=i,this._subscribeEndpoint=t,this._crypto=a,this._channels={},this._presenceChannels={},this._heartbeatChannels={},this._heartbeatChannelGroups={},this._channelGroups={},this._presenceChannelGroups={},this._pendingChannelSubscriptions=[],this._pendingChannelGroupSubscriptions=[],this._currentTimetoken=0,this._lastTimetoken=0,this._storedTimetoken=null,this._subscriptionStatusAnnounced=!1,this._isOnline=!0,this._reconnectionManager=new c.default({timeEndpoint:s}),this._dedupingManager=new f.default({config:o})}t.default=h,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r;(r=n(8))&&r.__esModule,n(0);function i(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=[]}}])&&i(o.prototype,a),void(u&&i(o,u)),f);function f(e){var t=e.config;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,f),s(this,"_config",void 0),s(this,"hashHistory",void 0),this.hashHistory=[],this._config=t}t.default=c,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r;(r=n(3))&&r.__esModule,n(0);function i(e){return(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})(e)}function s(e,t){for(var n=0;n=this._maxSubDomain&&(this._currentSubDomain=1),e=this._currentSubDomain.toString(),this._providedFQDN.replace("ps.pndsn.com","ps".concat(e,".pndsn.com"))):this._providedFQDN;var e}},{key:"hasModule",value:function(e){return e in this._modules}},{key:"shiftStandardOrigin",value:function(){return this._standardOrigin=this.nextOrigin(),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:"PATCH",value:function(e,t,n,r){return this._modules.patch(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 r.default.PNNetworkIssuesCategory;if("ECONNREFUSED"===e.code)return r.default.PNNetworkIssuesCategory;if("ECONNRESET"===e.code)return r.default.PNNetworkIssuesCategory;if("EAI_AGAIN"===e.code)return r.default.PNNetworkIssuesCategory;if(0===e.status||e.hasOwnProperty("status")&&void 0===e.status)return r.default.PNNetworkIssuesCategory;if(e.timeout)return r.default.PNTimeoutCategory;if("ETIMEDOUT"===e.code)return r.default.PNNetworkIssuesCategory;if(e.response){if(e.response.badRequest)return r.default.PNBadRequestCategory;if(e.response.forbidden)return r.default.PNAccessDeniedCategory}return r.default.PNUnknownCategory}}])&&s(a.prototype,u),void(c&&s(a,c)),l);function l(t){var n=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,l),o(this,"_modules",void 0),o(this,"_config",void 0),o(this,"_maxSubDomain",void 0),o(this,"_currentSubDomain",void 0),o(this,"_standardOrigin",void 0),o(this,"_subscribeOrigin",void 0),o(this,"_providedFQDN",void 0),o(this,"_requestTimeout",void 0),o(this,"_coreParams",void 0),this._modules={},Object.keys(t).forEach(function(e){n._modules[e]=t[e].bind(n)})}t.default=f,e.exports=t.default},function(e,t,n){"use strict";function r(e,t){for(var n=0;n>10,n=1023&e,r=32768&e;if(31==t)return 0==n?r?-1/0:1/0:NaN;var i=t?Math.pow(2,t-25)*(1024+n):Math.pow(2,-24)*n;return r?-i:i},readFloat32:function(){var e=this.readUint32(),t=(2147483647&e)>>23,n=8388607&e,r=2147483648&e;if(255==t)return 0==n?r?-1/0:1/0:NaN;var i=t?Math.pow(2,t-23-127)*(8388608+n):Math.pow(2,-149)*n;return r?-i:i},readFloat64:function(){var e=this.readUint32(),t=this.readUint32(),n=e>>20&2047,r=4294967296*(1048575&e)+t,i=2147483648&e;if(2047==n)return 0===r?i?-1/0:1/0:NaN;var s=n?Math.pow(2,n-52-1023)*(4503599627370496+r):Math.pow(2,-1074)*r;return i?-s:s},readUint16:function(){return 256*this.readByte()+this.readByte()},readUint32:function(){return 65536*this.readUint16()+this.readUint16()},readUint64:function(){return 4294967296*this.readUint32()+this.readUint32()}},t.prototype={writeByte:r("writeByte"),result:r("result"),writeFloat16:r("writeFloat16"),writeFloat32:r("writeFloat32"),writeFloat64:r("writeFloat64"),writeUint16:function(e){this.writeByte(e>>8&255),this.writeByte(255&e)},writeUint32:function(e){this.writeUint16(e>>16&65535),this.writeUint16(65535&e)},writeUint64:function(e){if(9007199254740992<=e||e<=-9007199254740992)throw new Error("Cannot encode Uint64 of: "+e+" magnitude to big (floating point errors)");this.writeUint32(Math.floor(e/4294967296)),this.writeUint32(e%4294967296)},writeString:r("writeString"),canWriteBinary:function(e){return!1},writeBinary:r("writeChunk")};var d=new Error;function h(e){var t=function(e){var t=e.readByte();return{type:t>>5,value:31&t}}(e);switch(t.type){case 0:return l(t,e);case 1:return-1-l(t,e);case 2:return e.readChunk(l(t,e));case 3:var n=e.readChunk(l(t,e));return n.toString("utf-8");case 4:case 5:var r=l(t,e),i=[];if(null!==r){5===t.type&&(r*=2);for(var s=0;s=this.latestBuffer.length&&(this.completeBuffers.push(this.latestBuffer),this.latestBuffer=Buffer.alloc(this.defaultBufferLength),this.latestBufferOffset=0),this.byteLength++},n.prototype.writeFloat32=function(e){var t=Buffer.alloc(4);t.writeFloatBE(e,0),this.writeBuffer(t)},n.prototype.writeFloat64=function(e){var t=Buffer.alloc(8);t.writeDoubleBE(e,0),this.writeBuffer(t)},n.prototype.writeString=function(e,t){var n=Buffer.from(e,"utf-8");t(n.length),this.writeBuffer(n)},n.prototype.canWriteBinary=function(e){return e instanceof Buffer},n.prototype.writeBinary=function(e,t){t(e.length),this.writeBuffer(e)},n.prototype.writeBuffer=function(e){if(!(e instanceof Buffer))throw new TypeError("BufferWriter only accepts Buffers");this.latestBufferOffset?this.latestBuffer.length-this.latestBufferOffset>=e.length?(e.copy(this.latestBuffer,this.latestBufferOffset),this.latestBufferOffset+=e.length,this.latestBufferOffset>=this.latestBuffer.length&&(this.completeBuffers.push(this.latestBuffer),this.latestBuffer=Buffer.alloc(this.defaultBufferLength),this.latestBufferOffset=0)):(this.completeBuffers.push(this.latestBuffer.slice(0,this.latestBufferOffset)),this.completeBuffers.push(e),this.latestBuffer=Buffer.alloc(this.defaultBufferLength),this.latestBufferOffset=0):this.completeBuffers.push(e),this.byteLength+=e.length},n.prototype.result=function(){for(var e=Buffer.alloc(this.byteLength),t=0,n=0;n>>>>>"),s.log("[".concat(a," / ").concat(o,"]"),"\n",e,"\n",t,"\n",n),s.log("-----")}(n,r,t.responseText),o(u,e)},t.onerror=function(e){return u.error=!0,u.errorData=e.error,u.category=a._detectErrorCategory(e.error),o(u,null)},t.timeout="android"===Ti.Platform.osname?2147483647:1/0,t.send(i)}},function(e,t,n){"use strict";function i(e){return(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})(e)}function s(t,n,r){null!=r?Array.isArray(r)?r.forEach(function(e){s(t,n,e)}):"object"===i(r)?Object.keys(r).forEach(function(e){s(t,"".concat(n,"[").concat(e,"]"),r[e])}):t.push("".concat(encodeURIComponent(n),"=").concat(encodeURIComponent(r))):null===r&&t.push(encodeURIComponent("".concat(encodeURIComponent(n))))}Object.defineProperty(t,"__esModule",{value:!0}),t.encodedKeyValuePair=s,t.buildUrl=function(e,t){var n=[];return Object.keys(t).forEach(function(e){s(n,e,t[e])}),"".concat(e,"?").concat(n.join("&"))}}]),module.exports=exports.PubNub; \ No newline at end of file diff --git a/dist/web/pubnub.js b/dist/web/pubnub.js index 49c14cbe0..52b234ef1 100644 --- a/dist/web/pubnub.js +++ b/dist/web/pubnub.js @@ -1,4 +1,4 @@ -/*! 4.26.1 / Consumer */ +/*! 4.27.0 / Consumer */ (function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); @@ -125,6 +125,9 @@ var _default = { PNUnsubscribeOperation: 'PNUnsubscribeOperation', PNPublishOperation: 'PNPublishOperation', PNSignalOperation: 'PNSignalOperation', + PNAddMessageActionOperation: 'PNAddActionOperation', + PNRemoveMessageActionOperation: 'PNRemoveMessageActionOperation', + PNGetMessageActionsOperation: 'PNGetMessageActionsOperation', PNCreateUserOperation: 'PNCreateUserOperation', PNUpdateUserOperation: 'PNUpdateUserOperation', PNDeleteUserOperation: 'PNDeleteUserOperation', @@ -477,7 +480,7 @@ var _default = function () { }, { key: "getVersion", value: function getVersion() { - return '4.26.1'; + return '4.27.0'; } }, { key: "_decideUUID", @@ -840,6 +843,13 @@ var _default = function () { if (listener.signal) listener.signal(announce); }); } + }, { + key: "announceMessageAction", + value: function announceMessageAction(announce) { + this._listeners.forEach(function (listener) { + if (listener.messageAction) listener.messageAction(announce); + }); + } }, { key: "announceUser", value: function announceUser(announce) { @@ -951,9 +961,9 @@ function validateParams() {} -var base64 = __webpack_require__(67) -var ieee754 = __webpack_require__(68) -var isArray = __webpack_require__(69) +var base64 = __webpack_require__(70) +var ieee754 = __webpack_require__(71) +var isArray = __webpack_require__(72) exports.Buffer = Buffer exports.SlowBuffer = SlowBuffer @@ -2731,7 +2741,7 @@ function isnan (val) { return val !== val // eslint-disable-line no-self-compare } -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(66))) +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(69))) /***/ }), /* 10 */ @@ -2769,13 +2779,13 @@ exports["default"] = void 0; var _pubnubCommon = _interopRequireDefault(__webpack_require__(12)); -var _networking = _interopRequireDefault(__webpack_require__(63)); +var _networking = _interopRequireDefault(__webpack_require__(66)); -var _web = _interopRequireDefault(__webpack_require__(64)); +var _web = _interopRequireDefault(__webpack_require__(67)); -var _common = _interopRequireDefault(__webpack_require__(65)); +var _common = _interopRequireDefault(__webpack_require__(68)); -var _webNode = __webpack_require__(71); +var _webNode = __webpack_require__(74); var _flow_interfaces = __webpack_require__(0); @@ -2897,63 +2907,69 @@ var presenceSetStateConfig = _interopRequireWildcard(__webpack_require__(33)); var presenceHereNowConfig = _interopRequireWildcard(__webpack_require__(34)); -var createUserEndpointConfig = _interopRequireWildcard(__webpack_require__(35)); +var addMessageActionEndpointConfig = _interopRequireWildcard(__webpack_require__(35)); + +var removeMessageActionEndpointConfig = _interopRequireWildcard(__webpack_require__(36)); -var updateUserEndpointConfig = _interopRequireWildcard(__webpack_require__(36)); +var getMessageActionEndpointConfig = _interopRequireWildcard(__webpack_require__(37)); -var deleteUserEndpointConfig = _interopRequireWildcard(__webpack_require__(37)); +var createUserEndpointConfig = _interopRequireWildcard(__webpack_require__(38)); -var getUserEndpointConfig = _interopRequireWildcard(__webpack_require__(38)); +var updateUserEndpointConfig = _interopRequireWildcard(__webpack_require__(39)); -var getUsersEndpointConfig = _interopRequireWildcard(__webpack_require__(39)); +var deleteUserEndpointConfig = _interopRequireWildcard(__webpack_require__(40)); -var createSpaceEndpointConfig = _interopRequireWildcard(__webpack_require__(40)); +var getUserEndpointConfig = _interopRequireWildcard(__webpack_require__(41)); -var updateSpaceEndpointConfig = _interopRequireWildcard(__webpack_require__(41)); +var getUsersEndpointConfig = _interopRequireWildcard(__webpack_require__(42)); -var deleteSpaceEndpointConfig = _interopRequireWildcard(__webpack_require__(42)); +var createSpaceEndpointConfig = _interopRequireWildcard(__webpack_require__(43)); -var getSpacesEndpointConfig = _interopRequireWildcard(__webpack_require__(43)); +var updateSpaceEndpointConfig = _interopRequireWildcard(__webpack_require__(44)); -var getSpaceEndpointConfig = _interopRequireWildcard(__webpack_require__(44)); +var deleteSpaceEndpointConfig = _interopRequireWildcard(__webpack_require__(45)); -var getMembersEndpointConfig = _interopRequireWildcard(__webpack_require__(45)); +var getSpacesEndpointConfig = _interopRequireWildcard(__webpack_require__(46)); -var addMembersEndpointConfig = _interopRequireWildcard(__webpack_require__(46)); +var getSpaceEndpointConfig = _interopRequireWildcard(__webpack_require__(47)); -var updateMembersEndpointConfig = _interopRequireWildcard(__webpack_require__(47)); +var getMembersEndpointConfig = _interopRequireWildcard(__webpack_require__(48)); -var removeMembersEndpointConfig = _interopRequireWildcard(__webpack_require__(48)); +var addMembersEndpointConfig = _interopRequireWildcard(__webpack_require__(49)); -var getMembershipsEndpointConfig = _interopRequireWildcard(__webpack_require__(49)); +var updateMembersEndpointConfig = _interopRequireWildcard(__webpack_require__(50)); -var updateMembershipsEndpointConfig = _interopRequireWildcard(__webpack_require__(50)); +var removeMembersEndpointConfig = _interopRequireWildcard(__webpack_require__(51)); -var joinSpacesEndpointConfig = _interopRequireWildcard(__webpack_require__(51)); +var getMembershipsEndpointConfig = _interopRequireWildcard(__webpack_require__(52)); -var leaveSpacesEndpointConfig = _interopRequireWildcard(__webpack_require__(52)); +var updateMembershipsEndpointConfig = _interopRequireWildcard(__webpack_require__(53)); -var auditEndpointConfig = _interopRequireWildcard(__webpack_require__(53)); +var joinSpacesEndpointConfig = _interopRequireWildcard(__webpack_require__(54)); -var grantEndpointConfig = _interopRequireWildcard(__webpack_require__(54)); +var leaveSpacesEndpointConfig = _interopRequireWildcard(__webpack_require__(55)); -var grantTokenEndpointConfig = _interopRequireWildcard(__webpack_require__(55)); +var auditEndpointConfig = _interopRequireWildcard(__webpack_require__(56)); -var publishEndpointConfig = _interopRequireWildcard(__webpack_require__(56)); +var grantEndpointConfig = _interopRequireWildcard(__webpack_require__(57)); -var signalEndpointConfig = _interopRequireWildcard(__webpack_require__(57)); +var grantTokenEndpointConfig = _interopRequireWildcard(__webpack_require__(58)); -var historyEndpointConfig = _interopRequireWildcard(__webpack_require__(58)); +var publishEndpointConfig = _interopRequireWildcard(__webpack_require__(59)); -var deleteMessagesEndpointConfig = _interopRequireWildcard(__webpack_require__(59)); +var signalEndpointConfig = _interopRequireWildcard(__webpack_require__(60)); -var messageCountsEndpointConfig = _interopRequireWildcard(__webpack_require__(60)); +var historyEndpointConfig = _interopRequireWildcard(__webpack_require__(61)); -var fetchMessagesEndpointConfig = _interopRequireWildcard(__webpack_require__(61)); +var deleteMessagesEndpointConfig = _interopRequireWildcard(__webpack_require__(62)); + +var messageCountsEndpointConfig = _interopRequireWildcard(__webpack_require__(63)); + +var fetchMessagesEndpointConfig = _interopRequireWildcard(__webpack_require__(64)); var timeEndpointConfig = _interopRequireWildcard(__webpack_require__(8)); -var subscribeEndpointConfig = _interopRequireWildcard(__webpack_require__(62)); +var subscribeEndpointConfig = _interopRequireWildcard(__webpack_require__(65)); var _operations = _interopRequireDefault(__webpack_require__(1)); @@ -3029,6 +3045,12 @@ var _default = function () { _defineProperty(this, "unsubscribeAll", void 0); + _defineProperty(this, "addMessageAction", void 0); + + _defineProperty(this, "removeMessageAction", void 0); + + _defineProperty(this, "getMessageActions", void 0); + _defineProperty(this, "createUser", void 0); _defineProperty(this, "updateUser", void 0); @@ -3199,6 +3221,9 @@ var _default = function () { this.deleteMessages = _endpoint["default"].bind(this, modules, deleteMessagesEndpointConfig); this.messageCounts = _endpoint["default"].bind(this, modules, messageCountsEndpointConfig); this.fetchMessages = _endpoint["default"].bind(this, modules, fetchMessagesEndpointConfig); + this.addMessageAction = _endpoint["default"].bind(this, modules, addMessageActionEndpointConfig); + this.removeMessageAction = _endpoint["default"].bind(this, modules, removeMessageActionEndpointConfig); + this.getMessageActions = _endpoint["default"].bind(this, modules, getMessageActionEndpointConfig); this.createUser = _endpoint["default"].bind(this, modules, createUserEndpointConfig); this.updateUser = _endpoint["default"].bind(this, modules, updateUserEndpointConfig); this.deleteUser = _endpoint["default"].bind(this, modules, deleteUserEndpointConfig); @@ -4922,28 +4947,44 @@ var _default = function () { } else if (message.payload.type === 'membership') { _this7._listenerManager.announceMembership(_announce2); } - } else { + } else if (message.messageType === 3) { var _announce3 = {}; - _announce3.channel = null; - _announce3.subscription = null; - _announce3.actualChannel = subscriptionMatch != null ? channel : null; - _announce3.subscribedChannel = subscriptionMatch != null ? subscriptionMatch : channel; _announce3.channel = channel; _announce3.subscription = subscriptionMatch; _announce3.timetoken = publishMetaData.publishTimetoken; _announce3.publisher = message.issuingClientId; + _announce3.data = { + messageTimetoken: message.payload.data.messageTimetoken, + actionTimetoken: message.payload.data.actionTimetoken, + type: message.payload.data.type, + uuid: message.issuingClientId, + value: message.payload.data.value + }; + _announce3.event = message.payload.event; + + _this7._listenerManager.announceMessageAction(_announce3); + } else { + var _announce4 = {}; + _announce4.channel = null; + _announce4.subscription = null; + _announce4.actualChannel = subscriptionMatch != null ? channel : null; + _announce4.subscribedChannel = subscriptionMatch != null ? subscriptionMatch : channel; + _announce4.channel = channel; + _announce4.subscription = subscriptionMatch; + _announce4.timetoken = publishMetaData.publishTimetoken; + _announce4.publisher = message.issuingClientId; if (message.userMetadata) { - _announce3.userMetadata = message.userMetadata; + _announce4.userMetadata = message.userMetadata; } if (_this7._config.cipherKey) { - _announce3.message = _this7._crypto.decrypt(message.payload); + _announce4.message = _this7._crypto.decrypt(message.payload); } else { - _announce3.message = message.payload; + _announce4.message = message.payload; } - _this7._listenerManager.announceMessage(_announce3); + _this7._listenerManager.announceMessage(_announce4); } }); this._region = payload.metadata.region; @@ -5615,7 +5656,8 @@ function _default(modules, endpoint) { var networkingParams = { url: url, operation: endpoint.getOperation(), - timeout: endpoint.getRequestTimeout(modules) + timeout: endpoint.getRequestTimeout(modules), + headers: endpoint.getRequestHeaders ? endpoint.getRequestHeaders() : {} }; outgoingParams.uuid = config.UUID; outgoingParams.pnsdk = generatePNSDK(config); @@ -6801,6 +6843,236 @@ function handleResponse(modules, serverResponse, incomingParams) { "use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.getOperation = getOperation; +exports.validateParams = validateParams; +exports.usePost = usePost; +exports.postURL = postURL; +exports.getRequestTimeout = getRequestTimeout; +exports.getRequestHeaders = getRequestHeaders; +exports.isAuthSupported = isAuthSupported; +exports.prepareParams = prepareParams; +exports.postPayload = postPayload; +exports.handleResponse = handleResponse; + +var _flow_interfaces = __webpack_require__(0); + +var _operations = _interopRequireDefault(__webpack_require__(1)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function getOperation() { + return _operations["default"].PNAddMessageActionOperation; +} + +function validateParams(_ref, incomingParams) { + var config = _ref.config; + var action = incomingParams.action, + channel = incomingParams.channel, + messageTimetoken = incomingParams.messageTimetoken; + if (!messageTimetoken) return 'Missing message timetoken'; + if (!config.subscribeKey) return 'Missing Subscribe Key'; + if (!channel) return 'Missing message channel'; + if (!action) return 'Missing Action'; + if (!action.value) return 'Missing Action.value'; + if (!action.type) return 'Missing Action.type'; + if (action.type.length > 15) return 'Action.type value exceed maximum length of 15'; +} + +function usePost() { + return true; +} + +function postURL(_ref2, incomingParams) { + var config = _ref2.config; + var channel = incomingParams.channel, + messageTimetoken = incomingParams.messageTimetoken; + return "/v1/message-actions/".concat(config.subscribeKey, "/channel/").concat(channel, "/message/").concat(messageTimetoken); +} + +function getRequestTimeout(_ref3) { + var config = _ref3.config; + return config.getTransactionTimeout(); +} + +function getRequestHeaders() { + return { + 'Content-Type': 'application/json' + }; +} + +function isAuthSupported() { + return true; +} + +function prepareParams() { + return {}; +} + +function postPayload(modules, incomingParams) { + return incomingParams.action; +} + +function handleResponse(modules, addMessageActionResponse) { + return { + data: addMessageActionResponse.data + }; +} + +/***/ }), +/* 36 */ +/***/ (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__(0); + +var _operations = _interopRequireDefault(__webpack_require__(1)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function getOperation() { + return _operations["default"].PNRemoveMessageActionOperation; +} + +function validateParams(_ref, incomingParams) { + var config = _ref.config; + var channel = incomingParams.channel, + actionTimetoken = incomingParams.actionTimetoken, + messageTimetoken = incomingParams.messageTimetoken; + if (!messageTimetoken) return 'Missing message timetoken'; + if (!actionTimetoken) return 'Missing action timetoken'; + if (!config.subscribeKey) return 'Missing Subscribe Key'; + if (!channel) return 'Missing message channel'; +} + +function useDelete() { + return true; +} + +function getURL(_ref2, incomingParams) { + var config = _ref2.config; + var channel = incomingParams.channel, + actionTimetoken = incomingParams.actionTimetoken, + messageTimetoken = incomingParams.messageTimetoken; + return "/v1/message-actions/".concat(config.subscribeKey, "/channel/").concat(channel, "/message/").concat(messageTimetoken, "/action/").concat(actionTimetoken); +} + +function getRequestTimeout(_ref3) { + var config = _ref3.config; + return config.getTransactionTimeout(); +} + +function isAuthSupported() { + return true; +} + +function prepareParams() { + return {}; +} + +function handleResponse(modules, removeMessageActionResponse) { + return { + data: removeMessageActionResponse.data + }; +} + +/***/ }), +/* 37 */ +/***/ (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__(0); + +var _operations = _interopRequireDefault(__webpack_require__(1)); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function getOperation() { + return _operations["default"].PNGetMessageActionsOperation; +} + +function validateParams(_ref, incomingParams) { + var config = _ref.config; + var channel = incomingParams.channel; + if (!config.subscribeKey) return 'Missing Subscribe Key'; + if (!channel) return 'Missing message channel'; +} + +function getURL(_ref2, incomingParams) { + var config = _ref2.config; + var channel = incomingParams.channel; + return "/v1/message-actions/".concat(config.subscribeKey, "/channel/").concat(channel); +} + +function getRequestTimeout(_ref3) { + var config = _ref3.config; + return config.getTransactionTimeout(); +} + +function isAuthSupported() { + return true; +} + +function prepareParams(modules, incomingParams) { + var limit = incomingParams.limit, + start = incomingParams.start, + end = incomingParams.end; + var outgoingParams = {}; + if (limit) outgoingParams.limit = limit; + if (start) outgoingParams.start = start; + if (end) outgoingParams.end = end; + return outgoingParams; +} + +function handleResponse(modules, getMessageActionsResponse) { + var response = { + data: getMessageActionsResponse.data + }; + + if (response.data.length) { + response.end = response.data[response.data.length - 1].actionTimetoken; + response.start = response.data[0].actionTimetoken; + } + + return response; +} + +/***/ }), +/* 38 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + Object.defineProperty(exports, "__esModule", { value: true }); @@ -6914,7 +7186,7 @@ function handleResponse(modules, usersResponse) { } /***/ }), -/* 36 */ +/* 39 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7035,7 +7307,7 @@ function handleResponse(modules, usersResponse) { } /***/ }), -/* 37 */ +/* 40 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7102,7 +7374,7 @@ function handleResponse(modules, usersResponse) { } /***/ }), -/* 38 */ +/* 41 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7188,7 +7460,7 @@ function handleResponse(modules, usersResponse) { } /***/ }), -/* 39 */ +/* 42 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7283,7 +7555,7 @@ function handleResponse(modules, usersResponse) { } /***/ }), -/* 40 */ +/* 43 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7402,7 +7674,7 @@ function handleResponse(modules, spacesResponse) { } /***/ }), -/* 41 */ +/* 44 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7523,7 +7795,7 @@ function handleResponse(modules, spacesResponse) { } /***/ }), -/* 42 */ +/* 45 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7590,7 +7862,7 @@ function handleResponse(modules, spacesResponse) { } /***/ }), -/* 43 */ +/* 46 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7685,7 +7957,7 @@ function handleResponse(modules, spacesResponse) { } /***/ }), -/* 44 */ +/* 47 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7771,7 +8043,7 @@ function handleResponse(modules, spacesResponse) { } /***/ }), -/* 45 */ +/* 48 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -7877,7 +8149,7 @@ function handleResponse(modules, membersResponse) { } /***/ }), -/* 46 */ +/* 49 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -8023,7 +8295,7 @@ function handleResponse(modules, membersResponse) { } /***/ }), -/* 47 */ +/* 50 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -8211,7 +8483,7 @@ function handleResponse(modules, membersResponse) { } /***/ }), -/* 48 */ +/* 51 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -8351,7 +8623,7 @@ function handleResponse(modules, membersResponse) { } /***/ }), -/* 49 */ +/* 52 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -8457,7 +8729,7 @@ function handleResponse(modules, membershipsResponse) { } /***/ }), -/* 50 */ +/* 53 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -8645,7 +8917,7 @@ function handleResponse(modules, membershipsResponse) { } /***/ }), -/* 51 */ +/* 54 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -8791,7 +9063,7 @@ function handleResponse(modules, membershipsResponse) { } /***/ }), -/* 52 */ +/* 55 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -8931,7 +9203,7 @@ function handleResponse(modules, membershipsResponse) { } /***/ }), -/* 53 */ +/* 56 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -9004,7 +9276,7 @@ function handleResponse(modules, serverResponse) { } /***/ }), -/* 54 */ +/* 57 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -9095,7 +9367,7 @@ function handleResponse() { } /***/ }), -/* 55 */ +/* 58 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -9264,7 +9536,7 @@ function handleResponse(modules, response) { } /***/ }), -/* 56 */ +/* 59 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -9392,7 +9664,7 @@ function handleResponse(modules, serverResponse) { } /***/ }), -/* 57 */ +/* 60 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -9464,7 +9736,7 @@ function handleResponse(modules, serverResponse) { } /***/ }), -/* 58 */ +/* 61 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -9534,7 +9806,9 @@ function prepareParams(modules, incomingParams) { _incomingParams$count = incomingParams.count, count = _incomingParams$count === void 0 ? 100 : _incomingParams$count, _incomingParams$strin = incomingParams.stringifiedTimeToken, - stringifiedTimeToken = _incomingParams$strin === void 0 ? false : _incomingParams$strin; + stringifiedTimeToken = _incomingParams$strin === void 0 ? false : _incomingParams$strin, + _incomingParams$inclu = incomingParams.includeMeta, + includeMeta = _incomingParams$inclu === void 0 ? false : _incomingParams$inclu; var outgoingParams = { include_token: 'true' }; @@ -9543,6 +9817,7 @@ function prepareParams(modules, incomingParams) { if (end) outgoingParams.end = end; if (stringifiedTimeToken) outgoingParams.string_message_token = 'true'; if (reverse != null) outgoingParams.reverse = reverse.toString(); + if (includeMeta) outgoingParams.include_meta = 'true'; return outgoingParams; } @@ -9559,6 +9834,11 @@ function handleResponse(modules, serverResponse) { timetoken: serverHistoryItem.timetoken, entry: __processMessage(modules, serverHistoryItem.message) }; + + if (serverHistoryItem.meta) { + item.meta = serverHistoryItem.meta; + } + response.messages.push(item); }); } @@ -9567,7 +9847,7 @@ function handleResponse(modules, serverResponse) { } /***/ }), -/* 59 */ +/* 62 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -9637,7 +9917,7 @@ function handleResponse(modules, serverResponse) { } /***/ }), -/* 60 */ +/* 63 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -9725,7 +10005,7 @@ function handleResponse(modules, serverResponse) { } /***/ }), -/* 61 */ +/* 64 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -9767,18 +10047,27 @@ function getOperation() { } function validateParams(modules, incomingParams) { - var channels = incomingParams.channels; + var channels = incomingParams.channels, + _incomingParams$inclu = incomingParams.includeMessageActions, + includeMessageActions = _incomingParams$inclu === void 0 ? false : _incomingParams$inclu; var config = modules.config; if (!channels || channels.length === 0) return 'Missing channels'; if (!config.subscribeKey) return 'Missing Subscribe Key'; + + if (includeMessageActions && channels.length > 1) { + throw new TypeError('History can return actions data for a single channel only. Either pass a single channel or disable the includeMessageActions flag.'); + } } function getURL(modules, incomingParams) { var _incomingParams$chann = incomingParams.channels, - channels = _incomingParams$chann === void 0 ? [] : _incomingParams$chann; + channels = _incomingParams$chann === void 0 ? [] : _incomingParams$chann, + _incomingParams$inclu2 = incomingParams.includeMessageActions, + includeMessageActions = _incomingParams$inclu2 === void 0 ? false : _incomingParams$inclu2; var config = modules.config; + var endpoint = !includeMessageActions ? 'history' : 'history-with-actions'; var stringifiedChannels = channels.length > 0 ? channels.join(',') : ','; - return "/v3/history/sub-key/".concat(config.subscribeKey, "/channel/").concat(_utils["default"].encodeString(stringifiedChannels)); + return "/v3/".concat(endpoint, "/sub-key/").concat(config.subscribeKey, "/channel/").concat(_utils["default"].encodeString(stringifiedChannels)); } function getRequestTimeout(_ref) { @@ -9795,12 +10084,15 @@ function prepareParams(modules, incomingParams) { end = incomingParams.end, count = incomingParams.count, _incomingParams$strin = incomingParams.stringifiedTimeToken, - stringifiedTimeToken = _incomingParams$strin === void 0 ? false : _incomingParams$strin; + stringifiedTimeToken = _incomingParams$strin === void 0 ? false : _incomingParams$strin, + _incomingParams$inclu3 = incomingParams.includeMeta, + includeMeta = _incomingParams$inclu3 === void 0 ? false : _incomingParams$inclu3; var outgoingParams = {}; if (count) outgoingParams.max = count; if (start) outgoingParams.start = start; if (end) outgoingParams.end = end; if (stringifiedTimeToken) outgoingParams.string_message_token = 'true'; + if (includeMeta) outgoingParams.include_meta = 'true'; return outgoingParams; } @@ -9816,6 +10108,15 @@ function handleResponse(modules, serverResponse) { announce.subscription = null; announce.timetoken = messageEnvelope.timetoken; announce.message = __processMessage(modules, messageEnvelope.message); + + if (messageEnvelope.actions) { + announce.data = messageEnvelope.actions; + } + + if (messageEnvelope.meta) { + announce.meta = messageEnvelope.meta; + } + response.channels[channelName].push(announce); }); }); @@ -9823,7 +10124,7 @@ function handleResponse(modules, serverResponse) { } /***/ }), -/* 62 */ +/* 65 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -9942,7 +10243,7 @@ function handleResponse(modules, serverResponse) { } /***/ }), -/* 63 */ +/* 66 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -10112,7 +10413,7 @@ exports["default"] = _default; module.exports = exports.default; /***/ }), -/* 64 */ +/* 67 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -10142,7 +10443,7 @@ exports["default"] = _default; module.exports = exports.default; /***/ }), -/* 65 */ +/* 68 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -10153,7 +10454,7 @@ Object.defineProperty(exports, "__esModule", { }); exports["default"] = void 0; -var _cborSync = _interopRequireDefault(__webpack_require__(70)); +var _cborSync = _interopRequireDefault(__webpack_require__(73)); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } @@ -10201,7 +10502,7 @@ module.exports = exports.default; /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(9).Buffer)) /***/ }), -/* 66 */ +/* 69 */ /***/ (function(module, exports) { var g; @@ -10227,7 +10528,7 @@ module.exports = g; /***/ }), -/* 67 */ +/* 70 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -10386,7 +10687,7 @@ function fromByteArray (uint8) { /***/ }), -/* 68 */ +/* 71 */ /***/ (function(module, exports) { exports.read = function (buffer, offset, isLE, mLen, nBytes) { @@ -10476,7 +10777,7 @@ exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { /***/ }), -/* 69 */ +/* 72 */ /***/ (function(module, exports) { var toString = {}.toString; @@ -10487,7 +10788,7 @@ module.exports = Array.isArray || function (arr) { /***/ }), -/* 70 */ +/* 73 */ /***/ (function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(Buffer) {var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (global, factory) { @@ -11122,7 +11423,7 @@ module.exports = Array.isArray || function (arr) { /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(9).Buffer)) /***/ }), -/* 71 */ +/* 74 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -11136,7 +11437,7 @@ exports.post = post; exports.patch = patch; exports.del = del; -var _superagent = _interopRequireDefault(__webpack_require__(72)); +var _superagent = _interopRequireDefault(__webpack_require__(75)); var _flow_interfaces = __webpack_require__(0); @@ -11221,6 +11522,8 @@ function xdr(superagentConstruct, endpoint, callback) { status.error = true; status.category = _this._detectErrorCategory(status); return callback(status, null); + } else if (parsedResponse.error && parsedResponse.error.message) { + status.errorData = parsedResponse.error; } return callback(status, parsedResponse); @@ -11228,31 +11531,31 @@ function xdr(superagentConstruct, endpoint, callback) { } function get(params, endpoint, callback) { - var superagentConstruct = _superagent["default"].get(this.getStandardOrigin() + endpoint.url).query(params); + var superagentConstruct = _superagent["default"].get(this.getStandardOrigin() + endpoint.url).set(endpoint.headers).query(params); return xdr.call(this, superagentConstruct, endpoint, callback); } function post(params, body, endpoint, callback) { - var superagentConstruct = _superagent["default"].post(this.getStandardOrigin() + endpoint.url).query(params).send(body); + var superagentConstruct = _superagent["default"].post(this.getStandardOrigin() + endpoint.url).query(params).set(endpoint.headers).send(body); return xdr.call(this, superagentConstruct, endpoint, callback); } function patch(params, body, endpoint, callback) { - var superagentConstruct = _superagent["default"].patch(this.getStandardOrigin() + endpoint.url).query(params).send(body); + var superagentConstruct = _superagent["default"].patch(this.getStandardOrigin() + endpoint.url).query(params).set(endpoint.headers).send(body); return xdr.call(this, superagentConstruct, endpoint, callback); } function del(params, endpoint, callback) { - var superagentConstruct = _superagent["default"]["delete"](this.getStandardOrigin() + endpoint.url).query(params); + var superagentConstruct = _superagent["default"]["delete"](this.getStandardOrigin() + endpoint.url).set(endpoint.headers).query(params); return xdr.call(this, superagentConstruct, endpoint, callback); } /***/ }), -/* 72 */ +/* 75 */ /***/ (function(module, exports, __webpack_require__) { /** @@ -11269,11 +11572,11 @@ if (typeof window !== 'undefined') { // Browser window root = this; } -var Emitter = __webpack_require__(73); -var RequestBase = __webpack_require__(74); +var Emitter = __webpack_require__(76); +var RequestBase = __webpack_require__(77); var isObject = __webpack_require__(10); -var ResponseBase = __webpack_require__(75); -var Agent = __webpack_require__(77); +var ResponseBase = __webpack_require__(78); +var Agent = __webpack_require__(80); /** * Noop. @@ -12178,7 +12481,7 @@ request.put = function(url, data, fn) { /***/ }), -/* 73 */ +/* 76 */ /***/ (function(module, exports, __webpack_require__) { @@ -12359,7 +12662,7 @@ Emitter.prototype.hasListeners = function(event){ /***/ }), -/* 74 */ +/* 77 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -13060,7 +13363,7 @@ RequestBase.prototype._setTimeouts = function() { /***/ }), -/* 75 */ +/* 78 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -13070,7 +13373,7 @@ RequestBase.prototype._setTimeouts = function() { * Module dependencies. */ -var utils = __webpack_require__(76); +var utils = __webpack_require__(79); /** * Expose `ResponseBase`. @@ -13203,7 +13506,7 @@ ResponseBase.prototype._setStatusProperties = function(status){ /***/ }), -/* 76 */ +/* 79 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; @@ -13281,7 +13584,7 @@ exports.cleanHeader = function(header, changesOrigin){ /***/ }), -/* 77 */ +/* 80 */ /***/ (function(module, exports) { function Agent() { diff --git a/dist/web/pubnub.min.js b/dist/web/pubnub.min.js index 7473b46f2..706ded0f3 100644 --- a/dist/web/pubnub.min.js +++ b/dist/web/pubnub.min.js @@ -1 +1 @@ -!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()}(window,function(){return r={},i.m=n=[function(e,t,n){"use strict";e.exports={}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;t.default={PNTimeOperation:"PNTimeOperation",PNHistoryOperation:"PNHistoryOperation",PNDeleteMessagesOperation:"PNDeleteMessagesOperation",PNFetchMessagesOperation:"PNFetchMessagesOperation",PNMessageCounts:"PNMessageCountsOperation",PNSubscribeOperation:"PNSubscribeOperation",PNUnsubscribeOperation:"PNUnsubscribeOperation",PNPublishOperation:"PNPublishOperation",PNSignalOperation:"PNSignalOperation",PNCreateUserOperation:"PNCreateUserOperation",PNUpdateUserOperation:"PNUpdateUserOperation",PNDeleteUserOperation:"PNDeleteUserOperation",PNGetUserOperation:"PNGetUsersOperation",PNGetUsersOperation:"PNGetUsersOperation",PNCreateSpaceOperation:"PNCreateSpaceOperation",PNUpdateSpaceOperation:"PNUpdateSpaceOperation",PNDeleteSpaceOperation:"PNDeleteSpaceOperation",PNGetSpaceOperation:"PNGetSpacesOperation",PNGetSpacesOperation:"PNGetSpacesOperation",PNGetMembersOperation:"PNGetMembersOperation",PNUpdateMembersOperation:"PNUpdateMembersOperation",PNGetMembershipsOperation:"PNGetMembershipsOperation",PNUpdateMembershipsOperation:"PNUpdateMembershipsOperation",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",PNAccessManagerGrantToken:"PNAccessManagerGrantToken",PNAccessManagerAudit:"PNAccessManagerAudit"},e.exports=t.default},function(e,t,n){"use strict";function r(e){return encodeURIComponent(e).replace(/[!~*'()]/g,function(e){return"%".concat(e.charCodeAt(0).toString(16).toUpperCase())})}function i(e){return function(e){var t=[];return Object.keys(e).forEach(function(e){return t.push(e)}),t}(e).sort()}e.exports={signPamFromParams:function(t){return i(t).map(function(e){return"".concat(e,"=").concat(r(t[e]))}).join("&")},endsWith:function(e,t){return-1!==e.indexOf(t,this.length-t.length)},createPromise:function(){var n,r;return{promise:new Promise(function(e,t){n=e,r=t}),reject:r,fulfill:n}},encodeString:r}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r,i=(r=n(5))&&r.__esModule?r:{default:r};n(0);function o(e,t){for(var n=0;n=n())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+n().toString(16)+" bytes");return 0|e}function p(e,t){if(h.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return N(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return j(e).length;default:if(r)return N(e).length;t=(""+t).toLowerCase(),r=!0}}function d(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function g(e,t,n,r,i){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):2147483647=e.length){if(i)return-1;n=e.length-1}else if(n<0){if(!i)return-1;n=0}if("string"==typeof t&&(t=h.from(t,r)),h.isBuffer(t))return 0===t.length?-1:y(e,t,n,r,i);if("number"==typeof t)return t&=255,h.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):y(e,[t],n,r,i);throw new TypeError("val must be string, number or Buffer")}function y(e,t,n,r,i){var o,s=1,a=e.length,u=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;a/=s=2,u/=2,n/=2}function c(e,t){return 1===s?e[t]:e.readUInt16BE(t*s)}if(i){var f=-1;for(o=n;o>>10&1023|55296),f=56320|1023&f),r.push(f),i+=h}return function(e){var t=e.length;if(t<=k)return String.fromCharCode.apply(String,e);var n="",r=0;for(;rthis.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e=e||"utf8";;)switch(e){case"hex":return P(this,t,n);case"utf8":case"utf-8":return _(this,t,n);case"ascii":return w(this,t,n);case"latin1":case"binary":return T(this,t,n);case"base64":return m(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return O(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}.apply(this,arguments)},h.prototype.equals=function(e){if(!h.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===h.compare(this,e)},h.prototype.inspect=function(){var e="",t=I.INSPECT_MAX_BYTES;return 0t&&(e+=" ... ")),""},h.prototype.compare=function(e,t,n,r,i){if(!h.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),t<0||n>e.length||r<0||i>this.length)throw new RangeError("out of range index");if(i<=r&&n<=t)return 0;if(i<=r)return-1;if(n<=t)return 1;if(this===e)return 0;for(var o=(i>>>=0)-(r>>>=0),s=(n>>>=0)-(t>>>=0),a=Math.min(o,s),u=this.slice(r,i),c=e.slice(t,n),f=0;fthis.length)throw new RangeError("Attempt to write outside buffer bounds");r=r||"utf8";for(var o,s,a,u,c,f,h,l,p,d=!1;;)switch(r){case"hex":return v(this,e,t,n);case"utf8":case"utf-8":return l=t,p=n,B(N(e,(h=this).length-l),h,l,p);case"ascii":return b(this,e,t,n);case"latin1":case"binary":return b(this,e,t,n);case"base64":return u=this,c=t,f=n,B(j(e),u,c,f);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return s=t,a=n,B(function(e,t){for(var n,r,i,o=[],s=0;s>8,i=n%256,o.push(i),o.push(r);return o}(e,(o=this).length-s),o,s,a);default:if(d)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),d=!0}},h.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var k=4096;function w(e,t,n){var r="";n=Math.min(e.length,n);for(var i=t;ie.length)throw new RangeError("Index out of range")}function E(e,t,n,r){t<0&&(t=65535+t+1);for(var i=0,o=Math.min(e.length-n,2);i>>8*(r?i:1-i)}function C(e,t,n,r){t<0&&(t=4294967295+t+1);for(var i=0,o=Math.min(e.length-n,4);i>>8*(r?i:3-i)&255}function R(e,t,n,r){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function A(e,t,n,r,i){return i||R(e,0,n,4),o.write(e,t,n,r,23,4),n+4}function U(e,t,n,r,i){return i||R(e,0,n,8),o.write(e,t,n,r,52,8),n+8}h.prototype.slice=function(e,t){var n,r=this.length;if((e=~~e)<0?(e+=r)<0&&(e=0):r>>8):E(this,e,t,!0),t+2},h.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,2,65535,0),h.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):E(this,e,t,!1),t+2},h.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,4,4294967295,0),h.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):C(this,e,t,!0),t+4},h.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,4,4294967295,0),h.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):C(this,e,t,!1),t+4},h.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t|=0,!r){var i=Math.pow(2,8*n-1);M(this,e,t,n,i-1,-i)}var o=0,s=1,a=0;for(this[t]=255&e;++o>0)-a&255;return t+n},h.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t|=0,!r){var i=Math.pow(2,8*n-1);M(this,e,t,n,i-1,-i)}var o=n-1,s=1,a=0;for(this[t+o]=255&e;0<=--o&&(s*=256);)e<0&&0===a&&0!==this[t+o+1]&&(a=1),this[t+o]=(e/s>>0)-a&255;return t+n},h.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,1,127,-128),h.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},h.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,2,32767,-32768),h.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):E(this,e,t,!0),t+2},h.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,2,32767,-32768),h.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):E(this,e,t,!1),t+2},h.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,4,2147483647,-2147483648),h.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):C(this,e,t,!0),t+4},h.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),h.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):C(this,e,t,!1),t+4},h.prototype.writeFloatLE=function(e,t,n){return A(this,e,t,!0,n)},h.prototype.writeFloatBE=function(e,t,n){return A(this,e,t,!1,n)},h.prototype.writeDoubleLE=function(e,t,n){return U(this,e,t,!0,n)},h.prototype.writeDoubleBE=function(e,t,n){return U(this,e,t,!1,n)},h.prototype.copy=function(e,t,n,r){if(n=n||0,r||0===r||(r=this.length),t>=e.length&&(t=e.length),t=t||0,0=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t>>=0,n=void 0===n?this.length:n>>>0,"number"==typeof(e=e||0))for(o=t;o>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;o.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return o}function j(e){return r.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(t,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function B(e,t,n,r){for(var i=0;i=t.length||i>=e.length);++i)t[i+n]=e[i];return i}}).call(this,D(66))},function(e,t,n){"use strict";e.exports=function(e){return null!==e&&"object"==typeof e}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=u(n(12)),i=u(n(63)),o=u(n(64)),s=u(n(65)),a=n(71);n(0);function u(e){return e&&e.__esModule?e:{default:e}}function c(e){return(c="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})(e)}function f(e,t){return!t||"object"!==c(t)&&"function"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(e):t}function h(e){return(h=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function l(e,t){return(l=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function p(e){if(!navigator||!navigator.sendBeacon)return!1;navigator.sendBeacon(e)}var d=(function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&l(e,t)}(g,r.default),g);function g(e){var t;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,g);var n=e.listenToBrowserNetworkEvents,r=void 0===n||n;return e.db=o.default,e.cbor=new s.default,e.sdkFamily="Web",e.networking=new i.default({del:a.del,get:a.get,post:a.post,patch:a.patch,sendBeacon:p}),t=f(this,h(g).call(this,e)),r&&(window.addEventListener("offline",function(){t.networkDownDetected()}),window.addEventListener("online",function(){t.networkUpDetected()})),t}t.default=d,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var y=a(n(3)),v=a(n(6)),b=a(n(15)),m=a(n(7)),_=a(n(18)),k=a(n(19)),w=s(n(20)),T=s(n(21)),P=s(n(22)),O=s(n(23)),S=s(n(24)),M=s(n(25)),E=s(n(26)),C=s(n(27)),R=s(n(28)),A=s(n(29)),U=s(n(30)),x=s(n(31)),N=s(n(32)),j=s(n(33)),B=s(n(34)),I=s(n(35)),D=s(n(36)),K=s(n(37)),L=s(n(38)),F=s(n(39)),G=s(n(40)),H=s(n(41)),q=s(n(42)),z=s(n(43)),Y=s(n(44)),$=s(n(45)),W=s(n(46)),J=s(n(47)),X=s(n(48)),V=s(n(49)),Q=s(n(50)),Z=s(n(51)),ee=s(n(52)),te=s(n(53)),ne=s(n(54)),re=s(n(55)),ie=s(n(56)),oe=s(n(57)),se=s(n(58)),ae=s(n(59)),ue=s(n(60)),ce=s(n(61)),fe=s(n(8)),he=s(n(62)),r=a(n(1)),i=a(n(4)),o=(n(0),a(n(5)));function s(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var r=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,n):{};r.get||r.set?Object.defineProperty(t,n,r):t[n]=e[n]}return t.default=e,t}function a(e){return e&&e.__esModule?e:{default:e}}function u(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 e=this.words,t=this.sigBytes;e[t>>>2]&=4294967295<<32-t%4*8,e.length=a.ceil(t/4)},clone:function(){var e=r.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],n=0;n>>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 u.init(n,t/2)}},s=i.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 u.init(n,t)}},c=i.Utf8={stringify:function(e){try{return decodeURIComponent(escape(s.stringify(e)))}catch(e){throw Error("Malformed UTF-8 data")}},parse:function(e){return s.parse(unescape(encodeURIComponent(e)))}},f=t.BufferedBlockAlgorithm=r.extend({reset:function(){this._data=new u.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=c.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(e){var t=this._data,n=t.words,r=t.sigBytes,i=this.blockSize,o=r/(4*i);if(e=(o=e?a.ceil(o):a.max((0|o)-this._minBufferSize,0))*i,r=a.min(4*e,r),e){for(var s=0;s>>7)^(l<<14|l>>>18)^l>>>3)+g[h-7]+((p<<15|p>>>17)^(p<<13|p>>>19)^p>>>10)+g[h-16]}l=f+((a<<26|a>>>6)^(a<<21|a>>>11)^(a<<7|a>>>25))+(a&u^~a&c)+d[h]+g[h],p=((r<<30|r>>>2)^(r<<19|r>>>13)^(r<<10|r>>>22))+(r&i^r&o^i&o),f=c,c=u,u=a,a=s+l|0,s=o,o=i,i=r,r=l+p|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]+a|0,n[5]=n[5]+u|0,n[6]=n[6]+c|0,n[7]=n[7]+f|0},_doFinalize:function(){var e=this._data,t=e.words,n=8*this._nDataBytes,r=8*e.sigBytes;return t[r>>>5]|=128<<24-r%32,t[14+(64+r>>>9<<4)]=i.floor(n/4294967296),t[15+(64+r>>>9<<4)]=n,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}});e.SHA256=n._createHelper(r),e.HmacSHA256=n._createHmacHelper(r)}(Math),c=(r=E).enc.Utf8,r.algo.HMAC=r.lib.Base.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=c.parse(t));var n=e.blockSize,r=4*n;t.sigBytes>r&&(t=e.finalize(t)),t.clamp();for(var i=this._oKey=t.clone(),o=this._iKey=t.clone(),s=i.words,a=o.words,u=0;u>>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;s<4&&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 t=e.length,n=this._map;!(r=n.charAt(64))||-1!=(r=e.indexOf(r))&&(t=r);for(var r=[],i=0,o=0;o>>6-o%4*2;r[i>>>2]|=(s|a)<<24-i%4*8,i++}return u.create(r,i)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="},function(o){function T(e,t,n,r,i,o,s){return((e=e+(t&n|~t&r)+i+s)<>>32-o)+t}function P(e,t,n,r,i,o,s){return((e=e+(t&r|n&~r)+i+s)<>>32-o)+t}function O(e,t,n,r,i,o,s){return((e=e+(t^n^r)+i+s)<>>32-o)+t}function S(e,t,n,r,i,o,s){return((e=e+(n^(t|~r))+i+s)<>>32-o)+t}for(var e=E,t=(r=e.lib).WordArray,n=r.Hasher,r=e.algo,M=[],i=0;i<64;i++)M[i]=4294967296*o.abs(o.sin(i+1))|0;r=r.MD5=n.extend({_doReset:function(){this._hash=new t.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(e,t){for(var n=0;n<16;n++){var r=e[s=t+n];e[s]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8)}n=this._hash.words;var i,o,s=e[t+0],a=(r=e[t+1],e[t+2]),u=e[t+3],c=e[t+4],f=e[t+5],h=e[t+6],l=e[t+7],p=e[t+8],d=e[t+9],g=e[t+10],y=e[t+11],v=e[t+12],b=e[t+13],m=e[t+14],_=e[t+15],k=n[0],w=S(w=S(w=S(w=S(w=O(w=O(w=O(w=O(w=P(w=P(w=P(w=P(w=T(w=T(w=T(w=T(w=n[1],o=T(o=n[2],i=T(i=n[3],k=T(k,w,o,i,s,7,M[0]),w,o,r,12,M[1]),k,w,a,17,M[2]),i,k,u,22,M[3]),o=T(o,i=T(i,k=T(k,w,o,i,c,7,M[4]),w,o,f,12,M[5]),k,w,h,17,M[6]),i,k,l,22,M[7]),o=T(o,i=T(i,k=T(k,w,o,i,p,7,M[8]),w,o,d,12,M[9]),k,w,g,17,M[10]),i,k,y,22,M[11]),o=T(o,i=T(i,k=T(k,w,o,i,v,7,M[12]),w,o,b,12,M[13]),k,w,m,17,M[14]),i,k,_,22,M[15]),o=P(o,i=P(i,k=P(k,w,o,i,r,5,M[16]),w,o,h,9,M[17]),k,w,y,14,M[18]),i,k,s,20,M[19]),o=P(o,i=P(i,k=P(k,w,o,i,f,5,M[20]),w,o,g,9,M[21]),k,w,_,14,M[22]),i,k,c,20,M[23]),o=P(o,i=P(i,k=P(k,w,o,i,d,5,M[24]),w,o,m,9,M[25]),k,w,u,14,M[26]),i,k,p,20,M[27]),o=P(o,i=P(i,k=P(k,w,o,i,b,5,M[28]),w,o,a,9,M[29]),k,w,l,14,M[30]),i,k,v,20,M[31]),o=O(o,i=O(i,k=O(k,w,o,i,f,4,M[32]),w,o,p,11,M[33]),k,w,y,16,M[34]),i,k,m,23,M[35]),o=O(o,i=O(i,k=O(k,w,o,i,r,4,M[36]),w,o,c,11,M[37]),k,w,l,16,M[38]),i,k,g,23,M[39]),o=O(o,i=O(i,k=O(k,w,o,i,b,4,M[40]),w,o,s,11,M[41]),k,w,u,16,M[42]),i,k,h,23,M[43]),o=O(o,i=O(i,k=O(k,w,o,i,d,4,M[44]),w,o,v,11,M[45]),k,w,_,16,M[46]),i,k,a,23,M[47]),o=S(o,i=S(i,k=S(k,w,o,i,s,6,M[48]),w,o,l,10,M[49]),k,w,m,15,M[50]),i,k,f,21,M[51]),o=S(o,i=S(i,k=S(k,w,o,i,v,6,M[52]),w,o,u,10,M[53]),k,w,g,15,M[54]),i,k,r,21,M[55]),o=S(o,i=S(i,k=S(k,w,o,i,p,6,M[56]),w,o,_,10,M[57]),k,w,h,15,M[58]),i,k,b,21,M[59]),o=S(o,i=S(i,k=S(k,w,o,i,c,6,M[60]),w,o,y,10,M[61]),k,w,a,15,M[62]),i,k,d,21,M[63]);n[0]=n[0]+k|0,n[1]=n[1]+w|0,n[2]=n[2]+o|0,n[3]=n[3]+i|0},_doFinalize:function(){var e=this._data,t=e.words,n=8*this._nDataBytes,r=8*e.sigBytes;t[r>>>5]|=128<<24-r%32;var i=o.floor(n/4294967296);for(t[15+(r+64>>>9<<4)]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8),t[14+(r+64>>>9<<4)]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),e.sigBytes=4*(t.length+1),this._process(),t=(e=this._hash).words,n=0;n<4;n++)r=t[n],t[n]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8);return e},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}}),e.MD5=n._createHelper(r),e.HmacMD5=n._createHmacHelper(r)}(Math),a=(o=(s=E).lib).Base,f=o.WordArray,h=(o=s.algo).EvpKDF=a.extend({cfg:a.extend({keySize:4,hasher:o.MD5,iterations:1}),init:function(e){this.cfg=this.cfg.extend(e)},compute:function(e,t){for(var n=(s=this.cfg).hasher.create(),r=f.create(),i=r.words,o=s.keySize,s=s.iterations;i.length>>2]}},e.BlockCipher=o.extend({cfg:o.cfg.extend({mode:u,padding:c}),reset:function(){o.reset.call(this);var e=(t=this.cfg).iv,t=t.mode;if(this._xformMode==this._ENC_XFORM_MODE)var n=t.createEncryptor;else n=t.createDecryptor,this._minBufferSize=1;this._mode=n.call(t,this,e&&e.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 f=e.CipherParams=t.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),h=(u=(l.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext;return((e=e.salt)?s.create([1398893684,1701076831]).concat(e).concat(t):t).toString(r)},parse:function(e){var t=(e=r.parse(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 f.create({ciphertext:e,salt:n})}},e.SerializableCipher=t.extend({cfg:t.extend({format:u}),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,f.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}})),l=(l.kdf={}).OpenSSL={execute:function(e,t,n,r){return r=r||s.random(8),e=i.create({keySize:t+n}).compute(e,r),n=s.create(e.words.slice(t),4*n),e.sigBytes=4*t,f.create({key:e,iv:n,salt:r})}},p=e.PasswordBasedCipher=h.extend({cfg:h.cfg.extend({kdf:l}),encrypt:function(e,t,n,r){return n=(r=this.cfg.extend(r)).kdf.execute(n,e.keySize,e.ivSize),r.iv=n.iv,(e=h.encrypt.call(this,e,t,n.key,r)).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,h.decrypt.call(this,e,t,n.key,r)}})}(),function(){for(var e=E,t=e.lib.BlockCipher,n=e.algo,s=[],r=[],i=[],o=[],a=[],u=[],c=[],f=[],h=[],l=[],p=[],d=0;d<256;d++)p[d]=d<128?d<<1:d<<1^283;var g=0,y=0;for(d=0;d<256;d++){var v=(v=y^y<<1^y<<2^y<<3^y<<4)>>>8^255&v^99;s[g]=v;var b=p[r[v]=g],m=p[b],_=p[m],k=257*p[v]^16843008*v;i[g]=k<<24|k>>>8,o[g]=k<<16|k>>>16,a[g]=k<<8|k>>>24,u[g]=k,k=16843009*_^65537*m^257*b^16843008*g,c[v]=k<<24|k>>>8,f[v]=k<<16|k>>>16,h[v]=k<<8|k>>>24,l[v]=k,g?(g=b^p[p[p[_^b]]],y^=p[p[y]]):g=y=1}var w=[0,1,2,4,8,16,32,64,128,27,54];n=n.AES=t.extend({_doReset:function(){for(var e=(n=this._key).words,t=n.sigBytes/4,n=4*((this._nRounds=t+6)+1),r=this._keySchedule=[],i=0;i>>24]<<24|s[o>>>16&255]<<16|s[o>>>8&255]<<8|s[255&o]):(o=s[(o=o<<8|o>>>24)>>>24]<<24|s[o>>>16&255]<<16|s[o>>>8&255]<<8|s[255&o],o^=w[i/t|0]<<24),r[i]=r[i-t]^o}for(e=this._invKeySchedule=[],t=0;t>>24]]^f[s[o>>>16&255]]^h[s[o>>>8&255]]^l[s[255&o]]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,i,o,a,u,s)},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,c,f,h,l,r),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],f=e[t+1]^n[1],h=e[t+2]^n[2],l=e[t+3]^n[3],p=4,d=1;d>>24]^i[f>>>16&255]^o[h>>>8&255]^s[255&l]^n[p++],y=r[f>>>24]^i[h>>>16&255]^o[l>>>8&255]^s[255&c]^n[p++],v=r[h>>>24]^i[l>>>16&255]^o[c>>>8&255]^s[255&f]^n[p++];l=r[l>>>24]^i[c>>>16&255]^o[f>>>8&255]^s[255&h]^n[p++],c=g,f=y,h=v}g=(a[c>>>24]<<24|a[f>>>16&255]<<16|a[h>>>8&255]<<8|a[255&l])^n[p++],y=(a[f>>>24]<<24|a[h>>>16&255]<<16|a[l>>>8&255]<<8|a[255&c])^n[p++],v=(a[h>>>24]<<24|a[l>>>16&255]<<16|a[c>>>8&255]<<8|a[255&f])^n[p++],l=(a[l>>>24]<<24|a[c>>>16&255]<<16|a[f>>>8&255]<<8|a[255&h])^n[p++],e[t]=g,e[t+1]=y,e[t+2]=v,e[t+3]=l},keySize:8});e.AES=t._createHelper(n)}(),E.mode.ECB=((l=E.lib.BlockCipherMode.extend()).Encryptor=l.extend({processBlock:function(e,t){this._cipher.encryptBlock(e,t)}}),l.Decryptor=l.extend({processBlock:function(e,t){this._cipher.decryptBlock(e,t)}}),l),e.exports=E},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;r(n(6)),r(n(3)),r(n(7));var c=r(n(16)),f=r(n(17)),h=r(n(2)),a=(n(0),r(n(4)));function r(e){return e&&e.__esModule?e:{default:e}}function i(e,t){for(var n=0;n=o){var s={};s.category=a.default.PNRequestMessageCountExceededCategory,s.operation=t.operation,this._listenerManager.announceStatus(s)}r.forEach(function(e){var t=e.channel,n=e.subscriptionMatch,r=e.publishMetaData;if(t===n&&(n=null),c){if(u._dedupingManager.isDuplicate(e))return;u._dedupingManager.addEntry(e)}if(h.default.endsWith(e.channel,"-pnpres")){var i={channel:null,subscription:null};i.actualChannel=null!=n?t:null,i.subscribedChannel=null!=n?n:t,t&&(i.channel=t.substring(0,t.lastIndexOf("-pnpres"))),n&&(i.subscription=n.substring(0,n.lastIndexOf("-pnpres"))),i.action=e.payload.action,i.state=e.payload.data,i.timetoken=r.publishTimetoken,i.occupancy=e.payload.occupancy,i.uuid=e.payload.uuid,i.timestamp=e.payload.timestamp,e.payload.join&&(i.join=e.payload.join),e.payload.leave&&(i.leave=e.payload.leave),e.payload.timeout&&(i.timeout=e.payload.timeout),u._listenerManager.announcePresence(i)}else if(1===e.messageType){var o={channel:null,subscription:null};o.channel=t,o.subscription=n,o.timetoken=r.publishTimetoken,o.publisher=e.issuingClientId,e.userMetadata&&(o.userMetadata=e.userMetadata),o.message=e.payload,u._listenerManager.announceSignal(o)}else if(2===e.messageType){var s={channel:null,subscription:null};s.channel=t,s.subscription=n,s.timetoken=r.publishTimetoken,s.publisher=e.issuingClientId,e.userMetadata&&(s.userMetadata=e.userMetadata),s.message={event:e.payload.event,type:e.payload.type,data:e.payload.data},"user"===e.payload.type?u._listenerManager.announceUser(s):"space"===e.payload.type?u._listenerManager.announceSpace(s):"membership"===e.payload.type&&u._listenerManager.announceMembership(s)}else{var a={channel:null,subscription:null};a.actualChannel=null!=n?t:null,a.subscribedChannel=null!=n?n:t,a.channel=t,a.subscription=n,a.timetoken=r.publishTimetoken,a.publisher=e.issuingClientId,e.userMetadata&&(a.userMetadata=e.userMetadata),u._config.cipherKey?a.message=u._crypto.decrypt(e.payload):a.message=e.payload,u._listenerManager.announceMessage(a)}}),this._region=e.metadata.region,this._startSubscribeLoop()}}},{key:"_stopSubscribeLoop",value:function(){this._subscribeCall&&("function"==typeof this._subscribeCall.abort&&this._subscribeCall.abort(),this._subscribeCall=null)}}])&&i(o.prototype,s),void(u&&i(o,u)),d);function d(e){var t=e.subscribeEndpoint,n=e.leaveEndpoint,r=e.heartbeatEndpoint,i=e.setStateEndpoint,o=e.timeEndpoint,s=e.config,a=e.crypto,u=e.listenerManager;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,d),l(this,"_crypto",void 0),l(this,"_config",void 0),l(this,"_listenerManager",void 0),l(this,"_reconnectionManager",void 0),l(this,"_leaveEndpoint",void 0),l(this,"_heartbeatEndpoint",void 0),l(this,"_setStateEndpoint",void 0),l(this,"_subscribeEndpoint",void 0),l(this,"_channels",void 0),l(this,"_presenceChannels",void 0),l(this,"_heartbeatChannels",void 0),l(this,"_heartbeatChannelGroups",void 0),l(this,"_channelGroups",void 0),l(this,"_presenceChannelGroups",void 0),l(this,"_currentTimetoken",void 0),l(this,"_lastTimetoken",void 0),l(this,"_storedTimetoken",void 0),l(this,"_region",void 0),l(this,"_subscribeCall",void 0),l(this,"_heartbeatTimer",void 0),l(this,"_subscriptionStatusAnnounced",void 0),l(this,"_autoNetworkDetection",void 0),l(this,"_isOnline",void 0),l(this,"_pendingChannelSubscriptions",void 0),l(this,"_pendingChannelGroupSubscriptions",void 0),l(this,"_dedupingManager",void 0),this._listenerManager=u,this._config=s,this._leaveEndpoint=n,this._heartbeatEndpoint=r,this._setStateEndpoint=i,this._subscribeEndpoint=t,this._crypto=a,this._channels={},this._presenceChannels={},this._heartbeatChannels={},this._heartbeatChannelGroups={},this._channelGroups={},this._presenceChannelGroups={},this._pendingChannelSubscriptions=[],this._pendingChannelGroupSubscriptions=[],this._currentTimetoken=0,this._lastTimetoken=0,this._storedTimetoken=null,this._subscriptionStatusAnnounced=!1,this._isOnline=!0,this._reconnectionManager=new c.default({timeEndpoint:o}),this._dedupingManager=new f.default({config:s})}t.default=p,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r;(r=n(8))&&r.__esModule,n(0);function i(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=[]}}])&&i(s.prototype,a),void(u&&i(s,u)),f);function f(e){var t=e.config;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,f),o(this,"_config",void 0),o(this,"hashHistory",void 0),this.hashHistory=[],this._config=t}t.default=c,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r;(r=n(3))&&r.__esModule,n(0);function i(e){return(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})(e)}function o(e,t){for(var n=0;n=this._maxSubDomain&&(this._currentSubDomain=1),e=this._currentSubDomain.toString(),this._providedFQDN.replace("ps.pndsn.com","ps".concat(e,".pndsn.com"))):this._providedFQDN;var e}},{key:"hasModule",value:function(e){return e in this._modules}},{key:"shiftStandardOrigin",value:function(){return this._standardOrigin=this.nextOrigin(),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:"PATCH",value:function(e,t,n,r){return this._modules.patch(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 r.default.PNNetworkIssuesCategory;if("ECONNREFUSED"===e.code)return r.default.PNNetworkIssuesCategory;if("ECONNRESET"===e.code)return r.default.PNNetworkIssuesCategory;if("EAI_AGAIN"===e.code)return r.default.PNNetworkIssuesCategory;if(0===e.status||e.hasOwnProperty("status")&&void 0===e.status)return r.default.PNNetworkIssuesCategory;if(e.timeout)return r.default.PNTimeoutCategory;if("ETIMEDOUT"===e.code)return r.default.PNNetworkIssuesCategory;if(e.response){if(e.response.badRequest)return r.default.PNBadRequestCategory;if(e.response.forbidden)return r.default.PNAccessDeniedCategory}return r.default.PNUnknownCategory}}])&&o(a.prototype,u),void(c&&o(a,c)),h);function h(t){var n=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,h),s(this,"_modules",void 0),s(this,"_config",void 0),s(this,"_maxSubDomain",void 0),s(this,"_currentSubDomain",void 0),s(this,"_standardOrigin",void 0),s(this,"_subscribeOrigin",void 0),s(this,"_providedFQDN",void 0),s(this,"_requestTimeout",void 0),s(this,"_coreParams",void 0),this._modules={},Object.keys(t).forEach(function(e){n._modules[e]=t[e].bind(n)})}t.default=f,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r={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}}};t.default=r,e.exports=t.default},function(f,h,l){"use strict";(function(i){Object.defineProperty(h,"__esModule",{value:!0}),h.default=void 0;var e,o=(e=l(70))&&e.__esModule?e:{default:e};function s(e){return(s="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})(e)}function t(e,t){for(var n=0;n>16&255,s[a++]=t>>8&255,s[a++]=255&t;2===o&&(t=c[e.charCodeAt(n)]<<2|c[e.charCodeAt(n+1)]>>4,s[a++]=255&t);1===o&&(t=c[e.charCodeAt(n)]<<10|c[e.charCodeAt(n+1)]<<4|c[e.charCodeAt(n+2)]>>2,s[a++]=t>>8&255,s[a++]=255&t);return s},t.fromByteArray=function(e){for(var t,n=e.length,r=n%3,i=[],o=0,s=n-r;o>2]+a[t<<4&63]+"==")):2==r&&(t=(e[n-2]<<8)+e[n-1],i.push(a[t>>10]+a[t>>4&63]+a[t<<2&63]+"="));return i.join("")};for(var a=[],c=[],f="undefined"!=typeof Uint8Array?Uint8Array:Array,r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i=0,o=r.length;i>18&63]+a[i>>12&63]+a[i>>6&63]+a[63&i]);return o.join("")}c["-".charCodeAt(0)]=62,c["_".charCodeAt(0)]=63},function(e,t){t.read=function(e,t,n,r,i){var o,s,a=8*i-r-1,u=(1<>1,f=-7,h=n?i-1:0,l=n?-1:1,p=e[t+h];for(h+=l,o=p&(1<<-f)-1,p>>=-f,f+=a;0>=-f,f+=r;0>1,l=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=r?0:o-1,d=r?1:-1,g=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,s=f):(s=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-s))<1&&(s--,u*=2),2<=(t+=1<=s+h?l/u:l*Math.pow(2,1-h))*u&&(s++,u/=2),f<=s+h?(a=0,s=f):1<=s+h?(a=(t*u-1)*Math.pow(2,i),s+=h):(a=t*Math.pow(2,h-1)*Math.pow(2,i),s=0));8<=i;e[n+p]=255&a,p+=d,a/=256,i-=8);for(s=s<>10,n=1023&e,r=32768&e;if(31==t)return 0==n?r?-1/0:1/0:NaN;var i=t?Math.pow(2,t-25)*(1024+n):Math.pow(2,-24)*n;return r?-i:i},readFloat32:function(){var e=this.readUint32(),t=(2147483647&e)>>23,n=8388607&e,r=2147483648&e;if(255==t)return 0==n?r?-1/0:1/0:NaN;var i=t?Math.pow(2,t-23-127)*(8388608+n):Math.pow(2,-149)*n;return r?-i:i},readFloat64:function(){var e=this.readUint32(),t=this.readUint32(),n=e>>20&2047,r=4294967296*(1048575&e)+t,i=2147483648&e;if(2047==n)return 0===r?i?-1/0:1/0:NaN;var o=n?Math.pow(2,n-52-1023)*(4503599627370496+r):Math.pow(2,-1074)*r;return i?-o:o},readUint16:function(){return 256*this.readByte()+this.readByte()},readUint32:function(){return 65536*this.readUint16()+this.readUint16()},readUint64:function(){return 4294967296*this.readUint32()+this.readUint32()}},t.prototype={writeByte:r("writeByte"),result:r("result"),writeFloat16:r("writeFloat16"),writeFloat32:r("writeFloat32"),writeFloat64:r("writeFloat64"),writeUint16:function(e){this.writeByte(e>>8&255),this.writeByte(255&e)},writeUint32:function(e){this.writeUint16(e>>16&65535),this.writeUint16(65535&e)},writeUint64:function(e){if(9007199254740992<=e||e<=-9007199254740992)throw new Error("Cannot encode Uint64 of: "+e+" magnitude to big (floating point errors)");this.writeUint32(Math.floor(e/4294967296)),this.writeUint32(e%4294967296)},writeString:r("writeString"),canWriteBinary:function(e){return!1},writeBinary:r("writeChunk")};var l=new Error;function p(e){var t=function(e){var t=e.readByte();return{type:t>>5,value:31&t}}(e);switch(t.type){case 0:return h(t,e);case 1:return-1-h(t,e);case 2:return e.readChunk(h(t,e));case 3:var n=e.readChunk(h(t,e));return n.toString("utf-8");case 4:case 5:var r=h(t,e),i=[];if(null!==r){5===t.type&&(r*=2);for(var o=0;o=this.latestBuffer.length&&(this.completeBuffers.push(this.latestBuffer),this.latestBuffer=b.alloc(this.defaultBufferLength),this.latestBufferOffset=0),this.byteLength++},n.prototype.writeFloat32=function(e){var t=b.alloc(4);t.writeFloatBE(e,0),this.writeBuffer(t)},n.prototype.writeFloat64=function(e){var t=b.alloc(8);t.writeDoubleBE(e,0),this.writeBuffer(t)},n.prototype.writeString=function(e,t){var n=b.from(e,"utf-8");t(n.length),this.writeBuffer(n)},n.prototype.canWriteBinary=function(e){return e instanceof b},n.prototype.writeBinary=function(e,t){t(e.length),this.writeBuffer(e)},n.prototype.writeBuffer=function(e){if(!(e instanceof b))throw new TypeError("BufferWriter only accepts Buffers");this.latestBufferOffset?this.latestBuffer.length-this.latestBufferOffset>=e.length?(e.copy(this.latestBuffer,this.latestBufferOffset),this.latestBufferOffset+=e.length,this.latestBufferOffset>=this.latestBuffer.length&&(this.completeBuffers.push(this.latestBuffer),this.latestBuffer=b.alloc(this.defaultBufferLength),this.latestBufferOffset=0)):(this.completeBuffers.push(this.latestBuffer.slice(0,this.latestBufferOffset)),this.completeBuffers.push(e),this.latestBuffer=b.alloc(this.defaultBufferLength),this.latestBufferOffset=0):this.completeBuffers.push(e),this.byteLength+=e.length},n.prototype.result=function(){for(var e=b.alloc(this.byteLength),t=0,n=0;n>>>>>"),o.log("[".concat(n," / ").concat(t,"]"),"\n",r.url,"\n",r.qs,"\n",e.text),o.log("-----")})}function s(e,i,o){var s=this;return this._config.logVerbosity&&(e=e.use(a)),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(i.timeout).end(function(t,n){var e,r={};if(r.error=null!==t,r.operation=i.operation,n&&n.status&&(r.statusCode=n.status),t){if(t.response&&t.response.text&&!s._config.logVerbosity)try{r.errorData=JSON.parse(t.response.text)}catch(e){r.errorData=t}else r.errorData=t;return r.category=s._detectErrorCategory(t),o(r,null)}try{e=JSON.parse(n.text)}catch(e){return r.errorData=n,r.error=!0,o(r,null)}return e.error&&1===e.error&&e.status&&e.message&&e.service?(r.errorData=e,r.statusCode=e.status,r.error=!0,r.category=s._detectErrorCategory(r),o(r,null)):o(r,e)})}},function(e,n,t){var r;r="undefined"!=typeof window?window:"undefined"!=typeof self?self:(console.warn("Using browser-only version of superagent in non-browser environment"),this);var i=t(73),o=t(74),s=t(10),a=t(75),u=t(77);function c(){}var f=n=e.exports=function(e,t){return"function"==typeof t?new n.Request("GET",e).end(t):1==arguments.length?new n.Request("GET",e):new n.Request(e,t)};n.Request=v,f.getXHR=function(){if(!(!r.XMLHttpRequest||r.location&&"file:"==r.location.protocol&&r.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 version of superagent could not find XHR")};var h="".trim?function(e){return e.trim()}:function(e){return e.replace(/(^\s*|\s*$)/g,"")};function l(e){if(!s(e))return e;var t=[];for(var n in e)p(t,n,e[n]);return t.join("&")}function p(t,n,e){if(null!=e)if(Array.isArray(e))e.forEach(function(e){p(t,n,e)});else if(s(e))for(var r in e)p(t,n+"["+r+"]",e[r]);else t.push(encodeURIComponent(n)+"="+encodeURIComponent(e));else null===e&&t.push(encodeURIComponent(n))}function d(e){for(var t,n,r={},i=e.split("&"),o=0,s=i.length;o=this._maxRetries)return!1;if(this._retryCallback)try{var n=this._retryCallback(e,t);if(!0===n)return!0;if(!1===n)return!1}catch(e){console.error(e)}if(t&&t.status&&500<=t.status&&501!=t.status)return!0;if(e){if(e.code&&~o.indexOf(e.code))return!0;if(e.timeout&&"ECONNABORTED"==e.code)return!0;if(e.crossDomain)return!0}return!1},r.prototype._retry=function(){return this.clearTimeout(),this.req&&(this.req=null,this.req=this.request()),this._aborted=!1,this.timedout=!1,this._end()},r.prototype.then=function(e,t){if(!this._fullfilledPromise){var i=this;this._endCalled&&console.warn("Warning: superagent request was sent twice, because both .end() and .then() were called. Never call .end() if you use promises"),this._fullfilledPromise=new Promise(function(n,r){i.end(function(e,t){e?r(e):n(t)})})}return this._fullfilledPromise.then(e,t)},r.prototype.catch=function(e){return this.then(void 0,e)},r.prototype.use=function(e){return e(this),this},r.prototype.ok=function(e){if("function"!=typeof e)throw Error("Callback required");return this._okCallback=e,this},r.prototype._isResponseOK=function(e){return!!e&&(this._okCallback?this._okCallback(e):200<=e.status&&e.status<300)},r.prototype.getHeader=r.prototype.get=function(e){return this._header[e.toLowerCase()]},r.prototype.set=function(e,t){if(i(e)){for(var n in e)this.set(n,e[n]);return this}return this._header[e.toLowerCase()]=t,this.header[e]=t,this},r.prototype.unset=function(e){return delete this._header[e.toLowerCase()],delete this.header[e],this},r.prototype.field=function(e,t){if(null==e)throw new Error(".field(name, val) name can not be empty");if(this._data&&console.error(".field() can't be used if .send() is used. Please use only .send() or only .field() & .attach()"),i(e)){for(var n in e)this.field(n,e[n]);return this}if(Array.isArray(t)){for(var r in t)this.field(e,t[r]);return this}if(null==t)throw new Error(".field(name, val) val can not be empty");return"boolean"==typeof t&&(t=""+t),this._getFormData().append(e,t),this},r.prototype.abort=function(){return this._aborted||(this._aborted=!0,this.xhr&&this.xhr.abort(),this.req&&this.req.abort(),this.clearTimeout(),this.emit("abort")),this},r.prototype._auth=function(e,t,n,r){switch(n.type){case"basic":this.set("Authorization","Basic "+r(e+":"+t));break;case"auto":this.username=e,this.password=t;break;case"bearer":this.set("Authorization","Bearer "+e)}return this},r.prototype.withCredentials=function(e){return null==e&&(e=!0),this._withCredentials=e,this},r.prototype.redirects=function(e){return this._maxRedirects=e,this},r.prototype.maxResponseSize=function(e){if("number"!=typeof e)throw TypeError("Invalid argument");return this._maxResponseSize=e,this},r.prototype.toJSON=function(){return{method:this.method,url:this.url,data:this._data,headers:this._header}},r.prototype.send=function(e){var t=i(e),n=this._header["content-type"];if(this._formData&&console.error(".send() can't be used if .attach() or .field() is used. Please use only .send() or only .field() & .attach()"),t&&!this._data)Array.isArray(e)?this._data=[]:this._isHost(e)||(this._data={});else if(e&&this._data&&this._isHost(this._data))throw Error("Can't merge these send calls");if(t&&i(this._data))for(var r in e)this._data[r]=e[r];else"string"==typeof e?(n||this.type("form"),n=this._header["content-type"],this._data="application/x-www-form-urlencoded"==n?this._data?this._data+"&"+e:e:(this._data||"")+e):this._data=e;return!t||this._isHost(e)||n||this.type("json"),this},r.prototype.sortQuery=function(e){return this._sort=void 0===e||e,this},r.prototype._finalizeQueryString=function(){var e=this._query.join("&");if(e&&(this.url+=(0<=this.url.indexOf("?")?"&":"?")+e),this._query.length=0,this._sort){var t=this.url.indexOf("?");if(0<=t){var n=this.url.substring(t+1).split("&");"function"==typeof this._sort?n.sort(this._sort):n.sort(),this.url=this.url.substring(0,t)+"?"+n.join("&")}}},r.prototype._appendQueryString=function(){console.trace("Unsupported")},r.prototype._timeoutError=function(e,t,n){if(!this._aborted){var r=new Error(e+t+"ms exceeded");r.timeout=t,r.code="ECONNABORTED",r.errno=n,this.timedout=!0,this.abort(),this.callback(r)}},r.prototype._setTimeouts=function(){var e=this;this._timeout&&!this._timer&&(this._timer=setTimeout(function(){e._timeoutError("Timeout of ",e._timeout,"ETIME")},this._timeout)),this._responseTimeout&&!this._responseTimeoutTimer&&(this._responseTimeoutTimer=setTimeout(function(){e._timeoutError("Response timeout of ",e._responseTimeout,"ETIMEDOUT")},this._responseTimeout))}},function(e,t,n){"use strict";var i=n(76);function r(e){if(e)return function(e){for(var t in r.prototype)e[t]=r.prototype[t];return e}(e)}(e.exports=r).prototype.get=function(e){return this.header[e.toLowerCase()]},r.prototype._setHeaderProperties=function(e){var t=e["content-type"]||"";this.type=i.type(t);var n=i.params(t);for(var r in n)this[r]=n[r];this.links={};try{e.link&&(this.links=i.parseLinks(e.link))}catch(e){}},r.prototype._setStatusProperties=function(e){var t=e/100|0;this.status=this.statusCode=e,this.statusType=t,this.info=1==t,this.ok=2==t,this.redirect=3==t,this.clientError=4==t,this.serverError=5==t,this.error=(4==t||5==t)&&this.toError(),this.created=201==e,this.accepted=202==e,this.noContent=204==e,this.badRequest=400==e,this.unauthorized=401==e,this.notAcceptable=406==e,this.forbidden=403==e,this.notFound=404==e,this.unprocessableEntity=422==e}},function(e,t,n){"use strict";t.type=function(e){return e.split(/ *; */).shift()},t.params=function(e){return e.split(/ *; */).reduce(function(e,t){var n=t.split(/ *= */),r=n.shift(),i=n.shift();return r&&i&&(e[r]=i),e},{})},t.parseLinks=function(e){return e.split(/ *, */).reduce(function(e,t){var n=t.split(/ *; */),r=n[0].slice(1,-1);return e[n[1].split(/ *= */)[1].slice(1,-1)]=r,e},{})},t.cleanHeader=function(e,t){return delete e["content-type"],delete e["content-length"],delete e["transfer-encoding"],delete e.host,t&&(delete e.authorization,delete e.cookie),e}},function(e,t){function n(){this._defaults=[]}["use","on","once","set","query","type","accept","auth","withCredentials","sortQuery","retry","ok","redirects","timeout","buffer","serialize","parse","ca","key","pfx","cert"].forEach(function(e){n.prototype[e]=function(){return this._defaults.push({fn:e,arguments:arguments}),this}}),n.prototype._setDefaults=function(t){this._defaults.forEach(function(e){t[e.fn].apply(t,e.arguments)})},e.exports=n}],i.c=r,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)i.d(n,r,function(e){return t[e]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="",i(i.s=11);function i(e){if(r[e])return r[e].exports;var t=r[e]={i:e,l:!1,exports:{}};return n[e].call(t.exports,t,t.exports,i),t.l=!0,t.exports}var n,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()}(window,function(){return r={},i.m=n=[function(e,t,n){"use strict";e.exports={}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;t.default={PNTimeOperation:"PNTimeOperation",PNHistoryOperation:"PNHistoryOperation",PNDeleteMessagesOperation:"PNDeleteMessagesOperation",PNFetchMessagesOperation:"PNFetchMessagesOperation",PNMessageCounts:"PNMessageCountsOperation",PNSubscribeOperation:"PNSubscribeOperation",PNUnsubscribeOperation:"PNUnsubscribeOperation",PNPublishOperation:"PNPublishOperation",PNSignalOperation:"PNSignalOperation",PNAddMessageActionOperation:"PNAddActionOperation",PNRemoveMessageActionOperation:"PNRemoveMessageActionOperation",PNGetMessageActionsOperation:"PNGetMessageActionsOperation",PNCreateUserOperation:"PNCreateUserOperation",PNUpdateUserOperation:"PNUpdateUserOperation",PNDeleteUserOperation:"PNDeleteUserOperation",PNGetUserOperation:"PNGetUsersOperation",PNGetUsersOperation:"PNGetUsersOperation",PNCreateSpaceOperation:"PNCreateSpaceOperation",PNUpdateSpaceOperation:"PNUpdateSpaceOperation",PNDeleteSpaceOperation:"PNDeleteSpaceOperation",PNGetSpaceOperation:"PNGetSpacesOperation",PNGetSpacesOperation:"PNGetSpacesOperation",PNGetMembersOperation:"PNGetMembersOperation",PNUpdateMembersOperation:"PNUpdateMembersOperation",PNGetMembershipsOperation:"PNGetMembershipsOperation",PNUpdateMembershipsOperation:"PNUpdateMembershipsOperation",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",PNAccessManagerGrantToken:"PNAccessManagerGrantToken",PNAccessManagerAudit:"PNAccessManagerAudit"},e.exports=t.default},function(e,t,n){"use strict";function r(e){return encodeURIComponent(e).replace(/[!~*'()]/g,function(e){return"%".concat(e.charCodeAt(0).toString(16).toUpperCase())})}function i(e){return function(e){var t=[];return Object.keys(e).forEach(function(e){return t.push(e)}),t}(e).sort()}e.exports={signPamFromParams:function(t){return i(t).map(function(e){return"".concat(e,"=").concat(r(t[e]))}).join("&")},endsWith:function(e,t){return-1!==e.indexOf(t,this.length-t.length)},createPromise:function(){var n,r;return{promise:new Promise(function(e,t){n=e,r=t}),reject:r,fulfill:n}},encodeString:r}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r,i=(r=n(5))&&r.__esModule?r:{default:r};n(0);function o(e,t){for(var n=0;n=n())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+n().toString(16)+" bytes");return 0|e}function p(e,t){if(l.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return N(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return j(e).length;default:if(r)return N(e).length;t=(""+t).toLowerCase(),r=!0}}function d(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function g(e,t,n,r,i){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):2147483647=e.length){if(i)return-1;n=e.length-1}else if(n<0){if(!i)return-1;n=0}if("string"==typeof t&&(t=l.from(t,r)),l.isBuffer(t))return 0===t.length?-1:y(e,t,n,r,i);if("number"==typeof t)return t&=255,l.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):y(e,[t],n,r,i);throw new TypeError("val must be string, number or Buffer")}function y(e,t,n,r,i){var o,s=1,a=e.length,u=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;a/=s=2,u/=2,n/=2}function c(e,t){return 1===s?e[t]:e.readUInt16BE(t*s)}if(i){var f=-1;for(o=n;o>>10&1023|55296),f=56320|1023&f),r.push(f),i+=l}return function(e){var t=e.length;if(t<=k)return String.fromCharCode.apply(String,e);var n="",r=0;for(;rthis.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e=e||"utf8";;)switch(e){case"hex":return P(this,t,n);case"utf8":case"utf-8":return _(this,t,n);case"ascii":return T(this,t,n);case"latin1":case"binary":return w(this,t,n);case"base64":return m(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return O(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}.apply(this,arguments)},l.prototype.equals=function(e){if(!l.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===l.compare(this,e)},l.prototype.inspect=function(){var e="",t=I.INSPECT_MAX_BYTES;return 0t&&(e+=" ... ")),""},l.prototype.compare=function(e,t,n,r,i){if(!l.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),t<0||n>e.length||r<0||i>this.length)throw new RangeError("out of range index");if(i<=r&&n<=t)return 0;if(i<=r)return-1;if(n<=t)return 1;if(this===e)return 0;for(var o=(i>>>=0)-(r>>>=0),s=(n>>>=0)-(t>>>=0),a=Math.min(o,s),u=this.slice(r,i),c=e.slice(t,n),f=0;fthis.length)throw new RangeError("Attempt to write outside buffer bounds");r=r||"utf8";for(var o,s,a,u,c,f,l,h,p,d=!1;;)switch(r){case"hex":return v(this,e,t,n);case"utf8":case"utf-8":return h=t,p=n,B(N(e,(l=this).length-h),l,h,p);case"ascii":return b(this,e,t,n);case"latin1":case"binary":return b(this,e,t,n);case"base64":return u=this,c=t,f=n,B(j(e),u,c,f);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return s=t,a=n,B(function(e,t){for(var n,r,i,o=[],s=0;s>8,i=n%256,o.push(i),o.push(r);return o}(e,(o=this).length-s),o,s,a);default:if(d)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),d=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var k=4096;function T(e,t,n){var r="";n=Math.min(e.length,n);for(var i=t;ie.length)throw new RangeError("Index out of range")}function E(e,t,n,r){t<0&&(t=65535+t+1);for(var i=0,o=Math.min(e.length-n,2);i>>8*(r?i:1-i)}function R(e,t,n,r){t<0&&(t=4294967295+t+1);for(var i=0,o=Math.min(e.length-n,4);i>>8*(r?i:3-i)&255}function A(e,t,n,r){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function C(e,t,n,r,i){return i||A(e,0,n,4),o.write(e,t,n,r,23,4),n+4}function U(e,t,n,r,i){return i||A(e,0,n,8),o.write(e,t,n,r,52,8),n+8}l.prototype.slice=function(e,t){var n,r=this.length;if((e=~~e)<0?(e+=r)<0&&(e=0):r>>8):E(this,e,t,!0),t+2},l.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):E(this,e,t,!1),t+2},l.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):R(this,e,t,!0),t+4},l.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):R(this,e,t,!1),t+4},l.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t|=0,!r){var i=Math.pow(2,8*n-1);M(this,e,t,n,i-1,-i)}var o=0,s=1,a=0;for(this[t]=255&e;++o>0)-a&255;return t+n},l.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t|=0,!r){var i=Math.pow(2,8*n-1);M(this,e,t,n,i-1,-i)}var o=n-1,s=1,a=0;for(this[t+o]=255&e;0<=--o&&(s*=256);)e<0&&0===a&&0!==this[t+o+1]&&(a=1),this[t+o]=(e/s>>0)-a&255;return t+n},l.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,1,127,-128),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},l.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):E(this,e,t,!0),t+2},l.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):E(this,e,t,!1),t+2},l.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,4,2147483647,-2147483648),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):R(this,e,t,!0),t+4},l.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):R(this,e,t,!1),t+4},l.prototype.writeFloatLE=function(e,t,n){return C(this,e,t,!0,n)},l.prototype.writeFloatBE=function(e,t,n){return C(this,e,t,!1,n)},l.prototype.writeDoubleLE=function(e,t,n){return U(this,e,t,!0,n)},l.prototype.writeDoubleBE=function(e,t,n){return U(this,e,t,!1,n)},l.prototype.copy=function(e,t,n,r){if(n=n||0,r||0===r||(r=this.length),t>=e.length&&(t=e.length),t=t||0,0=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t>>=0,n=void 0===n?this.length:n>>>0,"number"==typeof(e=e||0))for(o=t;o>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;o.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return o}function j(e){return r.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(t,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function B(e,t,n,r){for(var i=0;i=t.length||i>=e.length);++i)t[i+n]=e[i];return i}}).call(this,K(69))},function(e,t,n){"use strict";e.exports=function(e){return null!==e&&"object"==typeof e}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=u(n(12)),i=u(n(66)),o=u(n(67)),s=u(n(68)),a=n(74);n(0);function u(e){return e&&e.__esModule?e:{default:e}}function c(e){return(c="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})(e)}function f(e,t){return!t||"object"!==c(t)&&"function"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(e):t}function l(e){return(l=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function h(e,t){return(h=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function p(e){if(!navigator||!navigator.sendBeacon)return!1;navigator.sendBeacon(e)}var d=(function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&h(e,t)}(g,r.default),g);function g(e){var t;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,g);var n=e.listenToBrowserNetworkEvents,r=void 0===n||n;return e.db=o.default,e.cbor=new s.default,e.sdkFamily="Web",e.networking=new i.default({del:a.del,get:a.get,post:a.post,patch:a.patch,sendBeacon:p}),t=f(this,l(g).call(this,e)),r&&(window.addEventListener("offline",function(){t.networkDownDetected()}),window.addEventListener("online",function(){t.networkUpDetected()})),t}t.default=d,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var y=a(n(3)),v=a(n(6)),b=a(n(15)),m=a(n(7)),_=a(n(18)),k=a(n(19)),T=s(n(20)),w=s(n(21)),P=s(n(22)),O=s(n(23)),S=s(n(24)),M=s(n(25)),E=s(n(26)),R=s(n(27)),A=s(n(28)),C=s(n(29)),U=s(n(30)),x=s(n(31)),N=s(n(32)),j=s(n(33)),B=s(n(34)),I=s(n(35)),K=s(n(36)),D=s(n(37)),L=s(n(38)),F=s(n(39)),G=s(n(40)),H=s(n(41)),q=s(n(42)),z=s(n(43)),Y=s(n(44)),$=s(n(45)),W=s(n(46)),J=s(n(47)),X=s(n(48)),V=s(n(49)),Q=s(n(50)),Z=s(n(51)),ee=s(n(52)),te=s(n(53)),ne=s(n(54)),re=s(n(55)),ie=s(n(56)),oe=s(n(57)),se=s(n(58)),ae=s(n(59)),ue=s(n(60)),ce=s(n(61)),fe=s(n(62)),le=s(n(63)),he=s(n(64)),pe=s(n(8)),de=s(n(65)),r=a(n(1)),i=a(n(4)),o=(n(0),a(n(5)));function s(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var r=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,n):{};r.get||r.set?Object.defineProperty(t,n,r):t[n]=e[n]}return t.default=e,t}function a(e){return e&&e.__esModule?e:{default:e}}function u(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 e=this.words,t=this.sigBytes;e[t>>>2]&=4294967295<<32-t%4*8,e.length=a.ceil(t/4)},clone:function(){var e=r.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],n=0;n>>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 u.init(n,t/2)}},s=i.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 u.init(n,t)}},c=i.Utf8={stringify:function(e){try{return decodeURIComponent(escape(s.stringify(e)))}catch(e){throw Error("Malformed UTF-8 data")}},parse:function(e){return s.parse(unescape(encodeURIComponent(e)))}},f=t.BufferedBlockAlgorithm=r.extend({reset:function(){this._data=new u.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=c.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(e){var t=this._data,n=t.words,r=t.sigBytes,i=this.blockSize,o=r/(4*i);if(e=(o=e?a.ceil(o):a.max((0|o)-this._minBufferSize,0))*i,r=a.min(4*e,r),e){for(var s=0;s>>7)^(h<<14|h>>>18)^h>>>3)+g[l-7]+((p<<15|p>>>17)^(p<<13|p>>>19)^p>>>10)+g[l-16]}h=f+((a<<26|a>>>6)^(a<<21|a>>>11)^(a<<7|a>>>25))+(a&u^~a&c)+d[l]+g[l],p=((r<<30|r>>>2)^(r<<19|r>>>13)^(r<<10|r>>>22))+(r&i^r&o^i&o),f=c,c=u,u=a,a=s+h|0,s=o,o=i,i=r,r=h+p|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]+a|0,n[5]=n[5]+u|0,n[6]=n[6]+c|0,n[7]=n[7]+f|0},_doFinalize:function(){var e=this._data,t=e.words,n=8*this._nDataBytes,r=8*e.sigBytes;return t[r>>>5]|=128<<24-r%32,t[14+(64+r>>>9<<4)]=i.floor(n/4294967296),t[15+(64+r>>>9<<4)]=n,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}});e.SHA256=n._createHelper(r),e.HmacSHA256=n._createHmacHelper(r)}(Math),c=(r=E).enc.Utf8,r.algo.HMAC=r.lib.Base.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=c.parse(t));var n=e.blockSize,r=4*n;t.sigBytes>r&&(t=e.finalize(t)),t.clamp();for(var i=this._oKey=t.clone(),o=this._iKey=t.clone(),s=i.words,a=o.words,u=0;u>>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;s<4&&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 t=e.length,n=this._map;!(r=n.charAt(64))||-1!=(r=e.indexOf(r))&&(t=r);for(var r=[],i=0,o=0;o>>6-o%4*2;r[i>>>2]|=(s|a)<<24-i%4*8,i++}return u.create(r,i)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="},function(o){function w(e,t,n,r,i,o,s){return((e=e+(t&n|~t&r)+i+s)<>>32-o)+t}function P(e,t,n,r,i,o,s){return((e=e+(t&r|n&~r)+i+s)<>>32-o)+t}function O(e,t,n,r,i,o,s){return((e=e+(t^n^r)+i+s)<>>32-o)+t}function S(e,t,n,r,i,o,s){return((e=e+(n^(t|~r))+i+s)<>>32-o)+t}for(var e=E,t=(r=e.lib).WordArray,n=r.Hasher,r=e.algo,M=[],i=0;i<64;i++)M[i]=4294967296*o.abs(o.sin(i+1))|0;r=r.MD5=n.extend({_doReset:function(){this._hash=new t.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(e,t){for(var n=0;n<16;n++){var r=e[s=t+n];e[s]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8)}n=this._hash.words;var i,o,s=e[t+0],a=(r=e[t+1],e[t+2]),u=e[t+3],c=e[t+4],f=e[t+5],l=e[t+6],h=e[t+7],p=e[t+8],d=e[t+9],g=e[t+10],y=e[t+11],v=e[t+12],b=e[t+13],m=e[t+14],_=e[t+15],k=n[0],T=S(T=S(T=S(T=S(T=O(T=O(T=O(T=O(T=P(T=P(T=P(T=P(T=w(T=w(T=w(T=w(T=n[1],o=w(o=n[2],i=w(i=n[3],k=w(k,T,o,i,s,7,M[0]),T,o,r,12,M[1]),k,T,a,17,M[2]),i,k,u,22,M[3]),o=w(o,i=w(i,k=w(k,T,o,i,c,7,M[4]),T,o,f,12,M[5]),k,T,l,17,M[6]),i,k,h,22,M[7]),o=w(o,i=w(i,k=w(k,T,o,i,p,7,M[8]),T,o,d,12,M[9]),k,T,g,17,M[10]),i,k,y,22,M[11]),o=w(o,i=w(i,k=w(k,T,o,i,v,7,M[12]),T,o,b,12,M[13]),k,T,m,17,M[14]),i,k,_,22,M[15]),o=P(o,i=P(i,k=P(k,T,o,i,r,5,M[16]),T,o,l,9,M[17]),k,T,y,14,M[18]),i,k,s,20,M[19]),o=P(o,i=P(i,k=P(k,T,o,i,f,5,M[20]),T,o,g,9,M[21]),k,T,_,14,M[22]),i,k,c,20,M[23]),o=P(o,i=P(i,k=P(k,T,o,i,d,5,M[24]),T,o,m,9,M[25]),k,T,u,14,M[26]),i,k,p,20,M[27]),o=P(o,i=P(i,k=P(k,T,o,i,b,5,M[28]),T,o,a,9,M[29]),k,T,h,14,M[30]),i,k,v,20,M[31]),o=O(o,i=O(i,k=O(k,T,o,i,f,4,M[32]),T,o,p,11,M[33]),k,T,y,16,M[34]),i,k,m,23,M[35]),o=O(o,i=O(i,k=O(k,T,o,i,r,4,M[36]),T,o,c,11,M[37]),k,T,h,16,M[38]),i,k,g,23,M[39]),o=O(o,i=O(i,k=O(k,T,o,i,b,4,M[40]),T,o,s,11,M[41]),k,T,u,16,M[42]),i,k,l,23,M[43]),o=O(o,i=O(i,k=O(k,T,o,i,d,4,M[44]),T,o,v,11,M[45]),k,T,_,16,M[46]),i,k,a,23,M[47]),o=S(o,i=S(i,k=S(k,T,o,i,s,6,M[48]),T,o,h,10,M[49]),k,T,m,15,M[50]),i,k,f,21,M[51]),o=S(o,i=S(i,k=S(k,T,o,i,v,6,M[52]),T,o,u,10,M[53]),k,T,g,15,M[54]),i,k,r,21,M[55]),o=S(o,i=S(i,k=S(k,T,o,i,p,6,M[56]),T,o,_,10,M[57]),k,T,l,15,M[58]),i,k,b,21,M[59]),o=S(o,i=S(i,k=S(k,T,o,i,c,6,M[60]),T,o,y,10,M[61]),k,T,a,15,M[62]),i,k,d,21,M[63]);n[0]=n[0]+k|0,n[1]=n[1]+T|0,n[2]=n[2]+o|0,n[3]=n[3]+i|0},_doFinalize:function(){var e=this._data,t=e.words,n=8*this._nDataBytes,r=8*e.sigBytes;t[r>>>5]|=128<<24-r%32;var i=o.floor(n/4294967296);for(t[15+(r+64>>>9<<4)]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8),t[14+(r+64>>>9<<4)]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),e.sigBytes=4*(t.length+1),this._process(),t=(e=this._hash).words,n=0;n<4;n++)r=t[n],t[n]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8);return e},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}}),e.MD5=n._createHelper(r),e.HmacMD5=n._createHmacHelper(r)}(Math),a=(o=(s=E).lib).Base,f=o.WordArray,l=(o=s.algo).EvpKDF=a.extend({cfg:a.extend({keySize:4,hasher:o.MD5,iterations:1}),init:function(e){this.cfg=this.cfg.extend(e)},compute:function(e,t){for(var n=(s=this.cfg).hasher.create(),r=f.create(),i=r.words,o=s.keySize,s=s.iterations;i.length>>2]}},e.BlockCipher=o.extend({cfg:o.cfg.extend({mode:u,padding:c}),reset:function(){o.reset.call(this);var e=(t=this.cfg).iv,t=t.mode;if(this._xformMode==this._ENC_XFORM_MODE)var n=t.createEncryptor;else n=t.createDecryptor,this._minBufferSize=1;this._mode=n.call(t,this,e&&e.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 f=e.CipherParams=t.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),l=(u=(h.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext;return((e=e.salt)?s.create([1398893684,1701076831]).concat(e).concat(t):t).toString(r)},parse:function(e){var t=(e=r.parse(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 f.create({ciphertext:e,salt:n})}},e.SerializableCipher=t.extend({cfg:t.extend({format:u}),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,f.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}})),h=(h.kdf={}).OpenSSL={execute:function(e,t,n,r){return r=r||s.random(8),e=i.create({keySize:t+n}).compute(e,r),n=s.create(e.words.slice(t),4*n),e.sigBytes=4*t,f.create({key:e,iv:n,salt:r})}},p=e.PasswordBasedCipher=l.extend({cfg:l.cfg.extend({kdf:h}),encrypt:function(e,t,n,r){return n=(r=this.cfg.extend(r)).kdf.execute(n,e.keySize,e.ivSize),r.iv=n.iv,(e=l.encrypt.call(this,e,t,n.key,r)).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,l.decrypt.call(this,e,t,n.key,r)}})}(),function(){for(var e=E,t=e.lib.BlockCipher,n=e.algo,s=[],r=[],i=[],o=[],a=[],u=[],c=[],f=[],l=[],h=[],p=[],d=0;d<256;d++)p[d]=d<128?d<<1:d<<1^283;var g=0,y=0;for(d=0;d<256;d++){var v=(v=y^y<<1^y<<2^y<<3^y<<4)>>>8^255&v^99;s[g]=v;var b=p[r[v]=g],m=p[b],_=p[m],k=257*p[v]^16843008*v;i[g]=k<<24|k>>>8,o[g]=k<<16|k>>>16,a[g]=k<<8|k>>>24,u[g]=k,k=16843009*_^65537*m^257*b^16843008*g,c[v]=k<<24|k>>>8,f[v]=k<<16|k>>>16,l[v]=k<<8|k>>>24,h[v]=k,g?(g=b^p[p[p[_^b]]],y^=p[p[y]]):g=y=1}var T=[0,1,2,4,8,16,32,64,128,27,54];n=n.AES=t.extend({_doReset:function(){for(var e=(n=this._key).words,t=n.sigBytes/4,n=4*((this._nRounds=t+6)+1),r=this._keySchedule=[],i=0;i>>24]<<24|s[o>>>16&255]<<16|s[o>>>8&255]<<8|s[255&o]):(o=s[(o=o<<8|o>>>24)>>>24]<<24|s[o>>>16&255]<<16|s[o>>>8&255]<<8|s[255&o],o^=T[i/t|0]<<24),r[i]=r[i-t]^o}for(e=this._invKeySchedule=[],t=0;t>>24]]^f[s[o>>>16&255]]^l[s[o>>>8&255]]^h[s[255&o]]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,i,o,a,u,s)},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,c,f,l,h,r),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],f=e[t+1]^n[1],l=e[t+2]^n[2],h=e[t+3]^n[3],p=4,d=1;d>>24]^i[f>>>16&255]^o[l>>>8&255]^s[255&h]^n[p++],y=r[f>>>24]^i[l>>>16&255]^o[h>>>8&255]^s[255&c]^n[p++],v=r[l>>>24]^i[h>>>16&255]^o[c>>>8&255]^s[255&f]^n[p++];h=r[h>>>24]^i[c>>>16&255]^o[f>>>8&255]^s[255&l]^n[p++],c=g,f=y,l=v}g=(a[c>>>24]<<24|a[f>>>16&255]<<16|a[l>>>8&255]<<8|a[255&h])^n[p++],y=(a[f>>>24]<<24|a[l>>>16&255]<<16|a[h>>>8&255]<<8|a[255&c])^n[p++],v=(a[l>>>24]<<24|a[h>>>16&255]<<16|a[c>>>8&255]<<8|a[255&f])^n[p++],h=(a[h>>>24]<<24|a[c>>>16&255]<<16|a[f>>>8&255]<<8|a[255&l])^n[p++],e[t]=g,e[t+1]=y,e[t+2]=v,e[t+3]=h},keySize:8});e.AES=t._createHelper(n)}(),E.mode.ECB=((h=E.lib.BlockCipherMode.extend()).Encryptor=h.extend({processBlock:function(e,t){this._cipher.encryptBlock(e,t)}}),h.Decryptor=h.extend({processBlock:function(e,t){this._cipher.decryptBlock(e,t)}}),h),e.exports=E},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;r(n(6)),r(n(3)),r(n(7));var c=r(n(16)),f=r(n(17)),l=r(n(2)),a=(n(0),r(n(4)));function r(e){return e&&e.__esModule?e:{default:e}}function i(e,t){for(var n=0;n=o){var s={};s.category=a.default.PNRequestMessageCountExceededCategory,s.operation=t.operation,this._listenerManager.announceStatus(s)}r.forEach(function(e){var t=e.channel,n=e.subscriptionMatch,r=e.publishMetaData;if(t===n&&(n=null),f){if(c._dedupingManager.isDuplicate(e))return;c._dedupingManager.addEntry(e)}if(l.default.endsWith(e.channel,"-pnpres")){var i={channel:null,subscription:null};i.actualChannel=null!=n?t:null,i.subscribedChannel=null!=n?n:t,t&&(i.channel=t.substring(0,t.lastIndexOf("-pnpres"))),n&&(i.subscription=n.substring(0,n.lastIndexOf("-pnpres"))),i.action=e.payload.action,i.state=e.payload.data,i.timetoken=r.publishTimetoken,i.occupancy=e.payload.occupancy,i.uuid=e.payload.uuid,i.timestamp=e.payload.timestamp,e.payload.join&&(i.join=e.payload.join),e.payload.leave&&(i.leave=e.payload.leave),e.payload.timeout&&(i.timeout=e.payload.timeout),c._listenerManager.announcePresence(i)}else if(1===e.messageType){var o={channel:null,subscription:null};o.channel=t,o.subscription=n,o.timetoken=r.publishTimetoken,o.publisher=e.issuingClientId,e.userMetadata&&(o.userMetadata=e.userMetadata),o.message=e.payload,c._listenerManager.announceSignal(o)}else if(2===e.messageType){var s={channel:null,subscription:null};s.channel=t,s.subscription=n,s.timetoken=r.publishTimetoken,s.publisher=e.issuingClientId,e.userMetadata&&(s.userMetadata=e.userMetadata),s.message={event:e.payload.event,type:e.payload.type,data:e.payload.data},"user"===e.payload.type?c._listenerManager.announceUser(s):"space"===e.payload.type?c._listenerManager.announceSpace(s):"membership"===e.payload.type&&c._listenerManager.announceMembership(s)}else if(3===e.messageType){var a={};a.channel=t,a.subscription=n,a.timetoken=r.publishTimetoken,a.publisher=e.issuingClientId,a.data={messageTimetoken:e.payload.data.messageTimetoken,actionTimetoken:e.payload.data.actionTimetoken,type:e.payload.data.type,uuid:e.issuingClientId,value:e.payload.data.value},a.event=e.payload.event,c._listenerManager.announceMessageAction(a)}else{var u={channel:null,subscription:null};u.actualChannel=null!=n?t:null,u.subscribedChannel=null!=n?n:t,u.channel=t,u.subscription=n,u.timetoken=r.publishTimetoken,u.publisher=e.issuingClientId,e.userMetadata&&(u.userMetadata=e.userMetadata),c._config.cipherKey?u.message=c._crypto.decrypt(e.payload):u.message=e.payload,c._listenerManager.announceMessage(u)}}),this._region=e.metadata.region,this._startSubscribeLoop()}}},{key:"_stopSubscribeLoop",value:function(){this._subscribeCall&&("function"==typeof this._subscribeCall.abort&&this._subscribeCall.abort(),this._subscribeCall=null)}}])&&i(o.prototype,s),void(u&&i(o,u)),d);function d(e){var t=e.subscribeEndpoint,n=e.leaveEndpoint,r=e.heartbeatEndpoint,i=e.setStateEndpoint,o=e.timeEndpoint,s=e.config,a=e.crypto,u=e.listenerManager;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,d),h(this,"_crypto",void 0),h(this,"_config",void 0),h(this,"_listenerManager",void 0),h(this,"_reconnectionManager",void 0),h(this,"_leaveEndpoint",void 0),h(this,"_heartbeatEndpoint",void 0),h(this,"_setStateEndpoint",void 0),h(this,"_subscribeEndpoint",void 0),h(this,"_channels",void 0),h(this,"_presenceChannels",void 0),h(this,"_heartbeatChannels",void 0),h(this,"_heartbeatChannelGroups",void 0),h(this,"_channelGroups",void 0),h(this,"_presenceChannelGroups",void 0),h(this,"_currentTimetoken",void 0),h(this,"_lastTimetoken",void 0),h(this,"_storedTimetoken",void 0),h(this,"_region",void 0),h(this,"_subscribeCall",void 0),h(this,"_heartbeatTimer",void 0),h(this,"_subscriptionStatusAnnounced",void 0),h(this,"_autoNetworkDetection",void 0),h(this,"_isOnline",void 0),h(this,"_pendingChannelSubscriptions",void 0),h(this,"_pendingChannelGroupSubscriptions",void 0),h(this,"_dedupingManager",void 0),this._listenerManager=u,this._config=s,this._leaveEndpoint=n,this._heartbeatEndpoint=r,this._setStateEndpoint=i,this._subscribeEndpoint=t,this._crypto=a,this._channels={},this._presenceChannels={},this._heartbeatChannels={},this._heartbeatChannelGroups={},this._channelGroups={},this._presenceChannelGroups={},this._pendingChannelSubscriptions=[],this._pendingChannelGroupSubscriptions=[],this._currentTimetoken=0,this._lastTimetoken=0,this._storedTimetoken=null,this._subscriptionStatusAnnounced=!1,this._isOnline=!0,this._reconnectionManager=new c.default({timeEndpoint:o}),this._dedupingManager=new f.default({config:s})}t.default=p,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r;(r=n(8))&&r.__esModule,n(0);function i(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=[]}}])&&i(s.prototype,a),void(u&&i(s,u)),f);function f(e){var t=e.config;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,f),o(this,"_config",void 0),o(this,"hashHistory",void 0),this.hashHistory=[],this._config=t}t.default=c,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r;(r=n(3))&&r.__esModule,n(0);function i(e){return(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})(e)}function o(e,t){for(var n=0;n=this._maxSubDomain&&(this._currentSubDomain=1),e=this._currentSubDomain.toString(),this._providedFQDN.replace("ps.pndsn.com","ps".concat(e,".pndsn.com"))):this._providedFQDN;var e}},{key:"hasModule",value:function(e){return e in this._modules}},{key:"shiftStandardOrigin",value:function(){return this._standardOrigin=this.nextOrigin(),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:"PATCH",value:function(e,t,n,r){return this._modules.patch(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 r.default.PNNetworkIssuesCategory;if("ECONNREFUSED"===e.code)return r.default.PNNetworkIssuesCategory;if("ECONNRESET"===e.code)return r.default.PNNetworkIssuesCategory;if("EAI_AGAIN"===e.code)return r.default.PNNetworkIssuesCategory;if(0===e.status||e.hasOwnProperty("status")&&void 0===e.status)return r.default.PNNetworkIssuesCategory;if(e.timeout)return r.default.PNTimeoutCategory;if("ETIMEDOUT"===e.code)return r.default.PNNetworkIssuesCategory;if(e.response){if(e.response.badRequest)return r.default.PNBadRequestCategory;if(e.response.forbidden)return r.default.PNAccessDeniedCategory}return r.default.PNUnknownCategory}}])&&o(a.prototype,u),void(c&&o(a,c)),l);function l(t){var n=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,l),s(this,"_modules",void 0),s(this,"_config",void 0),s(this,"_maxSubDomain",void 0),s(this,"_currentSubDomain",void 0),s(this,"_standardOrigin",void 0),s(this,"_subscribeOrigin",void 0),s(this,"_providedFQDN",void 0),s(this,"_requestTimeout",void 0),s(this,"_coreParams",void 0),this._modules={},Object.keys(t).forEach(function(e){n._modules[e]=t[e].bind(n)})}t.default=f,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r={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}}};t.default=r,e.exports=t.default},function(f,l,h){"use strict";(function(i){Object.defineProperty(l,"__esModule",{value:!0}),l.default=void 0;var e,o=(e=h(73))&&e.__esModule?e:{default:e};function s(e){return(s="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})(e)}function t(e,t){for(var n=0;n>16&255,s[a++]=t>>8&255,s[a++]=255&t;2===o&&(t=c[e.charCodeAt(n)]<<2|c[e.charCodeAt(n+1)]>>4,s[a++]=255&t);1===o&&(t=c[e.charCodeAt(n)]<<10|c[e.charCodeAt(n+1)]<<4|c[e.charCodeAt(n+2)]>>2,s[a++]=t>>8&255,s[a++]=255&t);return s},t.fromByteArray=function(e){for(var t,n=e.length,r=n%3,i=[],o=0,s=n-r;o>2]+a[t<<4&63]+"==")):2==r&&(t=(e[n-2]<<8)+e[n-1],i.push(a[t>>10]+a[t>>4&63]+a[t<<2&63]+"="));return i.join("")};for(var a=[],c=[],f="undefined"!=typeof Uint8Array?Uint8Array:Array,r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i=0,o=r.length;i>18&63]+a[i>>12&63]+a[i>>6&63]+a[63&i]);return o.join("")}c["-".charCodeAt(0)]=62,c["_".charCodeAt(0)]=63},function(e,t){t.read=function(e,t,n,r,i){var o,s,a=8*i-r-1,u=(1<>1,f=-7,l=n?i-1:0,h=n?-1:1,p=e[t+l];for(l+=h,o=p&(1<<-f)-1,p>>=-f,f+=a;0>=-f,f+=r;0>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=r?0:o-1,d=r?1:-1,g=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,s=f):(s=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-s))<1&&(s--,u*=2),2<=(t+=1<=s+l?h/u:h*Math.pow(2,1-l))*u&&(s++,u/=2),f<=s+l?(a=0,s=f):1<=s+l?(a=(t*u-1)*Math.pow(2,i),s+=l):(a=t*Math.pow(2,l-1)*Math.pow(2,i),s=0));8<=i;e[n+p]=255&a,p+=d,a/=256,i-=8);for(s=s<>10,n=1023&e,r=32768&e;if(31==t)return 0==n?r?-1/0:1/0:NaN;var i=t?Math.pow(2,t-25)*(1024+n):Math.pow(2,-24)*n;return r?-i:i},readFloat32:function(){var e=this.readUint32(),t=(2147483647&e)>>23,n=8388607&e,r=2147483648&e;if(255==t)return 0==n?r?-1/0:1/0:NaN;var i=t?Math.pow(2,t-23-127)*(8388608+n):Math.pow(2,-149)*n;return r?-i:i},readFloat64:function(){var e=this.readUint32(),t=this.readUint32(),n=e>>20&2047,r=4294967296*(1048575&e)+t,i=2147483648&e;if(2047==n)return 0===r?i?-1/0:1/0:NaN;var o=n?Math.pow(2,n-52-1023)*(4503599627370496+r):Math.pow(2,-1074)*r;return i?-o:o},readUint16:function(){return 256*this.readByte()+this.readByte()},readUint32:function(){return 65536*this.readUint16()+this.readUint16()},readUint64:function(){return 4294967296*this.readUint32()+this.readUint32()}},t.prototype={writeByte:r("writeByte"),result:r("result"),writeFloat16:r("writeFloat16"),writeFloat32:r("writeFloat32"),writeFloat64:r("writeFloat64"),writeUint16:function(e){this.writeByte(e>>8&255),this.writeByte(255&e)},writeUint32:function(e){this.writeUint16(e>>16&65535),this.writeUint16(65535&e)},writeUint64:function(e){if(9007199254740992<=e||e<=-9007199254740992)throw new Error("Cannot encode Uint64 of: "+e+" magnitude to big (floating point errors)");this.writeUint32(Math.floor(e/4294967296)),this.writeUint32(e%4294967296)},writeString:r("writeString"),canWriteBinary:function(e){return!1},writeBinary:r("writeChunk")};var h=new Error;function p(e){var t=function(e){var t=e.readByte();return{type:t>>5,value:31&t}}(e);switch(t.type){case 0:return l(t,e);case 1:return-1-l(t,e);case 2:return e.readChunk(l(t,e));case 3:var n=e.readChunk(l(t,e));return n.toString("utf-8");case 4:case 5:var r=l(t,e),i=[];if(null!==r){5===t.type&&(r*=2);for(var o=0;o=this.latestBuffer.length&&(this.completeBuffers.push(this.latestBuffer),this.latestBuffer=b.alloc(this.defaultBufferLength),this.latestBufferOffset=0),this.byteLength++},n.prototype.writeFloat32=function(e){var t=b.alloc(4);t.writeFloatBE(e,0),this.writeBuffer(t)},n.prototype.writeFloat64=function(e){var t=b.alloc(8);t.writeDoubleBE(e,0),this.writeBuffer(t)},n.prototype.writeString=function(e,t){var n=b.from(e,"utf-8");t(n.length),this.writeBuffer(n)},n.prototype.canWriteBinary=function(e){return e instanceof b},n.prototype.writeBinary=function(e,t){t(e.length),this.writeBuffer(e)},n.prototype.writeBuffer=function(e){if(!(e instanceof b))throw new TypeError("BufferWriter only accepts Buffers");this.latestBufferOffset?this.latestBuffer.length-this.latestBufferOffset>=e.length?(e.copy(this.latestBuffer,this.latestBufferOffset),this.latestBufferOffset+=e.length,this.latestBufferOffset>=this.latestBuffer.length&&(this.completeBuffers.push(this.latestBuffer),this.latestBuffer=b.alloc(this.defaultBufferLength),this.latestBufferOffset=0)):(this.completeBuffers.push(this.latestBuffer.slice(0,this.latestBufferOffset)),this.completeBuffers.push(e),this.latestBuffer=b.alloc(this.defaultBufferLength),this.latestBufferOffset=0):this.completeBuffers.push(e),this.byteLength+=e.length},n.prototype.result=function(){for(var e=b.alloc(this.byteLength),t=0,n=0;n>>>>>"),o.log("[".concat(n," / ").concat(t,"]"),"\n",r.url,"\n",r.qs,"\n",e.text),o.log("-----")})}function s(e,i,o){var s=this;return this._config.logVerbosity&&(e=e.use(a)),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(i.timeout).end(function(t,n){var e,r={};if(r.error=null!==t,r.operation=i.operation,n&&n.status&&(r.statusCode=n.status),t){if(t.response&&t.response.text&&!s._config.logVerbosity)try{r.errorData=JSON.parse(t.response.text)}catch(e){r.errorData=t}else r.errorData=t;return r.category=s._detectErrorCategory(t),o(r,null)}try{e=JSON.parse(n.text)}catch(e){return r.errorData=n,r.error=!0,o(r,null)}return e.error&&1===e.error&&e.status&&e.message&&e.service?(r.errorData=e,r.statusCode=e.status,r.error=!0,r.category=s._detectErrorCategory(r),o(r,null)):(e.error&&e.error.message&&(r.errorData=e.error),o(r,e))})}},function(e,n,t){var r;r="undefined"!=typeof window?window:"undefined"!=typeof self?self:(console.warn("Using browser-only version of superagent in non-browser environment"),this);var i=t(76),o=t(77),s=t(10),a=t(78),u=t(80);function c(){}var f=n=e.exports=function(e,t){return"function"==typeof t?new n.Request("GET",e).end(t):1==arguments.length?new n.Request("GET",e):new n.Request(e,t)};n.Request=v,f.getXHR=function(){if(!(!r.XMLHttpRequest||r.location&&"file:"==r.location.protocol&&r.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 version of superagent could not find XHR")};var l="".trim?function(e){return e.trim()}:function(e){return e.replace(/(^\s*|\s*$)/g,"")};function h(e){if(!s(e))return e;var t=[];for(var n in e)p(t,n,e[n]);return t.join("&")}function p(t,n,e){if(null!=e)if(Array.isArray(e))e.forEach(function(e){p(t,n,e)});else if(s(e))for(var r in e)p(t,n+"["+r+"]",e[r]);else t.push(encodeURIComponent(n)+"="+encodeURIComponent(e));else null===e&&t.push(encodeURIComponent(n))}function d(e){for(var t,n,r={},i=e.split("&"),o=0,s=i.length;o=this._maxRetries)return!1;if(this._retryCallback)try{var n=this._retryCallback(e,t);if(!0===n)return!0;if(!1===n)return!1}catch(e){console.error(e)}if(t&&t.status&&500<=t.status&&501!=t.status)return!0;if(e){if(e.code&&~o.indexOf(e.code))return!0;if(e.timeout&&"ECONNABORTED"==e.code)return!0;if(e.crossDomain)return!0}return!1},r.prototype._retry=function(){return this.clearTimeout(),this.req&&(this.req=null,this.req=this.request()),this._aborted=!1,this.timedout=!1,this._end()},r.prototype.then=function(e,t){if(!this._fullfilledPromise){var i=this;this._endCalled&&console.warn("Warning: superagent request was sent twice, because both .end() and .then() were called. Never call .end() if you use promises"),this._fullfilledPromise=new Promise(function(n,r){i.end(function(e,t){e?r(e):n(t)})})}return this._fullfilledPromise.then(e,t)},r.prototype.catch=function(e){return this.then(void 0,e)},r.prototype.use=function(e){return e(this),this},r.prototype.ok=function(e){if("function"!=typeof e)throw Error("Callback required");return this._okCallback=e,this},r.prototype._isResponseOK=function(e){return!!e&&(this._okCallback?this._okCallback(e):200<=e.status&&e.status<300)},r.prototype.getHeader=r.prototype.get=function(e){return this._header[e.toLowerCase()]},r.prototype.set=function(e,t){if(i(e)){for(var n in e)this.set(n,e[n]);return this}return this._header[e.toLowerCase()]=t,this.header[e]=t,this},r.prototype.unset=function(e){return delete this._header[e.toLowerCase()],delete this.header[e],this},r.prototype.field=function(e,t){if(null==e)throw new Error(".field(name, val) name can not be empty");if(this._data&&console.error(".field() can't be used if .send() is used. Please use only .send() or only .field() & .attach()"),i(e)){for(var n in e)this.field(n,e[n]);return this}if(Array.isArray(t)){for(var r in t)this.field(e,t[r]);return this}if(null==t)throw new Error(".field(name, val) val can not be empty");return"boolean"==typeof t&&(t=""+t),this._getFormData().append(e,t),this},r.prototype.abort=function(){return this._aborted||(this._aborted=!0,this.xhr&&this.xhr.abort(),this.req&&this.req.abort(),this.clearTimeout(),this.emit("abort")),this},r.prototype._auth=function(e,t,n,r){switch(n.type){case"basic":this.set("Authorization","Basic "+r(e+":"+t));break;case"auto":this.username=e,this.password=t;break;case"bearer":this.set("Authorization","Bearer "+e)}return this},r.prototype.withCredentials=function(e){return null==e&&(e=!0),this._withCredentials=e,this},r.prototype.redirects=function(e){return this._maxRedirects=e,this},r.prototype.maxResponseSize=function(e){if("number"!=typeof e)throw TypeError("Invalid argument");return this._maxResponseSize=e,this},r.prototype.toJSON=function(){return{method:this.method,url:this.url,data:this._data,headers:this._header}},r.prototype.send=function(e){var t=i(e),n=this._header["content-type"];if(this._formData&&console.error(".send() can't be used if .attach() or .field() is used. Please use only .send() or only .field() & .attach()"),t&&!this._data)Array.isArray(e)?this._data=[]:this._isHost(e)||(this._data={});else if(e&&this._data&&this._isHost(this._data))throw Error("Can't merge these send calls");if(t&&i(this._data))for(var r in e)this._data[r]=e[r];else"string"==typeof e?(n||this.type("form"),n=this._header["content-type"],this._data="application/x-www-form-urlencoded"==n?this._data?this._data+"&"+e:e:(this._data||"")+e):this._data=e;return!t||this._isHost(e)||n||this.type("json"),this},r.prototype.sortQuery=function(e){return this._sort=void 0===e||e,this},r.prototype._finalizeQueryString=function(){var e=this._query.join("&");if(e&&(this.url+=(0<=this.url.indexOf("?")?"&":"?")+e),this._query.length=0,this._sort){var t=this.url.indexOf("?");if(0<=t){var n=this.url.substring(t+1).split("&");"function"==typeof this._sort?n.sort(this._sort):n.sort(),this.url=this.url.substring(0,t)+"?"+n.join("&")}}},r.prototype._appendQueryString=function(){console.trace("Unsupported")},r.prototype._timeoutError=function(e,t,n){if(!this._aborted){var r=new Error(e+t+"ms exceeded");r.timeout=t,r.code="ECONNABORTED",r.errno=n,this.timedout=!0,this.abort(),this.callback(r)}},r.prototype._setTimeouts=function(){var e=this;this._timeout&&!this._timer&&(this._timer=setTimeout(function(){e._timeoutError("Timeout of ",e._timeout,"ETIME")},this._timeout)),this._responseTimeout&&!this._responseTimeoutTimer&&(this._responseTimeoutTimer=setTimeout(function(){e._timeoutError("Response timeout of ",e._responseTimeout,"ETIMEDOUT")},this._responseTimeout))}},function(e,t,n){"use strict";var i=n(79);function r(e){if(e)return function(e){for(var t in r.prototype)e[t]=r.prototype[t];return e}(e)}(e.exports=r).prototype.get=function(e){return this.header[e.toLowerCase()]},r.prototype._setHeaderProperties=function(e){var t=e["content-type"]||"";this.type=i.type(t);var n=i.params(t);for(var r in n)this[r]=n[r];this.links={};try{e.link&&(this.links=i.parseLinks(e.link))}catch(e){}},r.prototype._setStatusProperties=function(e){var t=e/100|0;this.status=this.statusCode=e,this.statusType=t,this.info=1==t,this.ok=2==t,this.redirect=3==t,this.clientError=4==t,this.serverError=5==t,this.error=(4==t||5==t)&&this.toError(),this.created=201==e,this.accepted=202==e,this.noContent=204==e,this.badRequest=400==e,this.unauthorized=401==e,this.notAcceptable=406==e,this.forbidden=403==e,this.notFound=404==e,this.unprocessableEntity=422==e}},function(e,t,n){"use strict";t.type=function(e){return e.split(/ *; */).shift()},t.params=function(e){return e.split(/ *; */).reduce(function(e,t){var n=t.split(/ *= */),r=n.shift(),i=n.shift();return r&&i&&(e[r]=i),e},{})},t.parseLinks=function(e){return e.split(/ *, */).reduce(function(e,t){var n=t.split(/ *; */),r=n[0].slice(1,-1);return e[n[1].split(/ *= */)[1].slice(1,-1)]=r,e},{})},t.cleanHeader=function(e,t){return delete e["content-type"],delete e["content-length"],delete e["transfer-encoding"],delete e.host,t&&(delete e.authorization,delete e.cookie),e}},function(e,t){function n(){this._defaults=[]}["use","on","once","set","query","type","accept","auth","withCredentials","sortQuery","retry","ok","redirects","timeout","buffer","serialize","parse","ca","key","pfx","cert"].forEach(function(e){n.prototype[e]=function(){return this._defaults.push({fn:e,arguments:arguments}),this}}),n.prototype._setDefaults=function(t){this._defaults.forEach(function(e){t[e.fn].apply(t,e.arguments)})},e.exports=n}],i.c=r,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)i.d(n,r,function(e){return t[e]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="",i(i.s=11);function i(e){if(r[e])return r[e].exports;var t=r[e]={i:e,l:!1,exports:{}};return n[e].call(t.exports,t,t.exports,i),t.l=!0,t.exports}var n,r}); \ No newline at end of file diff --git a/lib/core/components/config.js b/lib/core/components/config.js index 5f2f63990..0f5249023 100644 --- a/lib/core/components/config.js +++ b/lib/core/components/config.js @@ -255,7 +255,7 @@ var _default = function () { }, { key: "getVersion", value: function getVersion() { - return '4.26.1'; + return '4.27.0'; } }, { key: "_decideUUID", diff --git a/lib/core/components/config.js.map b/lib/core/components/config.js.map index 7914114f4..1364b30f3 100644 --- a/lib/core/components/config.js.map +++ b/lib/core/components/config.js.map @@ -1 +1 @@ -{"version":3,"sources":["core/components/config.js"],"names":["PRESENCE_TIMEOUT_MINIMUM","PRESENCE_TIMEOUT_DEFAULT","setup","db","_db","instanceId","uuidGenerator","createUUID","secretKey","secret_key","subscribeKey","subscribe_key","publishKey","publish_key","sdkName","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","console","log","_heartbeatInterval","_subscribeRequestTimeout","_transactionalRequestTimeout","_useSendBeacon","providedUUID","get"],"mappings":"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","sourcesContent":["/* @flow */\n/* global location */\n\nimport uuidGenerator from './uuid';\nimport {\n InternalSetupStruct,\n DatabaseInterface,\n KeepAliveStruct,\n ProxyStruct,\n} from '../flow_interfaces';\n\nconst PRESENCE_TIMEOUT_MINIMUM: number = 20;\nconst PRESENCE_TIMEOUT_DEFAULT: number = 300;\n\ntype ConfigConstructArgs = {\n setup: InternalSetupStruct,\n db: DatabaseInterface,\n};\n\nexport default class {\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: ProxyStruct;\n\n /*\n if _useInstanceId is true, this instanceId will be added to all requests\n */\n instanceId: string;\n\n /*\n If the SDK is running as part of another SDK built atop of it, allow a custom pnsdk with name and version.\n */\n sdkName: 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 support for client deduping\n */\n dedupeOnSubscribe: boolean;\n\n maximumCacheSize: number;\n\n /*\n support customp encryption and decryption functions.\n */\n customEncrypt: Function; // function to support custome encryption of messages\n\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.createUUID()}`;\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.sdkName = setup.sdkName;\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 || 'ps.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 =\n 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 || PRESENCE_TIMEOUT_DEFAULT);\n\n if (setup.heartbeatInterval != null) {\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 {\n return this.authKey;\n }\n\n setAuthKey(val: string): this {\n this.authKey = val;\n return this;\n }\n\n setCipherKey(val: string): this {\n this.cipherKey = val;\n return this;\n }\n\n getUUID(): string {\n return this.UUID;\n }\n\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 {\n return this.filterExpression;\n }\n\n setFilterExpression(val: string): this {\n this.filterExpression = val;\n return this;\n }\n\n getPresenceTimeout(): number {\n return this._presenceTimeout;\n }\n\n setPresenceTimeout(val: number): this {\n if (val >= PRESENCE_TIMEOUT_MINIMUM) {\n this._presenceTimeout = val;\n } else {\n this._presenceTimeout = PRESENCE_TIMEOUT_MINIMUM;\n\n // eslint-disable-next-line no-console\n console.log(\n 'WARNING: Presence timeout is less than the minimum. Using minimum value: ',\n this._presenceTimeout\n );\n }\n\n this.setHeartbeatInterval(this._presenceTimeout / 2 - 1);\n\n return this;\n }\n\n setProxy(proxy: ProxyStruct) {\n this.proxy = proxy;\n }\n\n getHeartbeatInterval(): number {\n return this._heartbeatInterval;\n }\n\n setHeartbeatInterval(val: number): this {\n this._heartbeatInterval = val;\n return this;\n }\n\n // deprecated setters.\n getSubscribeTimeout(): number {\n return this._subscribeRequestTimeout;\n }\n\n setSubscribeTimeout(val: number): this {\n this._subscribeRequestTimeout = val;\n return this;\n }\n\n getTransactionTimeout(): number {\n return this._transactionalRequestTimeout;\n }\n\n setTransactionTimeout(val: number): this {\n this._transactionalRequestTimeout = val;\n return this;\n }\n\n isSendBeaconEnabled(): boolean {\n return this._useSendBeacon;\n }\n\n setSendBeaconConfig(val: boolean): this {\n this._useSendBeacon = val;\n return this;\n }\n\n getVersion(): string {\n return '4.26.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.createUUID()}`;\n }\n}\n"],"file":"config.js"} \ No newline at end of file +{"version":3,"sources":["core/components/config.js"],"names":["PRESENCE_TIMEOUT_MINIMUM","PRESENCE_TIMEOUT_DEFAULT","setup","db","_db","instanceId","uuidGenerator","createUUID","secretKey","secret_key","subscribeKey","subscribe_key","publishKey","publish_key","sdkName","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","console","log","_heartbeatInterval","_subscribeRequestTimeout","_transactionalRequestTimeout","_useSendBeacon","providedUUID","get"],"mappings":"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","sourcesContent":["/* @flow */\n/* global location */\n\nimport uuidGenerator from './uuid';\nimport {\n InternalSetupStruct,\n DatabaseInterface,\n KeepAliveStruct,\n ProxyStruct,\n} from '../flow_interfaces';\n\nconst PRESENCE_TIMEOUT_MINIMUM: number = 20;\nconst PRESENCE_TIMEOUT_DEFAULT: number = 300;\n\ntype ConfigConstructArgs = {\n setup: InternalSetupStruct,\n db: DatabaseInterface,\n};\n\nexport default class {\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: ProxyStruct;\n\n /*\n if _useInstanceId is true, this instanceId will be added to all requests\n */\n instanceId: string;\n\n /*\n If the SDK is running as part of another SDK built atop of it, allow a custom pnsdk with name and version.\n */\n sdkName: 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 support for client deduping\n */\n dedupeOnSubscribe: boolean;\n\n maximumCacheSize: number;\n\n /*\n support customp encryption and decryption functions.\n */\n customEncrypt: Function; // function to support custome encryption of messages\n\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.createUUID()}`;\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.sdkName = setup.sdkName;\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 || 'ps.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 =\n 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 || PRESENCE_TIMEOUT_DEFAULT);\n\n if (setup.heartbeatInterval != null) {\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 {\n return this.authKey;\n }\n\n setAuthKey(val: string): this {\n this.authKey = val;\n return this;\n }\n\n setCipherKey(val: string): this {\n this.cipherKey = val;\n return this;\n }\n\n getUUID(): string {\n return this.UUID;\n }\n\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 {\n return this.filterExpression;\n }\n\n setFilterExpression(val: string): this {\n this.filterExpression = val;\n return this;\n }\n\n getPresenceTimeout(): number {\n return this._presenceTimeout;\n }\n\n setPresenceTimeout(val: number): this {\n if (val >= PRESENCE_TIMEOUT_MINIMUM) {\n this._presenceTimeout = val;\n } else {\n this._presenceTimeout = PRESENCE_TIMEOUT_MINIMUM;\n\n // eslint-disable-next-line no-console\n console.log(\n 'WARNING: Presence timeout is less than the minimum. Using minimum value: ',\n this._presenceTimeout\n );\n }\n\n this.setHeartbeatInterval(this._presenceTimeout / 2 - 1);\n\n return this;\n }\n\n setProxy(proxy: ProxyStruct) {\n this.proxy = proxy;\n }\n\n getHeartbeatInterval(): number {\n return this._heartbeatInterval;\n }\n\n setHeartbeatInterval(val: number): this {\n this._heartbeatInterval = val;\n return this;\n }\n\n // deprecated setters.\n getSubscribeTimeout(): number {\n return this._subscribeRequestTimeout;\n }\n\n setSubscribeTimeout(val: number): this {\n this._subscribeRequestTimeout = val;\n return this;\n }\n\n getTransactionTimeout(): number {\n return this._transactionalRequestTimeout;\n }\n\n setTransactionTimeout(val: number): this {\n this._transactionalRequestTimeout = val;\n return this;\n }\n\n isSendBeaconEnabled(): boolean {\n return this._useSendBeacon;\n }\n\n setSendBeaconConfig(val: boolean): this {\n this._useSendBeacon = val;\n return this;\n }\n\n getVersion(): string {\n return '4.27.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.createUUID()}`;\n }\n}\n"],"file":"config.js"} \ No newline at end of file diff --git a/lib/core/components/endpoint.js b/lib/core/components/endpoint.js index a717d7eb7..440dbb808 100644 --- a/lib/core/components/endpoint.js +++ b/lib/core/components/endpoint.js @@ -185,7 +185,8 @@ function _default(modules, endpoint) { var networkingParams = { url: url, operation: endpoint.getOperation(), - timeout: endpoint.getRequestTimeout(modules) + timeout: endpoint.getRequestTimeout(modules), + headers: endpoint.getRequestHeaders ? endpoint.getRequestHeaders() : {} }; outgoingParams.uuid = config.UUID; outgoingParams.pnsdk = generatePNSDK(config); diff --git a/lib/core/components/endpoint.js.map b/lib/core/components/endpoint.js.map index b98b3072a..20183c693 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":["PubNubError","message","status","name","constructor","Error","createError","errorPayload","type","error","createValidationError","decideURL","endpoint","modules","incomingParams","usePost","postURL","usePatch","patchURL","getURL","getAuthToken","token","generatePNSDK","config","sdkName","base","sdkFamily","partnerId","getVersion","getHttpMethod","useDelete","signRequest","url","outgoingParams","crypto","httpMethod","timestamp","Math","floor","Date","getTime","signInput","publishKey","utils","signPamFromParams","payload","postPayload","JSON","stringify","patchPayload","signature","HMACSHA256","replace","networking","callback","promiseComponent","getOperation","operationConstants","PNTimeOperation","PNChannelGroupsOperation","Promise","createPromise","validationResult","validateParams","reject","promise","prepareParams","callInstance","networkingParams","operation","timeout","getRequestTimeout","uuid","UUID","pnsdk","useInstanceId","instanceid","instanceId","useRequestId","requestid","uuidGenerator","createUUID","isAuthSupported","tokenOrKey","getAuthKey","auth","secretKey","onResponse","parsedPayload","handleResponse","fulfill","POST","PATCH","DELETE","GET","PNSubscribeOperation"],"mappings":"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","sourcesContent":["import uuidGenerator from './uuid';\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 if (endpoint.usePatch && endpoint.usePatch(modules, incomingParams)) {\n return endpoint.patchURL(modules, incomingParams);\n } else {\n return endpoint.getURL(modules, incomingParams);\n }\n}\n\nfunction getAuthToken(endpoint, modules, incomingParams) {\n let token;\n\n if (endpoint.getAuthToken) {\n token = endpoint.getAuthToken(modules, incomingParams);\n }\n\n return token;\n}\n\nfunction generatePNSDK(config: Config): string {\n if (config.sdkName) {\n return config.sdkName;\n }\n\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 getHttpMethod(modules, endpoint, incomingParams) {\n if (endpoint.usePost && endpoint.usePost(modules, incomingParams)) {\n return 'POST';\n } else if (endpoint.usePatch && endpoint.usePatch(modules, incomingParams)) {\n return 'PATCH';\n } else if (endpoint.useDelete && endpoint.useDelete(modules, incomingParams)) {\n return 'DELETE';\n } else {\n return 'GET';\n }\n}\n\nfunction signRequest(modules, url, outgoingParams, incomingParams, endpoint) {\n let { config, crypto } = modules;\n\n let httpMethod = getHttpMethod(modules, endpoint, incomingParams);\n\n outgoingParams.timestamp = Math.floor(new Date().getTime() / 1000);\n let signInput = `${httpMethod}\\n${config.publishKey}\\n${url}\\n${utils.signPamFromParams(outgoingParams)}\\n`;\n\n if (httpMethod === 'POST') {\n let payload = endpoint.postPayload(modules, incomingParams);\n if (typeof payload === 'string') {\n signInput += payload;\n } else {\n signInput += JSON.stringify(payload);\n }\n } else if (httpMethod === 'PATCH') {\n let payload = endpoint.patchPayload(modules, incomingParams);\n if (typeof payload === 'string') {\n signInput += payload;\n } else {\n signInput += JSON.stringify(payload);\n }\n }\n\n let signature = `v2.${crypto.HMACSHA256(signInput)}`;\n signature = signature.replace(/\\+/g, '-');\n signature = signature.replace(/\\//g, '_');\n signature = signature.replace(/=+$/, '');\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.createUUID();\n }\n\n if (endpoint.isAuthSupported()) {\n let token = getAuthToken(endpoint, modules, incomingParams);\n let tokenOrKey = token || config.getAuthKey();\n\n if (tokenOrKey) {\n outgoingParams.auth = tokenOrKey;\n }\n }\n\n if (config.secretKey) {\n signRequest(modules, url, outgoingParams, incomingParams, endpoint);\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 (getHttpMethod(modules, endpoint, incomingParams) === 'POST') {\n let payload = endpoint.postPayload(modules, incomingParams);\n callInstance = networking.POST(outgoingParams, payload, networkingParams, onResponse);\n } else if (getHttpMethod(modules, endpoint, incomingParams) === 'PATCH') {\n let payload = endpoint.patchPayload(modules, incomingParams);\n callInstance = networking.PATCH(outgoingParams, payload, networkingParams, onResponse);\n } else if (getHttpMethod(modules, endpoint, incomingParams) === 'DELETE') {\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"],"file":"endpoint.js"} \ No newline at end of file +{"version":3,"sources":["core/components/endpoint.js"],"names":["PubNubError","message","status","name","constructor","Error","createError","errorPayload","type","error","createValidationError","decideURL","endpoint","modules","incomingParams","usePost","postURL","usePatch","patchURL","getURL","getAuthToken","token","generatePNSDK","config","sdkName","base","sdkFamily","partnerId","getVersion","getHttpMethod","useDelete","signRequest","url","outgoingParams","crypto","httpMethod","timestamp","Math","floor","Date","getTime","signInput","publishKey","utils","signPamFromParams","payload","postPayload","JSON","stringify","patchPayload","signature","HMACSHA256","replace","networking","callback","promiseComponent","getOperation","operationConstants","PNTimeOperation","PNChannelGroupsOperation","Promise","createPromise","validationResult","validateParams","reject","promise","prepareParams","callInstance","networkingParams","operation","timeout","getRequestTimeout","headers","getRequestHeaders","uuid","UUID","pnsdk","useInstanceId","instanceid","instanceId","useRequestId","requestid","uuidGenerator","createUUID","isAuthSupported","tokenOrKey","getAuthKey","auth","secretKey","onResponse","parsedPayload","handleResponse","fulfill","POST","PATCH","DELETE","GET","PNSubscribeOperation"],"mappings":"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","sourcesContent":["import uuidGenerator from './uuid';\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 if (endpoint.usePatch && endpoint.usePatch(modules, incomingParams)) {\n return endpoint.patchURL(modules, incomingParams);\n } else {\n return endpoint.getURL(modules, incomingParams);\n }\n}\n\nfunction getAuthToken(endpoint, modules, incomingParams) {\n let token;\n\n if (endpoint.getAuthToken) {\n token = endpoint.getAuthToken(modules, incomingParams);\n }\n\n return token;\n}\n\nfunction generatePNSDK(config: Config): string {\n if (config.sdkName) {\n return config.sdkName;\n }\n\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 getHttpMethod(modules, endpoint, incomingParams) {\n if (endpoint.usePost && endpoint.usePost(modules, incomingParams)) {\n return 'POST';\n } else if (endpoint.usePatch && endpoint.usePatch(modules, incomingParams)) {\n return 'PATCH';\n } else if (endpoint.useDelete && endpoint.useDelete(modules, incomingParams)) {\n return 'DELETE';\n } else {\n return 'GET';\n }\n}\n\nfunction signRequest(modules, url, outgoingParams, incomingParams, endpoint) {\n let { config, crypto } = modules;\n\n let httpMethod = getHttpMethod(modules, endpoint, incomingParams);\n\n outgoingParams.timestamp = Math.floor(new Date().getTime() / 1000);\n let signInput = `${httpMethod}\\n${config.publishKey}\\n${url}\\n${utils.signPamFromParams(outgoingParams)}\\n`;\n\n if (httpMethod === 'POST') {\n let payload = endpoint.postPayload(modules, incomingParams);\n if (typeof payload === 'string') {\n signInput += payload;\n } else {\n signInput += JSON.stringify(payload);\n }\n } else if (httpMethod === 'PATCH') {\n let payload = endpoint.patchPayload(modules, incomingParams);\n if (typeof payload === 'string') {\n signInput += payload;\n } else {\n signInput += JSON.stringify(payload);\n }\n }\n\n let signature = `v2.${crypto.HMACSHA256(signInput)}`;\n signature = signature.replace(/\\+/g, '-');\n signature = signature.replace(/\\//g, '_');\n signature = signature.replace(/=+$/, '');\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 headers: endpoint.getRequestHeaders ? endpoint.getRequestHeaders() : {}\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.createUUID();\n }\n\n if (endpoint.isAuthSupported()) {\n let token = getAuthToken(endpoint, modules, incomingParams);\n let tokenOrKey = token || config.getAuthKey();\n\n if (tokenOrKey) {\n outgoingParams.auth = tokenOrKey;\n }\n }\n\n if (config.secretKey) {\n signRequest(modules, url, outgoingParams, incomingParams, endpoint);\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 (getHttpMethod(modules, endpoint, incomingParams) === 'POST') {\n let payload = endpoint.postPayload(modules, incomingParams);\n callInstance = networking.POST(outgoingParams, payload, networkingParams, onResponse);\n } else if (getHttpMethod(modules, endpoint, incomingParams) === 'PATCH') {\n let payload = endpoint.patchPayload(modules, incomingParams);\n callInstance = networking.PATCH(outgoingParams, payload, networkingParams, onResponse);\n } else if (getHttpMethod(modules, endpoint, incomingParams) === 'DELETE') {\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"],"file":"endpoint.js"} \ No newline at end of file diff --git a/lib/core/components/listener_manager.js b/lib/core/components/listener_manager.js index 7eac537d1..3e563ae4f 100644 --- a/lib/core/components/listener_manager.js +++ b/lib/core/components/listener_manager.js @@ -77,6 +77,13 @@ var _default = function () { if (listener.signal) listener.signal(announce); }); } + }, { + key: "announceMessageAction", + value: function announceMessageAction(announce) { + this._listeners.forEach(function (listener) { + if (listener.messageAction) listener.messageAction(announce); + }); + } }, { key: "announceUser", value: function announceUser(announce) { diff --git a/lib/core/components/listener_manager.js.map b/lib/core/components/listener_manager.js.map index 21765bb9d..fd1090f5e 100644 --- a/lib/core/components/listener_manager.js.map +++ b/lib/core/components/listener_manager.js.map @@ -1 +1 @@ -{"version":3,"sources":["core/components/listener_manager.js"],"names":["_listeners","newListeners","push","deprecatedListener","forEach","listener","announce","presence","status","message","signal","user","space","membership","networkStatus","category","categoryConstants","PNNetworkUpCategory","announceStatus","PNNetworkDownCategory"],"mappings":";;;;;;;AACA;;AAQA;;;;;;;;;;;;;AAKE,sBAAc;AAAA;;AAAA;;AACZ,SAAKA,UAAL,GAAkB,EAAlB;AACD;;;;gCAEWC,Y,EAA8B;AACxC,WAAKD,UAAL,CAAgBE,IAAhB,CAAqBD,YAArB;AACD;;;mCAEcE,kB,EAAoC;AACjD,UAAIF,YAAY,GAAG,EAAnB;;AAEA,WAAKD,UAAL,CAAgBI,OAAhB,CAAwB,UAACC,QAAD,EAAc;AACpC,YAAIA,QAAQ,KAAKF,kBAAjB,EAAqCF,YAAY,CAACC,IAAb,CAAkBG,QAAlB;AACtC,OAFD;;AAIA,WAAKL,UAAL,GAAkBC,YAAlB;AACD;;;yCAEoB;AACnB,WAAKD,UAAL,GAAkB,EAAlB;AACD;;;qCAEgBM,Q,EAAgC;AAC/C,WAAKN,UAAL,CAAgBI,OAAhB,CAAwB,UAACC,QAAD,EAAc;AACpC,YAAIA,QAAQ,CAACE,QAAb,EAAuBF,QAAQ,CAACE,QAAT,CAAkBD,QAAlB;AACxB,OAFD;AAGD;;;mCAEcA,Q,EAA8B;AAC3C,WAAKN,UAAL,CAAgBI,OAAhB,CAAwB,UAACC,QAAD,EAAc;AACpC,YAAIA,QAAQ,CAACG,MAAb,EAAqBH,QAAQ,CAACG,MAAT,CAAgBF,QAAhB;AACtB,OAFD;AAGD;;;oCAEeA,Q,EAA+B;AAC7C,WAAKN,UAAL,CAAgBI,OAAhB,CAAwB,UAACC,QAAD,EAAc;AACpC,YAAIA,QAAQ,CAACI,OAAb,EAAsBJ,QAAQ,CAACI,OAAT,CAAiBH,QAAjB;AACvB,OAFD;AAGD;;;mCAEcA,Q,EAA8B;AAC3C,WAAKN,UAAL,CAAgBI,OAAhB,CAAwB,UAACC,QAAD,EAAc;AACpC,YAAIA,QAAQ,CAACK,MAAb,EAAqBL,QAAQ,CAACK,MAAT,CAAgBJ,QAAhB;AACtB,OAFD;AAGD;;;iCAEYA,Q,EAA8B;AACzC,WAAKN,UAAL,CAAgBI,OAAhB,CAAwB,UAACC,QAAD,EAAc;AACpC,YAAIA,QAAQ,CAACM,IAAb,EAAmBN,QAAQ,CAACM,IAAT,CAAcL,QAAd;AACpB,OAFD;AAGD;;;kCAEaA,Q,EAA8B;AAC1C,WAAKN,UAAL,CAAgBI,OAAhB,CAAwB,UAACC,QAAD,EAAc;AACpC,YAAIA,QAAQ,CAACO,KAAb,EAAoBP,QAAQ,CAACO,KAAT,CAAeN,QAAf;AACrB,OAFD;AAGD;;;uCAEkBA,Q,EAA8B;AAC/C,WAAKN,UAAL,CAAgBI,OAAhB,CAAwB,UAACC,QAAD,EAAc;AACpC,YAAIA,QAAQ,CAACQ,UAAb,EAAyBR,QAAQ,CAACQ,UAAT,CAAoBP,QAApB;AAC1B,OAFD;AAGD;;;wCAEmB;AAClB,UAAIQ,aAAiC,GAAG,EAAxC;AACAA,MAAAA,aAAa,CAACC,QAAd,GAAyBC,uBAAkBC,mBAA3C;AACA,WAAKC,cAAL,CAAoBJ,aAApB;AACD;;;0CAEqB;AACpB,UAAIA,aAAiC,GAAG,EAAxC;AACAA,MAAAA,aAAa,CAACC,QAAd,GAAyBC,uBAAkBG,qBAA3C;AACA,WAAKD,cAAL,CAAoBJ,aAApB;AACD","sourcesContent":["/* @flow */\nimport {\n MessageAnnouncement,\n StatusAnnouncement,\n SignalAnnouncement,\n ObjectAnnouncement,\n CallbackStruct,\n PresenceAnnouncement,\n} from '../flow_interfaces';\nimport categoryConstants from '../constants/categories';\n\nexport default class {\n _listeners: Array;\n\n constructor() {\n this._listeners = [];\n }\n\n addListener(newListeners: CallbackStruct) {\n this._listeners.push(newListeners);\n }\n\n removeListener(deprecatedListener: CallbackStruct) {\n let newListeners = [];\n\n this._listeners.forEach((listener) => {\n if (listener !== deprecatedListener) newListeners.push(listener);\n });\n\n this._listeners = newListeners;\n }\n\n removeAllListeners() {\n this._listeners = [];\n }\n\n announcePresence(announce: PresenceAnnouncement) {\n this._listeners.forEach((listener) => {\n if (listener.presence) listener.presence(announce);\n });\n }\n\n announceStatus(announce: StatusAnnouncement) {\n this._listeners.forEach((listener) => {\n if (listener.status) listener.status(announce);\n });\n }\n\n announceMessage(announce: MessageAnnouncement) {\n this._listeners.forEach((listener) => {\n if (listener.message) listener.message(announce);\n });\n }\n\n announceSignal(announce: SignalAnnouncement) {\n this._listeners.forEach((listener) => {\n if (listener.signal) listener.signal(announce);\n });\n }\n\n announceUser(announce: ObjectAnnouncement) {\n this._listeners.forEach((listener) => {\n if (listener.user) listener.user(announce);\n });\n }\n\n announceSpace(announce: ObjectAnnouncement) {\n this._listeners.forEach((listener) => {\n if (listener.space) listener.space(announce);\n });\n }\n\n announceMembership(announce: ObjectAnnouncement) {\n this._listeners.forEach((listener) => {\n if (listener.membership) listener.membership(announce);\n });\n }\n\n announceNetworkUp() {\n let networkStatus: StatusAnnouncement = {};\n networkStatus.category = categoryConstants.PNNetworkUpCategory;\n this.announceStatus(networkStatus);\n }\n\n announceNetworkDown() {\n let networkStatus: StatusAnnouncement = {};\n networkStatus.category = categoryConstants.PNNetworkDownCategory;\n this.announceStatus(networkStatus);\n }\n}\n"],"file":"listener_manager.js"} \ No newline at end of file +{"version":3,"sources":["core/components/listener_manager.js"],"names":["_listeners","newListeners","push","deprecatedListener","forEach","listener","announce","presence","status","message","signal","messageAction","user","space","membership","networkStatus","category","categoryConstants","PNNetworkUpCategory","announceStatus","PNNetworkDownCategory"],"mappings":";;;;;;;AACA;;AASA;;;;;;;;;;;;;AAKE,sBAAc;AAAA;;AAAA;;AACZ,SAAKA,UAAL,GAAkB,EAAlB;AACD;;;;gCAEWC,Y,EAA8B;AACxC,WAAKD,UAAL,CAAgBE,IAAhB,CAAqBD,YAArB;AACD;;;mCAEcE,kB,EAAoC;AACjD,UAAIF,YAAY,GAAG,EAAnB;;AAEA,WAAKD,UAAL,CAAgBI,OAAhB,CAAwB,UAACC,QAAD,EAAc;AACpC,YAAIA,QAAQ,KAAKF,kBAAjB,EAAqCF,YAAY,CAACC,IAAb,CAAkBG,QAAlB;AACtC,OAFD;;AAIA,WAAKL,UAAL,GAAkBC,YAAlB;AACD;;;yCAEoB;AACnB,WAAKD,UAAL,GAAkB,EAAlB;AACD;;;qCAEgBM,Q,EAAgC;AAC/C,WAAKN,UAAL,CAAgBI,OAAhB,CAAwB,UAACC,QAAD,EAAc;AACpC,YAAIA,QAAQ,CAACE,QAAb,EAAuBF,QAAQ,CAACE,QAAT,CAAkBD,QAAlB;AACxB,OAFD;AAGD;;;mCAEcA,Q,EAA8B;AAC3C,WAAKN,UAAL,CAAgBI,OAAhB,CAAwB,UAACC,QAAD,EAAc;AACpC,YAAIA,QAAQ,CAACG,MAAb,EAAqBH,QAAQ,CAACG,MAAT,CAAgBF,QAAhB;AACtB,OAFD;AAGD;;;oCAEeA,Q,EAA+B;AAC7C,WAAKN,UAAL,CAAgBI,OAAhB,CAAwB,UAACC,QAAD,EAAc;AACpC,YAAIA,QAAQ,CAACI,OAAb,EAAsBJ,QAAQ,CAACI,OAAT,CAAiBH,QAAjB;AACvB,OAFD;AAGD;;;mCAEcA,Q,EAA8B;AAC3C,WAAKN,UAAL,CAAgBI,OAAhB,CAAwB,UAACC,QAAD,EAAc;AACpC,YAAIA,QAAQ,CAACK,MAAb,EAAqBL,QAAQ,CAACK,MAAT,CAAgBJ,QAAhB;AACtB,OAFD;AAGD;;;0CAEqBA,Q,EAAqC;AACzD,WAAKN,UAAL,CAAgBI,OAAhB,CAAwB,UAACC,QAAD,EAAc;AACpC,YAAIA,QAAQ,CAACM,aAAb,EAA4BN,QAAQ,CAACM,aAAT,CAAuBL,QAAvB;AAC7B,OAFD;AAGD;;;iCAEYA,Q,EAA8B;AACzC,WAAKN,UAAL,CAAgBI,OAAhB,CAAwB,UAACC,QAAD,EAAc;AACpC,YAAIA,QAAQ,CAACO,IAAb,EAAmBP,QAAQ,CAACO,IAAT,CAAcN,QAAd;AACpB,OAFD;AAGD;;;kCAEaA,Q,EAA8B;AAC1C,WAAKN,UAAL,CAAgBI,OAAhB,CAAwB,UAACC,QAAD,EAAc;AACpC,YAAIA,QAAQ,CAACQ,KAAb,EAAoBR,QAAQ,CAACQ,KAAT,CAAeP,QAAf;AACrB,OAFD;AAGD;;;uCAEkBA,Q,EAA8B;AAC/C,WAAKN,UAAL,CAAgBI,OAAhB,CAAwB,UAACC,QAAD,EAAc;AACpC,YAAIA,QAAQ,CAACS,UAAb,EAAyBT,QAAQ,CAACS,UAAT,CAAoBR,QAApB;AAC1B,OAFD;AAGD;;;wCAEmB;AAClB,UAAIS,aAAiC,GAAG,EAAxC;AACAA,MAAAA,aAAa,CAACC,QAAd,GAAyBC,uBAAkBC,mBAA3C;AACA,WAAKC,cAAL,CAAoBJ,aAApB;AACD;;;0CAEqB;AACpB,UAAIA,aAAiC,GAAG,EAAxC;AACAA,MAAAA,aAAa,CAACC,QAAd,GAAyBC,uBAAkBG,qBAA3C;AACA,WAAKD,cAAL,CAAoBJ,aAApB;AACD","sourcesContent":["/* @flow */\nimport {\n MessageAnnouncement,\n StatusAnnouncement,\n SignalAnnouncement,\n MessageActionAnnouncement,\n ObjectAnnouncement,\n CallbackStruct,\n PresenceAnnouncement,\n} from '../flow_interfaces';\nimport categoryConstants from '../constants/categories';\n\nexport default class {\n _listeners: Array;\n\n constructor() {\n this._listeners = [];\n }\n\n addListener(newListeners: CallbackStruct) {\n this._listeners.push(newListeners);\n }\n\n removeListener(deprecatedListener: CallbackStruct) {\n let newListeners = [];\n\n this._listeners.forEach((listener) => {\n if (listener !== deprecatedListener) newListeners.push(listener);\n });\n\n this._listeners = newListeners;\n }\n\n removeAllListeners() {\n this._listeners = [];\n }\n\n announcePresence(announce: PresenceAnnouncement) {\n this._listeners.forEach((listener) => {\n if (listener.presence) listener.presence(announce);\n });\n }\n\n announceStatus(announce: StatusAnnouncement) {\n this._listeners.forEach((listener) => {\n if (listener.status) listener.status(announce);\n });\n }\n\n announceMessage(announce: MessageAnnouncement) {\n this._listeners.forEach((listener) => {\n if (listener.message) listener.message(announce);\n });\n }\n\n announceSignal(announce: SignalAnnouncement) {\n this._listeners.forEach((listener) => {\n if (listener.signal) listener.signal(announce);\n });\n }\n\n announceMessageAction(announce: MessageActionAnnouncement) {\n this._listeners.forEach((listener) => {\n if (listener.messageAction) listener.messageAction(announce);\n });\n }\n\n announceUser(announce: ObjectAnnouncement) {\n this._listeners.forEach((listener) => {\n if (listener.user) listener.user(announce);\n });\n }\n\n announceSpace(announce: ObjectAnnouncement) {\n this._listeners.forEach((listener) => {\n if (listener.space) listener.space(announce);\n });\n }\n\n announceMembership(announce: ObjectAnnouncement) {\n this._listeners.forEach((listener) => {\n if (listener.membership) listener.membership(announce);\n });\n }\n\n announceNetworkUp() {\n let networkStatus: StatusAnnouncement = {};\n networkStatus.category = categoryConstants.PNNetworkUpCategory;\n this.announceStatus(networkStatus);\n }\n\n announceNetworkDown() {\n let networkStatus: StatusAnnouncement = {};\n networkStatus.category = categoryConstants.PNNetworkDownCategory;\n this.announceStatus(networkStatus);\n }\n}\n"],"file":"listener_manager.js"} \ No newline at end of file diff --git a/lib/core/components/subscription_manager.js b/lib/core/components/subscription_manager.js index 5dfb37a53..56336e92b 100644 --- a/lib/core/components/subscription_manager.js +++ b/lib/core/components/subscription_manager.js @@ -670,28 +670,44 @@ var _default = function () { } else if (message.payload.type === 'membership') { _this7._listenerManager.announceMembership(_announce2); } - } else { + } else if (message.messageType === 3) { var _announce3 = {}; - _announce3.channel = null; - _announce3.subscription = null; - _announce3.actualChannel = subscriptionMatch != null ? channel : null; - _announce3.subscribedChannel = subscriptionMatch != null ? subscriptionMatch : channel; _announce3.channel = channel; _announce3.subscription = subscriptionMatch; _announce3.timetoken = publishMetaData.publishTimetoken; _announce3.publisher = message.issuingClientId; + _announce3.data = { + messageTimetoken: message.payload.data.messageTimetoken, + actionTimetoken: message.payload.data.actionTimetoken, + type: message.payload.data.type, + uuid: message.issuingClientId, + value: message.payload.data.value + }; + _announce3.event = message.payload.event; + + _this7._listenerManager.announceMessageAction(_announce3); + } else { + var _announce4 = {}; + _announce4.channel = null; + _announce4.subscription = null; + _announce4.actualChannel = subscriptionMatch != null ? channel : null; + _announce4.subscribedChannel = subscriptionMatch != null ? subscriptionMatch : channel; + _announce4.channel = channel; + _announce4.subscription = subscriptionMatch; + _announce4.timetoken = publishMetaData.publishTimetoken; + _announce4.publisher = message.issuingClientId; if (message.userMetadata) { - _announce3.userMetadata = message.userMetadata; + _announce4.userMetadata = message.userMetadata; } if (_this7._config.cipherKey) { - _announce3.message = _this7._crypto.decrypt(message.payload); + _announce4.message = _this7._crypto.decrypt(message.payload); } else { - _announce3.message = message.payload; + _announce4.message = message.payload; } - _this7._listenerManager.announceMessage(_announce3); + _this7._listenerManager.announceMessage(_announce4); } }); this._region = payload.metadata.region; diff --git a/lib/core/components/subscription_manager.js.map b/lib/core/components/subscription_manager.js.map index 48846d11b..5582a4498 100644 --- a/lib/core/components/subscription_manager.js.map +++ b/lib/core/components/subscription_manager.js.map @@ -1 +1 @@ -{"version":3,"sources":["core/components/subscription_manager.js"],"names":["subscribeEndpoint","leaveEndpoint","heartbeatEndpoint","setStateEndpoint","timeEndpoint","config","crypto","listenerManager","_listenerManager","_config","_leaveEndpoint","_heartbeatEndpoint","_setStateEndpoint","_subscribeEndpoint","_crypto","_channels","_presenceChannels","_heartbeatChannels","_heartbeatChannelGroups","_channelGroups","_presenceChannelGroups","_pendingChannelSubscriptions","_pendingChannelGroupSubscriptions","_currentTimetoken","_lastTimetoken","_storedTimetoken","_subscriptionStatusAnnounced","_isOnline","_reconnectionManager","ReconnectionManager","_dedupingManager","DedupingManager","args","callback","state","channels","channelGroups","forEach","channel","channelGroup","connected","suppressLeaveEvents","status","announceStatus","reconnect","timetoken","withPresence","withHeartbeats","subscribeKey","console","log","getHeartbeatInterval","push","isOffline","actualChannels","actualChannelGroups","length","affectedChannels","affectedChannelGroups","currentTimetoken","lastTimetoken","Object","keys","_region","stopPolling","adaptUnsubscribeChange","getSubscribedChannels","getSubscribedChannelGroups","_startSubscribeLoop","_registerHeartbeatTimer","_stopSubscribeLoop","_stopHeartbeatTimer","_performHeartbeatLoop","_heartbeatTimer","setInterval","bind","clearInterval","heartbeatChannels","getHeartbeatChannels","heartbeatChannelGroups","getHeartbeatChannelGroups","presenceState","channelState","channelGroupState","onHeartbeat","error","announceFailedHeartbeats","autoNetworkDetection","disconnect","announceNetworkDown","announceSuccessfulHeartbeats","subscribeArgs","filterExpression","region","_subscribeCall","_processSubscribeResponse","payload","category","categoryConstants","PNTimeoutCategory","PNNetworkIssuesCategory","onReconnection","announceNetworkUp","reconnectedAnnounce","PNReconnectedCategory","operation","startPolling","PNBadRequestCategory","metadata","connectedAnnounce","PNConnectedCategory","subscribedChannels","messages","requestMessageCountThreshold","dedupeOnSubscribe","countAnnouncement","PNRequestMessageCountExceededCategory","message","subscriptionMatch","publishMetaData","isDuplicate","addEntry","utils","endsWith","announce","subscription","actualChannel","subscribedChannel","substring","lastIndexOf","action","data","publishTimetoken","occupancy","uuid","timestamp","join","leave","timeout","announcePresence","messageType","publisher","issuingClientId","userMetadata","announceSignal","event","type","announceUser","announceSpace","announceMembership","cipherKey","decrypt","announceMessage","abort"],"mappings":"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","sourcesContent":["/* @flow */\nimport Crypto from '../components/cryptography';\nimport Config from '../components/config';\nimport ListenerManager from '../components/listener_manager';\nimport ReconnectionManager from '../components/reconnection_manager';\nimport DedupingManager from '../components/deduping_manager';\nimport utils from '../utils';\nimport {\n MessageAnnouncement,\n SignalAnnouncement,\n ObjectAnnouncement,\n SubscribeEnvelope,\n StatusAnnouncement,\n PresenceAnnouncement,\n} from '../flow_interfaces';\nimport categoryConstants from '../constants/categories';\n\ntype SubscribeArgs = {\n channels: Array,\n channelGroups: Array,\n withPresence: ?boolean,\n timetoken: ?number,\n withHeartbeats: ?boolean,\n};\n\ntype PresenceArgs = {\n channels: Array,\n channelGroups: Array,\n connected: boolean,\n};\n\ntype UnsubscribeArgs = {\n channels: Array,\n channelGroups: Array,\n};\n\ntype StateArgs = {\n channels: Array,\n channelGroups: Array,\n state: Object,\n};\n\ntype SubscriptionManagerConstruct = {\n leaveEndpoint: Function,\n subscribeEndpoint: Function,\n timeEndpoint: Function,\n heartbeatEndpoint: Function,\n setStateEndpoint: Function,\n config: Config,\n crypto: Crypto,\n listenerManager: ListenerManager,\n};\n\nexport default class {\n _crypto: Crypto;\n _config: Config;\n _listenerManager: ListenerManager;\n _reconnectionManager: ReconnectionManager;\n\n _leaveEndpoint: Function;\n _heartbeatEndpoint: Function;\n _setStateEndpoint: Function;\n _subscribeEndpoint: Function;\n\n _channels: Object;\n _presenceChannels: Object;\n\n _heartbeatChannels: Object;\n _heartbeatChannelGroups: Object;\n\n _channelGroups: Object;\n _presenceChannelGroups: Object;\n\n _currentTimetoken: number;\n _lastTimetoken: number;\n _storedTimetoken: ?number;\n\n _region: ?number;\n\n _subscribeCall: ?Object;\n _heartbeatTimer: ?number;\n\n _subscriptionStatusAnnounced: boolean;\n\n _autoNetworkDetection: boolean;\n _isOnline: boolean;\n\n // store pending connection elements\n _pendingChannelSubscriptions: Array;\n _pendingChannelGroupSubscriptions: Array;\n //\n\n _dedupingManager: DedupingManager;\n\n constructor({\n subscribeEndpoint,\n leaveEndpoint,\n heartbeatEndpoint,\n setStateEndpoint,\n timeEndpoint,\n config,\n crypto,\n listenerManager,\n }: SubscriptionManagerConstruct) {\n this._listenerManager = listenerManager;\n this._config = config;\n\n this._leaveEndpoint = leaveEndpoint;\n this._heartbeatEndpoint = heartbeatEndpoint;\n this._setStateEndpoint = setStateEndpoint;\n this._subscribeEndpoint = subscribeEndpoint;\n\n this._crypto = crypto;\n\n this._channels = {};\n this._presenceChannels = {};\n\n this._heartbeatChannels = {};\n this._heartbeatChannelGroups = {};\n\n this._channelGroups = {};\n this._presenceChannelGroups = {};\n\n this._pendingChannelSubscriptions = [];\n this._pendingChannelGroupSubscriptions = [];\n\n this._currentTimetoken = 0;\n this._lastTimetoken = 0;\n this._storedTimetoken = null;\n\n this._subscriptionStatusAnnounced = false;\n\n this._isOnline = true;\n\n this._reconnectionManager = new ReconnectionManager({ timeEndpoint });\n this._dedupingManager = new DedupingManager({ config });\n }\n\n adaptStateChange(args: StateArgs, callback: Function) {\n const { state, channels = [], channelGroups = [] } = args;\n\n channels.forEach((channel) => {\n if (channel in this._channels) this._channels[channel].state = state;\n });\n\n channelGroups.forEach((channelGroup) => {\n if (channelGroup in this._channelGroups) {\n this._channelGroups[channelGroup].state = state;\n }\n });\n\n return this._setStateEndpoint({ state, channels, channelGroups }, callback);\n }\n\n adaptPresenceChange(args: PresenceArgs) {\n const { connected, channels = [], channelGroups = [] } = args;\n\n if (connected) {\n channels.forEach((channel: string) => {\n this._heartbeatChannels[channel] = { state: {} };\n });\n\n channelGroups.forEach((channelGroup: string) => {\n this._heartbeatChannelGroups[channelGroup] = { state: {} };\n });\n } else {\n channels.forEach((channel) => {\n if (channel in this._heartbeatChannels) {\n delete this._heartbeatChannels[channel];\n }\n });\n\n channelGroups.forEach((channelGroup) => {\n if (channelGroup in this._heartbeatChannelGroups) {\n delete this._heartbeatChannelGroups[channelGroup];\n }\n });\n\n if (this._config.suppressLeaveEvents === false) {\n this._leaveEndpoint({ channels, channelGroups }, (status) => {\n this._listenerManager.announceStatus(status);\n });\n }\n }\n\n this.reconnect();\n }\n\n adaptSubscribeChange(args: SubscribeArgs) {\n const {\n timetoken,\n channels = [],\n channelGroups = [],\n withPresence = false,\n withHeartbeats = false,\n } = args;\n\n if (!this._config.subscribeKey || this._config.subscribeKey === '') {\n // eslint-disable-next-line\n if (console && console.log) {\n console.log('subscribe key missing; aborting subscribe'); //eslint-disable-line\n }\n return;\n }\n\n if (timetoken) {\n this._lastTimetoken = this._currentTimetoken;\n this._currentTimetoken = timetoken;\n }\n\n // reset the current timetoken to get a connect event.\n // $FlowFixMe\n if (this._currentTimetoken !== '0' && this._currentTimetoken !== 0) {\n this._storedTimetoken = this._currentTimetoken;\n this._currentTimetoken = 0;\n }\n\n channels.forEach((channel: string) => {\n this._channels[channel] = { state: {} };\n if (withPresence) this._presenceChannels[channel] = {};\n if (withHeartbeats || this._config.getHeartbeatInterval()) this._heartbeatChannels[channel] = {};\n\n this._pendingChannelSubscriptions.push(channel);\n });\n\n channelGroups.forEach((channelGroup: string) => {\n this._channelGroups[channelGroup] = { state: {} };\n if (withPresence) this._presenceChannelGroups[channelGroup] = {};\n if (withHeartbeats || this._config.getHeartbeatInterval()) this._heartbeatChannelGroups[channelGroup] = {};\n\n this._pendingChannelGroupSubscriptions.push(channelGroup);\n });\n\n this._subscriptionStatusAnnounced = false;\n this.reconnect();\n }\n\n adaptUnsubscribeChange(args: UnsubscribeArgs, isOffline: boolean) {\n const { channels = [], channelGroups = [] } = args;\n\n // keep track of which channels and channel groups\n // we are going to unsubscribe from.\n const actualChannels = [];\n const actualChannelGroups = [];\n //\n\n channels.forEach((channel) => {\n if (channel in this._channels) {\n delete this._channels[channel];\n actualChannels.push(channel);\n\n if (channel in this._heartbeatChannels) {\n delete this._heartbeatChannels[channel];\n }\n }\n if (channel in this._presenceChannels) {\n delete this._presenceChannels[channel];\n actualChannels.push(channel);\n }\n });\n\n channelGroups.forEach((channelGroup) => {\n if (channelGroup in this._channelGroups) {\n delete this._channelGroups[channelGroup];\n actualChannelGroups.push(channelGroup);\n\n if (channelGroup in this._heartbeatChannelGroups) {\n delete this._heartbeatChannelGroups[channelGroup];\n }\n }\n if (channelGroup in this._presenceChannelGroups) {\n delete this._channelGroups[channelGroup];\n actualChannelGroups.push(channelGroup);\n }\n });\n\n // no-op if there are no channels and cg's to unsubscribe from.\n if (actualChannels.length === 0 && actualChannelGroups.length === 0) {\n return;\n }\n\n if (this._config.suppressLeaveEvents === false && !isOffline) {\n this._leaveEndpoint(\n { channels: actualChannels, channelGroups: actualChannelGroups },\n (status) => {\n status.affectedChannels = actualChannels;\n status.affectedChannelGroups = actualChannelGroups;\n status.currentTimetoken = this._currentTimetoken;\n status.lastTimetoken = this._lastTimetoken;\n this._listenerManager.announceStatus(status);\n }\n );\n }\n\n // if we have nothing to subscribe to, reset the timetoken.\n if (\n Object.keys(this._channels).length === 0 &&\n Object.keys(this._presenceChannels).length === 0 &&\n Object.keys(this._channelGroups).length === 0 &&\n Object.keys(this._presenceChannelGroups).length === 0\n ) {\n this._lastTimetoken = 0;\n this._currentTimetoken = 0;\n this._storedTimetoken = null;\n this._region = null;\n this._reconnectionManager.stopPolling();\n }\n\n this.reconnect();\n }\n\n unsubscribeAll(isOffline: boolean) {\n this.adaptUnsubscribeChange(\n {\n channels: this.getSubscribedChannels(),\n channelGroups: this.getSubscribedChannelGroups(),\n },\n isOffline\n );\n }\n\n getHeartbeatChannels(): Array {\n return Object.keys(this._heartbeatChannels);\n }\n\n getHeartbeatChannelGroups(): Array {\n return Object.keys(this._heartbeatChannelGroups);\n }\n\n getSubscribedChannels(): Array {\n return Object.keys(this._channels);\n }\n\n getSubscribedChannelGroups(): Array {\n return Object.keys(this._channelGroups);\n }\n\n reconnect() {\n this._startSubscribeLoop();\n this._registerHeartbeatTimer();\n }\n\n disconnect() {\n this._stopSubscribeLoop();\n this._stopHeartbeatTimer();\n this._reconnectionManager.stopPolling();\n }\n\n _registerHeartbeatTimer() {\n this._stopHeartbeatTimer();\n\n // if the interval is 0, do not queue up heartbeating\n if (this._config.getHeartbeatInterval() === 0) {\n return;\n }\n\n this._performHeartbeatLoop();\n // $FlowFixMe\n this._heartbeatTimer = setInterval(\n this._performHeartbeatLoop.bind(this),\n this._config.getHeartbeatInterval() * 1000\n );\n }\n\n _stopHeartbeatTimer() {\n if (this._heartbeatTimer) {\n // $FlowFixMe\n clearInterval(this._heartbeatTimer);\n this._heartbeatTimer = null;\n }\n }\n\n _performHeartbeatLoop() {\n const heartbeatChannels = this.getHeartbeatChannels();\n\n const heartbeatChannelGroups = this.getHeartbeatChannelGroups();\n\n let presenceState = {};\n\n if (heartbeatChannels.length === 0 && heartbeatChannelGroups.length === 0) {\n return;\n }\n\n this.getSubscribedChannels().forEach((channel) => {\n let channelState = this._channels[channel].state;\n if (Object.keys(channelState).length) {\n presenceState[channel] = channelState;\n }\n });\n\n this.getSubscribedChannelGroups().forEach((channelGroup) => {\n let channelGroupState = this._channelGroups[channelGroup].state;\n if (Object.keys(channelGroupState).length) {\n presenceState[channelGroup] = channelGroupState;\n }\n });\n\n let onHeartbeat = (status: StatusAnnouncement) => {\n if (status.error && this._config.announceFailedHeartbeats) {\n this._listenerManager.announceStatus(status);\n }\n\n if (status.error && this._config.autoNetworkDetection && this._isOnline) {\n this._isOnline = false;\n this.disconnect();\n this._listenerManager.announceNetworkDown();\n this.reconnect();\n }\n\n if (!status.error && this._config.announceSuccessfulHeartbeats) {\n this._listenerManager.announceStatus(status);\n }\n };\n\n this._heartbeatEndpoint(\n {\n channels: heartbeatChannels,\n channelGroups: heartbeatChannelGroups,\n state: presenceState,\n },\n onHeartbeat.bind(this)\n );\n }\n\n _startSubscribeLoop() {\n this._stopSubscribeLoop();\n let presenceState = {};\n let channels = [];\n let channelGroups = [];\n\n Object.keys(this._channels).forEach((channel) => {\n let channelState = this._channels[channel].state;\n\n if (Object.keys(channelState).length) {\n presenceState[channel] = channelState;\n }\n\n channels.push(channel);\n });\n Object.keys(this._presenceChannels).forEach((channel) => {\n channels.push(`${channel}-pnpres`);\n });\n\n Object.keys(this._channelGroups).forEach((channelGroup) => {\n let channelGroupState = this._channelGroups[channelGroup].state;\n\n if (Object.keys(channelGroupState).length) {\n presenceState[channelGroup] = channelGroupState;\n }\n\n channelGroups.push(channelGroup);\n });\n Object.keys(this._presenceChannelGroups).forEach((channelGroup) => {\n channelGroups.push(`${channelGroup}-pnpres`);\n });\n\n if (channels.length === 0 && channelGroups.length === 0) {\n return;\n }\n\n const subscribeArgs = {\n channels,\n channelGroups,\n state: presenceState,\n timetoken: this._currentTimetoken,\n filterExpression: this._config.filterExpression,\n region: this._region,\n };\n\n this._subscribeCall = this._subscribeEndpoint(\n subscribeArgs,\n this._processSubscribeResponse.bind(this)\n );\n }\n\n _processSubscribeResponse(\n status: StatusAnnouncement,\n payload: SubscribeEnvelope\n ) {\n if (status.error) {\n // if we timeout from server, restart the loop.\n if (status.category === categoryConstants.PNTimeoutCategory) {\n this._startSubscribeLoop();\n } else if (\n status.category === categoryConstants.PNNetworkIssuesCategory\n ) {\n // we lost internet connection, alert the reconnection manager and terminate all loops\n this.disconnect();\n\n if (\n status.error &&\n this._config.autoNetworkDetection &&\n this._isOnline\n ) {\n this._isOnline = false;\n this._listenerManager.announceNetworkDown();\n }\n\n this._reconnectionManager.onReconnection(() => {\n if (this._config.autoNetworkDetection && !this._isOnline) {\n this._isOnline = true;\n this._listenerManager.announceNetworkUp();\n }\n this.reconnect();\n this._subscriptionStatusAnnounced = true;\n let reconnectedAnnounce: StatusAnnouncement = {\n category: categoryConstants.PNReconnectedCategory,\n operation: status.operation,\n lastTimetoken: this._lastTimetoken,\n currentTimetoken: this._currentTimetoken,\n };\n this._listenerManager.announceStatus(reconnectedAnnounce);\n });\n\n this._reconnectionManager.startPolling();\n this._listenerManager.announceStatus(status);\n } else if (status.category === categoryConstants.PNBadRequestCategory) {\n this._stopHeartbeatTimer();\n this._listenerManager.announceStatus(status);\n } else {\n this._listenerManager.announceStatus(status);\n }\n\n return;\n }\n\n if (this._storedTimetoken) {\n this._currentTimetoken = this._storedTimetoken;\n this._storedTimetoken = null;\n } else {\n this._lastTimetoken = this._currentTimetoken;\n this._currentTimetoken = payload.metadata.timetoken;\n }\n\n if (!this._subscriptionStatusAnnounced) {\n let connectedAnnounce: StatusAnnouncement = {};\n connectedAnnounce.category = categoryConstants.PNConnectedCategory;\n connectedAnnounce.operation = status.operation;\n connectedAnnounce.affectedChannels = this._pendingChannelSubscriptions;\n connectedAnnounce.subscribedChannels = this.getSubscribedChannels();\n connectedAnnounce.affectedChannelGroups = this._pendingChannelGroupSubscriptions;\n connectedAnnounce.lastTimetoken = this._lastTimetoken;\n connectedAnnounce.currentTimetoken = this._currentTimetoken;\n this._subscriptionStatusAnnounced = true;\n this._listenerManager.announceStatus(connectedAnnounce);\n\n // clear the pending connections list\n this._pendingChannelSubscriptions = [];\n this._pendingChannelGroupSubscriptions = [];\n }\n\n let messages = payload.messages || [];\n let { requestMessageCountThreshold, dedupeOnSubscribe } = this._config;\n\n if (\n requestMessageCountThreshold &&\n messages.length >= requestMessageCountThreshold\n ) {\n let countAnnouncement: StatusAnnouncement = {};\n countAnnouncement.category =\n categoryConstants.PNRequestMessageCountExceededCategory;\n countAnnouncement.operation = status.operation;\n this._listenerManager.announceStatus(countAnnouncement);\n }\n\n messages.forEach((message) => {\n let channel = message.channel;\n let subscriptionMatch = message.subscriptionMatch;\n let publishMetaData = message.publishMetaData;\n\n if (channel === subscriptionMatch) {\n subscriptionMatch = null;\n }\n\n if (dedupeOnSubscribe) {\n if (this._dedupingManager.isDuplicate(message)) {\n return;\n } else {\n this._dedupingManager.addEntry(message);\n }\n }\n\n if (utils.endsWith(message.channel, '-pnpres')) {\n let announce: PresenceAnnouncement = {};\n announce.channel = null;\n announce.subscription = null;\n\n // deprecated -->\n announce.actualChannel = subscriptionMatch != null ? channel : null;\n announce.subscribedChannel =\n subscriptionMatch != null ? subscriptionMatch : channel;\n // <-- deprecated\n\n if (channel) {\n announce.channel = channel.substring(\n 0,\n channel.lastIndexOf('-pnpres')\n );\n }\n\n if (subscriptionMatch) {\n announce.subscription = subscriptionMatch.substring(\n 0,\n subscriptionMatch.lastIndexOf('-pnpres')\n );\n }\n\n announce.action = message.payload.action;\n announce.state = message.payload.data;\n announce.timetoken = publishMetaData.publishTimetoken;\n announce.occupancy = message.payload.occupancy;\n announce.uuid = message.payload.uuid;\n announce.timestamp = message.payload.timestamp;\n\n if (message.payload.join) {\n announce.join = message.payload.join;\n }\n\n if (message.payload.leave) {\n announce.leave = message.payload.leave;\n }\n\n if (message.payload.timeout) {\n announce.timeout = message.payload.timeout;\n }\n\n this._listenerManager.announcePresence(announce);\n } else if (message.messageType === 1) {\n // this is a signal message\n let announce: SignalAnnouncement = {};\n announce.channel = null;\n announce.subscription = null;\n\n announce.channel = channel;\n announce.subscription = subscriptionMatch;\n announce.timetoken = publishMetaData.publishTimetoken;\n announce.publisher = message.issuingClientId;\n\n if (message.userMetadata) {\n announce.userMetadata = message.userMetadata;\n }\n\n announce.message = message.payload;\n\n this._listenerManager.announceSignal(announce);\n } else if (message.messageType === 2) {\n // this is an object message\n\n let announce: ObjectAnnouncement = {};\n\n announce.channel = null;\n announce.subscription = null;\n\n announce.channel = channel;\n announce.subscription = subscriptionMatch;\n announce.timetoken = publishMetaData.publishTimetoken;\n announce.publisher = message.issuingClientId;\n\n if (message.userMetadata) {\n announce.userMetadata = message.userMetadata;\n }\n\n announce.message = {\n event: message.payload.event,\n type: message.payload.type,\n data: message.payload.data,\n };\n\n if (message.payload.type === 'user') {\n this._listenerManager.announceUser(announce);\n } else if (message.payload.type === 'space') {\n this._listenerManager.announceSpace(announce);\n } else if (message.payload.type === 'membership') {\n this._listenerManager.announceMembership(announce);\n }\n } else {\n let announce: MessageAnnouncement = {};\n announce.channel = null;\n announce.subscription = null;\n\n // deprecated -->\n announce.actualChannel = subscriptionMatch != null ? channel : null;\n announce.subscribedChannel =\n subscriptionMatch != null ? subscriptionMatch : channel;\n // <-- deprecated\n\n announce.channel = channel;\n announce.subscription = subscriptionMatch;\n announce.timetoken = publishMetaData.publishTimetoken;\n announce.publisher = message.issuingClientId;\n\n if (message.userMetadata) {\n announce.userMetadata = message.userMetadata;\n }\n\n if (this._config.cipherKey) {\n announce.message = this._crypto.decrypt(message.payload);\n } else {\n announce.message = message.payload;\n }\n\n this._listenerManager.announceMessage(announce);\n }\n });\n\n this._region = payload.metadata.region;\n this._startSubscribeLoop();\n }\n\n _stopSubscribeLoop() {\n if (this._subscribeCall) {\n if (typeof this._subscribeCall.abort === 'function') {\n this._subscribeCall.abort();\n }\n this._subscribeCall = null;\n }\n }\n}\n"],"file":"subscription_manager.js"} \ No newline at end of file +{"version":3,"sources":["core/components/subscription_manager.js"],"names":["subscribeEndpoint","leaveEndpoint","heartbeatEndpoint","setStateEndpoint","timeEndpoint","config","crypto","listenerManager","_listenerManager","_config","_leaveEndpoint","_heartbeatEndpoint","_setStateEndpoint","_subscribeEndpoint","_crypto","_channels","_presenceChannels","_heartbeatChannels","_heartbeatChannelGroups","_channelGroups","_presenceChannelGroups","_pendingChannelSubscriptions","_pendingChannelGroupSubscriptions","_currentTimetoken","_lastTimetoken","_storedTimetoken","_subscriptionStatusAnnounced","_isOnline","_reconnectionManager","ReconnectionManager","_dedupingManager","DedupingManager","args","callback","state","channels","channelGroups","forEach","channel","channelGroup","connected","suppressLeaveEvents","status","announceStatus","reconnect","timetoken","withPresence","withHeartbeats","subscribeKey","console","log","getHeartbeatInterval","push","isOffline","actualChannels","actualChannelGroups","length","affectedChannels","affectedChannelGroups","currentTimetoken","lastTimetoken","Object","keys","_region","stopPolling","adaptUnsubscribeChange","getSubscribedChannels","getSubscribedChannelGroups","_startSubscribeLoop","_registerHeartbeatTimer","_stopSubscribeLoop","_stopHeartbeatTimer","_performHeartbeatLoop","_heartbeatTimer","setInterval","bind","clearInterval","heartbeatChannels","getHeartbeatChannels","heartbeatChannelGroups","getHeartbeatChannelGroups","presenceState","channelState","channelGroupState","onHeartbeat","error","announceFailedHeartbeats","autoNetworkDetection","disconnect","announceNetworkDown","announceSuccessfulHeartbeats","subscribeArgs","filterExpression","region","_subscribeCall","_processSubscribeResponse","payload","category","categoryConstants","PNTimeoutCategory","PNNetworkIssuesCategory","onReconnection","announceNetworkUp","reconnectedAnnounce","PNReconnectedCategory","operation","startPolling","PNBadRequestCategory","metadata","connectedAnnounce","PNConnectedCategory","subscribedChannels","messages","requestMessageCountThreshold","dedupeOnSubscribe","countAnnouncement","PNRequestMessageCountExceededCategory","message","subscriptionMatch","publishMetaData","isDuplicate","addEntry","utils","endsWith","announce","subscription","actualChannel","subscribedChannel","substring","lastIndexOf","action","data","publishTimetoken","occupancy","uuid","timestamp","join","leave","timeout","announcePresence","messageType","publisher","issuingClientId","userMetadata","announceSignal","event","type","announceUser","announceSpace","announceMembership","messageTimetoken","actionTimetoken","value","announceMessageAction","cipherKey","decrypt","announceMessage","abort"],"mappings":"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","sourcesContent":["/* @flow */\nimport Crypto from '../components/cryptography';\nimport Config from '../components/config';\nimport ListenerManager from '../components/listener_manager';\nimport ReconnectionManager from '../components/reconnection_manager';\nimport DedupingManager from '../components/deduping_manager';\nimport utils from '../utils';\nimport {\n MessageActionAnnouncement,\n MessageAnnouncement,\n SignalAnnouncement,\n ObjectAnnouncement,\n SubscribeEnvelope,\n StatusAnnouncement,\n PresenceAnnouncement,\n} from '../flow_interfaces';\nimport categoryConstants from '../constants/categories';\n\ntype SubscribeArgs = {\n channels: Array,\n channelGroups: Array,\n withPresence: ?boolean,\n timetoken: ?number,\n withHeartbeats: ?boolean,\n};\n\ntype PresenceArgs = {\n channels: Array,\n channelGroups: Array,\n connected: boolean,\n};\n\ntype UnsubscribeArgs = {\n channels: Array,\n channelGroups: Array,\n};\n\ntype StateArgs = {\n channels: Array,\n channelGroups: Array,\n state: Object,\n};\n\ntype SubscriptionManagerConstruct = {\n leaveEndpoint: Function,\n subscribeEndpoint: Function,\n timeEndpoint: Function,\n heartbeatEndpoint: Function,\n setStateEndpoint: Function,\n config: Config,\n crypto: Crypto,\n listenerManager: ListenerManager,\n};\n\nexport default class {\n _crypto: Crypto;\n _config: Config;\n _listenerManager: ListenerManager;\n _reconnectionManager: ReconnectionManager;\n\n _leaveEndpoint: Function;\n _heartbeatEndpoint: Function;\n _setStateEndpoint: Function;\n _subscribeEndpoint: Function;\n\n _channels: Object;\n _presenceChannels: Object;\n\n _heartbeatChannels: Object;\n _heartbeatChannelGroups: Object;\n\n _channelGroups: Object;\n _presenceChannelGroups: Object;\n\n _currentTimetoken: number;\n _lastTimetoken: number;\n _storedTimetoken: ?number;\n\n _region: ?number;\n\n _subscribeCall: ?Object;\n _heartbeatTimer: ?number;\n\n _subscriptionStatusAnnounced: boolean;\n\n _autoNetworkDetection: boolean;\n _isOnline: boolean;\n\n // store pending connection elements\n _pendingChannelSubscriptions: Array;\n _pendingChannelGroupSubscriptions: Array;\n //\n\n _dedupingManager: DedupingManager;\n\n constructor({\n subscribeEndpoint,\n leaveEndpoint,\n heartbeatEndpoint,\n setStateEndpoint,\n timeEndpoint,\n config,\n crypto,\n listenerManager,\n }: SubscriptionManagerConstruct) {\n this._listenerManager = listenerManager;\n this._config = config;\n\n this._leaveEndpoint = leaveEndpoint;\n this._heartbeatEndpoint = heartbeatEndpoint;\n this._setStateEndpoint = setStateEndpoint;\n this._subscribeEndpoint = subscribeEndpoint;\n\n this._crypto = crypto;\n\n this._channels = {};\n this._presenceChannels = {};\n\n this._heartbeatChannels = {};\n this._heartbeatChannelGroups = {};\n\n this._channelGroups = {};\n this._presenceChannelGroups = {};\n\n this._pendingChannelSubscriptions = [];\n this._pendingChannelGroupSubscriptions = [];\n\n this._currentTimetoken = 0;\n this._lastTimetoken = 0;\n this._storedTimetoken = null;\n\n this._subscriptionStatusAnnounced = false;\n\n this._isOnline = true;\n\n this._reconnectionManager = new ReconnectionManager({ timeEndpoint });\n this._dedupingManager = new DedupingManager({ config });\n }\n\n adaptStateChange(args: StateArgs, callback: Function) {\n const { state, channels = [], channelGroups = [] } = args;\n\n channels.forEach((channel) => {\n if (channel in this._channels) this._channels[channel].state = state;\n });\n\n channelGroups.forEach((channelGroup) => {\n if (channelGroup in this._channelGroups) {\n this._channelGroups[channelGroup].state = state;\n }\n });\n\n return this._setStateEndpoint({ state, channels, channelGroups }, callback);\n }\n\n adaptPresenceChange(args: PresenceArgs) {\n const { connected, channels = [], channelGroups = [] } = args;\n\n if (connected) {\n channels.forEach((channel: string) => {\n this._heartbeatChannels[channel] = { state: {} };\n });\n\n channelGroups.forEach((channelGroup: string) => {\n this._heartbeatChannelGroups[channelGroup] = { state: {} };\n });\n } else {\n channels.forEach((channel) => {\n if (channel in this._heartbeatChannels) {\n delete this._heartbeatChannels[channel];\n }\n });\n\n channelGroups.forEach((channelGroup) => {\n if (channelGroup in this._heartbeatChannelGroups) {\n delete this._heartbeatChannelGroups[channelGroup];\n }\n });\n\n if (this._config.suppressLeaveEvents === false) {\n this._leaveEndpoint({ channels, channelGroups }, (status) => {\n this._listenerManager.announceStatus(status);\n });\n }\n }\n\n this.reconnect();\n }\n\n adaptSubscribeChange(args: SubscribeArgs) {\n const {\n timetoken,\n channels = [],\n channelGroups = [],\n withPresence = false,\n withHeartbeats = false,\n } = args;\n\n if (!this._config.subscribeKey || this._config.subscribeKey === '') {\n // eslint-disable-next-line\n if (console && console.log) {\n console.log('subscribe key missing; aborting subscribe'); //eslint-disable-line\n }\n return;\n }\n\n if (timetoken) {\n this._lastTimetoken = this._currentTimetoken;\n this._currentTimetoken = timetoken;\n }\n\n // reset the current timetoken to get a connect event.\n // $FlowFixMe\n if (this._currentTimetoken !== '0' && this._currentTimetoken !== 0) {\n this._storedTimetoken = this._currentTimetoken;\n this._currentTimetoken = 0;\n }\n\n channels.forEach((channel: string) => {\n this._channels[channel] = { state: {} };\n if (withPresence) this._presenceChannels[channel] = {};\n if (withHeartbeats || this._config.getHeartbeatInterval()) this._heartbeatChannels[channel] = {};\n\n this._pendingChannelSubscriptions.push(channel);\n });\n\n channelGroups.forEach((channelGroup: string) => {\n this._channelGroups[channelGroup] = { state: {} };\n if (withPresence) this._presenceChannelGroups[channelGroup] = {};\n if (withHeartbeats || this._config.getHeartbeatInterval()) this._heartbeatChannelGroups[channelGroup] = {};\n\n this._pendingChannelGroupSubscriptions.push(channelGroup);\n });\n\n this._subscriptionStatusAnnounced = false;\n this.reconnect();\n }\n\n adaptUnsubscribeChange(args: UnsubscribeArgs, isOffline: boolean) {\n const { channels = [], channelGroups = [] } = args;\n\n // keep track of which channels and channel groups\n // we are going to unsubscribe from.\n const actualChannels = [];\n const actualChannelGroups = [];\n //\n\n channels.forEach((channel) => {\n if (channel in this._channels) {\n delete this._channels[channel];\n actualChannels.push(channel);\n\n if (channel in this._heartbeatChannels) {\n delete this._heartbeatChannels[channel];\n }\n }\n if (channel in this._presenceChannels) {\n delete this._presenceChannels[channel];\n actualChannels.push(channel);\n }\n });\n\n channelGroups.forEach((channelGroup) => {\n if (channelGroup in this._channelGroups) {\n delete this._channelGroups[channelGroup];\n actualChannelGroups.push(channelGroup);\n\n if (channelGroup in this._heartbeatChannelGroups) {\n delete this._heartbeatChannelGroups[channelGroup];\n }\n }\n if (channelGroup in this._presenceChannelGroups) {\n delete this._channelGroups[channelGroup];\n actualChannelGroups.push(channelGroup);\n }\n });\n\n // no-op if there are no channels and cg's to unsubscribe from.\n if (actualChannels.length === 0 && actualChannelGroups.length === 0) {\n return;\n }\n\n if (this._config.suppressLeaveEvents === false && !isOffline) {\n this._leaveEndpoint(\n { channels: actualChannels, channelGroups: actualChannelGroups },\n (status) => {\n status.affectedChannels = actualChannels;\n status.affectedChannelGroups = actualChannelGroups;\n status.currentTimetoken = this._currentTimetoken;\n status.lastTimetoken = this._lastTimetoken;\n this._listenerManager.announceStatus(status);\n }\n );\n }\n\n // if we have nothing to subscribe to, reset the timetoken.\n if (\n Object.keys(this._channels).length === 0 &&\n Object.keys(this._presenceChannels).length === 0 &&\n Object.keys(this._channelGroups).length === 0 &&\n Object.keys(this._presenceChannelGroups).length === 0\n ) {\n this._lastTimetoken = 0;\n this._currentTimetoken = 0;\n this._storedTimetoken = null;\n this._region = null;\n this._reconnectionManager.stopPolling();\n }\n\n this.reconnect();\n }\n\n unsubscribeAll(isOffline: boolean) {\n this.adaptUnsubscribeChange(\n {\n channels: this.getSubscribedChannels(),\n channelGroups: this.getSubscribedChannelGroups(),\n },\n isOffline\n );\n }\n\n getHeartbeatChannels(): Array {\n return Object.keys(this._heartbeatChannels);\n }\n\n getHeartbeatChannelGroups(): Array {\n return Object.keys(this._heartbeatChannelGroups);\n }\n\n getSubscribedChannels(): Array {\n return Object.keys(this._channels);\n }\n\n getSubscribedChannelGroups(): Array {\n return Object.keys(this._channelGroups);\n }\n\n reconnect() {\n this._startSubscribeLoop();\n this._registerHeartbeatTimer();\n }\n\n disconnect() {\n this._stopSubscribeLoop();\n this._stopHeartbeatTimer();\n this._reconnectionManager.stopPolling();\n }\n\n _registerHeartbeatTimer() {\n this._stopHeartbeatTimer();\n\n // if the interval is 0, do not queue up heartbeating\n if (this._config.getHeartbeatInterval() === 0) {\n return;\n }\n\n this._performHeartbeatLoop();\n // $FlowFixMe\n this._heartbeatTimer = setInterval(\n this._performHeartbeatLoop.bind(this),\n this._config.getHeartbeatInterval() * 1000\n );\n }\n\n _stopHeartbeatTimer() {\n if (this._heartbeatTimer) {\n // $FlowFixMe\n clearInterval(this._heartbeatTimer);\n this._heartbeatTimer = null;\n }\n }\n\n _performHeartbeatLoop() {\n const heartbeatChannels = this.getHeartbeatChannels();\n\n const heartbeatChannelGroups = this.getHeartbeatChannelGroups();\n\n let presenceState = {};\n\n if (heartbeatChannels.length === 0 && heartbeatChannelGroups.length === 0) {\n return;\n }\n\n this.getSubscribedChannels().forEach((channel) => {\n let channelState = this._channels[channel].state;\n if (Object.keys(channelState).length) {\n presenceState[channel] = channelState;\n }\n });\n\n this.getSubscribedChannelGroups().forEach((channelGroup) => {\n let channelGroupState = this._channelGroups[channelGroup].state;\n if (Object.keys(channelGroupState).length) {\n presenceState[channelGroup] = channelGroupState;\n }\n });\n\n let onHeartbeat = (status: StatusAnnouncement) => {\n if (status.error && this._config.announceFailedHeartbeats) {\n this._listenerManager.announceStatus(status);\n }\n\n if (status.error && this._config.autoNetworkDetection && this._isOnline) {\n this._isOnline = false;\n this.disconnect();\n this._listenerManager.announceNetworkDown();\n this.reconnect();\n }\n\n if (!status.error && this._config.announceSuccessfulHeartbeats) {\n this._listenerManager.announceStatus(status);\n }\n };\n\n this._heartbeatEndpoint(\n {\n channels: heartbeatChannels,\n channelGroups: heartbeatChannelGroups,\n state: presenceState,\n },\n onHeartbeat.bind(this)\n );\n }\n\n _startSubscribeLoop() {\n this._stopSubscribeLoop();\n let presenceState = {};\n let channels = [];\n let channelGroups = [];\n\n Object.keys(this._channels).forEach((channel) => {\n let channelState = this._channels[channel].state;\n\n if (Object.keys(channelState).length) {\n presenceState[channel] = channelState;\n }\n\n channels.push(channel);\n });\n Object.keys(this._presenceChannels).forEach((channel) => {\n channels.push(`${channel}-pnpres`);\n });\n\n Object.keys(this._channelGroups).forEach((channelGroup) => {\n let channelGroupState = this._channelGroups[channelGroup].state;\n\n if (Object.keys(channelGroupState).length) {\n presenceState[channelGroup] = channelGroupState;\n }\n\n channelGroups.push(channelGroup);\n });\n Object.keys(this._presenceChannelGroups).forEach((channelGroup) => {\n channelGroups.push(`${channelGroup}-pnpres`);\n });\n\n if (channels.length === 0 && channelGroups.length === 0) {\n return;\n }\n\n const subscribeArgs = {\n channels,\n channelGroups,\n state: presenceState,\n timetoken: this._currentTimetoken,\n filterExpression: this._config.filterExpression,\n region: this._region,\n };\n\n this._subscribeCall = this._subscribeEndpoint(\n subscribeArgs,\n this._processSubscribeResponse.bind(this)\n );\n }\n\n _processSubscribeResponse(\n status: StatusAnnouncement,\n payload: SubscribeEnvelope\n ) {\n if (status.error) {\n // if we timeout from server, restart the loop.\n if (status.category === categoryConstants.PNTimeoutCategory) {\n this._startSubscribeLoop();\n } else if (\n status.category === categoryConstants.PNNetworkIssuesCategory\n ) {\n // we lost internet connection, alert the reconnection manager and terminate all loops\n this.disconnect();\n\n if (\n status.error &&\n this._config.autoNetworkDetection &&\n this._isOnline\n ) {\n this._isOnline = false;\n this._listenerManager.announceNetworkDown();\n }\n\n this._reconnectionManager.onReconnection(() => {\n if (this._config.autoNetworkDetection && !this._isOnline) {\n this._isOnline = true;\n this._listenerManager.announceNetworkUp();\n }\n this.reconnect();\n this._subscriptionStatusAnnounced = true;\n let reconnectedAnnounce: StatusAnnouncement = {\n category: categoryConstants.PNReconnectedCategory,\n operation: status.operation,\n lastTimetoken: this._lastTimetoken,\n currentTimetoken: this._currentTimetoken,\n };\n this._listenerManager.announceStatus(reconnectedAnnounce);\n });\n\n this._reconnectionManager.startPolling();\n this._listenerManager.announceStatus(status);\n } else if (status.category === categoryConstants.PNBadRequestCategory) {\n this._stopHeartbeatTimer();\n this._listenerManager.announceStatus(status);\n } else {\n this._listenerManager.announceStatus(status);\n }\n\n return;\n }\n\n if (this._storedTimetoken) {\n this._currentTimetoken = this._storedTimetoken;\n this._storedTimetoken = null;\n } else {\n this._lastTimetoken = this._currentTimetoken;\n this._currentTimetoken = payload.metadata.timetoken;\n }\n\n if (!this._subscriptionStatusAnnounced) {\n let connectedAnnounce: StatusAnnouncement = {};\n connectedAnnounce.category = categoryConstants.PNConnectedCategory;\n connectedAnnounce.operation = status.operation;\n connectedAnnounce.affectedChannels = this._pendingChannelSubscriptions;\n connectedAnnounce.subscribedChannels = this.getSubscribedChannels();\n connectedAnnounce.affectedChannelGroups = this._pendingChannelGroupSubscriptions;\n connectedAnnounce.lastTimetoken = this._lastTimetoken;\n connectedAnnounce.currentTimetoken = this._currentTimetoken;\n this._subscriptionStatusAnnounced = true;\n this._listenerManager.announceStatus(connectedAnnounce);\n\n // clear the pending connections list\n this._pendingChannelSubscriptions = [];\n this._pendingChannelGroupSubscriptions = [];\n }\n\n let messages = payload.messages || [];\n let { requestMessageCountThreshold, dedupeOnSubscribe } = this._config;\n\n if (\n requestMessageCountThreshold &&\n messages.length >= requestMessageCountThreshold\n ) {\n let countAnnouncement: StatusAnnouncement = {};\n countAnnouncement.category =\n categoryConstants.PNRequestMessageCountExceededCategory;\n countAnnouncement.operation = status.operation;\n this._listenerManager.announceStatus(countAnnouncement);\n }\n\n messages.forEach((message) => {\n let channel = message.channel;\n let subscriptionMatch = message.subscriptionMatch;\n let publishMetaData = message.publishMetaData;\n\n if (channel === subscriptionMatch) {\n subscriptionMatch = null;\n }\n\n if (dedupeOnSubscribe) {\n if (this._dedupingManager.isDuplicate(message)) {\n return;\n } else {\n this._dedupingManager.addEntry(message);\n }\n }\n\n if (utils.endsWith(message.channel, '-pnpres')) {\n let announce: PresenceAnnouncement = {};\n announce.channel = null;\n announce.subscription = null;\n\n // deprecated -->\n announce.actualChannel = subscriptionMatch != null ? channel : null;\n announce.subscribedChannel =\n subscriptionMatch != null ? subscriptionMatch : channel;\n // <-- deprecated\n\n if (channel) {\n announce.channel = channel.substring(\n 0,\n channel.lastIndexOf('-pnpres')\n );\n }\n\n if (subscriptionMatch) {\n announce.subscription = subscriptionMatch.substring(\n 0,\n subscriptionMatch.lastIndexOf('-pnpres')\n );\n }\n\n announce.action = message.payload.action;\n announce.state = message.payload.data;\n announce.timetoken = publishMetaData.publishTimetoken;\n announce.occupancy = message.payload.occupancy;\n announce.uuid = message.payload.uuid;\n announce.timestamp = message.payload.timestamp;\n\n if (message.payload.join) {\n announce.join = message.payload.join;\n }\n\n if (message.payload.leave) {\n announce.leave = message.payload.leave;\n }\n\n if (message.payload.timeout) {\n announce.timeout = message.payload.timeout;\n }\n\n this._listenerManager.announcePresence(announce);\n } else if (message.messageType === 1) {\n // this is a signal message\n let announce: SignalAnnouncement = {};\n announce.channel = null;\n announce.subscription = null;\n\n announce.channel = channel;\n announce.subscription = subscriptionMatch;\n announce.timetoken = publishMetaData.publishTimetoken;\n announce.publisher = message.issuingClientId;\n\n if (message.userMetadata) {\n announce.userMetadata = message.userMetadata;\n }\n\n announce.message = message.payload;\n\n this._listenerManager.announceSignal(announce);\n } else if (message.messageType === 2) {\n // this is an object message\n\n let announce: ObjectAnnouncement = {};\n\n announce.channel = null;\n announce.subscription = null;\n\n announce.channel = channel;\n announce.subscription = subscriptionMatch;\n announce.timetoken = publishMetaData.publishTimetoken;\n announce.publisher = message.issuingClientId;\n\n if (message.userMetadata) {\n announce.userMetadata = message.userMetadata;\n }\n\n announce.message = {\n event: message.payload.event,\n type: message.payload.type,\n data: message.payload.data,\n };\n\n if (message.payload.type === 'user') {\n this._listenerManager.announceUser(announce);\n } else if (message.payload.type === 'space') {\n this._listenerManager.announceSpace(announce);\n } else if (message.payload.type === 'membership') {\n this._listenerManager.announceMembership(announce);\n }\n } else if (message.messageType === 3) {\n // this is a message action\n let announce: MessageActionAnnouncement = {};\n announce.channel = channel;\n announce.subscription = subscriptionMatch;\n announce.timetoken = publishMetaData.publishTimetoken;\n announce.publisher = message.issuingClientId;\n\n announce.data = {\n messageTimetoken: message.payload.data.messageTimetoken,\n actionTimetoken: message.payload.data.actionTimetoken,\n type: message.payload.data.type,\n uuid: message.issuingClientId,\n value: message.payload.data.value,\n };\n\n announce.event = message.payload.event;\n\n this._listenerManager.announceMessageAction(announce);\n } else {\n let announce: MessageAnnouncement = {};\n announce.channel = null;\n announce.subscription = null;\n\n // deprecated -->\n announce.actualChannel = subscriptionMatch != null ? channel : null;\n announce.subscribedChannel =\n subscriptionMatch != null ? subscriptionMatch : channel;\n // <-- deprecated\n\n announce.channel = channel;\n announce.subscription = subscriptionMatch;\n announce.timetoken = publishMetaData.publishTimetoken;\n announce.publisher = message.issuingClientId;\n\n if (message.userMetadata) {\n announce.userMetadata = message.userMetadata;\n }\n\n if (this._config.cipherKey) {\n announce.message = this._crypto.decrypt(message.payload);\n } else {\n announce.message = message.payload;\n }\n\n this._listenerManager.announceMessage(announce);\n }\n });\n\n this._region = payload.metadata.region;\n this._startSubscribeLoop();\n }\n\n _stopSubscribeLoop() {\n if (this._subscribeCall) {\n if (typeof this._subscribeCall.abort === 'function') {\n this._subscribeCall.abort();\n }\n this._subscribeCall = null;\n }\n }\n}\n"],"file":"subscription_manager.js"} \ No newline at end of file diff --git a/lib/core/constants/operations.js b/lib/core/constants/operations.js index 6062480d9..cbb8cd34d 100644 --- a/lib/core/constants/operations.js +++ b/lib/core/constants/operations.js @@ -14,6 +14,9 @@ var _default = { PNUnsubscribeOperation: 'PNUnsubscribeOperation', PNPublishOperation: 'PNPublishOperation', PNSignalOperation: 'PNSignalOperation', + PNAddMessageActionOperation: 'PNAddActionOperation', + PNRemoveMessageActionOperation: 'PNRemoveMessageActionOperation', + PNGetMessageActionsOperation: 'PNGetMessageActionsOperation', PNCreateUserOperation: 'PNCreateUserOperation', PNUpdateUserOperation: 'PNUpdateUserOperation', PNDeleteUserOperation: 'PNDeleteUserOperation', diff --git a/lib/core/constants/operations.js.map b/lib/core/constants/operations.js.map index 09be7947f..801c818e3 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","PNDeleteMessagesOperation","PNFetchMessagesOperation","PNMessageCounts","PNSubscribeOperation","PNUnsubscribeOperation","PNPublishOperation","PNSignalOperation","PNCreateUserOperation","PNUpdateUserOperation","PNDeleteUserOperation","PNGetUserOperation","PNGetUsersOperation","PNCreateSpaceOperation","PNUpdateSpaceOperation","PNDeleteSpaceOperation","PNGetSpaceOperation","PNGetSpacesOperation","PNGetMembersOperation","PNUpdateMembersOperation","PNGetMembershipsOperation","PNUpdateMembershipsOperation","PNPushNotificationEnabledChannelsOperation","PNRemoveAllPushNotificationsOperation","PNWhereNowOperation","PNSetStateOperation","PNHereNowOperation","PNGetStateOperation","PNHeartbeatOperation","PNChannelGroupsOperation","PNRemoveGroupOperation","PNChannelsForGroupOperation","PNAddChannelsToGroupOperation","PNRemoveChannelsFromGroupOperation","PNAccessManagerGrant","PNAccessManagerGrantToken","PNAccessManagerAudit"],"mappings":";;;;;;eACe;AACbA,EAAAA,eAAe,EAAE,iBADJ;AAGbC,EAAAA,kBAAkB,EAAE,oBAHP;AAIbC,EAAAA,yBAAyB,EAAE,2BAJd;AAKbC,EAAAA,wBAAwB,EAAE,0BALb;AAMbC,EAAAA,eAAe,EAAE,0BANJ;AASbC,EAAAA,oBAAoB,EAAE,sBATT;AAUbC,EAAAA,sBAAsB,EAAE,wBAVX;AAWbC,EAAAA,kBAAkB,EAAE,oBAXP;AAYbC,EAAAA,iBAAiB,EAAE,mBAZN;AAgBbC,EAAAA,qBAAqB,EAAE,uBAhBV;AAiBbC,EAAAA,qBAAqB,EAAE,uBAjBV;AAkBbC,EAAAA,qBAAqB,EAAE,uBAlBV;AAmBbC,EAAAA,kBAAkB,EAAE,qBAnBP;AAoBbC,EAAAA,mBAAmB,EAAE,qBApBR;AAqBbC,EAAAA,sBAAsB,EAAE,wBArBX;AAsBbC,EAAAA,sBAAsB,EAAE,wBAtBX;AAuBbC,EAAAA,sBAAsB,EAAE,wBAvBX;AAwBbC,EAAAA,mBAAmB,EAAE,sBAxBR;AAyBbC,EAAAA,oBAAoB,EAAE,sBAzBT;AA0BbC,EAAAA,qBAAqB,EAAE,uBA1BV;AA2BbC,EAAAA,wBAAwB,EAAE,0BA3Bb;AA4BbC,EAAAA,yBAAyB,EAAE,2BA5Bd;AA6BbC,EAAAA,4BAA4B,EAAE,8BA7BjB;AAgCbC,EAAAA,0CAA0C,EAAE,4CAhC/B;AAiCbC,EAAAA,qCAAqC,EAAE,uCAjC1B;AAqCbC,EAAAA,mBAAmB,EAAE,qBArCR;AAsCbC,EAAAA,mBAAmB,EAAE,qBAtCR;AAuCbC,EAAAA,kBAAkB,EAAE,oBAvCP;AAwCbC,EAAAA,mBAAmB,EAAE,qBAxCR;AAyCbC,EAAAA,oBAAoB,EAAE,sBAzCT;AA6CbC,EAAAA,wBAAwB,EAAE,0BA7Cb;AA8CbC,EAAAA,sBAAsB,EAAE,wBA9CX;AA+CbC,EAAAA,2BAA2B,EAAE,6BA/ChB;AAgDbC,EAAAA,6BAA6B,EAAE,+BAhDlB;AAiDbC,EAAAA,kCAAkC,EAAE,oCAjDvB;AAqDbC,EAAAA,oBAAoB,EAAE,sBArDT;AAsDbC,EAAAA,yBAAyB,EAAE,2BAtDd;AAuDbC,EAAAA,oBAAoB,EAAE;AAvDT,C","sourcesContent":["/* @flow */\nexport default {\n PNTimeOperation: 'PNTimeOperation',\n\n PNHistoryOperation: 'PNHistoryOperation',\n PNDeleteMessagesOperation: 'PNDeleteMessagesOperation',\n PNFetchMessagesOperation: 'PNFetchMessagesOperation',\n PNMessageCounts: 'PNMessageCountsOperation',\n\n // pubsub\n PNSubscribeOperation: 'PNSubscribeOperation',\n PNUnsubscribeOperation: 'PNUnsubscribeOperation',\n PNPublishOperation: 'PNPublishOperation',\n PNSignalOperation: 'PNSignalOperation',\n\n // Objects API\n\n PNCreateUserOperation: 'PNCreateUserOperation',\n PNUpdateUserOperation: 'PNUpdateUserOperation',\n PNDeleteUserOperation: 'PNDeleteUserOperation',\n PNGetUserOperation: 'PNGetUsersOperation',\n PNGetUsersOperation: 'PNGetUsersOperation',\n PNCreateSpaceOperation: 'PNCreateSpaceOperation',\n PNUpdateSpaceOperation: 'PNUpdateSpaceOperation',\n PNDeleteSpaceOperation: 'PNDeleteSpaceOperation',\n PNGetSpaceOperation: 'PNGetSpacesOperation',\n PNGetSpacesOperation: 'PNGetSpacesOperation',\n PNGetMembersOperation: 'PNGetMembersOperation',\n PNUpdateMembersOperation: 'PNUpdateMembersOperation',\n PNGetMembershipsOperation: 'PNGetMembershipsOperation',\n PNUpdateMembershipsOperation: 'PNUpdateMembershipsOperation',\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 PNAccessManagerGrantToken: 'PNAccessManagerGrantToken',\n PNAccessManagerAudit: 'PNAccessManagerAudit',\n //\n\n};\n"],"file":"operations.js"} \ No newline at end of file +{"version":3,"sources":["core/constants/operations.js"],"names":["PNTimeOperation","PNHistoryOperation","PNDeleteMessagesOperation","PNFetchMessagesOperation","PNMessageCounts","PNSubscribeOperation","PNUnsubscribeOperation","PNPublishOperation","PNSignalOperation","PNAddMessageActionOperation","PNRemoveMessageActionOperation","PNGetMessageActionsOperation","PNCreateUserOperation","PNUpdateUserOperation","PNDeleteUserOperation","PNGetUserOperation","PNGetUsersOperation","PNCreateSpaceOperation","PNUpdateSpaceOperation","PNDeleteSpaceOperation","PNGetSpaceOperation","PNGetSpacesOperation","PNGetMembersOperation","PNUpdateMembersOperation","PNGetMembershipsOperation","PNUpdateMembershipsOperation","PNPushNotificationEnabledChannelsOperation","PNRemoveAllPushNotificationsOperation","PNWhereNowOperation","PNSetStateOperation","PNHereNowOperation","PNGetStateOperation","PNHeartbeatOperation","PNChannelGroupsOperation","PNRemoveGroupOperation","PNChannelsForGroupOperation","PNAddChannelsToGroupOperation","PNRemoveChannelsFromGroupOperation","PNAccessManagerGrant","PNAccessManagerGrantToken","PNAccessManagerAudit"],"mappings":";;;;;;eACe;AACbA,EAAAA,eAAe,EAAE,iBADJ;AAGbC,EAAAA,kBAAkB,EAAE,oBAHP;AAIbC,EAAAA,yBAAyB,EAAE,2BAJd;AAKbC,EAAAA,wBAAwB,EAAE,0BALb;AAMbC,EAAAA,eAAe,EAAE,0BANJ;AASbC,EAAAA,oBAAoB,EAAE,sBATT;AAUbC,EAAAA,sBAAsB,EAAE,wBAVX;AAWbC,EAAAA,kBAAkB,EAAE,oBAXP;AAYbC,EAAAA,iBAAiB,EAAE,mBAZN;AAebC,EAAAA,2BAA2B,EAAE,sBAfhB;AAgBbC,EAAAA,8BAA8B,EAAE,gCAhBnB;AAiBbC,EAAAA,4BAA4B,EAAE,8BAjBjB;AAqBbC,EAAAA,qBAAqB,EAAE,uBArBV;AAsBbC,EAAAA,qBAAqB,EAAE,uBAtBV;AAuBbC,EAAAA,qBAAqB,EAAE,uBAvBV;AAwBbC,EAAAA,kBAAkB,EAAE,qBAxBP;AAyBbC,EAAAA,mBAAmB,EAAE,qBAzBR;AA0BbC,EAAAA,sBAAsB,EAAE,wBA1BX;AA2BbC,EAAAA,sBAAsB,EAAE,wBA3BX;AA4BbC,EAAAA,sBAAsB,EAAE,wBA5BX;AA6BbC,EAAAA,mBAAmB,EAAE,sBA7BR;AA8BbC,EAAAA,oBAAoB,EAAE,sBA9BT;AA+BbC,EAAAA,qBAAqB,EAAE,uBA/BV;AAgCbC,EAAAA,wBAAwB,EAAE,0BAhCb;AAiCbC,EAAAA,yBAAyB,EAAE,2BAjCd;AAkCbC,EAAAA,4BAA4B,EAAE,8BAlCjB;AAqCbC,EAAAA,0CAA0C,EAAE,4CArC/B;AAsCbC,EAAAA,qCAAqC,EAAE,uCAtC1B;AA0CbC,EAAAA,mBAAmB,EAAE,qBA1CR;AA2CbC,EAAAA,mBAAmB,EAAE,qBA3CR;AA4CbC,EAAAA,kBAAkB,EAAE,oBA5CP;AA6CbC,EAAAA,mBAAmB,EAAE,qBA7CR;AA8CbC,EAAAA,oBAAoB,EAAE,sBA9CT;AAkDbC,EAAAA,wBAAwB,EAAE,0BAlDb;AAmDbC,EAAAA,sBAAsB,EAAE,wBAnDX;AAoDbC,EAAAA,2BAA2B,EAAE,6BApDhB;AAqDbC,EAAAA,6BAA6B,EAAE,+BArDlB;AAsDbC,EAAAA,kCAAkC,EAAE,oCAtDvB;AA0DbC,EAAAA,oBAAoB,EAAE,sBA1DT;AA2DbC,EAAAA,yBAAyB,EAAE,2BA3Dd;AA4DbC,EAAAA,oBAAoB,EAAE;AA5DT,C","sourcesContent":["/* @flow */\nexport default {\n PNTimeOperation: 'PNTimeOperation',\n\n PNHistoryOperation: 'PNHistoryOperation',\n PNDeleteMessagesOperation: 'PNDeleteMessagesOperation',\n PNFetchMessagesOperation: 'PNFetchMessagesOperation',\n PNMessageCounts: 'PNMessageCountsOperation',\n\n // pubsub\n PNSubscribeOperation: 'PNSubscribeOperation',\n PNUnsubscribeOperation: 'PNUnsubscribeOperation',\n PNPublishOperation: 'PNPublishOperation',\n PNSignalOperation: 'PNSignalOperation',\n\n // Actions API\n PNAddMessageActionOperation: 'PNAddActionOperation',\n PNRemoveMessageActionOperation: 'PNRemoveMessageActionOperation',\n PNGetMessageActionsOperation: 'PNGetMessageActionsOperation',\n\n // Objects API\n\n PNCreateUserOperation: 'PNCreateUserOperation',\n PNUpdateUserOperation: 'PNUpdateUserOperation',\n PNDeleteUserOperation: 'PNDeleteUserOperation',\n PNGetUserOperation: 'PNGetUsersOperation',\n PNGetUsersOperation: 'PNGetUsersOperation',\n PNCreateSpaceOperation: 'PNCreateSpaceOperation',\n PNUpdateSpaceOperation: 'PNUpdateSpaceOperation',\n PNDeleteSpaceOperation: 'PNDeleteSpaceOperation',\n PNGetSpaceOperation: 'PNGetSpacesOperation',\n PNGetSpacesOperation: 'PNGetSpacesOperation',\n PNGetMembersOperation: 'PNGetMembersOperation',\n PNUpdateMembersOperation: 'PNUpdateMembersOperation',\n PNGetMembershipsOperation: 'PNGetMembershipsOperation',\n PNUpdateMembershipsOperation: 'PNUpdateMembershipsOperation',\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 PNAccessManagerGrantToken: 'PNAccessManagerGrantToken',\n PNAccessManagerAudit: 'PNAccessManagerAudit',\n //\n\n};\n"],"file":"operations.js"} \ No newline at end of file diff --git a/lib/core/endpoints/actions/add_message_action.js b/lib/core/endpoints/actions/add_message_action.js new file mode 100644 index 000000000..68e9c1321 --- /dev/null +++ b/lib/core/endpoints/actions/add_message_action.js @@ -0,0 +1,80 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.getOperation = getOperation; +exports.validateParams = validateParams; +exports.usePost = usePost; +exports.postURL = postURL; +exports.getRequestTimeout = getRequestTimeout; +exports.getRequestHeaders = getRequestHeaders; +exports.isAuthSupported = isAuthSupported; +exports.prepareParams = prepareParams; +exports.postPayload = postPayload; +exports.handleResponse = handleResponse; + +var _flow_interfaces = require("../../flow_interfaces"); + +var _operations = _interopRequireDefault(require("../../constants/operations")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function getOperation() { + return _operations["default"].PNAddMessageActionOperation; +} + +function validateParams(_ref, incomingParams) { + var config = _ref.config; + var action = incomingParams.action, + channel = incomingParams.channel, + messageTimetoken = incomingParams.messageTimetoken; + if (!messageTimetoken) return 'Missing message timetoken'; + if (!config.subscribeKey) return 'Missing Subscribe Key'; + if (!channel) return 'Missing message channel'; + if (!action) return 'Missing Action'; + if (!action.value) return 'Missing Action.value'; + if (!action.type) return 'Missing Action.type'; + if (action.type.length > 15) return 'Action.type value exceed maximum length of 15'; +} + +function usePost() { + return true; +} + +function postURL(_ref2, incomingParams) { + var config = _ref2.config; + var channel = incomingParams.channel, + messageTimetoken = incomingParams.messageTimetoken; + return "/v1/message-actions/".concat(config.subscribeKey, "/channel/").concat(channel, "/message/").concat(messageTimetoken); +} + +function getRequestTimeout(_ref3) { + var config = _ref3.config; + return config.getTransactionTimeout(); +} + +function getRequestHeaders() { + return { + 'Content-Type': 'application/json' + }; +} + +function isAuthSupported() { + return true; +} + +function prepareParams() { + return {}; +} + +function postPayload(modules, incomingParams) { + return incomingParams.action; +} + +function handleResponse(modules, addMessageActionResponse) { + return { + data: addMessageActionResponse.data + }; +} +//# sourceMappingURL=add_message_action.js.map diff --git a/lib/core/endpoints/actions/add_message_action.js.map b/lib/core/endpoints/actions/add_message_action.js.map new file mode 100644 index 000000000..18a43c984 --- /dev/null +++ b/lib/core/endpoints/actions/add_message_action.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["core/endpoints/actions/add_message_action.js"],"names":["getOperation","operationConstants","PNAddMessageActionOperation","validateParams","incomingParams","config","action","channel","messageTimetoken","subscribeKey","value","type","length","usePost","postURL","getRequestTimeout","getTransactionTimeout","getRequestHeaders","isAuthSupported","prepareParams","postPayload","modules","handleResponse","addMessageActionResponse","data"],"mappings":";;;;;;;;;;;;;;;;AAEA;;AAKA;;;;AAGO,SAASA,YAAT,GAAgC;AACrC,SAAOC,uBAAmBC,2BAA1B;AACD;;AAEM,SAASC,cAAT,OAELC,cAFK,EAGL;AAAA,MAFEC,MAEF,QAFEA,MAEF;AAAA,MACMC,MADN,GAC4CF,cAD5C,CACME,MADN;AAAA,MACcC,OADd,GAC4CH,cAD5C,CACcG,OADd;AAAA,MACuBC,gBADvB,GAC4CJ,cAD5C,CACuBI,gBADvB;AAGA,MAAI,CAACA,gBAAL,EAAuB,OAAO,2BAAP;AACvB,MAAI,CAACH,MAAM,CAACI,YAAZ,EAA0B,OAAO,uBAAP;AAC1B,MAAI,CAACF,OAAL,EAAc,OAAO,yBAAP;AACd,MAAI,CAACD,MAAL,EAAa,OAAO,gBAAP;AACb,MAAI,CAACA,MAAM,CAACI,KAAZ,EAAmB,OAAO,sBAAP;AACnB,MAAI,CAACJ,MAAM,CAACK,IAAZ,EAAkB,OAAO,qBAAP;AAClB,MAAIL,MAAM,CAACK,IAAP,CAAYC,MAAZ,GAAqB,EAAzB,EAA6B,OAAO,+CAAP;AAC9B;;AAEM,SAASC,OAAT,GAAmB;AACxB,SAAO,IAAP;AACD;;AAEM,SAASC,OAAT,QAELV,cAFK,EAGG;AAAA,MAFNC,MAEM,SAFNA,MAEM;AAAA,MACFE,OADE,GAC4BH,cAD5B,CACFG,OADE;AAAA,MACOC,gBADP,GAC4BJ,cAD5B,CACOI,gBADP;AAGR,uCAA8BH,MAAM,CAACI,YAArC,sBAA6DF,OAA7D,sBAAgFC,gBAAhF;AACD;;AAEM,SAASO,iBAAT,QAAsD;AAAA,MAAzBV,MAAyB,SAAzBA,MAAyB;AAC3D,SAAOA,MAAM,CAACW,qBAAP,EAAP;AACD;;AAEM,SAASC,iBAAT,GAAqC;AAC1C,SAAO;AAAE,oBAAgB;AAAlB,GAAP;AACD;;AAEM,SAASC,eAAT,GAA2B;AAChC,SAAO,IAAP;AACD;;AAEM,SAASC,aAAT,GAAiC;AACtC,SAAO,EAAP;AACD;;AAEM,SAASC,WAAT,CACLC,OADK,EAELjB,cAFK,EAGG;AACR,SAAOA,cAAc,CAACE,MAAtB;AACD;;AAEM,SAASgB,cAAT,CACLD,OADK,EAELE,wBAFK,EAGqB;AAC1B,SAAO;AAAEC,IAAAA,IAAI,EAAED,wBAAwB,CAACC;AAAjC,GAAP;AACD","sourcesContent":["/* @flow */\n\nimport {\n AddMessageActionInput,\n AddMessageActionResponse,\n ModulesInject,\n} from '../../flow_interfaces';\nimport operationConstants from '../../constants/operations';\n\n\nexport function getOperation(): string {\n return operationConstants.PNAddMessageActionOperation;\n}\n\nexport function validateParams(\n { config }: ModulesInject,\n incomingParams: AddMessageActionInput\n) {\n let { action, channel, messageTimetoken } = incomingParams;\n\n if (!messageTimetoken) return 'Missing message timetoken';\n if (!config.subscribeKey) return 'Missing Subscribe Key';\n if (!channel) return 'Missing message channel';\n if (!action) return 'Missing Action';\n if (!action.value) return 'Missing Action.value';\n if (!action.type) return 'Missing Action.type';\n if (action.type.length > 15) return 'Action.type value exceed maximum length of 15';\n}\n\nexport function usePost() {\n return true;\n}\n\nexport function postURL(\n { config }: ModulesInject,\n incomingParams: AddMessageActionInput\n): string {\n let { channel, messageTimetoken } = incomingParams;\n\n return `/v1/message-actions/${config.subscribeKey}/channel/${channel}/message/${messageTimetoken}`;\n}\n\nexport function getRequestTimeout({ config }: ModulesInject) {\n return config.getTransactionTimeout();\n}\n\nexport function getRequestHeaders(): Object {\n return { 'Content-Type': 'application/json' };\n}\n\nexport function isAuthSupported() {\n return true;\n}\n\nexport function prepareParams(): Object {\n return {};\n}\n\nexport function postPayload(\n modules: ModulesInject,\n incomingParams: AddMessageActionInput\n): string {\n return incomingParams.action;\n}\n\nexport function handleResponse(\n modules: ModulesInject,\n addMessageActionResponse: Object\n): AddMessageActionResponse {\n return { data: addMessageActionResponse.data };\n}\n"],"file":"add_message_action.js"} \ No newline at end of file diff --git a/lib/core/endpoints/actions/get_message_actions.js b/lib/core/endpoints/actions/get_message_actions.js new file mode 100644 index 000000000..031fad17d --- /dev/null +++ b/lib/core/endpoints/actions/get_message_actions.js @@ -0,0 +1,69 @@ +"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 = require("../../flow_interfaces"); + +var _operations = _interopRequireDefault(require("../../constants/operations")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function getOperation() { + return _operations["default"].PNGetMessageActionsOperation; +} + +function validateParams(_ref, incomingParams) { + var config = _ref.config; + var channel = incomingParams.channel; + if (!config.subscribeKey) return 'Missing Subscribe Key'; + if (!channel) return 'Missing message channel'; +} + +function getURL(_ref2, incomingParams) { + var config = _ref2.config; + var channel = incomingParams.channel; + return "/v1/message-actions/".concat(config.subscribeKey, "/channel/").concat(channel); +} + +function getRequestTimeout(_ref3) { + var config = _ref3.config; + return config.getTransactionTimeout(); +} + +function isAuthSupported() { + return true; +} + +function prepareParams(modules, incomingParams) { + var limit = incomingParams.limit, + start = incomingParams.start, + end = incomingParams.end; + var outgoingParams = {}; + if (limit) outgoingParams.limit = limit; + if (start) outgoingParams.start = start; + if (end) outgoingParams.end = end; + return outgoingParams; +} + +function handleResponse(modules, getMessageActionsResponse) { + var response = { + data: getMessageActionsResponse.data + }; + + if (response.data.length) { + response.end = response.data[response.data.length - 1].actionTimetoken; + response.start = response.data[0].actionTimetoken; + } + + return response; +} +//# sourceMappingURL=get_message_actions.js.map diff --git a/lib/core/endpoints/actions/get_message_actions.js.map b/lib/core/endpoints/actions/get_message_actions.js.map new file mode 100644 index 000000000..6cde03101 --- /dev/null +++ b/lib/core/endpoints/actions/get_message_actions.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["core/endpoints/actions/get_message_actions.js"],"names":["getOperation","operationConstants","PNGetMessageActionsOperation","validateParams","incomingParams","config","channel","subscribeKey","getURL","getRequestTimeout","getTransactionTimeout","isAuthSupported","prepareParams","modules","limit","start","end","outgoingParams","handleResponse","getMessageActionsResponse","response","data","length","actionTimetoken"],"mappings":";;;;;;;;;;;;;AAEA;;AAKA;;;;AAGO,SAASA,YAAT,GAAgC;AACrC,SAAOC,uBAAmBC,4BAA1B;AACD;;AAEM,SAASC,cAAT,OAELC,cAFK,EAGL;AAAA,MAFEC,MAEF,QAFEA,MAEF;AAAA,MACMC,OADN,GACkBF,cADlB,CACME,OADN;AAGA,MAAI,CAACD,MAAM,CAACE,YAAZ,EAA0B,OAAO,uBAAP;AAC1B,MAAI,CAACD,OAAL,EAAc,OAAO,yBAAP;AACf;;AAGM,SAASE,MAAT,QAELJ,cAFK,EAGG;AAAA,MAFNC,MAEM,SAFNA,MAEM;AAAA,MACFC,OADE,GACUF,cADV,CACFE,OADE;AAGR,uCAA8BD,MAAM,CAACE,YAArC,sBAA6DD,OAA7D;AACD;;AAEM,SAASG,iBAAT,QAAsD;AAAA,MAAzBJ,MAAyB,SAAzBA,MAAyB;AAC3D,SAAOA,MAAM,CAACK,qBAAP,EAAP;AACD;;AAEM,SAASC,eAAT,GAA2B;AAChC,SAAO,IAAP;AACD;;AAEM,SAASC,aAAT,CACLC,OADK,EAELT,cAFK,EAGG;AAAA,MACAU,KADA,GACsBV,cADtB,CACAU,KADA;AAAA,MACOC,KADP,GACsBX,cADtB,CACOW,KADP;AAAA,MACcC,GADd,GACsBZ,cADtB,CACcY,GADd;AAER,MAAIC,cAAsB,GAAG,EAA7B;AAEA,MAAIH,KAAJ,EAAWG,cAAc,CAACH,KAAf,GAAuBA,KAAvB;AACX,MAAIC,KAAJ,EAAWE,cAAc,CAACF,KAAf,GAAuBA,KAAvB;AACX,MAAIC,GAAJ,EAASC,cAAc,CAACD,GAAf,GAAqBA,GAArB;AAET,SAAOC,cAAP;AACD;;AAEM,SAASC,cAAT,CACLL,OADK,EAELM,yBAFK,EAGsB;AAE3B,MAAIC,QAAQ,GAAG;AAAEC,IAAAA,IAAI,EAAEF,yBAAyB,CAACE;AAAlC,GAAf;;AAEA,MAAID,QAAQ,CAACC,IAAT,CAAcC,MAAlB,EAA0B;AACxBF,IAAAA,QAAQ,CAACJ,GAAT,GAAeI,QAAQ,CAACC,IAAT,CAAcD,QAAQ,CAACC,IAAT,CAAcC,MAAd,GAAuB,CAArC,EAAwCC,eAAvD;AACAH,IAAAA,QAAQ,CAACL,KAAT,GAAiBK,QAAQ,CAACC,IAAT,CAAc,CAAd,EAAiBE,eAAlC;AACD;;AAED,SAAOH,QAAP;AACD","sourcesContent":["/* @flow */\n\nimport {\n GetMessageActionsInput,\n GetMessageActionsResponse,\n ModulesInject,\n} from '../../flow_interfaces';\nimport operationConstants from '../../constants/operations';\n\n\nexport function getOperation(): string {\n return operationConstants.PNGetMessageActionsOperation;\n}\n\nexport function validateParams(\n { config }: ModulesInject,\n incomingParams: GetMessageActionsInput\n) {\n let { channel } = incomingParams;\n\n if (!config.subscribeKey) return 'Missing Subscribe Key';\n if (!channel) return 'Missing message channel';\n}\n\n\nexport function getURL(\n { config }: ModulesInject,\n incomingParams: GetMessageActionsInput\n): string {\n let { channel } = incomingParams;\n\n return `/v1/message-actions/${config.subscribeKey}/channel/${channel}`;\n}\n\nexport function getRequestTimeout({ config }: ModulesInject) {\n return config.getTransactionTimeout();\n}\n\nexport function isAuthSupported() {\n return true;\n}\n\nexport function prepareParams(\n modules: ModulesInject,\n incomingParams: GetMessageActionsInput\n): Object {\n const { limit, start, end } = incomingParams;\n let outgoingParams: Object = {};\n\n if (limit) outgoingParams.limit = limit;\n if (start) outgoingParams.start = start;\n if (end) outgoingParams.end = end;\n\n return outgoingParams;\n}\n\nexport function handleResponse(\n modules: ModulesInject,\n getMessageActionsResponse: Object\n): GetMessageActionsResponse {\n /** @type GetMessageActionsResponse */\n let response = { data: getMessageActionsResponse.data };\n\n if (response.data.length) {\n response.end = response.data[response.data.length - 1].actionTimetoken;\n response.start = response.data[0].actionTimetoken;\n }\n\n return response;\n}\n"],"file":"get_message_actions.js"} \ No newline at end of file diff --git a/lib/core/endpoints/actions/remove_message_action.js b/lib/core/endpoints/actions/remove_message_action.js new file mode 100644 index 000000000..11a664e7a --- /dev/null +++ b/lib/core/endpoints/actions/remove_message_action.js @@ -0,0 +1,66 @@ +"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 = _interopRequireDefault(require("../../constants/operations")); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } + +function getOperation() { + return _operations["default"].PNRemoveMessageActionOperation; +} + +function validateParams(_ref, incomingParams) { + var config = _ref.config; + var channel = incomingParams.channel, + actionTimetoken = incomingParams.actionTimetoken, + messageTimetoken = incomingParams.messageTimetoken; + if (!messageTimetoken) return 'Missing message timetoken'; + if (!actionTimetoken) return 'Missing action timetoken'; + if (!config.subscribeKey) return 'Missing Subscribe Key'; + if (!channel) return 'Missing message channel'; +} + +function useDelete() { + return true; +} + +function getURL(_ref2, incomingParams) { + var config = _ref2.config; + var channel = incomingParams.channel, + actionTimetoken = incomingParams.actionTimetoken, + messageTimetoken = incomingParams.messageTimetoken; + return "/v1/message-actions/".concat(config.subscribeKey, "/channel/").concat(channel, "/message/").concat(messageTimetoken, "/action/").concat(actionTimetoken); +} + +function getRequestTimeout(_ref3) { + var config = _ref3.config; + return config.getTransactionTimeout(); +} + +function isAuthSupported() { + return true; +} + +function prepareParams() { + return {}; +} + +function handleResponse(modules, removeMessageActionResponse) { + return { + data: removeMessageActionResponse.data + }; +} +//# sourceMappingURL=remove_message_action.js.map diff --git a/lib/core/endpoints/actions/remove_message_action.js.map b/lib/core/endpoints/actions/remove_message_action.js.map new file mode 100644 index 000000000..8c39c1312 --- /dev/null +++ b/lib/core/endpoints/actions/remove_message_action.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["core/endpoints/actions/remove_message_action.js"],"names":["getOperation","operationConstants","PNRemoveMessageActionOperation","validateParams","incomingParams","config","channel","actionTimetoken","messageTimetoken","subscribeKey","useDelete","getURL","getRequestTimeout","getTransactionTimeout","isAuthSupported","prepareParams","handleResponse","modules","removeMessageActionResponse","data"],"mappings":";;;;;;;;;;;;;;AAEA;;AAKA;;;;AAGO,SAASA,YAAT,GAAgC;AACrC,SAAOC,uBAAmBC,8BAA1B;AACD;;AAEM,SAASC,cAAT,OAELC,cAFK,EAGL;AAAA,MAFEC,MAEF,QAFEA,MAEF;AAAA,MACMC,OADN,GACqDF,cADrD,CACME,OADN;AAAA,MACeC,eADf,GACqDH,cADrD,CACeG,eADf;AAAA,MACgCC,gBADhC,GACqDJ,cADrD,CACgCI,gBADhC;AAGA,MAAI,CAACA,gBAAL,EAAuB,OAAO,2BAAP;AACvB,MAAI,CAACD,eAAL,EAAsB,OAAO,0BAAP;AACtB,MAAI,CAACF,MAAM,CAACI,YAAZ,EAA0B,OAAO,uBAAP;AAC1B,MAAI,CAACH,OAAL,EAAc,OAAO,yBAAP;AACf;;AAEM,SAASI,SAAT,GAAqB;AAC1B,SAAO,IAAP;AACD;;AAEM,SAASC,MAAT,QAELP,cAFK,EAGG;AAAA,MAFNC,MAEM,SAFNA,MAEM;AAAA,MACFC,OADE,GAC6CF,cAD7C,CACFE,OADE;AAAA,MACOC,eADP,GAC6CH,cAD7C,CACOG,eADP;AAAA,MACwBC,gBADxB,GAC6CJ,cAD7C,CACwBI,gBADxB;AAGR,uCAA8BH,MAAM,CAACI,YAArC,sBAA6DH,OAA7D,sBAAgFE,gBAAhF,qBAA2GD,eAA3G;AACD;;AAEM,SAASK,iBAAT,QAAsD;AAAA,MAAzBP,MAAyB,SAAzBA,MAAyB;AAC3D,SAAOA,MAAM,CAACQ,qBAAP,EAAP;AACD;;AAEM,SAASC,eAAT,GAA2B;AAChC,SAAO,IAAP;AACD;;AAEM,SAASC,aAAT,GAAiC;AACtC,SAAO,EAAP;AACD;;AAEM,SAASC,cAAT,CACLC,OADK,EAELC,2BAFK,EAGwB;AAC7B,SAAO;AAAEC,IAAAA,IAAI,EAAED,2BAA2B,CAACC;AAApC,GAAP;AACD","sourcesContent":["/* @flow */\n\nimport {\n RemoveMessageActionInput,\n RemoveMessageActionResponse,\n ModulesInject,\n} from '../../flow_interfaces';\nimport operationConstants from '../../constants/operations';\n\n\nexport function getOperation(): string {\n return operationConstants.PNRemoveMessageActionOperation;\n}\n\nexport function validateParams(\n { config }: ModulesInject,\n incomingParams: RemoveMessageActionInput\n) {\n let { channel, actionTimetoken, messageTimetoken } = incomingParams;\n\n if (!messageTimetoken) return 'Missing message timetoken';\n if (!actionTimetoken) return 'Missing action timetoken';\n if (!config.subscribeKey) return 'Missing Subscribe Key';\n if (!channel) return 'Missing message channel';\n}\n\nexport function useDelete() {\n return true;\n}\n\nexport function getURL(\n { config }: ModulesInject,\n incomingParams: RemoveMessageActionInput\n): string {\n let { channel, actionTimetoken, messageTimetoken } = incomingParams;\n\n return `/v1/message-actions/${config.subscribeKey}/channel/${channel}/message/${messageTimetoken}/action/${actionTimetoken}`;\n}\n\nexport function getRequestTimeout({ config }: ModulesInject) {\n return config.getTransactionTimeout();\n}\n\nexport function isAuthSupported() {\n return true;\n}\n\nexport function prepareParams(): Object {\n return {};\n}\n\nexport function handleResponse(\n modules: ModulesInject,\n removeMessageActionResponse: Object\n): RemoveMessageActionResponse {\n return { data: removeMessageActionResponse.data };\n}\n"],"file":"remove_message_action.js"} \ No newline at end of file diff --git a/lib/core/endpoints/fetch_messages.js b/lib/core/endpoints/fetch_messages.js index 86ed8104b..e23f20e0a 100644 --- a/lib/core/endpoints/fetch_messages.js +++ b/lib/core/endpoints/fetch_messages.js @@ -36,18 +36,27 @@ function getOperation() { } function validateParams(modules, incomingParams) { - var channels = incomingParams.channels; + var channels = incomingParams.channels, + _incomingParams$inclu = incomingParams.includeMessageActions, + includeMessageActions = _incomingParams$inclu === void 0 ? false : _incomingParams$inclu; var config = modules.config; if (!channels || channels.length === 0) return 'Missing channels'; if (!config.subscribeKey) return 'Missing Subscribe Key'; + + if (includeMessageActions && channels.length > 1) { + throw new TypeError('History can return actions data for a single channel only. Either pass a single channel or disable the includeMessageActions flag.'); + } } function getURL(modules, incomingParams) { var _incomingParams$chann = incomingParams.channels, - channels = _incomingParams$chann === void 0 ? [] : _incomingParams$chann; + channels = _incomingParams$chann === void 0 ? [] : _incomingParams$chann, + _incomingParams$inclu2 = incomingParams.includeMessageActions, + includeMessageActions = _incomingParams$inclu2 === void 0 ? false : _incomingParams$inclu2; var config = modules.config; + var endpoint = !includeMessageActions ? 'history' : 'history-with-actions'; var stringifiedChannels = channels.length > 0 ? channels.join(',') : ','; - return "/v3/history/sub-key/".concat(config.subscribeKey, "/channel/").concat(_utils["default"].encodeString(stringifiedChannels)); + return "/v3/".concat(endpoint, "/sub-key/").concat(config.subscribeKey, "/channel/").concat(_utils["default"].encodeString(stringifiedChannels)); } function getRequestTimeout(_ref) { @@ -64,12 +73,15 @@ function prepareParams(modules, incomingParams) { end = incomingParams.end, count = incomingParams.count, _incomingParams$strin = incomingParams.stringifiedTimeToken, - stringifiedTimeToken = _incomingParams$strin === void 0 ? false : _incomingParams$strin; + stringifiedTimeToken = _incomingParams$strin === void 0 ? false : _incomingParams$strin, + _incomingParams$inclu3 = incomingParams.includeMeta, + includeMeta = _incomingParams$inclu3 === void 0 ? false : _incomingParams$inclu3; var outgoingParams = {}; if (count) outgoingParams.max = count; if (start) outgoingParams.start = start; if (end) outgoingParams.end = end; if (stringifiedTimeToken) outgoingParams.string_message_token = 'true'; + if (includeMeta) outgoingParams.include_meta = 'true'; return outgoingParams; } @@ -85,6 +97,15 @@ function handleResponse(modules, serverResponse) { announce.subscription = null; announce.timetoken = messageEnvelope.timetoken; announce.message = __processMessage(modules, messageEnvelope.message); + + if (messageEnvelope.actions) { + announce.data = messageEnvelope.actions; + } + + if (messageEnvelope.meta) { + announce.meta = messageEnvelope.meta; + } + response.channels[channelName].push(announce); }); }); diff --git a/lib/core/endpoints/fetch_messages.js.map b/lib/core/endpoints/fetch_messages.js.map index 6c5922498..2d47187b9 100644 --- a/lib/core/endpoints/fetch_messages.js.map +++ b/lib/core/endpoints/fetch_messages.js.map @@ -1 +1 @@ -{"version":3,"sources":["core/endpoints/fetch_messages.js"],"names":["__processMessage","modules","message","config","crypto","cipherKey","decrypt","e","getOperation","operationConstants","PNFetchMessagesOperation","validateParams","incomingParams","channels","length","subscribeKey","getURL","stringifiedChannels","join","utils","encodeString","getRequestTimeout","getTransactionTimeout","isAuthSupported","prepareParams","start","end","count","stringifiedTimeToken","outgoingParams","max","string_message_token","handleResponse","serverResponse","response","Object","keys","forEach","channelName","messageEnvelope","announce","channel","subscription","timetoken","push"],"mappings":"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","sourcesContent":["/* @flow */\n\nimport {\n FetchMessagesArguments,\n FetchMessagesResponse,\n MessageAnnouncement,\n HistoryV3Response,\n ModulesInject,\n} 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.PNFetchMessagesOperation;\n}\n\nexport function validateParams(\n modules: ModulesInject,\n incomingParams: FetchMessagesArguments\n) {\n let { channels } = incomingParams;\n let { config } = modules;\n\n if (!channels || channels.length === 0) return 'Missing channels';\n if (!config.subscribeKey) return 'Missing Subscribe Key';\n}\n\nexport function getURL(\n modules: ModulesInject,\n incomingParams: FetchMessagesArguments\n): string {\n let { channels = [] } = incomingParams;\n let { config } = modules;\n\n let stringifiedChannels = channels.length > 0 ? channels.join(',') : ',';\n return `/v3/history/sub-key/${\n config.subscribeKey\n }/channel/${utils.encodeString(stringifiedChannels)}`;\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(\n modules: ModulesInject,\n incomingParams: FetchMessagesArguments\n): Object {\n const { start, end, count, stringifiedTimeToken = false } = incomingParams;\n let outgoingParams: Object = {};\n\n if (count) outgoingParams.max = count;\n if (start) outgoingParams.start = start;\n if (end) outgoingParams.end = end;\n if (stringifiedTimeToken) outgoingParams.string_message_token = 'true';\n\n return outgoingParams;\n}\n\nexport function handleResponse(\n modules: ModulesInject,\n serverResponse: HistoryV3Response\n): FetchMessagesResponse {\n const response: FetchMessagesResponse = {\n channels: {},\n };\n\n Object.keys(serverResponse.channels || {}).forEach((channelName) => {\n response.channels[channelName] = [];\n\n (serverResponse.channels[channelName] || []).forEach((messageEnvelope) => {\n let announce: MessageAnnouncement = {};\n announce.channel = channelName;\n announce.subscription = null;\n announce.timetoken = messageEnvelope.timetoken;\n announce.message = __processMessage(modules, messageEnvelope.message);\n response.channels[channelName].push(announce);\n });\n });\n\n return response;\n}\n"],"file":"fetch_messages.js"} \ No newline at end of file +{"version":3,"sources":["core/endpoints/fetch_messages.js"],"names":["__processMessage","modules","message","config","crypto","cipherKey","decrypt","e","getOperation","operationConstants","PNFetchMessagesOperation","validateParams","incomingParams","channels","includeMessageActions","length","subscribeKey","TypeError","getURL","endpoint","stringifiedChannels","join","utils","encodeString","getRequestTimeout","getTransactionTimeout","isAuthSupported","prepareParams","start","end","count","stringifiedTimeToken","includeMeta","outgoingParams","max","string_message_token","include_meta","handleResponse","serverResponse","response","Object","keys","forEach","channelName","messageEnvelope","announce","channel","subscription","timetoken","actions","data","meta","push"],"mappings":"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","sourcesContent":["/* @flow */\n\nimport {\n FetchMessagesArguments,\n FetchMessagesResponse,\n MessageAnnouncement,\n HistoryV3Response,\n ModulesInject,\n} 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.PNFetchMessagesOperation;\n}\n\nexport function validateParams(\n modules: ModulesInject,\n incomingParams: FetchMessagesArguments\n) {\n let { channels, includeMessageActions = false } = incomingParams;\n let { config } = modules;\n\n if (!channels || channels.length === 0) return 'Missing channels';\n if (!config.subscribeKey) return 'Missing Subscribe Key';\n\n if (includeMessageActions && channels.length > 1) {\n throw new TypeError('History can return actions data for a single channel only. Either pass a single channel or disable the includeMessageActions flag.');\n }\n}\n\nexport function getURL(\n modules: ModulesInject,\n incomingParams: FetchMessagesArguments\n): string {\n let { channels = [], includeMessageActions = false } = incomingParams;\n let { config } = modules;\n const endpoint = !includeMessageActions ? 'history' : 'history-with-actions';\n\n let stringifiedChannels = channels.length > 0 ? channels.join(',') : ',';\n return `/v3/${endpoint}/sub-key/${\n config.subscribeKey\n }/channel/${utils.encodeString(stringifiedChannels)}`;\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(\n modules: ModulesInject,\n incomingParams: FetchMessagesArguments\n): Object {\n const {\n start,\n end,\n count,\n stringifiedTimeToken = false,\n includeMeta = false,\n } = incomingParams;\n let outgoingParams: Object = {};\n\n if (count) outgoingParams.max = count;\n if (start) outgoingParams.start = start;\n if (end) outgoingParams.end = end;\n if (stringifiedTimeToken) outgoingParams.string_message_token = 'true';\n if (includeMeta) outgoingParams.include_meta = 'true';\n\n return outgoingParams;\n}\n\nexport function handleResponse(\n modules: ModulesInject,\n serverResponse: HistoryV3Response\n): FetchMessagesResponse {\n const response: FetchMessagesResponse = {\n channels: {},\n };\n\n Object.keys(serverResponse.channels || {}).forEach((channelName) => {\n response.channels[channelName] = [];\n\n (serverResponse.channels[channelName] || []).forEach((messageEnvelope) => {\n let announce: MessageAnnouncement = {};\n announce.channel = channelName;\n announce.subscription = null;\n announce.timetoken = messageEnvelope.timetoken;\n announce.message = __processMessage(modules, messageEnvelope.message);\n\n if (messageEnvelope.actions) {\n announce.data = messageEnvelope.actions;\n }\n if (messageEnvelope.meta) {\n announce.meta = messageEnvelope.meta;\n }\n\n response.channels[channelName].push(announce);\n });\n });\n\n return response;\n}\n"],"file":"fetch_messages.js"} \ No newline at end of file diff --git a/lib/core/endpoints/history/get_history.js b/lib/core/endpoints/history/get_history.js index aa7f18b90..45b74b762 100644 --- a/lib/core/endpoints/history/get_history.js +++ b/lib/core/endpoints/history/get_history.js @@ -64,7 +64,9 @@ function prepareParams(modules, incomingParams) { _incomingParams$count = incomingParams.count, count = _incomingParams$count === void 0 ? 100 : _incomingParams$count, _incomingParams$strin = incomingParams.stringifiedTimeToken, - stringifiedTimeToken = _incomingParams$strin === void 0 ? false : _incomingParams$strin; + stringifiedTimeToken = _incomingParams$strin === void 0 ? false : _incomingParams$strin, + _incomingParams$inclu = incomingParams.includeMeta, + includeMeta = _incomingParams$inclu === void 0 ? false : _incomingParams$inclu; var outgoingParams = { include_token: 'true' }; @@ -73,6 +75,7 @@ function prepareParams(modules, incomingParams) { if (end) outgoingParams.end = end; if (stringifiedTimeToken) outgoingParams.string_message_token = 'true'; if (reverse != null) outgoingParams.reverse = reverse.toString(); + if (includeMeta) outgoingParams.include_meta = 'true'; return outgoingParams; } @@ -89,6 +92,11 @@ function handleResponse(modules, serverResponse) { timetoken: serverHistoryItem.timetoken, entry: __processMessage(modules, serverHistoryItem.message) }; + + if (serverHistoryItem.meta) { + item.meta = serverHistoryItem.meta; + } + response.messages.push(item); }); } diff --git a/lib/core/endpoints/history/get_history.js.map b/lib/core/endpoints/history/get_history.js.map index d86fc7090..fa476cea9 100644 --- a/lib/core/endpoints/history/get_history.js.map +++ b/lib/core/endpoints/history/get_history.js.map @@ -1 +1 @@ -{"version":3,"sources":["core/endpoints/history/get_history.js"],"names":["__processMessage","modules","message","config","crypto","cipherKey","decrypt","e","getOperation","operationConstants","PNHistoryOperation","validateParams","incomingParams","channel","subscribeKey","getURL","utils","encodeString","getRequestTimeout","getTransactionTimeout","isAuthSupported","prepareParams","start","end","reverse","count","stringifiedTimeToken","outgoingParams","include_token","string_message_token","toString","handleResponse","serverResponse","response","messages","startTimeToken","endTimeToken","Array","isArray","forEach","serverHistoryItem","item","timetoken","entry","push"],"mappings":"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","sourcesContent":["/* @flow */\n\nimport {\n FetchHistoryArguments,\n HistoryResponse,\n HistoryItem,\n ModulesInject,\n} 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(\n modules: ModulesInject,\n incomingParams: FetchHistoryArguments\n) {\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(\n modules: ModulesInject,\n incomingParams: FetchHistoryArguments\n): string {\n let { channel } = incomingParams;\n let { config } = modules;\n return `/v2/history/sub-key/${\n config.subscribeKey\n }/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(\n modules: ModulesInject,\n incomingParams: FetchHistoryArguments\n): Object {\n const {\n start,\n end,\n reverse,\n count = 100,\n stringifiedTimeToken = false,\n } = 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(\n modules: ModulesInject,\n serverResponse: FetchHistoryArguments\n): HistoryResponse {\n const response: HistoryResponse = {\n messages: [],\n startTimeToken: serverResponse[1],\n endTimeToken: serverResponse[2],\n };\n\n if (Array.isArray(serverResponse[0])) {\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\n return response;\n}\n"],"file":"get_history.js"} \ No newline at end of file +{"version":3,"sources":["core/endpoints/history/get_history.js"],"names":["__processMessage","modules","message","config","crypto","cipherKey","decrypt","e","getOperation","operationConstants","PNHistoryOperation","validateParams","incomingParams","channel","subscribeKey","getURL","utils","encodeString","getRequestTimeout","getTransactionTimeout","isAuthSupported","prepareParams","start","end","reverse","count","stringifiedTimeToken","includeMeta","outgoingParams","include_token","string_message_token","toString","include_meta","handleResponse","serverResponse","response","messages","startTimeToken","endTimeToken","Array","isArray","forEach","serverHistoryItem","item","timetoken","entry","meta","push"],"mappings":"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","sourcesContent":["/* @flow */\n\nimport {\n FetchHistoryArguments,\n HistoryResponse,\n HistoryItem,\n ModulesInject,\n} 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(\n modules: ModulesInject,\n incomingParams: FetchHistoryArguments\n) {\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(\n modules: ModulesInject,\n incomingParams: FetchHistoryArguments\n): string {\n let { channel } = incomingParams;\n let { config } = modules;\n return `/v2/history/sub-key/${\n config.subscribeKey\n }/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(\n modules: ModulesInject,\n incomingParams: FetchHistoryArguments\n): Object {\n const {\n start,\n end,\n reverse,\n count = 100,\n stringifiedTimeToken = false,\n includeMeta = false,\n } = 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 if (includeMeta) outgoingParams.include_meta = 'true';\n\n return outgoingParams;\n}\n\nexport function handleResponse(\n modules: ModulesInject,\n serverResponse: FetchHistoryArguments\n): HistoryResponse {\n const response: HistoryResponse = {\n messages: [],\n startTimeToken: serverResponse[1],\n endTimeToken: serverResponse[2],\n };\n\n if (Array.isArray(serverResponse[0])) {\n serverResponse[0].forEach((serverHistoryItem) => {\n const item: HistoryItem = {\n timetoken: serverHistoryItem.timetoken,\n entry: __processMessage(modules, serverHistoryItem.message),\n };\n\n if (serverHistoryItem.meta) {\n item.meta = serverHistoryItem.meta;\n }\n\n response.messages.push(item);\n });\n }\n\n return response;\n}\n"],"file":"get_history.js"} \ No newline at end of file diff --git a/lib/core/flow_interfaces.js.map b/lib/core/flow_interfaces.js.map index 37d094d25..ea54e55b7 100644 --- a/lib/core/flow_interfaces.js.map +++ b/lib/core/flow_interfaces.js.map @@ -1 +1 @@ -{"version":3,"sources":["core/flow_interfaces.js"],"names":["module","exports"],"mappings":";;AA+sBAA,MAAM,CAACC,OAAP,GAAiB,EAAjB","sourcesContent":["/* eslint no-unused-vars: 0 */\ndeclare module 'uuid' {\n declare function v4(): string;\n}\n\ndeclare module 'superagent' {\n declare function type(): superagent;\n}\n\nexport type CallbackStruct = {\n status: Function,\n presence: Function,\n message: Function\n}\n\nexport type ProxyStruct = {\n port: number,\n hostname: string,\n headers: Object\n}\n\nexport type KeepAliveStruct = {\n keepAlive: number,\n keepAliveMsecs: number,\n freeSocketKeepAliveTimeout: number,\n timeout: number,\n maxSockets: number,\n maxFreeSockets: number\n}\n\nexport type NetworkingModules = {\n keepAlive: ?Function,\n sendBeacon: ?Function,\n get: Function,\n post: Function,\n patch: Function\n}\n\nexport type InternalSetupStruct = {\n useSendBeacon: ?boolean, // configuration on beacon usage\n publishKey: ?string, // API key required for publishing\n subscribeKey: string, // API key required to subscribe\n cipherKey: string, // decryption keys\n origin: ?string, // an optional FQDN which will recieve calls from the SDK.\n ssl: boolean, // is SSL enabled?\n shutdown: Function, // function to call when pubnub is shutting down.\n\n sendBeacon: ?Function, // executes a call against the Beacon API\n useSendBeacon: ?boolean, // enable, disable usage of send beacons\n\n subscribeRequestTimeout: ?number, // how long to wait for subscribe requst\n transactionalRequestTimeout: ?number, // how long to wait for transactional requests\n\n proxy: ?ProxyStruct, // configuration to support proxy settings.\n\n keepAlive: ?boolean, // is keep-alive enabled?\n\n keepAliveSettings: ?KeepAliveStruct, // configuration on keep-alive usage\n\n suppressLev: ?boolean,\n\n db: Function, // get / set implementation to store data\n networking: Function // component of networking to use\n}\n\ntype DatabaseInterface = {\n get: Function,\n set: Function\n}\n\ntype EndpointKeyDefinition = {\n required: boolean\n}\n\ntype SupportedParams = {\n subscribeKey: EndpointKeyDefinition,\n uuid: EndpointKeyDefinition,\n}\n\nexport type endpointDefinition = {\n params: SupportedParams,\n timeout: number,\n url: string\n}\n\nexport type StateChangeAnnouncement = {\n state: Object,\n channels: Array,\n channelGroups: Array\n}\n\n// ****************** SUBSCRIPTIONS ********************************************\n\ntype SubscribeMetadata = {\n timetoken: number,\n region: number\n}\n\ntype PublishMetaData = {\n publishTimetoken: number,\n region: number\n}\n\ntype SubscribeMessage = {\n shard: string,\n subscriptionMatch: string,\n channel: string,\n messageType: number,\n payload: Object,\n flags: string,\n issuingClientId: string,\n subscribeKey: string,\n originationTimetoken: string,\n publishMetaData: PublishMetaData\n\n}\n\n// subscribe responses\ntype SubscribeEnvelope = {\n messages: Array,\n metadata: SubscribeMetadata;\n}\n\n// *****************************************************************************\n\n\n// ****************** Announcements ********************************************\n\ntype PresenceAnnouncement = {\n event: string,\n\n uuid: string,\n timestamp: number,\n occupancy: number,\n state: Object,\n\n subscribedChannel: string, // deprecated\n actualChannel: string, // deprecated\n\n channel: string,\n subscription: string,\n\n timetoken: number,\n userMetadata: Object\n}\n\ntype MessageAnnouncement = {\n\n message: Object,\n\n subscribedChannel: string, // deprecated\n actualChannel: string, // deprecated\n\n channel: string,\n subscription: string,\n\n timetoken: number | string,\n userMetadata: Object,\n publisher: string\n}\n\ntype SignalAnnouncement = {\n\n message: Object,\n\n channel: string,\n subscription: string,\n\n timetoken: number | string,\n userMetadata: Object,\n publisher: string\n}\n\ntype ObjectMessage = {\n event: string,\n type: string,\n data: Object\n}\n\ntype ObjectAnnouncement = {\n\n message: ObjectMessage,\n\n channel: string,\n subscription: string,\n\n timetoken: number | string,\n userMetadata: Object,\n publisher: string\n}\n\nexport type StatusAnnouncement = {\n error: boolean,\n statusCode: number,\n category: string,\n errorData: Object,\n lastTimetoken: number,\n currentTimetoken: number,\n\n // send back channel, channel groups that were affected by this operation\n affectedChannels: Array,\n affectedChannelGroups: Array,\n}\n\n// *****************************************************************************\n\n// Time endpoints\n\ntype TimeResponse = {\n timetoken: number\n};\n\n// history\ntype FetchHistoryArguments = {\n channel: string, // fetch history from a channel\n start: number | string, // start timetoken for history fetching\n end: number | string, // end timetoken for history fetching\n includeTimetoken: boolean, // include time token for each history call\n reverse: boolean,\n count: number\n}\n\n// history\nexport type MessageCounterArguments = {\n channels: Array, // fetch history from a channel\n timetoken: number | null,\n channelTimetokens: Array | null\n}\n\ntype FetchMessagesArguments = {\n channels: string, // fetch history from a channel\n start: number | string, // start timetoken for history fetching\n end: number | string, // end timetoken for history fetching\n count: number\n}\n\ntype HistoryItem = {\n timetoken: number | string | null,\n entry: any,\n}\n\ntype HistoryResponse = {\n messages: Array,\n startTimeToken: number | string,\n endTimeToken: number | string,\n}\n\n\nexport type MessageCountersResponse = {\n channels: Object\n}\n\ntype HistoryV3Response = {\n channels: Object\n}\n\n// CG endpoints\n\ntype AddChannelParams = {\n channels: Array,\n channelGroup: string,\n}\n\ntype RemoveChannelParams = {\n channels: Array,\n channelGroup: string,\n}\n\ntype DeleteGroupParams = {\n channelGroup: string,\n}\n\ntype ListAllGroupsResponse = {\n groups: Array\n}\n\ntype ListChannelsParams = {\n channelGroup: string,\n}\n\ntype ListChannelsResponse = {\n channels: Array\n}\n\n//\n\n// push\n\ntype ProvisionDeviceArgs = {\n operation: 'add' | 'remove',\n pushGateway: 'gcm' | 'apns' | 'mpns',\n device: string,\n channels: Array\n};\n\ntype ModifyDeviceArgs = {\n pushGateway: 'gcm' | 'apns' | 'mpns',\n device: string,\n channels: Array\n};\n\ntype ListChannelsArgs = {\n pushGateway: 'gcm' | 'apns' | 'mpns',\n device: string,\n};\n\ntype RemoveDeviceArgs = {\n pushGateway: 'gcm' | 'apns' | 'mpns',\n device: string,\n};\n\ntype ListPushChannelsResponse = {\n channels: Array\n}\n\n//\n\n// presence\n\ntype LeaveArguments = {\n channels: Array,\n channelGroups: Array,\n}\n\ntype HereNowArguments = {\n channels: Array,\n channelGroups: Array,\n includeUUIDs: boolean,\n includeState: boolean\n}\n\ntype WhereNowArguments = {\n uuid: string,\n}\n\ntype WhereNowResponse = {\n channels: Array,\n}\n\n//\n\ntype GetStateArguments = {\n uuid: string,\n channels: Array,\n channelGroups: Array\n}\n\ntype GetStateResponse = {\n channels: Object\n}\n\n//\n\ntype SetStateArguments = {\n channels: Array,\n channelGroups: Array,\n state: Object\n}\n\ntype SetStateResponse = {\n state: Object\n}\n\n\ntype HeartbeatArguments = {\n channels: Array,\n channelGroups: Array,\n state: Object\n}\n\n//\n\n// subscribe\n\ntype SubscribeArguments = {\n channels: Array,\n channelGroups: Array,\n timetoken: number,\n filterExpression: ?string,\n region: ?string,\n state: Object\n}\n\n//\n\n// access manager\n\ntype AuditArguments = {\n channel: string,\n channelGroup: string,\n authKeys: Array,\n}\n\ntype GrantArguments = {\n channels: Array,\n channelGroups: Array,\n ttl: number,\n read: boolean,\n write: boolean,\n manage: boolean,\n authKeys: Array\n}\n\n// Base permissions object\ninterface GrantTokenObject {\n create: boolean,\n read: boolean,\n write: boolean,\n manage: boolean,\n delete: boolean,\n}\n\ninterface GrantTokenInput {\n ttl: number,\n resources?: {\n channels?: {\n [key: String]: GrantTokenObject,\n },\n groups?: {\n [key: String]: GrantTokenObject,\n },\n users?: {\n [key: String]: GrantTokenObject,\n },\n spaces?: {\n [key: String]: GrantTokenObject,\n },\n },\n patterns?: {\n channels?: {\n [key: String]: GrantTokenObject,\n },\n groups?: {\n [key: String]: GrantTokenObject,\n },\n users?: {\n [key: String]: GrantTokenObject,\n },\n spaces?: {\n [key: String]: GrantTokenObject,\n },\n },\n meta?: Object\n}\n\ninterface GrantTokenOutput extends GrantTokenInput {\n version: number,\n timestamp: number,\n signature: Buffer\n}\n\n// token manager\n\ntype TokensDefinition = {\n user?: string,\n space?: string,\n users?: {\n [key: String]: String\n },\n spaces?: {\n [key: String]: String\n }\n};\n\ntype GetTokensInput= {\n user?: boolean,\n space?: boolean,\n users?: Array,\n spaces?: Array\n};\n\n// publish\n\ntype PublishResponse = {\n timetoken: number\n};\n\ntype PublishArguments = {\n message: Object | string | number | boolean, // the contents of the dispatch\n channel: string, // the destination of our dispatch\n sendByPost: boolean | null, // use POST when dispatching the message\n storeInHistory: boolean | null, // store the published message in remote history\n meta: Object, // psv2 supports filtering by metadata\n replicate: boolean | null // indicates to server on replication status to other data centers.\n}\n\n// signal\ntype SignalResponse = {\n timetoken: number\n};\n\ntype SignalArguments = {\n message: Object | string | number | boolean,\n channel: string\n}\n\n// Users Object\n\ntype UserListInput = {\n limit?: number,\n page?: {\n next?: string,\n prev?: string,\n },\n include?: {\n totalCount?: boolean,\n customFields?: boolean,\n }\n}\n\ntype SingleUserInput = {\n userId: string,\n include?: {\n customFields?: boolean,\n }\n}\n\ntype UsersObjectInput = {\n id: string,\n name: string,\n externalId?: string,\n profileUrl?: string,\n email?: string,\n custom?: Object,\n};\n\ntype UserResponse = {\n status: number,\n data: {\n ...UsersObjectInput,\n created: string,\n updated: string,\n eTag: string,\n },\n};\n\ntype UsersListResponse = {\n status: number,\n totalCount: number,\n next: String,\n prev: String,\n data: Array,\n};\n\n// Spaces Object\n\ntype SpaceListInput = {\n limit?: number,\n page?: {\n next?: string,\n prev?: string,\n },\n include?: {\n totalCount?: boolean,\n customFields?: boolean,\n }\n}\n\ntype SingleSpaceInput = {\n spaceId: string,\n include?: {\n customFields?: boolean,\n }\n}\n\ntype SpacesObjectInput = {\n id: string,\n name: string,\n description?: String,\n custom?: Object,\n include?: {\n customFields?: boolean,\n }\n};\n\ntype SpacesResponse = {\n status: number,\n data: {\n ...SpacesObjectInput,\n created: string,\n updated: string,\n eTag: string,\n },\n};\n\ntype SpaceResponse = {\n status: number,\n data: {\n ...SpacesObjectInput,\n created: string,\n updated: string,\n eTag: string,\n },\n};\n\ntype SpacesListResponse = {\n status: number,\n totalCount: number,\n next: String,\n prev: String,\n data: Array,\n};\n\n// Memberships Object\n\ntype MembershipsInput = {\n userId: string,\n limit?: number,\n page?: {\n next?: string,\n prev?: string,\n },\n include?: {\n totalCount?: boolean,\n customFields?: boolean,\n spaceFields?: boolean,\n customSpaceFields?: boolean,\n }\n}\n\ntype MembershipsObjectInput = {\n id: string,\n custom?: Object,\n space?: SpacesResponse,\n};\n\ntype MembershipsResponse = {\n status: number,\n data: {\n ...MembershipsObjectInput,\n created: string,\n updated: string,\n eTag: string,\n },\n};\n\ntype MembershipsListResponse = {\n status: number,\n totalCount: number,\n next: String,\n prev: String,\n data: Array,\n};\n\ninterface AddMemberships extends MembershipsInput {\n addMemberships: Array,\n}\n\ninterface UpdateMemberships extends MembershipsInput {\n updateMemberships: Array,\n}\n\ninterface RemoveMemberships extends MembershipsInput {\n removeMemberships: Array,\n}\n\ninterface AddUpdateRemoveMemberships extends AddMemberships, UpdateMemberships, RemoveMemberships {}\n\n// Members Object\n\ntype MembersInput = {\n spaceId: string,\n limit?: number,\n page?: {\n next?: string,\n prev?: string,\n },\n include?: {\n totalCount?: boolean,\n customFields?: boolean,\n userFields?: boolean,\n customUserFields?: boolean,\n }\n}\n\ntype MembersObjectInput = {\n id: string,\n custom?: Object,\n user?: UserResponse,\n};\n\ntype MembersResponse = {\n status: number,\n data: {\n ...MembersObjectInput,\n created: string,\n updated: string,\n eTag: string,\n },\n};\n\ntype MembersListResponse = {\n status: number,\n totalCount: number,\n next: String,\n prev: String,\n data: Array,\n};\n\ninterface AddMembers extends MembersInput {\n addMembers: Array,\n}\n\ninterface UpdateMembers extends MembersInput {\n updateMembers: Array,\n}\n\ninterface RemoveMembers extends MembersInput {\n removeMembers: Array,\n}\n\ninterface AddUpdateRemoveMembers extends AddMembers, UpdateMembers, RemoveMembers {}\n\n//\n\ntype ModulesInject = {\n config: Object;\n}\n\nmodule.exports = {};\n"],"file":"flow_interfaces.js"} \ No newline at end of file +{"version":3,"sources":["core/flow_interfaces.js"],"names":["module","exports"],"mappings":";;AAmxBAA,MAAM,CAACC,OAAP,GAAiB,EAAjB","sourcesContent":["/* eslint no-unused-vars: 0 */\ndeclare module 'uuid' {\n declare function v4(): string;\n}\n\ndeclare module 'superagent' {\n declare function type(): superagent;\n}\n\nexport type CallbackStruct = {\n status: Function,\n presence: Function,\n message: Function,\n signal: Function,\n messageAction: Function,\n user: Function,\n space: Function,\n membership: Function\n}\n\nexport type ProxyStruct = {\n port: number,\n hostname: string,\n headers: Object\n}\n\nexport type KeepAliveStruct = {\n keepAlive: number,\n keepAliveMsecs: number,\n freeSocketKeepAliveTimeout: number,\n timeout: number,\n maxSockets: number,\n maxFreeSockets: number\n}\n\nexport type NetworkingModules = {\n keepAlive: ?Function,\n sendBeacon: ?Function,\n get: Function,\n post: Function,\n patch: Function\n}\n\nexport type InternalSetupStruct = {\n useSendBeacon: ?boolean, // configuration on beacon usage\n publishKey: ?string, // API key required for publishing\n subscribeKey: string, // API key required to subscribe\n cipherKey: string, // decryption keys\n origin: ?string, // an optional FQDN which will recieve calls from the SDK.\n ssl: boolean, // is SSL enabled?\n shutdown: Function, // function to call when pubnub is shutting down.\n\n sendBeacon: ?Function, // executes a call against the Beacon API\n useSendBeacon: ?boolean, // enable, disable usage of send beacons\n\n subscribeRequestTimeout: ?number, // how long to wait for subscribe requst\n transactionalRequestTimeout: ?number, // how long to wait for transactional requests\n\n proxy: ?ProxyStruct, // configuration to support proxy settings.\n\n keepAlive: ?boolean, // is keep-alive enabled?\n\n keepAliveSettings: ?KeepAliveStruct, // configuration on keep-alive usage\n\n suppressLev: ?boolean,\n\n db: Function, // get / set implementation to store data\n networking: Function // component of networking to use\n}\n\ntype DatabaseInterface = {\n get: Function,\n set: Function\n}\n\ntype EndpointKeyDefinition = {\n required: boolean\n}\n\ntype SupportedParams = {\n subscribeKey: EndpointKeyDefinition,\n uuid: EndpointKeyDefinition,\n}\n\nexport type EndpointDefinition = {\n params: SupportedParams,\n headers?: Object,\n timeout: number,\n url: string\n}\n\nexport type StateChangeAnnouncement = {\n state: Object,\n channels: Array,\n channelGroups: Array\n}\n\n// ****************** SUBSCRIPTIONS ********************************************\n\ntype SubscribeMetadata = {\n timetoken: number,\n region: number\n}\n\ntype PublishMetaData = {\n publishTimetoken: number,\n region: number\n}\n\ntype SubscribeMessage = {\n shard: string,\n subscriptionMatch: string,\n channel: string,\n messageType: number,\n payload: Object,\n flags: string,\n issuingClientId: string,\n subscribeKey: string,\n originationTimetoken: string,\n publishMetaData: PublishMetaData\n\n}\n\n// subscribe responses\ntype SubscribeEnvelope = {\n messages: Array,\n metadata: SubscribeMetadata;\n}\n\n// *****************************************************************************\n\n\n// ****************** Announcements ********************************************\n\ntype PresenceAnnouncement = {\n event: string,\n\n uuid: string,\n timestamp: number,\n occupancy: number,\n state: Object,\n\n subscribedChannel: string, // deprecated\n actualChannel: string, // deprecated\n\n channel: string,\n subscription: string,\n\n timetoken: number,\n userMetadata: Object\n}\n\ntype MessageAnnouncement = {\n\n message: Object,\n\n subscribedChannel: string, // deprecated\n actualChannel: string, // deprecated\n\n channel: string,\n subscription: string,\n\n timetoken: number | string,\n userMetadata: Object,\n publisher: string\n}\n\ntype SignalAnnouncement = {\n\n message: Object,\n\n channel: string,\n subscription: string,\n\n timetoken: number | string,\n userMetadata: Object,\n publisher: string\n}\n\ntype ObjectMessage = {\n event: string,\n type: string,\n data: Object\n}\n\ntype ObjectAnnouncement = {\n\n message: ObjectMessage,\n\n channel: string,\n subscription: string,\n\n timetoken: number | string,\n userMetadata: Object,\n publisher: string\n}\n\nexport type StatusAnnouncement = {\n error: boolean,\n statusCode: number,\n category: string,\n errorData: Object,\n lastTimetoken: number,\n currentTimetoken: number,\n\n // send back channel, channel groups that were affected by this operation\n affectedChannels: Array,\n affectedChannelGroups: Array,\n}\n\n// *****************************************************************************\n\n// Time endpoints\n\ntype TimeResponse = {\n timetoken: number\n};\n\n// history\ntype FetchHistoryArguments = {\n channel: string, // fetch history from a channel\n start: number | string, // start timetoken for history fetching\n end: number | string, // end timetoken for history fetching\n includeTimetoken: boolean, // include time token for each history call\n includeMeta: boolean, // include message meta for each history entry\n reverse: boolean,\n count: number\n}\n\n// history\nexport type MessageCounterArguments = {\n channels: Array, // fetch history from a channel\n timetoken: number | null,\n channelTimetokens: Array | null\n}\n\ntype FetchMessagesArguments = {\n channels: string, // fetch history from a channel\n start: number | string, // start timetoken for history fetching\n end: number | string, // end timetoken for history fetching\n includeMeta: boolean, // include message meta for each history entry\n includeMessageActions: boolean, // include message actions for each history entry\n count: number\n}\n\ntype HistoryItem = {\n timetoken: number | string | null,\n meta: Object | null,\n entry: any,\n}\n\ntype HistoryResponse = {\n messages: Array,\n startTimeToken: number | string,\n endTimeToken: number | string,\n}\n\n\nexport type MessageCountersResponse = {\n channels: Object\n}\n\ntype HistoryV3Response = {\n channels: Object\n}\n\n// CG endpoints\n\ntype AddChannelParams = {\n channels: Array,\n channelGroup: string,\n}\n\ntype RemoveChannelParams = {\n channels: Array,\n channelGroup: string,\n}\n\ntype DeleteGroupParams = {\n channelGroup: string,\n}\n\ntype ListAllGroupsResponse = {\n groups: Array\n}\n\ntype ListChannelsParams = {\n channelGroup: string,\n}\n\ntype ListChannelsResponse = {\n channels: Array\n}\n\n//\n\n// push\n\ntype ProvisionDeviceArgs = {\n operation: 'add' | 'remove',\n pushGateway: 'gcm' | 'apns' | 'mpns',\n device: string,\n channels: Array\n};\n\ntype ModifyDeviceArgs = {\n pushGateway: 'gcm' | 'apns' | 'mpns',\n device: string,\n channels: Array\n};\n\ntype ListChannelsArgs = {\n pushGateway: 'gcm' | 'apns' | 'mpns',\n device: string,\n};\n\ntype RemoveDeviceArgs = {\n pushGateway: 'gcm' | 'apns' | 'mpns',\n device: string,\n};\n\ntype ListPushChannelsResponse = {\n channels: Array\n}\n\n//\n\n// presence\n\ntype LeaveArguments = {\n channels: Array,\n channelGroups: Array,\n}\n\ntype HereNowArguments = {\n channels: Array,\n channelGroups: Array,\n includeUUIDs: boolean,\n includeState: boolean\n}\n\ntype WhereNowArguments = {\n uuid: string,\n}\n\ntype WhereNowResponse = {\n channels: Array,\n}\n\n//\n\ntype GetStateArguments = {\n uuid: string,\n channels: Array,\n channelGroups: Array\n}\n\ntype GetStateResponse = {\n channels: Object\n}\n\n//\n\ntype SetStateArguments = {\n channels: Array,\n channelGroups: Array,\n state: Object\n}\n\ntype SetStateResponse = {\n state: Object\n}\n\n\ntype HeartbeatArguments = {\n channels: Array,\n channelGroups: Array,\n state: Object\n}\n\n//\n\n// subscribe\n\ntype SubscribeArguments = {\n channels: Array,\n channelGroups: Array,\n timetoken: number,\n filterExpression: ?string,\n region: ?string,\n state: Object\n}\n\n//\n\n// access manager\n\ntype AuditArguments = {\n channel: string,\n channelGroup: string,\n authKeys: Array,\n}\n\ntype GrantArguments = {\n channels: Array,\n channelGroups: Array,\n ttl: number,\n read: boolean,\n write: boolean,\n manage: boolean,\n authKeys: Array\n}\n\n// Base permissions object\ninterface GrantTokenObject {\n create: boolean,\n read: boolean,\n write: boolean,\n manage: boolean,\n delete: boolean,\n}\n\ninterface GrantTokenInput {\n ttl: number,\n resources?: {\n channels?: {\n [key: String]: GrantTokenObject,\n },\n groups?: {\n [key: String]: GrantTokenObject,\n },\n users?: {\n [key: String]: GrantTokenObject,\n },\n spaces?: {\n [key: String]: GrantTokenObject,\n },\n },\n patterns?: {\n channels?: {\n [key: String]: GrantTokenObject,\n },\n groups?: {\n [key: String]: GrantTokenObject,\n },\n users?: {\n [key: String]: GrantTokenObject,\n },\n spaces?: {\n [key: String]: GrantTokenObject,\n },\n },\n meta?: Object\n}\n\ninterface GrantTokenOutput extends GrantTokenInput {\n version: number,\n timestamp: number,\n signature: Buffer\n}\n\n// token manager\n\ntype TokensDefinition = {\n user?: string,\n space?: string,\n users?: {\n [key: String]: String\n },\n spaces?: {\n [key: String]: String\n }\n};\n\ntype GetTokensInput= {\n user?: boolean,\n space?: boolean,\n users?: Array,\n spaces?: Array\n};\n\n// publish\n\ntype PublishResponse = {\n timetoken: number\n};\n\ntype PublishArguments = {\n message: Object | string | number | boolean, // the contents of the dispatch\n channel: string, // the destination of our dispatch\n sendByPost: boolean | null, // use POST when dispatching the message\n storeInHistory: boolean | null, // store the published message in remote history\n meta: Object, // psv2 supports filtering by metadata\n replicate: boolean | null // indicates to server on replication status to other data centers.\n}\n\n// signal\ntype SignalResponse = {\n timetoken: number\n};\n\ntype SignalArguments = {\n message: Object | string | number | boolean,\n channel: string\n}\n\n// Actions\n\ninterface MessageAction {\n type: string,\n value: string,\n}\n\ninterface PublishedMessageAction extends MessageAction {\n messageTimetoken: string,\n actionTimetoken: string,\n uuid: string,\n}\n\ntype MessageActionAnnouncement = {\n data: PublishedMessageAction,\n event: string,\n\n channel: string,\n subscription: string,\n\n timetoken: number | string,\n userMetadata: Object,\n publisher: string\n}\n\ninterface AddMessageActionInput {\n messageTimetoken: string,\n channel: string,\n action: MessageAction,\n}\n\ninterface AddMessageActionResponse {\n data: PublishedMessageAction,\n}\n\ninterface RemoveMessageActionInput {\n messageTimetoken: string,\n actionTimetoken: string,\n channel: string,\n}\n\ninterface RemoveMessageActionResponse {\n data: {},\n}\n\ninterface GetMessageActionsInput {\n channel: string,\n start?: number | string,\n end?: number | string,\n limit?: number,\n}\n\ninterface GetMessageActionsResponse {\n data: Array,\n start?: string,\n end?: string,\n}\n\n// Users Object\n\ntype UserListInput = {\n limit?: number,\n page?: {\n next?: string,\n prev?: string,\n },\n include?: {\n totalCount?: boolean,\n customFields?: boolean,\n }\n}\n\ntype SingleUserInput = {\n userId: string,\n include?: {\n customFields?: boolean,\n }\n}\n\ntype UsersObjectInput = {\n id: string,\n name: string,\n externalId?: string,\n profileUrl?: string,\n email?: string,\n custom?: Object,\n};\n\ntype UserResponse = {\n status: number,\n data: {\n ...UsersObjectInput,\n created: string,\n updated: string,\n eTag: string,\n },\n};\n\ntype UsersListResponse = {\n status: number,\n totalCount: number,\n next: String,\n prev: String,\n data: Array,\n};\n\n// Spaces Object\n\ntype SpaceListInput = {\n limit?: number,\n page?: {\n next?: string,\n prev?: string,\n },\n include?: {\n totalCount?: boolean,\n customFields?: boolean,\n }\n}\n\ntype SingleSpaceInput = {\n spaceId: string,\n include?: {\n customFields?: boolean,\n }\n}\n\ntype SpacesObjectInput = {\n id: string,\n name: string,\n description?: String,\n custom?: Object,\n include?: {\n customFields?: boolean,\n }\n};\n\ntype SpacesResponse = {\n status: number,\n data: {\n ...SpacesObjectInput,\n created: string,\n updated: string,\n eTag: string,\n },\n};\n\ntype SpaceResponse = {\n status: number,\n data: {\n ...SpacesObjectInput,\n created: string,\n updated: string,\n eTag: string,\n },\n};\n\ntype SpacesListResponse = {\n status: number,\n totalCount: number,\n next: String,\n prev: String,\n data: Array,\n};\n\n// Memberships Object\n\ntype MembershipsInput = {\n userId: string,\n limit?: number,\n page?: {\n next?: string,\n prev?: string,\n },\n include?: {\n totalCount?: boolean,\n customFields?: boolean,\n spaceFields?: boolean,\n customSpaceFields?: boolean,\n }\n}\n\ntype MembershipsObjectInput = {\n id: string,\n custom?: Object,\n space?: SpacesResponse,\n};\n\ntype MembershipsResponse = {\n status: number,\n data: {\n ...MembershipsObjectInput,\n created: string,\n updated: string,\n eTag: string,\n },\n};\n\ntype MembershipsListResponse = {\n status: number,\n totalCount: number,\n next: String,\n prev: String,\n data: Array,\n};\n\ninterface AddMemberships extends MembershipsInput {\n addMemberships: Array,\n}\n\ninterface UpdateMemberships extends MembershipsInput {\n updateMemberships: Array,\n}\n\ninterface RemoveMemberships extends MembershipsInput {\n removeMemberships: Array,\n}\n\ninterface AddUpdateRemoveMemberships extends AddMemberships, UpdateMemberships, RemoveMemberships {}\n\n// Members Object\n\ntype MembersInput = {\n spaceId: string,\n limit?: number,\n page?: {\n next?: string,\n prev?: string,\n },\n include?: {\n totalCount?: boolean,\n customFields?: boolean,\n userFields?: boolean,\n customUserFields?: boolean,\n }\n}\n\ntype MembersObjectInput = {\n id: string,\n custom?: Object,\n user?: UserResponse,\n};\n\ntype MembersResponse = {\n status: number,\n data: {\n ...MembersObjectInput,\n created: string,\n updated: string,\n eTag: string,\n },\n};\n\ntype MembersListResponse = {\n status: number,\n totalCount: number,\n next: String,\n prev: String,\n data: Array,\n};\n\ninterface AddMembers extends MembersInput {\n addMembers: Array,\n}\n\ninterface UpdateMembers extends MembersInput {\n updateMembers: Array,\n}\n\ninterface RemoveMembers extends MembersInput {\n removeMembers: Array,\n}\n\ninterface AddUpdateRemoveMembers extends AddMembers, UpdateMembers, RemoveMembers {}\n\n//\n\ntype ModulesInject = {\n config: Object;\n}\n\nmodule.exports = {};\n"],"file":"flow_interfaces.js"} \ No newline at end of file diff --git a/lib/core/pubnub-common.js b/lib/core/pubnub-common.js index 0622191d9..b67e7a64c 100644 --- a/lib/core/pubnub-common.js +++ b/lib/core/pubnub-common.js @@ -47,6 +47,12 @@ var presenceSetStateConfig = _interopRequireWildcard(require("./endpoints/presen var presenceHereNowConfig = _interopRequireWildcard(require("./endpoints/presence/here_now")); +var addMessageActionEndpointConfig = _interopRequireWildcard(require("./endpoints/actions/add_message_action")); + +var removeMessageActionEndpointConfig = _interopRequireWildcard(require("./endpoints/actions/remove_message_action")); + +var getMessageActionEndpointConfig = _interopRequireWildcard(require("./endpoints/actions/get_message_actions")); + var createUserEndpointConfig = _interopRequireWildcard(require("./endpoints/users/create_user")); var updateUserEndpointConfig = _interopRequireWildcard(require("./endpoints/users/update_user")); @@ -179,6 +185,12 @@ var _default = function () { _defineProperty(this, "unsubscribeAll", void 0); + _defineProperty(this, "addMessageAction", void 0); + + _defineProperty(this, "removeMessageAction", void 0); + + _defineProperty(this, "getMessageActions", void 0); + _defineProperty(this, "createUser", void 0); _defineProperty(this, "updateUser", void 0); @@ -349,6 +361,9 @@ var _default = function () { this.deleteMessages = _endpoint["default"].bind(this, modules, deleteMessagesEndpointConfig); this.messageCounts = _endpoint["default"].bind(this, modules, messageCountsEndpointConfig); this.fetchMessages = _endpoint["default"].bind(this, modules, fetchMessagesEndpointConfig); + this.addMessageAction = _endpoint["default"].bind(this, modules, addMessageActionEndpointConfig); + this.removeMessageAction = _endpoint["default"].bind(this, modules, removeMessageActionEndpointConfig); + this.getMessageActions = _endpoint["default"].bind(this, modules, getMessageActionEndpointConfig); this.createUser = _endpoint["default"].bind(this, modules, createUserEndpointConfig); this.updateUser = _endpoint["default"].bind(this, modules, updateUserEndpointConfig); this.deleteUser = _endpoint["default"].bind(this, modules, deleteUserEndpointConfig); diff --git a/lib/core/pubnub-common.js.map b/lib/core/pubnub-common.js.map index 4170fdc18..f52da993f 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":["setup","db","networking","cbor","config","_config","Config","crypto","Crypto","init","tokenManager","_tokenManager","TokenManager","modules","timeEndpoint","endpointCreator","bind","timeEndpointConfig","leaveEndpoint","presenceLeaveEndpointConfig","heartbeatEndpoint","presenceHeartbeatEndpointConfig","setStateEndpoint","presenceSetStateConfig","subscribeEndpoint","subscribeEndpointConfig","listenerManager","_listenerManager","ListenerManager","subscriptionManager","SubscriptionManager","addListener","removeListener","removeAllListeners","parseToken","setToken","setTokens","getToken","getTokens","clearTokens","channelGroups","listGroups","listChannelGroupsConfig","listChannels","listChannelsInChannelGroupConfig","addChannels","addChannelsChannelGroupConfig","removeChannels","removeChannelsChannelGroupConfig","deleteGroup","deleteChannelGroupConfig","push","addPushChannelsConfig","removePushChannelsConfig","deleteDevice","removeDevicePushConfig","listPushChannelsConfig","hereNow","presenceHereNowConfig","whereNow","presenceWhereNowEndpointConfig","getState","presenceGetStateConfig","setState","adaptStateChange","grant","grantEndpointConfig","grantToken","grantTokenEndpointConfig","audit","auditEndpointConfig","publish","publishEndpointConfig","fire","args","callback","replicate","storeInHistory","signal","signalEndpointConfig","history","historyEndpointConfig","deleteMessages","deleteMessagesEndpointConfig","messageCounts","messageCountsEndpointConfig","fetchMessages","fetchMessagesEndpointConfig","createUser","createUserEndpointConfig","updateUser","updateUserEndpointConfig","deleteUser","deleteUserEndpointConfig","getUser","getUserEndpointConfig","getUsers","getUsersEndpointConfig","createSpace","createSpaceEndpointConfig","updateSpace","updateSpaceEndpointConfig","deleteSpace","deleteSpaceEndpointConfig","getSpaces","getSpacesEndpointConfig","getSpace","getSpaceEndpointConfig","addMembers","addMembersEndpointConfig","updateMembers","updateMembersEndpointConfig","removeMembers","removeMembersEndpointConfig","getMembers","getMembersEndpointConfig","getMemberships","getMembershipsEndpointConfig","joinSpaces","joinSpacesEndpointConfig","updateMemberships","updateMembershipsEndpointConfig","leaveSpaces","leaveSpacesEndpointConfig","time","subscribe","adaptSubscribeChange","presence","adaptPresenceChange","unsubscribe","adaptUnsubscribeChange","disconnect","reconnect","destroy","isOffline","unsubscribeAll","stop","getSubscribedChannels","getSubscribedChannelGroups","encrypt","decrypt","getAuthKey","setAuthKey","setCipherKey","getUUID","setUUID","getFilterExpression","setFilterExpression","setHeartbeatInterval","hasModule","setProxy","proxy","getVersion","announceNetworkDown","restore","announceNetworkUp","uuidGenerator","createUUID","OPERATIONS","CATEGORIES"],"mappings":"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","sourcesContent":["/* @flow */\n\nimport Config from './components/config';\nimport Crypto from './components/cryptography/index';\nimport SubscriptionManager from './components/subscription_manager';\nimport ListenerManager from './components/listener_manager';\nimport TokenManager from './components/token_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\n// Objects API\n\nimport * as createUserEndpointConfig from './endpoints/users/create_user';\nimport * as updateUserEndpointConfig from './endpoints/users/update_user';\nimport * as deleteUserEndpointConfig from './endpoints/users/delete_user';\nimport * as getUserEndpointConfig from './endpoints/users/get_user';\nimport * as getUsersEndpointConfig from './endpoints/users/get_users';\nimport * as createSpaceEndpointConfig from './endpoints/spaces/create_space';\nimport * as updateSpaceEndpointConfig from './endpoints/spaces/update_space';\nimport * as deleteSpaceEndpointConfig from './endpoints/spaces/delete_space';\nimport * as getSpacesEndpointConfig from './endpoints/spaces/get_spaces';\nimport * as getSpaceEndpointConfig from './endpoints/spaces/get_space';\nimport * as getMembersEndpointConfig from './endpoints/memberships/get_members';\nimport * as addMembersEndpointConfig from './endpoints/memberships/add_members';\nimport * as updateMembersEndpointConfig from './endpoints/memberships/update_members';\nimport * as removeMembersEndpointConfig from './endpoints/memberships/remove_members';\nimport * as getMembershipsEndpointConfig from './endpoints/memberships/get_memberships';\nimport * as updateMembershipsEndpointConfig from './endpoints/memberships/update_memberships';\nimport * as joinSpacesEndpointConfig from './endpoints/memberships/join_spaces';\nimport * as leaveSpacesEndpointConfig from './endpoints/memberships/leave_spaces';\n\nimport * as auditEndpointConfig from './endpoints/access_manager/audit';\nimport * as grantEndpointConfig from './endpoints/access_manager/grant';\nimport * as grantTokenEndpointConfig from './endpoints/access_manager/grant_token';\n\nimport * as publishEndpointConfig from './endpoints/publish';\nimport * as signalEndpointConfig from './endpoints/signal';\nimport * as historyEndpointConfig from './endpoints/history/get_history';\nimport * as deleteMessagesEndpointConfig from './endpoints/history/delete_messages';\nimport * as messageCountsEndpointConfig from './endpoints/history/message_counts';\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';\nimport uuidGenerator from './components/uuid';\n\nexport default class {\n _config: Config;\n _listenerManager: ListenerManager;\n _tokenManager: TokenManager;\n\n // tell flow about the mounted endpoint\n time: Function;\n publish: Function;\n fire: Function;\n\n history: Function;\n deleteMessages: Function;\n messageCounts: 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 grantToken: Function;\n audit: Function;\n //\n subscribe: Function;\n signal: Function;\n presence: Function;\n unsubscribe: Function;\n unsubscribeAll: Function;\n\n // Objects API\n\n createUser: Function;\n updateUser: Function;\n deleteUser: Function;\n getUser: Function;\n getUsers: Function;\n createSpace: Function;\n updateSpace: Function;\n deleteSpace: Function;\n getSpaces: Function;\n getSpace: Function;\n getMembers: Function;\n addMembers: Function;\n updateMembers: Function;\n removeMembers: Function;\n getMemberships: Function;\n joinSpaces: Function;\n updateMemberships: Function;\n leaveSpaces: Function;\n\n disconnect: Function;\n reconnect: Function;\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 parseToken: Function;\n setToken: Function;\n setTokens: Function;\n getToken: Function;\n getTokens: Function;\n clearTokens: 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 setHeartbeatInterval: Function;\n\n setProxy: Function;\n\n encrypt: Function;\n decrypt: Function;\n\n //\n\n constructor(setup: InternalSetupStruct) {\n let { db, networking, cbor } = setup;\n\n const config = (this._config = new Config({ setup, db }));\n const crypto = new Crypto({ config });\n\n networking.init(config);\n\n const tokenManager = (this._tokenManager = new TokenManager(config, cbor));\n\n let modules = { config, networking, crypto, tokenManager };\n\n const timeEndpoint = endpointCreator.bind(\n this,\n modules,\n timeEndpointConfig\n );\n const leaveEndpoint = endpointCreator.bind(\n this,\n modules,\n presenceLeaveEndpointConfig\n );\n const heartbeatEndpoint = endpointCreator.bind(\n this,\n modules,\n presenceHeartbeatEndpointConfig\n );\n const setStateEndpoint = endpointCreator.bind(\n this,\n modules,\n presenceSetStateConfig\n );\n const subscribeEndpoint = endpointCreator.bind(\n this,\n modules,\n subscribeEndpointConfig\n );\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(\n listenerManager\n );\n\n this.parseToken = tokenManager.parseToken.bind(tokenManager);\n this.setToken = tokenManager.setToken.bind(tokenManager);\n this.setTokens = tokenManager.setTokens.bind(tokenManager);\n this.getToken = tokenManager.getToken.bind(tokenManager);\n this.getTokens = tokenManager.getTokens.bind(tokenManager);\n this.clearTokens = tokenManager.clearTokens.bind(tokenManager);\n\n /* channel groups */\n this.channelGroups = {\n listGroups: endpointCreator.bind(this, modules, listChannelGroupsConfig),\n listChannels: endpointCreator.bind(\n this,\n modules,\n listChannelsInChannelGroupConfig\n ),\n addChannels: endpointCreator.bind(\n this,\n modules,\n addChannelsChannelGroupConfig\n ),\n removeChannels: endpointCreator.bind(\n this,\n modules,\n removeChannelsChannelGroupConfig\n ),\n deleteGroup: endpointCreator.bind(\n this,\n modules,\n deleteChannelGroupConfig\n ),\n };\n /* push */\n this.push = {\n addChannels: endpointCreator.bind(this, modules, addPushChannelsConfig),\n removeChannels: endpointCreator.bind(\n this,\n modules,\n removePushChannelsConfig\n ),\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(\n this,\n modules,\n presenceWhereNowEndpointConfig\n );\n this.getState = endpointCreator.bind(this, modules, presenceGetStateConfig);\n this.setState = subscriptionManager.adaptStateChange.bind(\n subscriptionManager\n );\n /* PAM */\n this.grant = endpointCreator.bind(this, modules, grantEndpointConfig);\n this.grantToken = endpointCreator.bind(this, modules, grantTokenEndpointConfig);\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.signal = endpointCreator.bind(this, modules, signalEndpointConfig);\n\n this.history = endpointCreator.bind(this, modules, historyEndpointConfig);\n this.deleteMessages = endpointCreator.bind(\n this,\n modules,\n deleteMessagesEndpointConfig\n );\n this.messageCounts = endpointCreator.bind(\n this,\n modules,\n messageCountsEndpointConfig\n );\n this.fetchMessages = endpointCreator.bind(\n this,\n modules,\n fetchMessagesEndpointConfig\n );\n\n // Objects API\n\n this.createUser = endpointCreator.bind(\n this,\n modules,\n createUserEndpointConfig\n );\n\n this.updateUser = endpointCreator.bind(\n this,\n modules,\n updateUserEndpointConfig\n );\n\n this.deleteUser = endpointCreator.bind(\n this,\n modules,\n deleteUserEndpointConfig\n );\n\n this.getUser = endpointCreator.bind(\n this,\n modules,\n getUserEndpointConfig\n );\n\n this.getUsers = endpointCreator.bind(\n this,\n modules,\n getUsersEndpointConfig\n );\n\n this.createSpace = endpointCreator.bind(\n this,\n modules,\n createSpaceEndpointConfig\n );\n\n this.updateSpace = endpointCreator.bind(\n this,\n modules,\n updateSpaceEndpointConfig\n );\n\n this.deleteSpace = endpointCreator.bind(\n this,\n modules,\n deleteSpaceEndpointConfig\n );\n\n this.getSpaces = endpointCreator.bind(\n this,\n modules,\n getSpacesEndpointConfig\n );\n\n this.getSpace = endpointCreator.bind(\n this,\n modules,\n getSpaceEndpointConfig\n );\n\n this.addMembers = endpointCreator.bind(\n this,\n modules,\n addMembersEndpointConfig\n );\n\n this.updateMembers = endpointCreator.bind(\n this,\n modules,\n updateMembersEndpointConfig\n );\n\n this.removeMembers = endpointCreator.bind(\n this,\n modules,\n removeMembersEndpointConfig\n );\n\n this.getMembers = endpointCreator.bind(\n this,\n modules,\n getMembersEndpointConfig\n );\n\n this.getMemberships = endpointCreator.bind(\n this,\n modules,\n getMembershipsEndpointConfig\n );\n\n this.joinSpaces = endpointCreator.bind(\n this,\n modules,\n joinSpacesEndpointConfig\n );\n\n this.updateMemberships = endpointCreator.bind(\n this,\n modules,\n updateMembershipsEndpointConfig\n );\n\n this.leaveSpaces = endpointCreator.bind(\n this,\n modules,\n leaveSpacesEndpointConfig\n );\n\n this.time = timeEndpoint;\n\n // subscription related methods\n this.subscribe = subscriptionManager.adaptSubscribeChange.bind(\n subscriptionManager\n );\n this.presence = subscriptionManager.adaptPresenceChange.bind(\n subscriptionManager\n );\n this.unsubscribe = subscriptionManager.adaptUnsubscribeChange.bind(\n subscriptionManager\n );\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(\n subscriptionManager\n );\n\n this.getSubscribedChannels = subscriptionManager.getSubscribedChannels.bind(\n subscriptionManager\n );\n this.getSubscribedChannelGroups = subscriptionManager.getSubscribedChannelGroups.bind(\n subscriptionManager\n );\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(\n modules.config\n );\n this.setFilterExpression = modules.config.setFilterExpression.bind(\n modules.config\n );\n\n this.setHeartbeatInterval = modules.config.setHeartbeatInterval.bind(\n modules.config\n );\n\n if (networking.hasModule('proxy')) {\n this.setProxy = (proxy) => {\n modules.config.setProxy(proxy);\n this.reconnect();\n };\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 static generateUUID(): string {\n return uuidGenerator.createUUID();\n }\n\n static OPERATIONS = OPERATIONS;\n static CATEGORIES = CATEGORIES;\n}\n"],"file":"pubnub-common.js"} \ No newline at end of file +{"version":3,"sources":["core/pubnub-common.js"],"names":["setup","db","networking","cbor","config","_config","Config","crypto","Crypto","init","tokenManager","_tokenManager","TokenManager","modules","timeEndpoint","endpointCreator","bind","timeEndpointConfig","leaveEndpoint","presenceLeaveEndpointConfig","heartbeatEndpoint","presenceHeartbeatEndpointConfig","setStateEndpoint","presenceSetStateConfig","subscribeEndpoint","subscribeEndpointConfig","listenerManager","_listenerManager","ListenerManager","subscriptionManager","SubscriptionManager","addListener","removeListener","removeAllListeners","parseToken","setToken","setTokens","getToken","getTokens","clearTokens","channelGroups","listGroups","listChannelGroupsConfig","listChannels","listChannelsInChannelGroupConfig","addChannels","addChannelsChannelGroupConfig","removeChannels","removeChannelsChannelGroupConfig","deleteGroup","deleteChannelGroupConfig","push","addPushChannelsConfig","removePushChannelsConfig","deleteDevice","removeDevicePushConfig","listPushChannelsConfig","hereNow","presenceHereNowConfig","whereNow","presenceWhereNowEndpointConfig","getState","presenceGetStateConfig","setState","adaptStateChange","grant","grantEndpointConfig","grantToken","grantTokenEndpointConfig","audit","auditEndpointConfig","publish","publishEndpointConfig","fire","args","callback","replicate","storeInHistory","signal","signalEndpointConfig","history","historyEndpointConfig","deleteMessages","deleteMessagesEndpointConfig","messageCounts","messageCountsEndpointConfig","fetchMessages","fetchMessagesEndpointConfig","addMessageAction","addMessageActionEndpointConfig","removeMessageAction","removeMessageActionEndpointConfig","getMessageActions","getMessageActionEndpointConfig","createUser","createUserEndpointConfig","updateUser","updateUserEndpointConfig","deleteUser","deleteUserEndpointConfig","getUser","getUserEndpointConfig","getUsers","getUsersEndpointConfig","createSpace","createSpaceEndpointConfig","updateSpace","updateSpaceEndpointConfig","deleteSpace","deleteSpaceEndpointConfig","getSpaces","getSpacesEndpointConfig","getSpace","getSpaceEndpointConfig","addMembers","addMembersEndpointConfig","updateMembers","updateMembersEndpointConfig","removeMembers","removeMembersEndpointConfig","getMembers","getMembersEndpointConfig","getMemberships","getMembershipsEndpointConfig","joinSpaces","joinSpacesEndpointConfig","updateMemberships","updateMembershipsEndpointConfig","leaveSpaces","leaveSpacesEndpointConfig","time","subscribe","adaptSubscribeChange","presence","adaptPresenceChange","unsubscribe","adaptUnsubscribeChange","disconnect","reconnect","destroy","isOffline","unsubscribeAll","stop","getSubscribedChannels","getSubscribedChannelGroups","encrypt","decrypt","getAuthKey","setAuthKey","setCipherKey","getUUID","setUUID","getFilterExpression","setFilterExpression","setHeartbeatInterval","hasModule","setProxy","proxy","getVersion","announceNetworkDown","restore","announceNetworkUp","uuidGenerator","createUUID","OPERATIONS","CATEGORIES"],"mappings":";;;;;;;AAEA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAIA;;AACA;;AACA;;AAIA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AAEA;;AACA;;;;;;;;;;;;;;;AAsGE,oBAAYA,KAAZ,EAAwC;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA,QAChCC,EADgC,GACPD,KADO,CAChCC,EADgC;AAAA,QAC5BC,UAD4B,GACPF,KADO,CAC5BE,UAD4B;AAAA,QAChBC,IADgB,GACPH,KADO,CAChBG,IADgB;AAGtC,QAAMC,MAAM,GAAI,KAAKC,OAAL,GAAe,IAAIC,kBAAJ,CAAW;AAAEN,MAAAA,KAAK,EAALA,KAAF;AAASC,MAAAA,EAAE,EAAFA;AAAT,KAAX,CAA/B;AACA,QAAMM,MAAM,GAAG,IAAIC,iBAAJ,CAAW;AAAEJ,MAAAA,MAAM,EAANA;AAAF,KAAX,CAAf;AAEAF,IAAAA,UAAU,CAACO,IAAX,CAAgBL,MAAhB;AAEA,QAAMM,YAAY,GAAI,KAAKC,aAAL,GAAqB,IAAIC,yBAAJ,CAAiBR,MAAjB,EAAyBD,IAAzB,CAA3C;AAEA,QAAIU,OAAO,GAAG;AAAET,MAAAA,MAAM,EAANA,MAAF;AAAUF,MAAAA,UAAU,EAAVA,UAAV;AAAsBK,MAAAA,MAAM,EAANA,MAAtB;AAA8BG,MAAAA,YAAY,EAAZA;AAA9B,KAAd;;AAEA,QAAMI,YAAY,GAAGC,qBAAgBC,IAAhB,CACnB,IADmB,EAEnBH,OAFmB,EAGnBI,kBAHmB,CAArB;;AAKA,QAAMC,aAAa,GAAGH,qBAAgBC,IAAhB,CACpB,IADoB,EAEpBH,OAFoB,EAGpBM,2BAHoB,CAAtB;;AAKA,QAAMC,iBAAiB,GAAGL,qBAAgBC,IAAhB,CACxB,IADwB,EAExBH,OAFwB,EAGxBQ,+BAHwB,CAA1B;;AAKA,QAAMC,gBAAgB,GAAGP,qBAAgBC,IAAhB,CACvB,IADuB,EAEvBH,OAFuB,EAGvBU,sBAHuB,CAAzB;;AAKA,QAAMC,iBAAiB,GAAGT,qBAAgBC,IAAhB,CACxB,IADwB,EAExBH,OAFwB,EAGxBY,uBAHwB,CAA1B;;AAOA,QAAMC,eAAe,GAAI,KAAKC,gBAAL,GAAwB,IAAIC,4BAAJ,EAAjD;AAEA,QAAMC,mBAAmB,GAAG,IAAIC,gCAAJ,CAAwB;AAClDhB,MAAAA,YAAY,EAAZA,YADkD;AAElDI,MAAAA,aAAa,EAAbA,aAFkD;AAGlDE,MAAAA,iBAAiB,EAAjBA,iBAHkD;AAIlDE,MAAAA,gBAAgB,EAAhBA,gBAJkD;AAKlDE,MAAAA,iBAAiB,EAAjBA,iBALkD;AAMlDjB,MAAAA,MAAM,EAAEM,OAAO,CAACN,MANkC;AAOlDH,MAAAA,MAAM,EAAES,OAAO,CAACT,MAPkC;AAQlDsB,MAAAA,eAAe,EAAfA;AARkD,KAAxB,CAA5B;AAWA,SAAKK,WAAL,GAAmBL,eAAe,CAACK,WAAhB,CAA4Bf,IAA5B,CAAiCU,eAAjC,CAAnB;AACA,SAAKM,cAAL,GAAsBN,eAAe,CAACM,cAAhB,CAA+BhB,IAA/B,CAAoCU,eAApC,CAAtB;AACA,SAAKO,kBAAL,GAA0BP,eAAe,CAACO,kBAAhB,CAAmCjB,IAAnC,CACxBU,eADwB,CAA1B;AAIA,SAAKQ,UAAL,GAAkBxB,YAAY,CAACwB,UAAb,CAAwBlB,IAAxB,CAA6BN,YAA7B,CAAlB;AACA,SAAKyB,QAAL,GAAgBzB,YAAY,CAACyB,QAAb,CAAsBnB,IAAtB,CAA2BN,YAA3B,CAAhB;AACA,SAAK0B,SAAL,GAAiB1B,YAAY,CAAC0B,SAAb,CAAuBpB,IAAvB,CAA4BN,YAA5B,CAAjB;AACA,SAAK2B,QAAL,GAAgB3B,YAAY,CAAC2B,QAAb,CAAsBrB,IAAtB,CAA2BN,YAA3B,CAAhB;AACA,SAAK4B,SAAL,GAAiB5B,YAAY,CAAC4B,SAAb,CAAuBtB,IAAvB,CAA4BN,YAA5B,CAAjB;AACA,SAAK6B,WAAL,GAAmB7B,YAAY,CAAC6B,WAAb,CAAyBvB,IAAzB,CAA8BN,YAA9B,CAAnB;AAGA,SAAK8B,aAAL,GAAqB;AACnBC,MAAAA,UAAU,EAAE1B,qBAAgBC,IAAhB,CAAqB,IAArB,EAA2BH,OAA3B,EAAoC6B,uBAApC,CADO;AAEnBC,MAAAA,YAAY,EAAE5B,qBAAgBC,IAAhB,CACZ,IADY,EAEZH,OAFY,EAGZ+B,gCAHY,CAFK;AAOnBC,MAAAA,WAAW,EAAE9B,qBAAgBC,IAAhB,CACX,IADW,EAEXH,OAFW,EAGXiC,6BAHW,CAPM;AAYnBC,MAAAA,cAAc,EAAEhC,qBAAgBC,IAAhB,CACd,IADc,EAEdH,OAFc,EAGdmC,gCAHc,CAZG;AAiBnBC,MAAAA,WAAW,EAAElC,qBAAgBC,IAAhB,CACX,IADW,EAEXH,OAFW,EAGXqC,wBAHW;AAjBM,KAArB;AAwBA,SAAKC,IAAL,GAAY;AACVN,MAAAA,WAAW,EAAE9B,qBAAgBC,IAAhB,CAAqB,IAArB,EAA2BH,OAA3B,EAAoCuC,qBAApC,CADH;AAEVL,MAAAA,cAAc,EAAEhC,qBAAgBC,IAAhB,CACd,IADc,EAEdH,OAFc,EAGdwC,wBAHc,CAFN;AAOVC,MAAAA,YAAY,EAAEvC,qBAAgBC,IAAhB,CAAqB,IAArB,EAA2BH,OAA3B,EAAoC0C,sBAApC,CAPJ;AAQVZ,MAAAA,YAAY,EAAE5B,qBAAgBC,IAAhB,CAAqB,IAArB,EAA2BH,OAA3B,EAAoC2C,sBAApC;AARJ,KAAZ;AAWA,SAAKC,OAAL,GAAe1C,qBAAgBC,IAAhB,CAAqB,IAArB,EAA2BH,OAA3B,EAAoC6C,qBAApC,CAAf;AACA,SAAKC,QAAL,GAAgB5C,qBAAgBC,IAAhB,CACd,IADc,EAEdH,OAFc,EAGd+C,8BAHc,CAAhB;AAKA,SAAKC,QAAL,GAAgB9C,qBAAgBC,IAAhB,CAAqB,IAArB,EAA2BH,OAA3B,EAAoCiD,sBAApC,CAAhB;AACA,SAAKC,QAAL,GAAgBlC,mBAAmB,CAACmC,gBAApB,CAAqChD,IAArC,CACda,mBADc,CAAhB;AAIA,SAAKoC,KAAL,GAAalD,qBAAgBC,IAAhB,CAAqB,IAArB,EAA2BH,OAA3B,EAAoCqD,mBAApC,CAAb;AACA,SAAKC,UAAL,GAAkBpD,qBAAgBC,IAAhB,CAAqB,IAArB,EAA2BH,OAA3B,EAAoCuD,wBAApC,CAAlB;AACA,SAAKC,KAAL,GAAatD,qBAAgBC,IAAhB,CAAqB,IAArB,EAA2BH,OAA3B,EAAoCyD,mBAApC,CAAb;AAEA,SAAKC,OAAL,GAAexD,qBAAgBC,IAAhB,CAAqB,IAArB,EAA2BH,OAA3B,EAAoC2D,qBAApC,CAAf;;AAEA,SAAKC,IAAL,GAAY,UAACC,IAAD,EAAOC,QAAP,EAAoB;AAC9BD,MAAAA,IAAI,CAACE,SAAL,GAAiB,KAAjB;AACAF,MAAAA,IAAI,CAACG,cAAL,GAAsB,KAAtB;AACA,aAAO,KAAI,CAACN,OAAL,CAAaG,IAAb,EAAmBC,QAAnB,CAAP;AACD,KAJD;;AAMA,SAAKG,MAAL,GAAc/D,qBAAgBC,IAAhB,CAAqB,IAArB,EAA2BH,OAA3B,EAAoCkE,oBAApC,CAAd;AAEA,SAAKC,OAAL,GAAejE,qBAAgBC,IAAhB,CAAqB,IAArB,EAA2BH,OAA3B,EAAoCoE,qBAApC,CAAf;AACA,SAAKC,cAAL,GAAsBnE,qBAAgBC,IAAhB,CACpB,IADoB,EAEpBH,OAFoB,EAGpBsE,4BAHoB,CAAtB;AAKA,SAAKC,aAAL,GAAqBrE,qBAAgBC,IAAhB,CACnB,IADmB,EAEnBH,OAFmB,EAGnBwE,2BAHmB,CAArB;AAKA,SAAKC,aAAL,GAAqBvE,qBAAgBC,IAAhB,CACnB,IADmB,EAEnBH,OAFmB,EAGnB0E,2BAHmB,CAArB;AAQA,SAAKC,gBAAL,GAAwBzE,qBAAgBC,IAAhB,CACtB,IADsB,EAEtBH,OAFsB,EAGtB4E,8BAHsB,CAAxB;AAMA,SAAKC,mBAAL,GAA2B3E,qBAAgBC,IAAhB,CACzB,IADyB,EAEzBH,OAFyB,EAGzB8E,iCAHyB,CAA3B;AAMA,SAAKC,iBAAL,GAAyB7E,qBAAgBC,IAAhB,CACvB,IADuB,EAEvBH,OAFuB,EAGvBgF,8BAHuB,CAAzB;AAQA,SAAKC,UAAL,GAAkB/E,qBAAgBC,IAAhB,CAChB,IADgB,EAEhBH,OAFgB,EAGhBkF,wBAHgB,CAAlB;AAMA,SAAKC,UAAL,GAAkBjF,qBAAgBC,IAAhB,CAChB,IADgB,EAEhBH,OAFgB,EAGhBoF,wBAHgB,CAAlB;AAMA,SAAKC,UAAL,GAAkBnF,qBAAgBC,IAAhB,CAChB,IADgB,EAEhBH,OAFgB,EAGhBsF,wBAHgB,CAAlB;AAMA,SAAKC,OAAL,GAAerF,qBAAgBC,IAAhB,CACb,IADa,EAEbH,OAFa,EAGbwF,qBAHa,CAAf;AAMA,SAAKC,QAAL,GAAgBvF,qBAAgBC,IAAhB,CACd,IADc,EAEdH,OAFc,EAGd0F,sBAHc,CAAhB;AAMA,SAAKC,WAAL,GAAmBzF,qBAAgBC,IAAhB,CACjB,IADiB,EAEjBH,OAFiB,EAGjB4F,yBAHiB,CAAnB;AAMA,SAAKC,WAAL,GAAmB3F,qBAAgBC,IAAhB,CACjB,IADiB,EAEjBH,OAFiB,EAGjB8F,yBAHiB,CAAnB;AAMA,SAAKC,WAAL,GAAmB7F,qBAAgBC,IAAhB,CACjB,IADiB,EAEjBH,OAFiB,EAGjBgG,yBAHiB,CAAnB;AAMA,SAAKC,SAAL,GAAiB/F,qBAAgBC,IAAhB,CACf,IADe,EAEfH,OAFe,EAGfkG,uBAHe,CAAjB;AAMA,SAAKC,QAAL,GAAgBjG,qBAAgBC,IAAhB,CACd,IADc,EAEdH,OAFc,EAGdoG,sBAHc,CAAhB;AAMA,SAAKC,UAAL,GAAkBnG,qBAAgBC,IAAhB,CAChB,IADgB,EAEhBH,OAFgB,EAGhBsG,wBAHgB,CAAlB;AAMA,SAAKC,aAAL,GAAqBrG,qBAAgBC,IAAhB,CACnB,IADmB,EAEnBH,OAFmB,EAGnBwG,2BAHmB,CAArB;AAMA,SAAKC,aAAL,GAAqBvG,qBAAgBC,IAAhB,CACnB,IADmB,EAEnBH,OAFmB,EAGnB0G,2BAHmB,CAArB;AAMA,SAAKC,UAAL,GAAkBzG,qBAAgBC,IAAhB,CAChB,IADgB,EAEhBH,OAFgB,EAGhB4G,wBAHgB,CAAlB;AAMA,SAAKC,cAAL,GAAsB3G,qBAAgBC,IAAhB,CACpB,IADoB,EAEpBH,OAFoB,EAGpB8G,4BAHoB,CAAtB;AAMA,SAAKC,UAAL,GAAkB7G,qBAAgBC,IAAhB,CAChB,IADgB,EAEhBH,OAFgB,EAGhBgH,wBAHgB,CAAlB;AAMA,SAAKC,iBAAL,GAAyB/G,qBAAgBC,IAAhB,CACvB,IADuB,EAEvBH,OAFuB,EAGvBkH,+BAHuB,CAAzB;AAMA,SAAKC,WAAL,GAAmBjH,qBAAgBC,IAAhB,CACjB,IADiB,EAEjBH,OAFiB,EAGjBoH,yBAHiB,CAAnB;AAMA,SAAKC,IAAL,GAAYpH,YAAZ;AAGA,SAAKqH,SAAL,GAAiBtG,mBAAmB,CAACuG,oBAApB,CAAyCpH,IAAzC,CACfa,mBADe,CAAjB;AAGA,SAAKwG,QAAL,GAAgBxG,mBAAmB,CAACyG,mBAApB,CAAwCtH,IAAxC,CACda,mBADc,CAAhB;AAGA,SAAK0G,WAAL,GAAmB1G,mBAAmB,CAAC2G,sBAApB,CAA2CxH,IAA3C,CACjBa,mBADiB,CAAnB;AAGA,SAAK4G,UAAL,GAAkB5G,mBAAmB,CAAC4G,UAApB,CAA+BzH,IAA/B,CAAoCa,mBAApC,CAAlB;AACA,SAAK6G,SAAL,GAAiB7G,mBAAmB,CAAC6G,SAApB,CAA8B1H,IAA9B,CAAmCa,mBAAnC,CAAjB;;AAEA,SAAK8G,OAAL,GAAe,UAACC,SAAD,EAAwB;AACrC/G,MAAAA,mBAAmB,CAACgH,cAApB,CAAmCD,SAAnC;AACA/G,MAAAA,mBAAmB,CAAC4G,UAApB;AACD,KAHD;;AAMA,SAAKK,IAAL,GAAY,KAAKH,OAAjB;AAGA,SAAKE,cAAL,GAAsBhH,mBAAmB,CAACgH,cAApB,CAAmC7H,IAAnC,CACpBa,mBADoB,CAAtB;AAIA,SAAKkH,qBAAL,GAA6BlH,mBAAmB,CAACkH,qBAApB,CAA0C/H,IAA1C,CAC3Ba,mBAD2B,CAA7B;AAGA,SAAKmH,0BAAL,GAAkCnH,mBAAmB,CAACmH,0BAApB,CAA+ChI,IAA/C,CAChCa,mBADgC,CAAlC;AAKA,SAAKoH,OAAL,GAAe1I,MAAM,CAAC0I,OAAP,CAAejI,IAAf,CAAoBT,MAApB,CAAf;AACA,SAAK2I,OAAL,GAAe3I,MAAM,CAAC2I,OAAP,CAAelI,IAAf,CAAoBT,MAApB,CAAf;AAGA,SAAK4I,UAAL,GAAkBtI,OAAO,CAACT,MAAR,CAAe+I,UAAf,CAA0BnI,IAA1B,CAA+BH,OAAO,CAACT,MAAvC,CAAlB;AACA,SAAKgJ,UAAL,GAAkBvI,OAAO,CAACT,MAAR,CAAegJ,UAAf,CAA0BpI,IAA1B,CAA+BH,OAAO,CAACT,MAAvC,CAAlB;AACA,SAAKiJ,YAAL,GAAoBxI,OAAO,CAACT,MAAR,CAAeiJ,YAAf,CAA4BrI,IAA5B,CAAiCH,OAAO,CAACT,MAAzC,CAApB;AACA,SAAKkJ,OAAL,GAAezI,OAAO,CAACT,MAAR,CAAekJ,OAAf,CAAuBtI,IAAvB,CAA4BH,OAAO,CAACT,MAApC,CAAf;AACA,SAAKmJ,OAAL,GAAe1I,OAAO,CAACT,MAAR,CAAemJ,OAAf,CAAuBvI,IAAvB,CAA4BH,OAAO,CAACT,MAApC,CAAf;AACA,SAAKoJ,mBAAL,GAA2B3I,OAAO,CAACT,MAAR,CAAeoJ,mBAAf,CAAmCxI,IAAnC,CACzBH,OAAO,CAACT,MADiB,CAA3B;AAGA,SAAKqJ,mBAAL,GAA2B5I,OAAO,CAACT,MAAR,CAAeqJ,mBAAf,CAAmCzI,IAAnC,CACzBH,OAAO,CAACT,MADiB,CAA3B;AAIA,SAAKsJ,oBAAL,GAA4B7I,OAAO,CAACT,MAAR,CAAesJ,oBAAf,CAAoC1I,IAApC,CAC1BH,OAAO,CAACT,MADkB,CAA5B;;AAIA,QAAIF,UAAU,CAACyJ,SAAX,CAAqB,OAArB,CAAJ,EAAmC;AACjC,WAAKC,QAAL,GAAgB,UAACC,KAAD,EAAW;AACzBhJ,QAAAA,OAAO,CAACT,MAAR,CAAewJ,QAAf,CAAwBC,KAAxB;;AACA,QAAA,KAAI,CAACnB,SAAL;AACD,OAHD;AAID;AACF;;;;iCAEoB;AACnB,aAAO,KAAKrI,OAAL,CAAayJ,UAAb,EAAP;AACD;;;0CAGqB;AACpB,WAAKnI,gBAAL,CAAsBoI,mBAAtB;;AAEA,UAAI,KAAK1J,OAAL,CAAa2J,OAAjB,EAA0B;AACxB,aAAKvB,UAAL;AACD,OAFD,MAEO;AACL,aAAKE,OAAL,CAAa,IAAb;AACD;AACF;;;wCAEmB;AAClB,WAAKhH,gBAAL,CAAsBsI,iBAAtB;;AACA,WAAKvB,SAAL;AACD;;;mCAE6B;AAC5B,aAAOwB,iBAAcC,UAAd,EAAP;AACD;;;;;;;;wCAEmBC,sB;;wCACAC,sB","sourcesContent":["/* @flow */\n\nimport Config from './components/config';\nimport Crypto from './components/cryptography/index';\nimport SubscriptionManager from './components/subscription_manager';\nimport ListenerManager from './components/listener_manager';\nimport TokenManager from './components/token_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\n// Actions API\n\nimport * as addMessageActionEndpointConfig from './endpoints/actions/add_message_action';\nimport * as removeMessageActionEndpointConfig from './endpoints/actions/remove_message_action';\nimport * as getMessageActionEndpointConfig from './endpoints/actions/get_message_actions';\n\n// Objects API\n\nimport * as createUserEndpointConfig from './endpoints/users/create_user';\nimport * as updateUserEndpointConfig from './endpoints/users/update_user';\nimport * as deleteUserEndpointConfig from './endpoints/users/delete_user';\nimport * as getUserEndpointConfig from './endpoints/users/get_user';\nimport * as getUsersEndpointConfig from './endpoints/users/get_users';\nimport * as createSpaceEndpointConfig from './endpoints/spaces/create_space';\nimport * as updateSpaceEndpointConfig from './endpoints/spaces/update_space';\nimport * as deleteSpaceEndpointConfig from './endpoints/spaces/delete_space';\nimport * as getSpacesEndpointConfig from './endpoints/spaces/get_spaces';\nimport * as getSpaceEndpointConfig from './endpoints/spaces/get_space';\nimport * as getMembersEndpointConfig from './endpoints/memberships/get_members';\nimport * as addMembersEndpointConfig from './endpoints/memberships/add_members';\nimport * as updateMembersEndpointConfig from './endpoints/memberships/update_members';\nimport * as removeMembersEndpointConfig from './endpoints/memberships/remove_members';\nimport * as getMembershipsEndpointConfig from './endpoints/memberships/get_memberships';\nimport * as updateMembershipsEndpointConfig from './endpoints/memberships/update_memberships';\nimport * as joinSpacesEndpointConfig from './endpoints/memberships/join_spaces';\nimport * as leaveSpacesEndpointConfig from './endpoints/memberships/leave_spaces';\n\nimport * as auditEndpointConfig from './endpoints/access_manager/audit';\nimport * as grantEndpointConfig from './endpoints/access_manager/grant';\nimport * as grantTokenEndpointConfig from './endpoints/access_manager/grant_token';\n\nimport * as publishEndpointConfig from './endpoints/publish';\nimport * as signalEndpointConfig from './endpoints/signal';\nimport * as historyEndpointConfig from './endpoints/history/get_history';\nimport * as deleteMessagesEndpointConfig from './endpoints/history/delete_messages';\nimport * as messageCountsEndpointConfig from './endpoints/history/message_counts';\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';\nimport uuidGenerator from './components/uuid';\n\nexport default class {\n _config: Config;\n _listenerManager: ListenerManager;\n _tokenManager: TokenManager;\n\n // tell flow about the mounted endpoint\n time: Function;\n publish: Function;\n fire: Function;\n\n history: Function;\n deleteMessages: Function;\n messageCounts: 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 grantToken: Function;\n audit: Function;\n //\n subscribe: Function;\n signal: Function;\n presence: Function;\n unsubscribe: Function;\n unsubscribeAll: Function;\n\n // Actions API\n addMessageAction: Function;\n removeMessageAction: Function;\n getMessageActions: Function;\n\n // Objects API\n\n createUser: Function;\n updateUser: Function;\n deleteUser: Function;\n getUser: Function;\n getUsers: Function;\n createSpace: Function;\n updateSpace: Function;\n deleteSpace: Function;\n getSpaces: Function;\n getSpace: Function;\n getMembers: Function;\n addMembers: Function;\n updateMembers: Function;\n removeMembers: Function;\n getMemberships: Function;\n joinSpaces: Function;\n updateMemberships: Function;\n leaveSpaces: Function;\n\n disconnect: Function;\n reconnect: Function;\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 parseToken: Function;\n setToken: Function;\n setTokens: Function;\n getToken: Function;\n getTokens: Function;\n clearTokens: 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 setHeartbeatInterval: Function;\n\n setProxy: Function;\n\n encrypt: Function;\n decrypt: Function;\n\n //\n\n constructor(setup: InternalSetupStruct) {\n let { db, networking, cbor } = setup;\n\n const config = (this._config = new Config({ setup, db }));\n const crypto = new Crypto({ config });\n\n networking.init(config);\n\n const tokenManager = (this._tokenManager = new TokenManager(config, cbor));\n\n let modules = { config, networking, crypto, tokenManager };\n\n const timeEndpoint = endpointCreator.bind(\n this,\n modules,\n timeEndpointConfig\n );\n const leaveEndpoint = endpointCreator.bind(\n this,\n modules,\n presenceLeaveEndpointConfig\n );\n const heartbeatEndpoint = endpointCreator.bind(\n this,\n modules,\n presenceHeartbeatEndpointConfig\n );\n const setStateEndpoint = endpointCreator.bind(\n this,\n modules,\n presenceSetStateConfig\n );\n const subscribeEndpoint = endpointCreator.bind(\n this,\n modules,\n subscribeEndpointConfig\n );\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(\n listenerManager\n );\n\n this.parseToken = tokenManager.parseToken.bind(tokenManager);\n this.setToken = tokenManager.setToken.bind(tokenManager);\n this.setTokens = tokenManager.setTokens.bind(tokenManager);\n this.getToken = tokenManager.getToken.bind(tokenManager);\n this.getTokens = tokenManager.getTokens.bind(tokenManager);\n this.clearTokens = tokenManager.clearTokens.bind(tokenManager);\n\n /* channel groups */\n this.channelGroups = {\n listGroups: endpointCreator.bind(this, modules, listChannelGroupsConfig),\n listChannels: endpointCreator.bind(\n this,\n modules,\n listChannelsInChannelGroupConfig\n ),\n addChannels: endpointCreator.bind(\n this,\n modules,\n addChannelsChannelGroupConfig\n ),\n removeChannels: endpointCreator.bind(\n this,\n modules,\n removeChannelsChannelGroupConfig\n ),\n deleteGroup: endpointCreator.bind(\n this,\n modules,\n deleteChannelGroupConfig\n ),\n };\n /* push */\n this.push = {\n addChannels: endpointCreator.bind(this, modules, addPushChannelsConfig),\n removeChannels: endpointCreator.bind(\n this,\n modules,\n removePushChannelsConfig\n ),\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(\n this,\n modules,\n presenceWhereNowEndpointConfig\n );\n this.getState = endpointCreator.bind(this, modules, presenceGetStateConfig);\n this.setState = subscriptionManager.adaptStateChange.bind(\n subscriptionManager\n );\n /* PAM */\n this.grant = endpointCreator.bind(this, modules, grantEndpointConfig);\n this.grantToken = endpointCreator.bind(this, modules, grantTokenEndpointConfig);\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.signal = endpointCreator.bind(this, modules, signalEndpointConfig);\n\n this.history = endpointCreator.bind(this, modules, historyEndpointConfig);\n this.deleteMessages = endpointCreator.bind(\n this,\n modules,\n deleteMessagesEndpointConfig\n );\n this.messageCounts = endpointCreator.bind(\n this,\n modules,\n messageCountsEndpointConfig\n );\n this.fetchMessages = endpointCreator.bind(\n this,\n modules,\n fetchMessagesEndpointConfig\n );\n\n // Actions API\n\n this.addMessageAction = endpointCreator.bind(\n this,\n modules,\n addMessageActionEndpointConfig\n );\n\n this.removeMessageAction = endpointCreator.bind(\n this,\n modules,\n removeMessageActionEndpointConfig\n );\n\n this.getMessageActions = endpointCreator.bind(\n this,\n modules,\n getMessageActionEndpointConfig\n );\n\n // Objects API\n\n this.createUser = endpointCreator.bind(\n this,\n modules,\n createUserEndpointConfig\n );\n\n this.updateUser = endpointCreator.bind(\n this,\n modules,\n updateUserEndpointConfig\n );\n\n this.deleteUser = endpointCreator.bind(\n this,\n modules,\n deleteUserEndpointConfig\n );\n\n this.getUser = endpointCreator.bind(\n this,\n modules,\n getUserEndpointConfig\n );\n\n this.getUsers = endpointCreator.bind(\n this,\n modules,\n getUsersEndpointConfig\n );\n\n this.createSpace = endpointCreator.bind(\n this,\n modules,\n createSpaceEndpointConfig\n );\n\n this.updateSpace = endpointCreator.bind(\n this,\n modules,\n updateSpaceEndpointConfig\n );\n\n this.deleteSpace = endpointCreator.bind(\n this,\n modules,\n deleteSpaceEndpointConfig\n );\n\n this.getSpaces = endpointCreator.bind(\n this,\n modules,\n getSpacesEndpointConfig\n );\n\n this.getSpace = endpointCreator.bind(\n this,\n modules,\n getSpaceEndpointConfig\n );\n\n this.addMembers = endpointCreator.bind(\n this,\n modules,\n addMembersEndpointConfig\n );\n\n this.updateMembers = endpointCreator.bind(\n this,\n modules,\n updateMembersEndpointConfig\n );\n\n this.removeMembers = endpointCreator.bind(\n this,\n modules,\n removeMembersEndpointConfig\n );\n\n this.getMembers = endpointCreator.bind(\n this,\n modules,\n getMembersEndpointConfig\n );\n\n this.getMemberships = endpointCreator.bind(\n this,\n modules,\n getMembershipsEndpointConfig\n );\n\n this.joinSpaces = endpointCreator.bind(\n this,\n modules,\n joinSpacesEndpointConfig\n );\n\n this.updateMemberships = endpointCreator.bind(\n this,\n modules,\n updateMembershipsEndpointConfig\n );\n\n this.leaveSpaces = endpointCreator.bind(\n this,\n modules,\n leaveSpacesEndpointConfig\n );\n\n this.time = timeEndpoint;\n\n // subscription related methods\n this.subscribe = subscriptionManager.adaptSubscribeChange.bind(\n subscriptionManager\n );\n this.presence = subscriptionManager.adaptPresenceChange.bind(\n subscriptionManager\n );\n this.unsubscribe = subscriptionManager.adaptUnsubscribeChange.bind(\n subscriptionManager\n );\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(\n subscriptionManager\n );\n\n this.getSubscribedChannels = subscriptionManager.getSubscribedChannels.bind(\n subscriptionManager\n );\n this.getSubscribedChannelGroups = subscriptionManager.getSubscribedChannelGroups.bind(\n subscriptionManager\n );\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(\n modules.config\n );\n this.setFilterExpression = modules.config.setFilterExpression.bind(\n modules.config\n );\n\n this.setHeartbeatInterval = modules.config.setHeartbeatInterval.bind(\n modules.config\n );\n\n if (networking.hasModule('proxy')) {\n this.setProxy = (proxy) => {\n modules.config.setProxy(proxy);\n this.reconnect();\n };\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 static generateUUID(): string {\n return uuidGenerator.createUUID();\n }\n\n static OPERATIONS = OPERATIONS;\n static CATEGORIES = CATEGORIES;\n}\n"],"file":"pubnub-common.js"} \ No newline at end of file diff --git a/lib/nativescript/index.js b/lib/nativescript/index.js index d16a99e43..55bb45e47 100644 --- a/lib/nativescript/index.js +++ b/lib/nativescript/index.js @@ -41,7 +41,8 @@ var _default = function (_PubNubCore) { setup.networking = new _networking["default"]({ del: _nativescript.del, get: _nativescript.get, - post: _nativescript.post + post: _nativescript.post, + patch: _nativescript.patch }); setup.sdkFamily = 'NativeScript'; return _possibleConstructorReturn(this, _getPrototypeOf(_default).call(this, setup)); diff --git a/lib/nativescript/index.js.map b/lib/nativescript/index.js.map index 913e45a26..869b94641 100644 --- a/lib/nativescript/index.js.map +++ b/lib/nativescript/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["nativescript/index.js"],"names":["setup","db","Database","networking","Networking","del","get","post","sdkFamily","PubNubCore"],"mappings":";;;;;;;AAEA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;AAGE,oBAAYA,KAAZ,EAAwC;AAAA;;AACtCA,IAAAA,KAAK,CAACC,EAAN,GAAW,IAAIC,kBAAJ,EAAX;AACAF,IAAAA,KAAK,CAACG,UAAN,GAAmB,IAAIC,sBAAJ,CAAe;AAAEC,MAAAA,GAAG,EAAHA,iBAAF;AAAOC,MAAAA,GAAG,EAAHA,iBAAP;AAAYC,MAAAA,IAAI,EAAJA;AAAZ,KAAf,CAAnB;AACAP,IAAAA,KAAK,CAACQ,SAAN,GAAkB,cAAlB;AAHsC,iFAIhCR,KAJgC;AAKvC;;;EAN0BS,wB","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/nativescript';\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 = 'NativeScript';\n super(setup);\n }\n}\n"],"file":"index.js"} \ No newline at end of file +{"version":3,"sources":["nativescript/index.js"],"names":["setup","db","Database","networking","Networking","del","get","post","patch","sdkFamily","PubNubCore"],"mappings":";;;;;;;AAEA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;AAGE,oBAAYA,KAAZ,EAAwC;AAAA;;AACtCA,IAAAA,KAAK,CAACC,EAAN,GAAW,IAAIC,kBAAJ,EAAX;AACAF,IAAAA,KAAK,CAACG,UAAN,GAAmB,IAAIC,sBAAJ,CAAe;AAAEC,MAAAA,GAAG,EAAHA,iBAAF;AAAOC,MAAAA,GAAG,EAAHA,iBAAP;AAAYC,MAAAA,IAAI,EAAJA,kBAAZ;AAAkBC,MAAAA,KAAK,EAALA;AAAlB,KAAf,CAAnB;AACAR,IAAAA,KAAK,CAACS,SAAN,GAAkB,cAAlB;AAHsC,iFAIhCT,KAJgC;AAKvC;;;EAN0BU,wB","sourcesContent":["/* @flow */\n\nimport PubNubCore from '../core/pubnub-common';\nimport Networking from '../networking';\nimport Database from '../db/common';\nimport { del, get, post, patch } from '../networking/modules/nativescript';\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, patch });\n setup.sdkFamily = 'NativeScript';\n super(setup);\n }\n}\n"],"file":"index.js"} \ No newline at end of file diff --git a/lib/networking/modules/web-node.js b/lib/networking/modules/web-node.js index b68fe63c7..6b76042ec 100644 --- a/lib/networking/modules/web-node.js +++ b/lib/networking/modules/web-node.js @@ -93,6 +93,8 @@ function xdr(superagentConstruct, endpoint, callback) { status.error = true; status.category = _this._detectErrorCategory(status); return callback(status, null); + } else if (parsedResponse.error && parsedResponse.error.message) { + status.errorData = parsedResponse.error; } return callback(status, parsedResponse); @@ -100,25 +102,25 @@ function xdr(superagentConstruct, endpoint, callback) { } function get(params, endpoint, callback) { - var superagentConstruct = _superagent["default"].get(this.getStandardOrigin() + endpoint.url).query(params); + var superagentConstruct = _superagent["default"].get(this.getStandardOrigin() + endpoint.url).set(endpoint.headers).query(params); return xdr.call(this, superagentConstruct, endpoint, callback); } function post(params, body, endpoint, callback) { - var superagentConstruct = _superagent["default"].post(this.getStandardOrigin() + endpoint.url).query(params).send(body); + var superagentConstruct = _superagent["default"].post(this.getStandardOrigin() + endpoint.url).query(params).set(endpoint.headers).send(body); return xdr.call(this, superagentConstruct, endpoint, callback); } function patch(params, body, endpoint, callback) { - var superagentConstruct = _superagent["default"].patch(this.getStandardOrigin() + endpoint.url).query(params).send(body); + var superagentConstruct = _superagent["default"].patch(this.getStandardOrigin() + endpoint.url).query(params).set(endpoint.headers).send(body); return xdr.call(this, superagentConstruct, endpoint, callback); } function del(params, endpoint, callback) { - var superagentConstruct = _superagent["default"]["delete"](this.getStandardOrigin() + endpoint.url).query(params); + var superagentConstruct = _superagent["default"]["delete"](this.getStandardOrigin() + endpoint.url).set(endpoint.headers).query(params); return xdr.call(this, superagentConstruct, endpoint, callback); } diff --git a/lib/networking/modules/web-node.js.map b/lib/networking/modules/web-node.js.map index eb9a119d7..688dbefc5 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":["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","parsedResponse","status","error","operation","statusCode","response","errorData","JSON","parse","e","category","_detectErrorCategory","message","service","get","params","superagent","getStandardOrigin","query","post","body","send","patch","del"],"mappings":";;;;;;;;;;AAGA;;AACA;;;;AAKA,SAASA,GAAT,CAAaC,GAAb,EAA0B;AACxB,MAAIC,WAAW,GAAG,SAAdA,WAAc,GAAM;AACtB,QAAIC,OAAO,IAAIA,OAAO,CAACH,GAAvB,EAA4B,OAAOG,OAAP;AAC5B,QAAIC,MAAM,IAAIA,MAAM,CAACD,OAAjB,IAA4BC,MAAM,CAACD,OAAP,CAAeH,GAA/C,EAAoD,OAAOI,MAAM,CAACD,OAAd;AACpD,WAAOA,OAAP;AACD,GAJD;;AAMA,MAAIE,KAAK,GAAG,IAAIC,IAAJ,GAAWC,OAAX,EAAZ;AACA,MAAIC,SAAS,GAAG,IAAIF,IAAJ,GAAWG,WAAX,EAAhB;;AACA,MAAIC,MAAM,GAAGR,WAAW,EAAxB;;AACAQ,EAAAA,MAAM,CAACV,GAAP,CAAW,OAAX;AACAU,EAAAA,MAAM,CAACV,GAAP,YAAeQ,SAAf,QAA6B,IAA7B,EAAmCP,GAAG,CAACU,GAAvC,EAA4C,IAA5C,EAAkDV,GAAG,CAACW,EAAtD;AACAF,EAAAA,MAAM,CAACV,GAAP,CAAW,OAAX;AAEAC,EAAAA,GAAG,CAACY,EAAJ,CAAO,UAAP,EAAmB,UAACC,GAAD,EAAS;AAC1B,QAAIC,GAAG,GAAG,IAAIT,IAAJ,GAAWC,OAAX,EAAV;AACA,QAAIS,OAAO,GAAGD,GAAG,GAAGV,KAApB;AACA,QAAIY,aAAa,GAAG,IAAIX,IAAJ,GAAWG,WAAX,EAApB;AAEAC,IAAAA,MAAM,CAACV,GAAP,CAAW,QAAX;AACAU,IAAAA,MAAM,CAACV,GAAP,YACMiB,aADN,gBACyBD,OADzB,QAEE,IAFF,EAGEf,GAAG,CAACU,GAHN,EAIE,IAJF,EAKEV,GAAG,CAACW,EALN,EAME,IANF,EAOEE,GAAG,CAACI,IAPN;AASAR,IAAAA,MAAM,CAACV,GAAP,CAAW,OAAX;AACD,GAhBD;AAiBD;;AAED,SAASmB,GAAT,CACEC,mBADF,EAEEC,QAFF,EAGEC,QAHF,EAIU;AAAA;;AACR,MAAI,KAAKC,OAAL,CAAaC,YAAjB,EAA+B;AAC7BJ,IAAAA,mBAAmB,GAAGA,mBAAmB,CAACK,GAApB,CAAwBzB,GAAxB,CAAtB;AACD;;AAED,MAAI,KAAKuB,OAAL,CAAaG,KAAb,IAAsB,KAAKC,QAAL,CAAcD,KAAxC,EAA+C;AAC7CN,IAAAA,mBAAmB,GAAG,KAAKO,QAAL,CAAcD,KAAd,CAAoBE,IAApB,CAAyB,IAAzB,EAA+BR,mBAA/B,CAAtB;AACD;;AAED,MAAI,KAAKG,OAAL,CAAaM,SAAb,IAA0B,KAAKF,QAAL,CAAcE,SAA5C,EAAuD;AACrDT,IAAAA,mBAAmB,GAAG,KAAKO,QAAL,CAAcE,SAAd,CAAwBT,mBAAxB,CAAtB;AACD;;AAED,SAAOA,mBAAmB,CAACU,OAApB,CAA4BT,QAAQ,CAACS,OAArC,EAA8CC,GAA9C,CAAkD,UAACC,GAAD,EAAMC,IAAN,EAAe;AACtE,QAAIC,cAAJ;AACA,QAAIC,MAA0B,GAAG,EAAjC;AACAA,IAAAA,MAAM,CAACC,KAAP,GAAeJ,GAAG,KAAK,IAAvB;AACAG,IAAAA,MAAM,CAACE,SAAP,GAAmBhB,QAAQ,CAACgB,SAA5B;;AAEA,QAAIJ,IAAI,IAAIA,IAAI,CAACE,MAAjB,EAAyB;AACvBA,MAAAA,MAAM,CAACG,UAAP,GAAoBL,IAAI,CAACE,MAAzB;AACD;;AAED,QAAIH,GAAJ,EAAS;AACP,UAAIA,GAAG,CAACO,QAAJ,IAAgBP,GAAG,CAACO,QAAJ,CAAarB,IAA7B,IAAqC,CAAC,KAAI,CAACK,OAAL,CAAaC,YAAvD,EAAqE;AACnE,YAAI;AACFW,UAAAA,MAAM,CAACK,SAAP,GAAmBC,IAAI,CAACC,KAAL,CAAWV,GAAG,CAACO,QAAJ,CAAarB,IAAxB,CAAnB;AACD,SAFD,CAEE,OAAOyB,CAAP,EAAU;AACVR,UAAAA,MAAM,CAACK,SAAP,GAAmBR,GAAnB;AACD;AACF,OAND,MAMO;AACLG,QAAAA,MAAM,CAACK,SAAP,GAAmBR,GAAnB;AACD;;AACDG,MAAAA,MAAM,CAACS,QAAP,GAAkB,KAAI,CAACC,oBAAL,CAA0Bb,GAA1B,CAAlB;AACA,aAAOV,QAAQ,CAACa,MAAD,EAAS,IAAT,CAAf;AACD;;AAED,QAAI;AACFD,MAAAA,cAAc,GAAGO,IAAI,CAACC,KAAL,CAAWT,IAAI,CAACf,IAAhB,CAAjB;AACD,KAFD,CAEE,OAAOyB,CAAP,EAAU;AACVR,MAAAA,MAAM,CAACK,SAAP,GAAmBP,IAAnB;AACAE,MAAAA,MAAM,CAACC,KAAP,GAAe,IAAf;AACA,aAAOd,QAAQ,CAACa,MAAD,EAAS,IAAT,CAAf;AACD;;AAED,QACED,cAAc,CAACE,KAAf,IACAF,cAAc,CAACE,KAAf,KAAyB,CADzB,IAEAF,cAAc,CAACC,MAFf,IAGAD,cAAc,CAACY,OAHf,IAIAZ,cAAc,CAACa,OALjB,EAME;AACAZ,MAAAA,MAAM,CAACK,SAAP,GAAmBN,cAAnB;AACAC,MAAAA,MAAM,CAACG,UAAP,GAAoBJ,cAAc,CAACC,MAAnC;AACAA,MAAAA,MAAM,CAACC,KAAP,GAAe,IAAf;AACAD,MAAAA,MAAM,CAACS,QAAP,GAAkB,KAAI,CAACC,oBAAL,CAA0BV,MAA1B,CAAlB;AACA,aAAOb,QAAQ,CAACa,MAAD,EAAS,IAAT,CAAf;AACD;;AAED,WAAOb,QAAQ,CAACa,MAAD,EAASD,cAAT,CAAf;AACD,GA/CM,CAAP;AAgDD;;AAEM,SAASc,GAAT,CACLC,MADK,EAEL5B,QAFK,EAGLC,QAHK,EAIO;AACZ,MAAIF,mBAAmB,GAAG8B,uBACvBF,GADuB,CACnB,KAAKG,iBAAL,KAA2B9B,QAAQ,CAACV,GADjB,EAEvByC,KAFuB,CAEjBH,MAFiB,CAA1B;;AAGA,SAAO9B,GAAG,CAACS,IAAJ,CAAS,IAAT,EAAeR,mBAAf,EAAoCC,QAApC,EAA8CC,QAA9C,CAAP;AACD;;AAEM,SAAS+B,IAAT,CACLJ,MADK,EAELK,IAFK,EAGLjC,QAHK,EAILC,QAJK,EAKO;AACZ,MAAIF,mBAAmB,GAAG8B,uBACvBG,IADuB,CAClB,KAAKF,iBAAL,KAA2B9B,QAAQ,CAACV,GADlB,EAEvByC,KAFuB,CAEjBH,MAFiB,EAGvBM,IAHuB,CAGlBD,IAHkB,CAA1B;;AAIA,SAAOnC,GAAG,CAACS,IAAJ,CAAS,IAAT,EAAeR,mBAAf,EAAoCC,QAApC,EAA8CC,QAA9C,CAAP;AACD;;AAEM,SAASkC,KAAT,CACLP,MADK,EAELK,IAFK,EAGLjC,QAHK,EAILC,QAJK,EAKO;AACZ,MAAIF,mBAAmB,GAAG8B,uBACvBM,KADuB,CACjB,KAAKL,iBAAL,KAA2B9B,QAAQ,CAACV,GADnB,EAEvByC,KAFuB,CAEjBH,MAFiB,EAGvBM,IAHuB,CAGlBD,IAHkB,CAA1B;;AAIA,SAAOnC,GAAG,CAACS,IAAJ,CAAS,IAAT,EAAeR,mBAAf,EAAoCC,QAApC,EAA8CC,QAA9C,CAAP;AACD;;AAEM,SAASmC,GAAT,CACLR,MADK,EAEL5B,QAFK,EAGLC,QAHK,EAIO;AACZ,MAAIF,mBAAmB,GAAG8B,iCAChB,KAAKC,iBAAL,KAA2B9B,QAAQ,CAACV,GADpB,EAEvByC,KAFuB,CAEjBH,MAFiB,CAA1B;;AAGA,SAAO9B,GAAG,CAACS,IAAJ,CAAS,IAAT,EAAeR,mBAAf,EAAoCC,QAApC,EAA8CC,QAA9C,CAAP;AACD","sourcesContent":["/* @flow */\n/* global window */\n\nimport superagent from 'superagent';\nimport {\n EndpointDefinition,\n StatusAnnouncement,\n} 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(\n `[${timestampDone} / ${elapsed}]`,\n '\\n',\n req.url,\n '\\n',\n req.qs,\n '\\n',\n res.text\n ); // eslint-disable-line no-console\n logger.log('-----'); // eslint-disable-line no-console\n });\n}\n\nfunction xdr(\n superagentConstruct: superagent,\n endpoint: EndpointDefinition,\n callback: Function\n): 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.timeout(endpoint.timeout).end((err, resp) => {\n let parsedResponse;\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 if (err.response && err.response.text && !this._config.logVerbosity) {\n try {\n status.errorData = JSON.parse(err.response.text);\n } catch (e) {\n status.errorData = err;\n }\n } else {\n status.errorData = err;\n }\n status.category = this._detectErrorCategory(err);\n return callback(status, null);\n }\n\n try {\n parsedResponse = JSON.parse(resp.text);\n } catch (e) {\n status.errorData = resp;\n status.error = true;\n return callback(status, null);\n }\n\n if (\n parsedResponse.error &&\n parsedResponse.error === 1 &&\n parsedResponse.status &&\n parsedResponse.message &&\n parsedResponse.service\n ) {\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(\n params: Object,\n endpoint: EndpointDefinition,\n callback: Function\n): 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(\n params: Object,\n body: string,\n endpoint: EndpointDefinition,\n callback: Function\n): 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 patch(\n params: Object,\n body: string,\n endpoint: EndpointDefinition,\n callback: Function\n): superagent {\n let superagentConstruct = superagent\n .patch(this.getStandardOrigin() + endpoint.url)\n .query(params)\n .send(body);\n return xdr.call(this, superagentConstruct, endpoint, callback);\n}\n\nexport function del(\n params: Object,\n endpoint: EndpointDefinition,\n callback: Function\n): superagent {\n let superagentConstruct = superagent\n .delete(this.getStandardOrigin() + endpoint.url)\n .query(params);\n return xdr.call(this, superagentConstruct, endpoint, callback);\n}\n"],"file":"web-node.js"} \ No newline at end of file +{"version":3,"sources":["networking/modules/web-node.js"],"names":["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","parsedResponse","status","error","operation","statusCode","response","errorData","JSON","parse","e","category","_detectErrorCategory","message","service","get","params","superagent","getStandardOrigin","set","headers","query","post","body","send","patch","del"],"mappings":";;;;;;;;;;AAGA;;AACA;;;;AAKA,SAASA,GAAT,CAAaC,GAAb,EAA0B;AACxB,MAAIC,WAAW,GAAG,SAAdA,WAAc,GAAM;AACtB,QAAIC,OAAO,IAAIA,OAAO,CAACH,GAAvB,EAA4B,OAAOG,OAAP;AAC5B,QAAIC,MAAM,IAAIA,MAAM,CAACD,OAAjB,IAA4BC,MAAM,CAACD,OAAP,CAAeH,GAA/C,EAAoD,OAAOI,MAAM,CAACD,OAAd;AACpD,WAAOA,OAAP;AACD,GAJD;;AAMA,MAAIE,KAAK,GAAG,IAAIC,IAAJ,GAAWC,OAAX,EAAZ;AACA,MAAIC,SAAS,GAAG,IAAIF,IAAJ,GAAWG,WAAX,EAAhB;;AACA,MAAIC,MAAM,GAAGR,WAAW,EAAxB;;AACAQ,EAAAA,MAAM,CAACV,GAAP,CAAW,OAAX;AACAU,EAAAA,MAAM,CAACV,GAAP,YAAeQ,SAAf,QAA6B,IAA7B,EAAmCP,GAAG,CAACU,GAAvC,EAA4C,IAA5C,EAAkDV,GAAG,CAACW,EAAtD;AACAF,EAAAA,MAAM,CAACV,GAAP,CAAW,OAAX;AAEAC,EAAAA,GAAG,CAACY,EAAJ,CAAO,UAAP,EAAmB,UAACC,GAAD,EAAS;AAC1B,QAAIC,GAAG,GAAG,IAAIT,IAAJ,GAAWC,OAAX,EAAV;AACA,QAAIS,OAAO,GAAGD,GAAG,GAAGV,KAApB;AACA,QAAIY,aAAa,GAAG,IAAIX,IAAJ,GAAWG,WAAX,EAApB;AAEAC,IAAAA,MAAM,CAACV,GAAP,CAAW,QAAX;AACAU,IAAAA,MAAM,CAACV,GAAP,YACMiB,aADN,gBACyBD,OADzB,QAEE,IAFF,EAGEf,GAAG,CAACU,GAHN,EAIE,IAJF,EAKEV,GAAG,CAACW,EALN,EAME,IANF,EAOEE,GAAG,CAACI,IAPN;AASAR,IAAAA,MAAM,CAACV,GAAP,CAAW,OAAX;AACD,GAhBD;AAiBD;;AAED,SAASmB,GAAT,CACEC,mBADF,EAEEC,QAFF,EAGEC,QAHF,EAIU;AAAA;;AACR,MAAI,KAAKC,OAAL,CAAaC,YAAjB,EAA+B;AAC7BJ,IAAAA,mBAAmB,GAAGA,mBAAmB,CAACK,GAApB,CAAwBzB,GAAxB,CAAtB;AACD;;AAED,MAAI,KAAKuB,OAAL,CAAaG,KAAb,IAAsB,KAAKC,QAAL,CAAcD,KAAxC,EAA+C;AAC7CN,IAAAA,mBAAmB,GAAG,KAAKO,QAAL,CAAcD,KAAd,CAAoBE,IAApB,CAAyB,IAAzB,EAA+BR,mBAA/B,CAAtB;AACD;;AAED,MAAI,KAAKG,OAAL,CAAaM,SAAb,IAA0B,KAAKF,QAAL,CAAcE,SAA5C,EAAuD;AACrDT,IAAAA,mBAAmB,GAAG,KAAKO,QAAL,CAAcE,SAAd,CAAwBT,mBAAxB,CAAtB;AACD;;AAED,SAAOA,mBAAmB,CAACU,OAApB,CAA4BT,QAAQ,CAACS,OAArC,EAA8CC,GAA9C,CAAkD,UAACC,GAAD,EAAMC,IAAN,EAAe;AACtE,QAAIC,cAAJ;AACA,QAAIC,MAA0B,GAAG,EAAjC;AACAA,IAAAA,MAAM,CAACC,KAAP,GAAeJ,GAAG,KAAK,IAAvB;AACAG,IAAAA,MAAM,CAACE,SAAP,GAAmBhB,QAAQ,CAACgB,SAA5B;;AAEA,QAAIJ,IAAI,IAAIA,IAAI,CAACE,MAAjB,EAAyB;AACvBA,MAAAA,MAAM,CAACG,UAAP,GAAoBL,IAAI,CAACE,MAAzB;AACD;;AAED,QAAIH,GAAJ,EAAS;AACP,UAAIA,GAAG,CAACO,QAAJ,IAAgBP,GAAG,CAACO,QAAJ,CAAarB,IAA7B,IAAqC,CAAC,KAAI,CAACK,OAAL,CAAaC,YAAvD,EAAqE;AACnE,YAAI;AACFW,UAAAA,MAAM,CAACK,SAAP,GAAmBC,IAAI,CAACC,KAAL,CAAWV,GAAG,CAACO,QAAJ,CAAarB,IAAxB,CAAnB;AACD,SAFD,CAEE,OAAOyB,CAAP,EAAU;AACVR,UAAAA,MAAM,CAACK,SAAP,GAAmBR,GAAnB;AACD;AACF,OAND,MAMO;AACLG,QAAAA,MAAM,CAACK,SAAP,GAAmBR,GAAnB;AACD;;AACDG,MAAAA,MAAM,CAACS,QAAP,GAAkB,KAAI,CAACC,oBAAL,CAA0Bb,GAA1B,CAAlB;AACA,aAAOV,QAAQ,CAACa,MAAD,EAAS,IAAT,CAAf;AACD;;AAED,QAAI;AACFD,MAAAA,cAAc,GAAGO,IAAI,CAACC,KAAL,CAAWT,IAAI,CAACf,IAAhB,CAAjB;AACD,KAFD,CAEE,OAAOyB,CAAP,EAAU;AACVR,MAAAA,MAAM,CAACK,SAAP,GAAmBP,IAAnB;AACAE,MAAAA,MAAM,CAACC,KAAP,GAAe,IAAf;AACA,aAAOd,QAAQ,CAACa,MAAD,EAAS,IAAT,CAAf;AACD;;AAED,QACED,cAAc,CAACE,KAAf,IACAF,cAAc,CAACE,KAAf,KAAyB,CADzB,IAEAF,cAAc,CAACC,MAFf,IAGAD,cAAc,CAACY,OAHf,IAIAZ,cAAc,CAACa,OALjB,EAME;AACAZ,MAAAA,MAAM,CAACK,SAAP,GAAmBN,cAAnB;AACAC,MAAAA,MAAM,CAACG,UAAP,GAAoBJ,cAAc,CAACC,MAAnC;AACAA,MAAAA,MAAM,CAACC,KAAP,GAAe,IAAf;AACAD,MAAAA,MAAM,CAACS,QAAP,GAAkB,KAAI,CAACC,oBAAL,CAA0BV,MAA1B,CAAlB;AACA,aAAOb,QAAQ,CAACa,MAAD,EAAS,IAAT,CAAf;AACD,KAZD,MAYO,IAAID,cAAc,CAACE,KAAf,IAAwBF,cAAc,CAACE,KAAf,CAAqBU,OAAjD,EAA0D;AAC/DX,MAAAA,MAAM,CAACK,SAAP,GAAmBN,cAAc,CAACE,KAAlC;AACD;;AAED,WAAOd,QAAQ,CAACa,MAAD,EAASD,cAAT,CAAf;AACD,GAjDM,CAAP;AAkDD;;AAEM,SAASc,GAAT,CACLC,MADK,EAEL5B,QAFK,EAGLC,QAHK,EAIO;AACZ,MAAIF,mBAAmB,GAAG8B,uBACvBF,GADuB,CACnB,KAAKG,iBAAL,KAA2B9B,QAAQ,CAACV,GADjB,EAEvByC,GAFuB,CAEnB/B,QAAQ,CAACgC,OAFU,EAGvBC,KAHuB,CAGjBL,MAHiB,CAA1B;;AAIA,SAAO9B,GAAG,CAACS,IAAJ,CAAS,IAAT,EAAeR,mBAAf,EAAoCC,QAApC,EAA8CC,QAA9C,CAAP;AACD;;AAEM,SAASiC,IAAT,CACLN,MADK,EAELO,IAFK,EAGLnC,QAHK,EAILC,QAJK,EAKO;AACZ,MAAIF,mBAAmB,GAAG8B,uBACvBK,IADuB,CAClB,KAAKJ,iBAAL,KAA2B9B,QAAQ,CAACV,GADlB,EAEvB2C,KAFuB,CAEjBL,MAFiB,EAGvBG,GAHuB,CAGnB/B,QAAQ,CAACgC,OAHU,EAIvBI,IAJuB,CAIlBD,IAJkB,CAA1B;;AAKA,SAAOrC,GAAG,CAACS,IAAJ,CAAS,IAAT,EAAeR,mBAAf,EAAoCC,QAApC,EAA8CC,QAA9C,CAAP;AACD;;AAEM,SAASoC,KAAT,CACLT,MADK,EAELO,IAFK,EAGLnC,QAHK,EAILC,QAJK,EAKO;AACZ,MAAIF,mBAAmB,GAAG8B,uBACvBQ,KADuB,CACjB,KAAKP,iBAAL,KAA2B9B,QAAQ,CAACV,GADnB,EAEvB2C,KAFuB,CAEjBL,MAFiB,EAGvBG,GAHuB,CAGnB/B,QAAQ,CAACgC,OAHU,EAIvBI,IAJuB,CAIlBD,IAJkB,CAA1B;;AAKA,SAAOrC,GAAG,CAACS,IAAJ,CAAS,IAAT,EAAeR,mBAAf,EAAoCC,QAApC,EAA8CC,QAA9C,CAAP;AACD;;AAEM,SAASqC,GAAT,CACLV,MADK,EAEL5B,QAFK,EAGLC,QAHK,EAIO;AACZ,MAAIF,mBAAmB,GAAG8B,iCAChB,KAAKC,iBAAL,KAA2B9B,QAAQ,CAACV,GADpB,EAEvByC,GAFuB,CAEnB/B,QAAQ,CAACgC,OAFU,EAGvBC,KAHuB,CAGjBL,MAHiB,CAA1B;;AAIA,SAAO9B,GAAG,CAACS,IAAJ,CAAS,IAAT,EAAeR,mBAAf,EAAoCC,QAApC,EAA8CC,QAA9C,CAAP;AACD","sourcesContent":["/* @flow */\n/* global window */\n\nimport superagent from 'superagent';\nimport {\n EndpointDefinition,\n StatusAnnouncement,\n} 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(\n `[${timestampDone} / ${elapsed}]`,\n '\\n',\n req.url,\n '\\n',\n req.qs,\n '\\n',\n res.text\n ); // eslint-disable-line no-console\n logger.log('-----'); // eslint-disable-line no-console\n });\n}\n\nfunction xdr(\n superagentConstruct: superagent,\n endpoint: EndpointDefinition,\n callback: Function\n): 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.timeout(endpoint.timeout).end((err, resp) => {\n let parsedResponse;\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 if (err.response && err.response.text && !this._config.logVerbosity) {\n try {\n status.errorData = JSON.parse(err.response.text);\n } catch (e) {\n status.errorData = err;\n }\n } else {\n status.errorData = err;\n }\n status.category = this._detectErrorCategory(err);\n return callback(status, null);\n }\n\n try {\n parsedResponse = JSON.parse(resp.text);\n } catch (e) {\n status.errorData = resp;\n status.error = true;\n return callback(status, null);\n }\n\n if (\n parsedResponse.error &&\n parsedResponse.error === 1 &&\n parsedResponse.status &&\n parsedResponse.message &&\n parsedResponse.service\n ) {\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 } else if (parsedResponse.error && parsedResponse.error.message) {\n status.errorData = parsedResponse.error;\n }\n\n return callback(status, parsedResponse);\n });\n}\n\nexport function get(\n params: Object,\n endpoint: EndpointDefinition,\n callback: Function\n): superagent {\n let superagentConstruct = superagent\n .get(this.getStandardOrigin() + endpoint.url)\n .set(endpoint.headers)\n .query(params);\n return xdr.call(this, superagentConstruct, endpoint, callback);\n}\n\nexport function post(\n params: Object,\n body: string,\n endpoint: EndpointDefinition,\n callback: Function\n): superagent {\n let superagentConstruct = superagent\n .post(this.getStandardOrigin() + endpoint.url)\n .query(params)\n .set(endpoint.headers)\n .send(body);\n return xdr.call(this, superagentConstruct, endpoint, callback);\n}\n\nexport function patch(\n params: Object,\n body: string,\n endpoint: EndpointDefinition,\n callback: Function\n): superagent {\n let superagentConstruct = superagent\n .patch(this.getStandardOrigin() + endpoint.url)\n .query(params)\n .set(endpoint.headers)\n .send(body);\n return xdr.call(this, superagentConstruct, endpoint, callback);\n}\n\nexport function del(\n params: Object,\n endpoint: EndpointDefinition,\n callback: Function\n): superagent {\n let superagentConstruct = superagent\n .delete(this.getStandardOrigin() + endpoint.url)\n .set(endpoint.headers)\n .query(params);\n return xdr.call(this, superagentConstruct, endpoint, callback);\n}\n"],"file":"web-node.js"} \ No newline at end of file From 435325f71f22fad2b8fd8e4259cfc13a80b4c086 Mon Sep 17 00:00:00 2001 From: Serhii Mamontov Date: Wed, 20 Nov 2019 00:55:44 +0200 Subject: [PATCH 5/8] fix(message-actions): move message actions to another variable Make changes in fetch_messages endpoint to move message actions (if any) for message from 'data' to 'actions' property (old 'data' will be in place for few updates to not break existing clients). test: fix PAMv3 tests mocked signature Make sure, that we don't include dynamic 'pnsdk' into generated signature, so it won't break each time new version released. refactor: fix lint warnings for tests and code Make changes according to linter and flow checkers. --- gulpfile.babel.js | 3 +- .../endpoints/actions/get_message_actions.js | 2 +- src/core/endpoints/fetch_messages.js | 4 +- .../endpoints/fetch_messages.test.js | 88 ++++++--- .../integration/endpoints/grant_token.test.js | 19 +- test/integration/endpoints/history.test.js | 35 ++-- .../endpoints/message_actions.test.js | 167 +++++++++--------- 7 files changed, 180 insertions(+), 138 deletions(-) diff --git a/gulpfile.babel.js b/gulpfile.babel.js index 45e207e07..819feaa8e 100644 --- a/gulpfile.babel.js +++ b/gulpfile.babel.js @@ -23,6 +23,7 @@ const unzip = require('gulp-unzip'); // increase mocha timeout from default of 2000 to allow long running async tests to complete const mochaTimeout = 5000; +gulp.on('error', process.exit.bind(process, 1)); gulp.task('clean', () => { return gulp .src(['lib', 'dist', 'coverage', 'upload'], { read: false, allowEmpty: true }) @@ -188,4 +189,4 @@ gulp.task('webpack', (done) => { gulp.task('compile', (done) => { runSequence('clean', 'babel', 'webpack', 'uglify_web', 'uglify_titanium', 'create_version', 'create_version_gzip', done); -}); \ No newline at end of file +}); diff --git a/src/core/endpoints/actions/get_message_actions.js b/src/core/endpoints/actions/get_message_actions.js index 8b59add31..2a72415fb 100644 --- a/src/core/endpoints/actions/get_message_actions.js +++ b/src/core/endpoints/actions/get_message_actions.js @@ -59,7 +59,7 @@ export function handleResponse( getMessageActionsResponse: Object ): GetMessageActionsResponse { /** @type GetMessageActionsResponse */ - let response = { data: getMessageActionsResponse.data }; + let response = { data: getMessageActionsResponse.data, start: null, end: null }; if (response.data.length) { response.end = response.data[response.data.length - 1].actionTimetoken; diff --git a/src/core/endpoints/fetch_messages.js b/src/core/endpoints/fetch_messages.js index 0d28b4bc2..701694af9 100644 --- a/src/core/endpoints/fetch_messages.js +++ b/src/core/endpoints/fetch_messages.js @@ -98,11 +98,13 @@ export function handleResponse( (serverResponse.channels[channelName] || []).forEach((messageEnvelope) => { let announce: MessageAnnouncement = {}; announce.channel = channelName; - announce.subscription = null; announce.timetoken = messageEnvelope.timetoken; announce.message = __processMessage(modules, messageEnvelope.message); if (messageEnvelope.actions) { + announce.actions = messageEnvelope.actions; + + // This should be kept for few updates for existing clients consistency. announce.data = messageEnvelope.actions; } if (messageEnvelope.meta) { diff --git a/test/integration/endpoints/fetch_messages.test.js b/test/integration/endpoints/fetch_messages.test.js index af22d837d..ccaefd148 100644 --- a/test/integration/endpoints/fetch_messages.test.js +++ b/test/integration/endpoints/fetch_messages.test.js @@ -1,4 +1,4 @@ -/* global describe, beforeEach, afterEach, it, before, after */ +/* global describe, beforeEach, afterEach, it, after */ /* eslint no-console: 0 */ import assert from 'assert'; @@ -18,7 +18,7 @@ function publishMessagesToChannel(client: PubNub, count: Number, channel: String } client.publish(payload, (status, response) => { - publishCompleted++; + publishCompleted += 1; if (!status.error) { messages.push({ message: payload.message, timetoken: response.timetoken }); @@ -27,13 +27,12 @@ function publishMessagesToChannel(client: PubNub, count: Number, channel: String console.error('Publish did fail:', status); } - if (publishCompleted < count) { - publish(publishCompleted); - } else if (publishCompleted === count) { - completion(messages); - } + if (publishCompleted < count) { + publish(publishCompleted); + } else if (publishCompleted === count) { + completion(messages); } - ); + }); }; publish(publishCompleted); @@ -49,12 +48,12 @@ function addActionsInChannel(client: PubNub, count: Number, messageTimetokens: A let actionsAdded = 0; let actions = []; - for (let messageIdx = 0; messageIdx < messageTimetokens.length; messageIdx++) { + for (let messageIdx = 0; messageIdx < messageTimetokens.length; messageIdx += 1) { const messageTimetoken = messageTimetokens[messageIdx]; - for (let messageActionIdx = 0; messageActionIdx < count; messageActionIdx++) { + for (let messageActionIdx = 0; messageActionIdx < count; messageActionIdx += 1) { /** @type MessageAction */ - const action = { type: types[(messageActionIdx + 1)%3], value: values[(messageActionIdx + 1)%10] }; + const action = { type: types[(messageActionIdx + 1) % 3], value: values[(messageActionIdx + 1) % 10] }; actionsToAdd.push({ messageTimetoken, action }); } @@ -66,7 +65,7 @@ function addActionsInChannel(client: PubNub, count: Number, messageTimetokens: A client.addMessageAction( { channel, messageTimetoken, action }, (status, response) => { - actionsAdded++; + actionsAdded += 1; if (!status.error) { actions.push(response.data); @@ -107,8 +106,8 @@ describe('fetch messages endpoints', () => { beforeEach(() => { nock.cleanAll(); pubnub = new PubNub({ - subscribeKey: subscribeKey, - publishKey: publishKey, + subscribeKey, + publishKey, uuid: 'myUUID', }); }); @@ -140,7 +139,6 @@ describe('fetch messages endpoints', () => { message: { text: 'hey1', }, - subscription: null, timetoken: '11', }, { @@ -148,7 +146,6 @@ describe('fetch messages endpoints', () => { message: { text: 'hey2', }, - subscription: null, timetoken: '12', }, ], @@ -158,7 +155,6 @@ describe('fetch messages endpoints', () => { message: { text: 'hey3', }, - subscription: null, timetoken: '21', }, { @@ -166,7 +162,6 @@ describe('fetch messages endpoints', () => { message: { text: 'hey2', }, - subscription: null, timetoken: '22', }, ], @@ -206,7 +201,6 @@ describe('fetch messages endpoints', () => { message: { text: 'hey', }, - subscription: null, timetoken: '11', }, { @@ -214,7 +208,6 @@ describe('fetch messages endpoints', () => { message: { text: 'hey', }, - subscription: null, timetoken: '12', }, ], @@ -224,7 +217,6 @@ describe('fetch messages endpoints', () => { message: { text2: 'hey2', }, - subscription: null, timetoken: '21', }, { @@ -232,7 +224,6 @@ describe('fetch messages endpoints', () => { message: { text2: 'hey2', }, - subscription: null, timetoken: '22', }, ], @@ -265,7 +256,7 @@ describe('fetch messages endpoints', () => { try { pubnub.fetchMessages( { channels: ['channelA', 'channelB'], includeMessageActions: true }, - (status, response) => {} + () => {} ); } catch (error) { assert.equal(error.message, 'History can return actions data for a single channel only. Either pass a single channel or disable the includeMessageActions flag.'); @@ -275,13 +266,13 @@ describe('fetch messages endpoints', () => { assert(errorCatched); }); - it('supports actions', (done) => { + it('supports actions (stored as \'data\' field)', (done) => { const channel = PubNub.generateUUID(); const expectedMessagesCount = 2; const expectedActionsCount = 4; publishMessagesToChannel(pubnub, expectedMessagesCount, channel, (messages) => { - const messageTimetokens = messages.map((message) => message.timetoken ); + const messageTimetokens = messages.map((message) => message.timetoken); addActionsInChannel(pubnub, expectedActionsCount, messageTimetokens, channel, (actions) => { setTimeout(() => { @@ -294,7 +285,49 @@ describe('fetch messages endpoints', () => { Object.keys(actionsByType).forEach((actionType) => { Object.keys(actionsByType[actionType]).forEach((actionValue) => { let actionFound = false; - historyActionsCount++; + historyActionsCount += 1; + + actions.forEach((action) => { + if (action.value === actionValue) { + actionFound = true; + } + }); + + assert.equal(actionFound, true); + }); + }); + + assert.equal(historyActionsCount, expectedActionsCount); + assert.equal(fetchedMessages[0].timetoken, messageTimetokens[0]); + assert.equal(fetchedMessages[fetchedMessages.length - 1].timetoken, messageTimetokens[messageTimetokens.length - 1]); + + done(); + }); + }, 2000); + }); + }); + }).timeout(60000); + + it('supports actions (stored as \'actions\' field)', (done) => { + const channel = PubNub.generateUUID(); + const expectedMessagesCount = 2; + const expectedActionsCount = 4; + + publishMessagesToChannel(pubnub, expectedMessagesCount, channel, (messages) => { + const messageTimetokens = messages.map((message) => message.timetoken); + + addActionsInChannel(pubnub, expectedActionsCount, messageTimetokens, channel, (actions) => { + setTimeout(() => { + pubnub.fetchMessages({ channels: [channel], includeMessageActions: true }, (status, response) => { + assert.equal(status.error, false); + const fetchedMessages = response.channels[channel]; + const actionsByType = fetchedMessages[0].actions; + let historyActionsCount = 0; + + Object.keys(actionsByType).forEach((actionType) => { + Object.keys(actionsByType[actionType]).forEach((actionValue) => { + let actionFound = false; + historyActionsCount += 1; actions.forEach((action) => { if (action.value === actionValue) { @@ -308,8 +341,7 @@ describe('fetch messages endpoints', () => { assert.equal(historyActionsCount, expectedActionsCount); assert.equal(fetchedMessages[0].timetoken, messageTimetokens[0]); - assert.equal(fetchedMessages[fetchedMessages.length - 1].timetoken, - messageTimetokens[messageTimetokens.length - 1]); + assert.equal(fetchedMessages[fetchedMessages.length - 1].timetoken, messageTimetokens[messageTimetokens.length - 1]); done(); }); diff --git a/test/integration/endpoints/grant_token.test.js b/test/integration/endpoints/grant_token.test.js index d1a9a65f6..b971db548 100644 --- a/test/integration/endpoints/grant_token.test.js +++ b/test/integration/endpoints/grant_token.test.js @@ -8,6 +8,7 @@ import utils from '../../utils'; import PubNub from '../../../src/node/index'; describe('grant token endpoint', () => { + let originalVersionFunction = null; let pubnub; let clock; @@ -21,6 +22,7 @@ describe('grant token endpoint', () => { after(() => { clock.restore(); nock.enableNetConnect(); + pubnub._config.getVersion = originalVersionFunction; }); beforeEach(() => { @@ -32,6 +34,11 @@ describe('grant token endpoint', () => { uuid: 'myUUID', autoNetworkDetection: false, }); + + if (originalVersionFunction === null) { + originalVersionFunction = pubnub._config.getVersion; + pubnub._config.getVersion = () => 'testVersion'; + } }); describe('#grantToken', () => { @@ -44,7 +51,7 @@ describe('grant token endpoint', () => { uuid: 'myUUID', pnsdk: `PubNub-JS-Nodejs/${pubnub.getVersion()}`, timestamp: 1571360790, - signature: 'v2.CLurDTyT2OL1mMlQEUHEwfXqXvjSJ_NHTgJvgkG_5ek', + signature: 'v2.pJobOYLaDTsauQo8UZa-4Eu4JKYYRuaeyPS8IHpNN-E', }) .reply( 200, @@ -75,7 +82,7 @@ describe('grant token endpoint', () => { uuid: 'myUUID', pnsdk: `PubNub-JS-Nodejs/${pubnub.getVersion()}`, timestamp: 1571360790, - signature: 'v2.CLurDTyT2OL1mMlQEUHEwfXqXvjSJ_NHTgJvgkG_5ek', + signature: 'v2.pJobOYLaDTsauQo8UZa-4Eu4JKYYRuaeyPS8IHpNN-E', }) .reply( 200, @@ -111,7 +118,7 @@ describe('grant token endpoint', () => { uuid: 'myUUID', pnsdk: `PubNub-JS-Nodejs/${pubnub.getVersion()}`, timestamp: 1571360790, - signature: 'v2.CLurDTyT2OL1mMlQEUHEwfXqXvjSJ_NHTgJvgkG_5ek', + signature: 'v2.pJobOYLaDTsauQo8UZa-4Eu4JKYYRuaeyPS8IHpNN-E', }) .reply( 200, @@ -147,7 +154,7 @@ describe('grant token endpoint', () => { uuid: 'myUUID', pnsdk: `PubNub-JS-Nodejs/${pubnub.getVersion()}`, timestamp: 1571360790, - signature: 'v2.CLurDTyT2OL1mMlQEUHEwfXqXvjSJ_NHTgJvgkG_5ek', + signature: 'v2.pJobOYLaDTsauQo8UZa-4Eu4JKYYRuaeyPS8IHpNN-E', }) .reply( 200, @@ -183,7 +190,7 @@ describe('grant token endpoint', () => { uuid: 'myUUID', pnsdk: `PubNub-JS-Nodejs/${pubnub.getVersion()}`, timestamp: 1571360790, - signature: 'v2.CLurDTyT2OL1mMlQEUHEwfXqXvjSJ_NHTgJvgkG_5ek', + signature: 'v2.pJobOYLaDTsauQo8UZa-4Eu4JKYYRuaeyPS8IHpNN-E', }) .reply( 200, @@ -220,7 +227,7 @@ describe('grant token endpoint', () => { uuid: 'myUUID', pnsdk: `PubNub-JS-Nodejs/${pubnub.getVersion()}`, timestamp: 1571360790, - signature: 'v2.CLurDTyT2OL1mMlQEUHEwfXqXvjSJ_NHTgJvgkG_5ek', + signature: 'v2.pJobOYLaDTsauQo8UZa-4Eu4JKYYRuaeyPS8IHpNN-E', }) .reply( 200, diff --git a/test/integration/endpoints/history.test.js b/test/integration/endpoints/history.test.js index f18f9d824..37622a7fa 100644 --- a/test/integration/endpoints/history.test.js +++ b/test/integration/endpoints/history.test.js @@ -1,4 +1,4 @@ -/* global describe, beforeEach, afterEach, it, before, after */ +/* global describe, beforeEach, afterEach, it, after */ /* eslint no-console: 0 */ import assert from 'assert'; @@ -18,22 +18,21 @@ function publishMessagesToChannel(client: PubNub, count: Number, channel: String } client.publish(payload, (status, response) => { - publishCompleted++; - - if (!status.error) { - messages.push({ message: payload.message, timetoken: response.timetoken }); - messages = messages.sort((left, right) => left.timetoken - right.timetoken); - } else { - console.error('Publish did fail:', status); - } - - if (publishCompleted < count) { - publish(publishCompleted); - } else if (publishCompleted === count) { - completion(messages); - } + publishCompleted += 1; + + if (!status.error) { + messages.push({ message: payload.message, timetoken: response.timetoken }); + messages = messages.sort((left, right) => left.timetoken - right.timetoken); + } else { + console.error('Publish did fail:', status); } - ); + + if (publishCompleted < count) { + publish(publishCompleted); + } else if (publishCompleted === count) { + completion(messages); + } + }); }; publish(publishCompleted); @@ -59,8 +58,8 @@ describe('history endpoints', () => { beforeEach(() => { nock.cleanAll(); pubnub = new PubNub({ - subscribeKey: subscribeKey, - publishKey: publishKey, + subscribeKey, + publishKey, uuid: 'myUUID', }); }); diff --git a/test/integration/endpoints/message_actions.test.js b/test/integration/endpoints/message_actions.test.js index b488c90c9..2ad5ebc0e 100644 --- a/test/integration/endpoints/message_actions.test.js +++ b/test/integration/endpoints/message_actions.test.js @@ -1,10 +1,10 @@ -/* global describe, beforeEach, afterEach, it, before, after, jasmine */ +/* global describe, beforeEach, afterEach, it, after */ /* eslint no-console: 0 */ -import PubNub from '../../../src/node/index'; -import utils from "../../utils"; import assert from 'assert'; import nock from 'nock'; +import PubNub from '../../../src/node/index'; +import utils from '../../utils'; function publishMessages(client: PubNub, count: Number, channel: String, completion: Function) { @@ -17,7 +17,7 @@ function publishMessages(client: PubNub, count: Number, channel: String, complet client.publish( { message, channel }, (status, response) => { - publishCompleted++; + publishCompleted += 1; if (!status.error) { timetokens.push(response.timetoken); @@ -47,10 +47,10 @@ function addActions(client: PubNub, count: Number, messageTimetokens: Array { - actionsAdded++; + actionsAdded += 1; if (!status.error) { timetokens.push(response.data.actionTimetoken); @@ -104,8 +104,8 @@ describe('message actions endpoints', () => { beforeEach(() => { nock.cleanAll(); pubnub = new PubNub({ - subscribeKey: subscribeKey, - publishKey: publishKey, + subscribeKey, + publishKey, uuid: 'myUUID', authKey: 'myAuthKey', }); @@ -117,13 +117,13 @@ describe('message actions endpoints', () => { nock.disableNetConnect(); const scope = utils .createNock() - .post(`/v1/message-actions/${subscribeKey}/channel/test-channel/message/1234567890`) - .reply(200, {}); + .post(`/v1/message-actions/${subscribeKey}/channel/test-channel/message/1234567890`) + .reply(200, {}); pubnub.addMessageAction({ - channel: 'test-channel', - messageTimetoken: '1234567890', - }) + channel: 'test-channel', + messageTimetoken: '1234567890', + }) .catch((err) => { assert.equal(scope.isDone(), false); assert.equal(err.status.message, 'Missing Action'); @@ -135,15 +135,15 @@ describe('message actions endpoints', () => { nock.disableNetConnect(); const scope = utils .createNock() - .post(`/v1/message-actions/${subscribeKey}/channel/test-channel/message/1234567890`) - .reply(200, {}); + .post(`/v1/message-actions/${subscribeKey}/channel/test-channel/message/1234567890`) + .reply(200, {}); const action = { value: 'test value' }; pubnub.addMessageAction({ - channel: 'test-channel', - messageTimetoken: '1234567890', - action, - }) + channel: 'test-channel', + messageTimetoken: '1234567890', + action, + }) .catch((err) => { assert.equal(scope.isDone(), false); assert.equal(err.status.message, 'Missing Action.type'); @@ -155,15 +155,15 @@ describe('message actions endpoints', () => { nock.disableNetConnect(); const scope = utils .createNock() - .post(`/v1/message-actions/${subscribeKey}/channel/test-channel/message/1234567890`) - .reply(200, {}); + .post(`/v1/message-actions/${subscribeKey}/channel/test-channel/message/1234567890`) + .reply(200, {}); const action = { type: PubNub.generateUUID(), value: 'test value' }; pubnub.addMessageAction({ - channel: 'test-channel', - messageTimetoken: '1234567890', - action, - }) + channel: 'test-channel', + messageTimetoken: '1234567890', + action, + }) .catch((err) => { assert.equal(scope.isDone(), false); assert.equal(err.status.message, 'Action.type value exceed maximum length of 15'); @@ -175,15 +175,15 @@ describe('message actions endpoints', () => { nock.disableNetConnect(); const scope = utils .createNock() - .post(`/v1/message-actions/${subscribeKey}/channel/test-channel/message/1234567890`) - .reply(200, {}); + .post(`/v1/message-actions/${subscribeKey}/channel/test-channel/message/1234567890`) + .reply(200, {}); const action = { type: 'custom' }; pubnub.addMessageAction({ - channel: 'test-channel', - messageTimetoken: '1234567890', - action, - }) + channel: 'test-channel', + messageTimetoken: '1234567890', + action, + }) .catch((err) => { assert.equal(scope.isDone(), false); assert.equal(err.status.message, 'Missing Action.value'); @@ -195,14 +195,14 @@ describe('message actions endpoints', () => { nock.disableNetConnect(); const scope = utils .createNock() - .post(`/v1/message-actions/${subscribeKey}/channel/test-channel/message/`) - .reply(200, {}); + .post(`/v1/message-actions/${subscribeKey}/channel/test-channel/message/`) + .reply(200, {}); const action = { type: 'custom', value: 'test value' }; pubnub.addMessageAction({ - channel: 'test-channel', - action, - }) + channel: 'test-channel', + action, + }) .catch((err) => { assert.equal(scope.isDone(), false); assert.equal(err.status.message, 'Missing message timetoken'); @@ -214,14 +214,14 @@ describe('message actions endpoints', () => { nock.disableNetConnect(); const scope = utils .createNock() - .post(`/v1/message-actions/${subscribeKey}/channel/test-channel/message/1234567890`) - .reply(200, {}); + .post(`/v1/message-actions/${subscribeKey}/channel/test-channel/message/1234567890`) + .reply(200, {}); const action = { type: 'custom', value: 'test value' }; pubnub.addMessageAction({ - messageTimetoken: '1234567890', - action, - }) + messageTimetoken: '1234567890', + action, + }) .catch((err) => { assert.equal(scope.isDone(), false); assert.equal(err.status.message, 'Missing message channel'); @@ -235,9 +235,9 @@ describe('message actions endpoints', () => { const messageAction = { type: 'custom', value: PubNub.generateUUID() }; const channel = PubNub.generateUUID(); - publishMessages(pubnub,1, channel, (timetokens) => { + publishMessages(pubnub, 1, channel, (timetokens) => { pubnub.addMessageAction( - { channel: channel, messageTimetoken: timetokens[0], action: messageAction }, + { channel, messageTimetoken: timetokens[0], action: messageAction }, (status, response) => { assert.equal(status.error, false); assert.equal(response.data.type, messageAction.type); @@ -263,23 +263,23 @@ describe('message actions endpoints', () => { auth: 'myAuthKey' }) .reply(207, { - "status": 207, - "data": { - "type": "reaction", - "value": "smiley_face", - "uuid": "user-456", - "actionTimetoken": '15610547826970050', - "messageTimetoken": '15610547826969050' + status: 207, + data: { + type: 'reaction', + value: 'smiley_face', + uuid: 'user-456', + actionTimetoken: '15610547826970050', + messageTimetoken: '15610547826969050' }, - "error": { - "message": "Stored but failed to publish message action.", - "source": "actions" + error: { + message: 'Stored but failed to publish message action.', + source: 'actions' } }); pubnub.addMessageAction( { channel: 'test-channel', messageTimetoken: '1234567890', action: { type: 'custom', value: 'test' } }, - (status, response) => { + (status) => { assert.equal(scope.isDone(), true); assert.equal(status.statusCode, 207); assert(status.errorData.message); @@ -300,7 +300,7 @@ describe('message actions endpoints', () => { if (status.category === 'PNConnectedCategory') { pubnub.publish( { channel, message: { hello: 'test' }, sendByPost: true }, - (status, response) => { + (publishStatus, response) => { messageTimetoken = response.timetoken; pubnub.addMessageAction( @@ -337,9 +337,9 @@ describe('message actions endpoints', () => { .reply(200, {}); pubnub.removeMessageAction({ - channel: 'test-channel', - actionTimetoken: '1234567890', - }) + channel: 'test-channel', + actionTimetoken: '1234567890', + }) .catch((err) => { assert.equal(scope.isDone(), false); assert.equal(err.status.message, 'Missing message timetoken'); @@ -356,9 +356,9 @@ describe('message actions endpoints', () => { .reply(200, {}); pubnub.removeMessageAction({ - channel: 'test-channel', - messageTimetoken: '1234567890', - }) + channel: 'test-channel', + messageTimetoken: '1234567890', + }) .catch((err) => { assert.equal(scope.isDone(), false); assert.equal(err.status.message, 'Missing action timetoken'); @@ -375,9 +375,9 @@ describe('message actions endpoints', () => { .reply(200, {}); pubnub.removeMessageAction({ - messageTimetoken: '1234567890', - actionTimetoken: '12345678901', - }) + messageTimetoken: '1234567890', + actionTimetoken: '12345678901', + }) .catch((err) => { assert.equal(scope.isDone(), false); assert.equal(err.status.message, 'Missing message channel'); @@ -398,13 +398,13 @@ describe('message actions endpoints', () => { pubnub.removeMessageAction( { channel, actionTimetoken: actionTimetokens[0], messageTimetoken: messageTimetokens[0] }, - (status) => { - assert.equal(status.error, false); + (removeMessageStatus) => { + assert.equal(removeMessageStatus.error, false); setTimeout(() => { - pubnub.getMessageActions({ channel }, (status, response) => { - assert.equal(status.error, false); - assert.equal(response.data.length, 0); + pubnub.getMessageActions({ channel }, (getMessagesStatus, getMessagesResponse) => { + assert.equal(getMessagesStatus.error, false); + assert.equal(getMessagesResponse.data.length, 0); done(); }); @@ -425,9 +425,9 @@ describe('message actions endpoints', () => { status: (status) => { if (status.category === 'PNConnectedCategory') { pubnub.removeMessageAction( - {channel, actionTimetoken: actionTimetokens[0], messageTimetoken: messageTimetokens[0]}, - (status) => { - assert.equal(status.error, false); + { channel, actionTimetoken: actionTimetokens[0], messageTimetoken: messageTimetokens[0] }, + (removeMessagesStatus) => { + assert.equal(removeMessagesStatus.error, false); } ); } @@ -504,8 +504,8 @@ describe('message actions endpoints', () => { pubnub.getMessageActions({ channel, limit: halfSize }, (status, response) => { assert.equal(status.error, false); - const firstFetchedActionTimetoken = response.data[0].actionTimetoken; - const lastFetchedActionTimetoken = response.data[response.data.length - 1].actionTimetoken; + let firstFetchedActionTimetoken = response.data[0].actionTimetoken; + let lastFetchedActionTimetoken = response.data[response.data.length - 1].actionTimetoken; assert.equal(firstFetchedActionTimetoken, middlePublishedActionTimetoken); assert.equal(lastFetchedActionTimetoken, lastPublishedActionTimetoken); assert.equal(response.data.length, halfSize); @@ -514,18 +514,19 @@ describe('message actions endpoints', () => { pubnub.getMessageActions( { channel, start: middlePublishedActionTimetoken, limit: halfSize }, - (status, response) => { - assert.equal(status.error, false); - const firstFetchedActionTimetoken = response.data[0].actionTimetoken; - const lastFetchedActionTimetoken = response.data[response.data.length - 1].actionTimetoken; + (getMessageActionsStatus, getMessageActionsResponse) => { + assert.equal(getMessageActionsStatus.error, false); + firstFetchedActionTimetoken = getMessageActionsResponse.data[0].actionTimetoken; + lastFetchedActionTimetoken = getMessageActionsResponse.data[getMessageActionsResponse.data.length - 1].actionTimetoken; assert.equal(firstFetchedActionTimetoken, firstPublishedActionTimetoken); assert.equal(lastFetchedActionTimetoken, middleMinusOnePublishedActionTimetoken); - assert.equal(response.data.length, halfSize); - assert.equal(response.start, firstPublishedActionTimetoken); - assert.equal(response.end, middleMinusOnePublishedActionTimetoken); + assert.equal(getMessageActionsResponse.data.length, halfSize); + assert.equal(getMessageActionsResponse.start, firstPublishedActionTimetoken); + assert.equal(getMessageActionsResponse.end, middleMinusOnePublishedActionTimetoken); done(); - }); + } + ); }); }); }); From c26003340993fe9177bf4aef005c6646268a28b4 Mon Sep 17 00:00:00 2001 From: Serhii Mamontov Date: Wed, 20 Nov 2019 00:55:44 +0200 Subject: [PATCH 6/8] fix(message-actions): move message actions to another variable Make changes in fetch_messages endpoint to move message actions (if any) for message from 'data' to 'actions' property (old 'data' will be in place for few updates to not break existing clients). test: fix PAMv3 tests mocked signature Make sure, that we don't include dynamic 'pnsdk' into generated signature, so it won't break each time new version released. refactor: fix lint warnings for tests and code Make changes according to linter and flow checkers. --- gulpfile.babel.js | 3 +- .../endpoints/actions/get_message_actions.js | 2 +- src/core/endpoints/fetch_messages.js | 4 +- .../endpoints/fetch_messages.test.js | 88 ++++++--- .../integration/endpoints/grant_token.test.js | 19 +- test/integration/endpoints/history.test.js | 35 ++-- .../endpoints/message_actions.test.js | 167 +++++++++--------- 7 files changed, 180 insertions(+), 138 deletions(-) diff --git a/gulpfile.babel.js b/gulpfile.babel.js index 45e207e07..819feaa8e 100644 --- a/gulpfile.babel.js +++ b/gulpfile.babel.js @@ -23,6 +23,7 @@ const unzip = require('gulp-unzip'); // increase mocha timeout from default of 2000 to allow long running async tests to complete const mochaTimeout = 5000; +gulp.on('error', process.exit.bind(process, 1)); gulp.task('clean', () => { return gulp .src(['lib', 'dist', 'coverage', 'upload'], { read: false, allowEmpty: true }) @@ -188,4 +189,4 @@ gulp.task('webpack', (done) => { gulp.task('compile', (done) => { runSequence('clean', 'babel', 'webpack', 'uglify_web', 'uglify_titanium', 'create_version', 'create_version_gzip', done); -}); \ No newline at end of file +}); diff --git a/src/core/endpoints/actions/get_message_actions.js b/src/core/endpoints/actions/get_message_actions.js index 8b59add31..2a72415fb 100644 --- a/src/core/endpoints/actions/get_message_actions.js +++ b/src/core/endpoints/actions/get_message_actions.js @@ -59,7 +59,7 @@ export function handleResponse( getMessageActionsResponse: Object ): GetMessageActionsResponse { /** @type GetMessageActionsResponse */ - let response = { data: getMessageActionsResponse.data }; + let response = { data: getMessageActionsResponse.data, start: null, end: null }; if (response.data.length) { response.end = response.data[response.data.length - 1].actionTimetoken; diff --git a/src/core/endpoints/fetch_messages.js b/src/core/endpoints/fetch_messages.js index 0d28b4bc2..701694af9 100644 --- a/src/core/endpoints/fetch_messages.js +++ b/src/core/endpoints/fetch_messages.js @@ -98,11 +98,13 @@ export function handleResponse( (serverResponse.channels[channelName] || []).forEach((messageEnvelope) => { let announce: MessageAnnouncement = {}; announce.channel = channelName; - announce.subscription = null; announce.timetoken = messageEnvelope.timetoken; announce.message = __processMessage(modules, messageEnvelope.message); if (messageEnvelope.actions) { + announce.actions = messageEnvelope.actions; + + // This should be kept for few updates for existing clients consistency. announce.data = messageEnvelope.actions; } if (messageEnvelope.meta) { diff --git a/test/integration/endpoints/fetch_messages.test.js b/test/integration/endpoints/fetch_messages.test.js index af22d837d..ccaefd148 100644 --- a/test/integration/endpoints/fetch_messages.test.js +++ b/test/integration/endpoints/fetch_messages.test.js @@ -1,4 +1,4 @@ -/* global describe, beforeEach, afterEach, it, before, after */ +/* global describe, beforeEach, afterEach, it, after */ /* eslint no-console: 0 */ import assert from 'assert'; @@ -18,7 +18,7 @@ function publishMessagesToChannel(client: PubNub, count: Number, channel: String } client.publish(payload, (status, response) => { - publishCompleted++; + publishCompleted += 1; if (!status.error) { messages.push({ message: payload.message, timetoken: response.timetoken }); @@ -27,13 +27,12 @@ function publishMessagesToChannel(client: PubNub, count: Number, channel: String console.error('Publish did fail:', status); } - if (publishCompleted < count) { - publish(publishCompleted); - } else if (publishCompleted === count) { - completion(messages); - } + if (publishCompleted < count) { + publish(publishCompleted); + } else if (publishCompleted === count) { + completion(messages); } - ); + }); }; publish(publishCompleted); @@ -49,12 +48,12 @@ function addActionsInChannel(client: PubNub, count: Number, messageTimetokens: A let actionsAdded = 0; let actions = []; - for (let messageIdx = 0; messageIdx < messageTimetokens.length; messageIdx++) { + for (let messageIdx = 0; messageIdx < messageTimetokens.length; messageIdx += 1) { const messageTimetoken = messageTimetokens[messageIdx]; - for (let messageActionIdx = 0; messageActionIdx < count; messageActionIdx++) { + for (let messageActionIdx = 0; messageActionIdx < count; messageActionIdx += 1) { /** @type MessageAction */ - const action = { type: types[(messageActionIdx + 1)%3], value: values[(messageActionIdx + 1)%10] }; + const action = { type: types[(messageActionIdx + 1) % 3], value: values[(messageActionIdx + 1) % 10] }; actionsToAdd.push({ messageTimetoken, action }); } @@ -66,7 +65,7 @@ function addActionsInChannel(client: PubNub, count: Number, messageTimetokens: A client.addMessageAction( { channel, messageTimetoken, action }, (status, response) => { - actionsAdded++; + actionsAdded += 1; if (!status.error) { actions.push(response.data); @@ -107,8 +106,8 @@ describe('fetch messages endpoints', () => { beforeEach(() => { nock.cleanAll(); pubnub = new PubNub({ - subscribeKey: subscribeKey, - publishKey: publishKey, + subscribeKey, + publishKey, uuid: 'myUUID', }); }); @@ -140,7 +139,6 @@ describe('fetch messages endpoints', () => { message: { text: 'hey1', }, - subscription: null, timetoken: '11', }, { @@ -148,7 +146,6 @@ describe('fetch messages endpoints', () => { message: { text: 'hey2', }, - subscription: null, timetoken: '12', }, ], @@ -158,7 +155,6 @@ describe('fetch messages endpoints', () => { message: { text: 'hey3', }, - subscription: null, timetoken: '21', }, { @@ -166,7 +162,6 @@ describe('fetch messages endpoints', () => { message: { text: 'hey2', }, - subscription: null, timetoken: '22', }, ], @@ -206,7 +201,6 @@ describe('fetch messages endpoints', () => { message: { text: 'hey', }, - subscription: null, timetoken: '11', }, { @@ -214,7 +208,6 @@ describe('fetch messages endpoints', () => { message: { text: 'hey', }, - subscription: null, timetoken: '12', }, ], @@ -224,7 +217,6 @@ describe('fetch messages endpoints', () => { message: { text2: 'hey2', }, - subscription: null, timetoken: '21', }, { @@ -232,7 +224,6 @@ describe('fetch messages endpoints', () => { message: { text2: 'hey2', }, - subscription: null, timetoken: '22', }, ], @@ -265,7 +256,7 @@ describe('fetch messages endpoints', () => { try { pubnub.fetchMessages( { channels: ['channelA', 'channelB'], includeMessageActions: true }, - (status, response) => {} + () => {} ); } catch (error) { assert.equal(error.message, 'History can return actions data for a single channel only. Either pass a single channel or disable the includeMessageActions flag.'); @@ -275,13 +266,13 @@ describe('fetch messages endpoints', () => { assert(errorCatched); }); - it('supports actions', (done) => { + it('supports actions (stored as \'data\' field)', (done) => { const channel = PubNub.generateUUID(); const expectedMessagesCount = 2; const expectedActionsCount = 4; publishMessagesToChannel(pubnub, expectedMessagesCount, channel, (messages) => { - const messageTimetokens = messages.map((message) => message.timetoken ); + const messageTimetokens = messages.map((message) => message.timetoken); addActionsInChannel(pubnub, expectedActionsCount, messageTimetokens, channel, (actions) => { setTimeout(() => { @@ -294,7 +285,49 @@ describe('fetch messages endpoints', () => { Object.keys(actionsByType).forEach((actionType) => { Object.keys(actionsByType[actionType]).forEach((actionValue) => { let actionFound = false; - historyActionsCount++; + historyActionsCount += 1; + + actions.forEach((action) => { + if (action.value === actionValue) { + actionFound = true; + } + }); + + assert.equal(actionFound, true); + }); + }); + + assert.equal(historyActionsCount, expectedActionsCount); + assert.equal(fetchedMessages[0].timetoken, messageTimetokens[0]); + assert.equal(fetchedMessages[fetchedMessages.length - 1].timetoken, messageTimetokens[messageTimetokens.length - 1]); + + done(); + }); + }, 2000); + }); + }); + }).timeout(60000); + + it('supports actions (stored as \'actions\' field)', (done) => { + const channel = PubNub.generateUUID(); + const expectedMessagesCount = 2; + const expectedActionsCount = 4; + + publishMessagesToChannel(pubnub, expectedMessagesCount, channel, (messages) => { + const messageTimetokens = messages.map((message) => message.timetoken); + + addActionsInChannel(pubnub, expectedActionsCount, messageTimetokens, channel, (actions) => { + setTimeout(() => { + pubnub.fetchMessages({ channels: [channel], includeMessageActions: true }, (status, response) => { + assert.equal(status.error, false); + const fetchedMessages = response.channels[channel]; + const actionsByType = fetchedMessages[0].actions; + let historyActionsCount = 0; + + Object.keys(actionsByType).forEach((actionType) => { + Object.keys(actionsByType[actionType]).forEach((actionValue) => { + let actionFound = false; + historyActionsCount += 1; actions.forEach((action) => { if (action.value === actionValue) { @@ -308,8 +341,7 @@ describe('fetch messages endpoints', () => { assert.equal(historyActionsCount, expectedActionsCount); assert.equal(fetchedMessages[0].timetoken, messageTimetokens[0]); - assert.equal(fetchedMessages[fetchedMessages.length - 1].timetoken, - messageTimetokens[messageTimetokens.length - 1]); + assert.equal(fetchedMessages[fetchedMessages.length - 1].timetoken, messageTimetokens[messageTimetokens.length - 1]); done(); }); diff --git a/test/integration/endpoints/grant_token.test.js b/test/integration/endpoints/grant_token.test.js index d1a9a65f6..b971db548 100644 --- a/test/integration/endpoints/grant_token.test.js +++ b/test/integration/endpoints/grant_token.test.js @@ -8,6 +8,7 @@ import utils from '../../utils'; import PubNub from '../../../src/node/index'; describe('grant token endpoint', () => { + let originalVersionFunction = null; let pubnub; let clock; @@ -21,6 +22,7 @@ describe('grant token endpoint', () => { after(() => { clock.restore(); nock.enableNetConnect(); + pubnub._config.getVersion = originalVersionFunction; }); beforeEach(() => { @@ -32,6 +34,11 @@ describe('grant token endpoint', () => { uuid: 'myUUID', autoNetworkDetection: false, }); + + if (originalVersionFunction === null) { + originalVersionFunction = pubnub._config.getVersion; + pubnub._config.getVersion = () => 'testVersion'; + } }); describe('#grantToken', () => { @@ -44,7 +51,7 @@ describe('grant token endpoint', () => { uuid: 'myUUID', pnsdk: `PubNub-JS-Nodejs/${pubnub.getVersion()}`, timestamp: 1571360790, - signature: 'v2.CLurDTyT2OL1mMlQEUHEwfXqXvjSJ_NHTgJvgkG_5ek', + signature: 'v2.pJobOYLaDTsauQo8UZa-4Eu4JKYYRuaeyPS8IHpNN-E', }) .reply( 200, @@ -75,7 +82,7 @@ describe('grant token endpoint', () => { uuid: 'myUUID', pnsdk: `PubNub-JS-Nodejs/${pubnub.getVersion()}`, timestamp: 1571360790, - signature: 'v2.CLurDTyT2OL1mMlQEUHEwfXqXvjSJ_NHTgJvgkG_5ek', + signature: 'v2.pJobOYLaDTsauQo8UZa-4Eu4JKYYRuaeyPS8IHpNN-E', }) .reply( 200, @@ -111,7 +118,7 @@ describe('grant token endpoint', () => { uuid: 'myUUID', pnsdk: `PubNub-JS-Nodejs/${pubnub.getVersion()}`, timestamp: 1571360790, - signature: 'v2.CLurDTyT2OL1mMlQEUHEwfXqXvjSJ_NHTgJvgkG_5ek', + signature: 'v2.pJobOYLaDTsauQo8UZa-4Eu4JKYYRuaeyPS8IHpNN-E', }) .reply( 200, @@ -147,7 +154,7 @@ describe('grant token endpoint', () => { uuid: 'myUUID', pnsdk: `PubNub-JS-Nodejs/${pubnub.getVersion()}`, timestamp: 1571360790, - signature: 'v2.CLurDTyT2OL1mMlQEUHEwfXqXvjSJ_NHTgJvgkG_5ek', + signature: 'v2.pJobOYLaDTsauQo8UZa-4Eu4JKYYRuaeyPS8IHpNN-E', }) .reply( 200, @@ -183,7 +190,7 @@ describe('grant token endpoint', () => { uuid: 'myUUID', pnsdk: `PubNub-JS-Nodejs/${pubnub.getVersion()}`, timestamp: 1571360790, - signature: 'v2.CLurDTyT2OL1mMlQEUHEwfXqXvjSJ_NHTgJvgkG_5ek', + signature: 'v2.pJobOYLaDTsauQo8UZa-4Eu4JKYYRuaeyPS8IHpNN-E', }) .reply( 200, @@ -220,7 +227,7 @@ describe('grant token endpoint', () => { uuid: 'myUUID', pnsdk: `PubNub-JS-Nodejs/${pubnub.getVersion()}`, timestamp: 1571360790, - signature: 'v2.CLurDTyT2OL1mMlQEUHEwfXqXvjSJ_NHTgJvgkG_5ek', + signature: 'v2.pJobOYLaDTsauQo8UZa-4Eu4JKYYRuaeyPS8IHpNN-E', }) .reply( 200, diff --git a/test/integration/endpoints/history.test.js b/test/integration/endpoints/history.test.js index f18f9d824..37622a7fa 100644 --- a/test/integration/endpoints/history.test.js +++ b/test/integration/endpoints/history.test.js @@ -1,4 +1,4 @@ -/* global describe, beforeEach, afterEach, it, before, after */ +/* global describe, beforeEach, afterEach, it, after */ /* eslint no-console: 0 */ import assert from 'assert'; @@ -18,22 +18,21 @@ function publishMessagesToChannel(client: PubNub, count: Number, channel: String } client.publish(payload, (status, response) => { - publishCompleted++; - - if (!status.error) { - messages.push({ message: payload.message, timetoken: response.timetoken }); - messages = messages.sort((left, right) => left.timetoken - right.timetoken); - } else { - console.error('Publish did fail:', status); - } - - if (publishCompleted < count) { - publish(publishCompleted); - } else if (publishCompleted === count) { - completion(messages); - } + publishCompleted += 1; + + if (!status.error) { + messages.push({ message: payload.message, timetoken: response.timetoken }); + messages = messages.sort((left, right) => left.timetoken - right.timetoken); + } else { + console.error('Publish did fail:', status); } - ); + + if (publishCompleted < count) { + publish(publishCompleted); + } else if (publishCompleted === count) { + completion(messages); + } + }); }; publish(publishCompleted); @@ -59,8 +58,8 @@ describe('history endpoints', () => { beforeEach(() => { nock.cleanAll(); pubnub = new PubNub({ - subscribeKey: subscribeKey, - publishKey: publishKey, + subscribeKey, + publishKey, uuid: 'myUUID', }); }); diff --git a/test/integration/endpoints/message_actions.test.js b/test/integration/endpoints/message_actions.test.js index b488c90c9..2ad5ebc0e 100644 --- a/test/integration/endpoints/message_actions.test.js +++ b/test/integration/endpoints/message_actions.test.js @@ -1,10 +1,10 @@ -/* global describe, beforeEach, afterEach, it, before, after, jasmine */ +/* global describe, beforeEach, afterEach, it, after */ /* eslint no-console: 0 */ -import PubNub from '../../../src/node/index'; -import utils from "../../utils"; import assert from 'assert'; import nock from 'nock'; +import PubNub from '../../../src/node/index'; +import utils from '../../utils'; function publishMessages(client: PubNub, count: Number, channel: String, completion: Function) { @@ -17,7 +17,7 @@ function publishMessages(client: PubNub, count: Number, channel: String, complet client.publish( { message, channel }, (status, response) => { - publishCompleted++; + publishCompleted += 1; if (!status.error) { timetokens.push(response.timetoken); @@ -47,10 +47,10 @@ function addActions(client: PubNub, count: Number, messageTimetokens: Array { - actionsAdded++; + actionsAdded += 1; if (!status.error) { timetokens.push(response.data.actionTimetoken); @@ -104,8 +104,8 @@ describe('message actions endpoints', () => { beforeEach(() => { nock.cleanAll(); pubnub = new PubNub({ - subscribeKey: subscribeKey, - publishKey: publishKey, + subscribeKey, + publishKey, uuid: 'myUUID', authKey: 'myAuthKey', }); @@ -117,13 +117,13 @@ describe('message actions endpoints', () => { nock.disableNetConnect(); const scope = utils .createNock() - .post(`/v1/message-actions/${subscribeKey}/channel/test-channel/message/1234567890`) - .reply(200, {}); + .post(`/v1/message-actions/${subscribeKey}/channel/test-channel/message/1234567890`) + .reply(200, {}); pubnub.addMessageAction({ - channel: 'test-channel', - messageTimetoken: '1234567890', - }) + channel: 'test-channel', + messageTimetoken: '1234567890', + }) .catch((err) => { assert.equal(scope.isDone(), false); assert.equal(err.status.message, 'Missing Action'); @@ -135,15 +135,15 @@ describe('message actions endpoints', () => { nock.disableNetConnect(); const scope = utils .createNock() - .post(`/v1/message-actions/${subscribeKey}/channel/test-channel/message/1234567890`) - .reply(200, {}); + .post(`/v1/message-actions/${subscribeKey}/channel/test-channel/message/1234567890`) + .reply(200, {}); const action = { value: 'test value' }; pubnub.addMessageAction({ - channel: 'test-channel', - messageTimetoken: '1234567890', - action, - }) + channel: 'test-channel', + messageTimetoken: '1234567890', + action, + }) .catch((err) => { assert.equal(scope.isDone(), false); assert.equal(err.status.message, 'Missing Action.type'); @@ -155,15 +155,15 @@ describe('message actions endpoints', () => { nock.disableNetConnect(); const scope = utils .createNock() - .post(`/v1/message-actions/${subscribeKey}/channel/test-channel/message/1234567890`) - .reply(200, {}); + .post(`/v1/message-actions/${subscribeKey}/channel/test-channel/message/1234567890`) + .reply(200, {}); const action = { type: PubNub.generateUUID(), value: 'test value' }; pubnub.addMessageAction({ - channel: 'test-channel', - messageTimetoken: '1234567890', - action, - }) + channel: 'test-channel', + messageTimetoken: '1234567890', + action, + }) .catch((err) => { assert.equal(scope.isDone(), false); assert.equal(err.status.message, 'Action.type value exceed maximum length of 15'); @@ -175,15 +175,15 @@ describe('message actions endpoints', () => { nock.disableNetConnect(); const scope = utils .createNock() - .post(`/v1/message-actions/${subscribeKey}/channel/test-channel/message/1234567890`) - .reply(200, {}); + .post(`/v1/message-actions/${subscribeKey}/channel/test-channel/message/1234567890`) + .reply(200, {}); const action = { type: 'custom' }; pubnub.addMessageAction({ - channel: 'test-channel', - messageTimetoken: '1234567890', - action, - }) + channel: 'test-channel', + messageTimetoken: '1234567890', + action, + }) .catch((err) => { assert.equal(scope.isDone(), false); assert.equal(err.status.message, 'Missing Action.value'); @@ -195,14 +195,14 @@ describe('message actions endpoints', () => { nock.disableNetConnect(); const scope = utils .createNock() - .post(`/v1/message-actions/${subscribeKey}/channel/test-channel/message/`) - .reply(200, {}); + .post(`/v1/message-actions/${subscribeKey}/channel/test-channel/message/`) + .reply(200, {}); const action = { type: 'custom', value: 'test value' }; pubnub.addMessageAction({ - channel: 'test-channel', - action, - }) + channel: 'test-channel', + action, + }) .catch((err) => { assert.equal(scope.isDone(), false); assert.equal(err.status.message, 'Missing message timetoken'); @@ -214,14 +214,14 @@ describe('message actions endpoints', () => { nock.disableNetConnect(); const scope = utils .createNock() - .post(`/v1/message-actions/${subscribeKey}/channel/test-channel/message/1234567890`) - .reply(200, {}); + .post(`/v1/message-actions/${subscribeKey}/channel/test-channel/message/1234567890`) + .reply(200, {}); const action = { type: 'custom', value: 'test value' }; pubnub.addMessageAction({ - messageTimetoken: '1234567890', - action, - }) + messageTimetoken: '1234567890', + action, + }) .catch((err) => { assert.equal(scope.isDone(), false); assert.equal(err.status.message, 'Missing message channel'); @@ -235,9 +235,9 @@ describe('message actions endpoints', () => { const messageAction = { type: 'custom', value: PubNub.generateUUID() }; const channel = PubNub.generateUUID(); - publishMessages(pubnub,1, channel, (timetokens) => { + publishMessages(pubnub, 1, channel, (timetokens) => { pubnub.addMessageAction( - { channel: channel, messageTimetoken: timetokens[0], action: messageAction }, + { channel, messageTimetoken: timetokens[0], action: messageAction }, (status, response) => { assert.equal(status.error, false); assert.equal(response.data.type, messageAction.type); @@ -263,23 +263,23 @@ describe('message actions endpoints', () => { auth: 'myAuthKey' }) .reply(207, { - "status": 207, - "data": { - "type": "reaction", - "value": "smiley_face", - "uuid": "user-456", - "actionTimetoken": '15610547826970050', - "messageTimetoken": '15610547826969050' + status: 207, + data: { + type: 'reaction', + value: 'smiley_face', + uuid: 'user-456', + actionTimetoken: '15610547826970050', + messageTimetoken: '15610547826969050' }, - "error": { - "message": "Stored but failed to publish message action.", - "source": "actions" + error: { + message: 'Stored but failed to publish message action.', + source: 'actions' } }); pubnub.addMessageAction( { channel: 'test-channel', messageTimetoken: '1234567890', action: { type: 'custom', value: 'test' } }, - (status, response) => { + (status) => { assert.equal(scope.isDone(), true); assert.equal(status.statusCode, 207); assert(status.errorData.message); @@ -300,7 +300,7 @@ describe('message actions endpoints', () => { if (status.category === 'PNConnectedCategory') { pubnub.publish( { channel, message: { hello: 'test' }, sendByPost: true }, - (status, response) => { + (publishStatus, response) => { messageTimetoken = response.timetoken; pubnub.addMessageAction( @@ -337,9 +337,9 @@ describe('message actions endpoints', () => { .reply(200, {}); pubnub.removeMessageAction({ - channel: 'test-channel', - actionTimetoken: '1234567890', - }) + channel: 'test-channel', + actionTimetoken: '1234567890', + }) .catch((err) => { assert.equal(scope.isDone(), false); assert.equal(err.status.message, 'Missing message timetoken'); @@ -356,9 +356,9 @@ describe('message actions endpoints', () => { .reply(200, {}); pubnub.removeMessageAction({ - channel: 'test-channel', - messageTimetoken: '1234567890', - }) + channel: 'test-channel', + messageTimetoken: '1234567890', + }) .catch((err) => { assert.equal(scope.isDone(), false); assert.equal(err.status.message, 'Missing action timetoken'); @@ -375,9 +375,9 @@ describe('message actions endpoints', () => { .reply(200, {}); pubnub.removeMessageAction({ - messageTimetoken: '1234567890', - actionTimetoken: '12345678901', - }) + messageTimetoken: '1234567890', + actionTimetoken: '12345678901', + }) .catch((err) => { assert.equal(scope.isDone(), false); assert.equal(err.status.message, 'Missing message channel'); @@ -398,13 +398,13 @@ describe('message actions endpoints', () => { pubnub.removeMessageAction( { channel, actionTimetoken: actionTimetokens[0], messageTimetoken: messageTimetokens[0] }, - (status) => { - assert.equal(status.error, false); + (removeMessageStatus) => { + assert.equal(removeMessageStatus.error, false); setTimeout(() => { - pubnub.getMessageActions({ channel }, (status, response) => { - assert.equal(status.error, false); - assert.equal(response.data.length, 0); + pubnub.getMessageActions({ channel }, (getMessagesStatus, getMessagesResponse) => { + assert.equal(getMessagesStatus.error, false); + assert.equal(getMessagesResponse.data.length, 0); done(); }); @@ -425,9 +425,9 @@ describe('message actions endpoints', () => { status: (status) => { if (status.category === 'PNConnectedCategory') { pubnub.removeMessageAction( - {channel, actionTimetoken: actionTimetokens[0], messageTimetoken: messageTimetokens[0]}, - (status) => { - assert.equal(status.error, false); + { channel, actionTimetoken: actionTimetokens[0], messageTimetoken: messageTimetokens[0] }, + (removeMessagesStatus) => { + assert.equal(removeMessagesStatus.error, false); } ); } @@ -504,8 +504,8 @@ describe('message actions endpoints', () => { pubnub.getMessageActions({ channel, limit: halfSize }, (status, response) => { assert.equal(status.error, false); - const firstFetchedActionTimetoken = response.data[0].actionTimetoken; - const lastFetchedActionTimetoken = response.data[response.data.length - 1].actionTimetoken; + let firstFetchedActionTimetoken = response.data[0].actionTimetoken; + let lastFetchedActionTimetoken = response.data[response.data.length - 1].actionTimetoken; assert.equal(firstFetchedActionTimetoken, middlePublishedActionTimetoken); assert.equal(lastFetchedActionTimetoken, lastPublishedActionTimetoken); assert.equal(response.data.length, halfSize); @@ -514,18 +514,19 @@ describe('message actions endpoints', () => { pubnub.getMessageActions( { channel, start: middlePublishedActionTimetoken, limit: halfSize }, - (status, response) => { - assert.equal(status.error, false); - const firstFetchedActionTimetoken = response.data[0].actionTimetoken; - const lastFetchedActionTimetoken = response.data[response.data.length - 1].actionTimetoken; + (getMessageActionsStatus, getMessageActionsResponse) => { + assert.equal(getMessageActionsStatus.error, false); + firstFetchedActionTimetoken = getMessageActionsResponse.data[0].actionTimetoken; + lastFetchedActionTimetoken = getMessageActionsResponse.data[getMessageActionsResponse.data.length - 1].actionTimetoken; assert.equal(firstFetchedActionTimetoken, firstPublishedActionTimetoken); assert.equal(lastFetchedActionTimetoken, middleMinusOnePublishedActionTimetoken); - assert.equal(response.data.length, halfSize); - assert.equal(response.start, firstPublishedActionTimetoken); - assert.equal(response.end, middleMinusOnePublishedActionTimetoken); + assert.equal(getMessageActionsResponse.data.length, halfSize); + assert.equal(getMessageActionsResponse.start, firstPublishedActionTimetoken); + assert.equal(getMessageActionsResponse.end, middleMinusOnePublishedActionTimetoken); done(); - }); + } + ); }); }); }); From 1c0ce6e45f1c3ad4d33897abda36c2f0adf7111f Mon Sep 17 00:00:00 2001 From: Rai Phairow Date: Wed, 20 Nov 2019 14:10:48 -0800 Subject: [PATCH 7/8] release v4.27.1 --- .pubnub.yml | 18 +++++++++++++++++- CHANGELOG.md | 18 ++++++++++++++++-- dist/titanium/pubnub.js | 4 ++-- dist/titanium/pubnub.min.js | 2 +- dist/web/pubnub.js | 4 ++-- dist/web/pubnub.min.js | 2 +- lib/core/components/config.js | 2 +- lib/core/components/config.js.map | 2 +- package.json | 2 +- src/core/components/config.js | 2 +- 10 files changed, 43 insertions(+), 13 deletions(-) diff --git a/.pubnub.yml b/.pubnub.yml index efc738f39..27c5df271 100644 --- a/.pubnub.yml +++ b/.pubnub.yml @@ -1,5 +1,21 @@ --- changelog: + - + changes: + - + text: "Make changes in fetch_messages endpoint to move message actions (if any) for message from 'data' to 'actions' property (old 'data' will be in place for few updates to not break existing clients)." + type: bug + - + text: "fix PAMv3 tests mocked signature" + type: improvement + - + text: "fix lint warnings for tests and code" + type: improvement + - + text: "fix gulp build so that failures in test and lint will trigger failure in travis" + type: improvement + date: 2019-11-20 + version: v4.27.1 - changes: - @@ -773,4 +789,4 @@ supported-platforms: - "Ubuntu 14.04 and above" - "Windows 7, 8, 10" version: "Pubnub Javascript for Node" -version: "4.27.0" +version: "4.27.1" diff --git a/CHANGELOG.md b/CHANGELOG.md index 0be2acf98..ea55d70a9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,19 @@ -## [v4.27.0](https://github.com/pubnub/javascript/tree/v4.27.0) - September-27-2019 +## [v4.27.1](https://github.com/pubnub/javascript/tree/v4.27.1) + November-20-2019 + + + [Full Changelog](https://github.com/pubnub/javascript/compare/v4.27.0...v4.27.1) + + + +- ⭐ Make changes in fetch_messages endpoint to move message actions (if any) for message from 'data' to 'actions' property (old 'data' will be in place for few updates to not break existing clients). +- ⭐ fix PAMv3 tests mocked signature +- ⭐ fix lint warnings for tests and code +- ⭐ fix gulp build so that failures in test and lint will trigger failure in travis + + +## [v4.27.0](https://github.com/pubnub/javascript/tree/v4.27.0) + October-08-2019 [Full Changelog](https://github.com/pubnub/javascript/compare/v4.26.1...v4.27.0) diff --git a/dist/titanium/pubnub.js b/dist/titanium/pubnub.js index c30cab604..f6e0a8f1e 100644 --- a/dist/titanium/pubnub.js +++ b/dist/titanium/pubnub.js @@ -1,4 +1,4 @@ -/*! 4.27.0 / Consumer */ +/*! 4.27.1 / Consumer */ exports["PubNub"] = /******/ (function(modules) { // webpackBootstrap /******/ // The module cache @@ -471,7 +471,7 @@ var _default = function () { }, { key: "getVersion", value: function getVersion() { - return '4.27.0'; + return '4.27.1'; } }, { key: "_decideUUID", diff --git a/dist/titanium/pubnub.min.js b/dist/titanium/pubnub.min.js index 6e214661a..f263655f7 100644 --- a/dist/titanium/pubnub.min.js +++ b/dist/titanium/pubnub.min.js @@ -1 +1 @@ -exports.PubNub=function(n){var r={};function i(e){if(r[e])return r[e].exports;var t=r[e]={i:e,l:!1,exports:{}};return n[e].call(t.exports,t,t.exports,i),t.l=!0,t.exports}return i.m=n,i.c=r,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)i.d(n,r,function(e){return t[e]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="",i(i.s=9)}([function(e,t,n){"use strict";e.exports={}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;t.default={PNTimeOperation:"PNTimeOperation",PNHistoryOperation:"PNHistoryOperation",PNDeleteMessagesOperation:"PNDeleteMessagesOperation",PNFetchMessagesOperation:"PNFetchMessagesOperation",PNMessageCounts:"PNMessageCountsOperation",PNSubscribeOperation:"PNSubscribeOperation",PNUnsubscribeOperation:"PNUnsubscribeOperation",PNPublishOperation:"PNPublishOperation",PNSignalOperation:"PNSignalOperation",PNAddMessageActionOperation:"PNAddActionOperation",PNRemoveMessageActionOperation:"PNRemoveMessageActionOperation",PNGetMessageActionsOperation:"PNGetMessageActionsOperation",PNCreateUserOperation:"PNCreateUserOperation",PNUpdateUserOperation:"PNUpdateUserOperation",PNDeleteUserOperation:"PNDeleteUserOperation",PNGetUserOperation:"PNGetUsersOperation",PNGetUsersOperation:"PNGetUsersOperation",PNCreateSpaceOperation:"PNCreateSpaceOperation",PNUpdateSpaceOperation:"PNUpdateSpaceOperation",PNDeleteSpaceOperation:"PNDeleteSpaceOperation",PNGetSpaceOperation:"PNGetSpacesOperation",PNGetSpacesOperation:"PNGetSpacesOperation",PNGetMembersOperation:"PNGetMembersOperation",PNUpdateMembersOperation:"PNUpdateMembersOperation",PNGetMembershipsOperation:"PNGetMembershipsOperation",PNUpdateMembershipsOperation:"PNUpdateMembershipsOperation",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",PNAccessManagerGrantToken:"PNAccessManagerGrantToken",PNAccessManagerAudit:"PNAccessManagerAudit"},e.exports=t.default},function(e,t,n){"use strict";function r(e){return encodeURIComponent(e).replace(/[!~*'()]/g,function(e){return"%".concat(e.charCodeAt(0).toString(16).toUpperCase())})}function i(e){return function(e){var t=[];return Object.keys(e).forEach(function(e){return t.push(e)}),t}(e).sort()}e.exports={signPamFromParams:function(t){return i(t).map(function(e){return"".concat(e,"=").concat(r(t[e]))}).join("&")},endsWith:function(e,t){return-1!==e.indexOf(t,this.length-t.length)},createPromise:function(){var n,r;return{promise:new Promise(function(e,t){n=e,r=t}),reject:r,fulfill:n}},encodeString:r}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r,i=(r=n(5))&&r.__esModule?r:{default:r};n(0);function s(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 e=this.words,t=this.sigBytes;e[t>>>2]&=4294967295<<32-t%4*8,e.length=a.ceil(t/4)},clone:function(){var e=r.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],n=0;n>>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 u.init(n,t/2)}},o=i.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 u.init(n,t)}},c=i.Utf8={stringify:function(e){try{return decodeURIComponent(escape(o.stringify(e)))}catch(e){throw Error("Malformed UTF-8 data")}},parse:function(e){return o.parse(unescape(encodeURIComponent(e)))}},f=t.BufferedBlockAlgorithm=r.extend({reset:function(){this._data=new u.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=c.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(e){var t=this._data,n=t.words,r=t.sigBytes,i=this.blockSize,s=r/(4*i);if(e=(s=e?a.ceil(s):a.max((0|s)-this._minBufferSize,0))*i,r=a.min(4*e,r),e){for(var o=0;o>>7)^(d<<14|d>>>18)^d>>>3)+g[l-7]+((h<<15|h>>>17)^(h<<13|h>>>19)^h>>>10)+g[l-16]}d=f+((a<<26|a>>>6)^(a<<21|a>>>11)^(a<<7|a>>>25))+(a&u^~a&c)+p[l]+g[l],h=((r<<30|r>>>2)^(r<<19|r>>>13)^(r<<10|r>>>22))+(r&i^r&s^i&s),f=c,c=u,u=a,a=o+d|0,o=s,s=i,i=r,r=d+h|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]+a|0,n[5]=n[5]+u|0,n[6]=n[6]+c|0,n[7]=n[7]+f|0},_doFinalize:function(){var e=this._data,t=e.words,n=8*this._nDataBytes,r=8*e.sigBytes;return t[r>>>5]|=128<<24-r%32,t[14+(64+r>>>9<<4)]=i.floor(n/4294967296),t[15+(64+r>>>9<<4)]=n,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}});e.SHA256=n._createHelper(r),e.HmacSHA256=n._createHmacHelper(r)}(Math),c=(r=C).enc.Utf8,r.algo.HMAC=r.lib.Base.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=c.parse(t));var n=e.blockSize,r=4*n;t.sigBytes>r&&(t=e.finalize(t)),t.clamp();for(var i=this._oKey=t.clone(),s=this._iKey=t.clone(),o=i.words,a=s.words,u=0;u>>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;o<4&&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 t=e.length,n=this._map;!(r=n.charAt(64))||-1!=(r=e.indexOf(r))&&(t=r);for(var r=[],i=0,s=0;s>>6-s%4*2;r[i>>>2]|=(o|a)<<24-i%4*8,i++}return u.create(r,i)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="},function(s){function T(e,t,n,r,i,s,o){return((e=e+(t&n|~t&r)+i+o)<>>32-s)+t}function O(e,t,n,r,i,s,o){return((e=e+(t&r|n&~r)+i+o)<>>32-s)+t}function M(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 e=C,t=(r=e.lib).WordArray,n=r.Hasher,r=e.algo,w=[],i=0;i<64;i++)w[i]=4294967296*s.abs(s.sin(i+1))|0;r=r.MD5=n.extend({_doReset:function(){this._hash=new t.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(e,t){for(var n=0;n<16;n++){var r=e[o=t+n];e[o]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8)}n=this._hash.words;var i,s,o=e[t+0],a=(r=e[t+1],e[t+2]),u=e[t+3],c=e[t+4],f=e[t+5],l=e[t+6],d=e[t+7],h=e[t+8],p=e[t+9],g=e[t+10],v=e[t+11],b=e[t+12],y=e[t+13],m=e[t+14],_=e[t+15],k=n[0],P=S(P=S(P=S(P=S(P=M(P=M(P=M(P=M(P=O(P=O(P=O(P=O(P=T(P=T(P=T(P=T(P=n[1],s=T(s=n[2],i=T(i=n[3],k=T(k,P,s,i,o,7,w[0]),P,s,r,12,w[1]),k,P,a,17,w[2]),i,k,u,22,w[3]),s=T(s,i=T(i,k=T(k,P,s,i,c,7,w[4]),P,s,f,12,w[5]),k,P,l,17,w[6]),i,k,d,22,w[7]),s=T(s,i=T(i,k=T(k,P,s,i,h,7,w[8]),P,s,p,12,w[9]),k,P,g,17,w[10]),i,k,v,22,w[11]),s=T(s,i=T(i,k=T(k,P,s,i,b,7,w[12]),P,s,y,12,w[13]),k,P,m,17,w[14]),i,k,_,22,w[15]),s=O(s,i=O(i,k=O(k,P,s,i,r,5,w[16]),P,s,l,9,w[17]),k,P,v,14,w[18]),i,k,o,20,w[19]),s=O(s,i=O(i,k=O(k,P,s,i,f,5,w[20]),P,s,g,9,w[21]),k,P,_,14,w[22]),i,k,c,20,w[23]),s=O(s,i=O(i,k=O(k,P,s,i,p,5,w[24]),P,s,m,9,w[25]),k,P,u,14,w[26]),i,k,h,20,w[27]),s=O(s,i=O(i,k=O(k,P,s,i,y,5,w[28]),P,s,a,9,w[29]),k,P,d,14,w[30]),i,k,b,20,w[31]),s=M(s,i=M(i,k=M(k,P,s,i,f,4,w[32]),P,s,h,11,w[33]),k,P,v,16,w[34]),i,k,m,23,w[35]),s=M(s,i=M(i,k=M(k,P,s,i,r,4,w[36]),P,s,c,11,w[37]),k,P,d,16,w[38]),i,k,g,23,w[39]),s=M(s,i=M(i,k=M(k,P,s,i,y,4,w[40]),P,s,o,11,w[41]),k,P,u,16,w[42]),i,k,l,23,w[43]),s=M(s,i=M(i,k=M(k,P,s,i,p,4,w[44]),P,s,b,11,w[45]),k,P,_,16,w[46]),i,k,a,23,w[47]),s=S(s,i=S(i,k=S(k,P,s,i,o,6,w[48]),P,s,d,10,w[49]),k,P,m,15,w[50]),i,k,f,21,w[51]),s=S(s,i=S(i,k=S(k,P,s,i,b,6,w[52]),P,s,u,10,w[53]),k,P,g,15,w[54]),i,k,r,21,w[55]),s=S(s,i=S(i,k=S(k,P,s,i,h,6,w[56]),P,s,_,10,w[57]),k,P,l,15,w[58]),i,k,y,21,w[59]),s=S(s,i=S(i,k=S(k,P,s,i,c,6,w[60]),P,s,v,10,w[61]),k,P,a,15,w[62]),i,k,p,21,w[63]);n[0]=n[0]+k|0,n[1]=n[1]+P|0,n[2]=n[2]+s|0,n[3]=n[3]+i|0},_doFinalize:function(){var e=this._data,t=e.words,n=8*this._nDataBytes,r=8*e.sigBytes;t[r>>>5]|=128<<24-r%32;var i=s.floor(n/4294967296);for(t[15+(r+64>>>9<<4)]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8),t[14+(r+64>>>9<<4)]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),e.sigBytes=4*(t.length+1),this._process(),t=(e=this._hash).words,n=0;n<4;n++)r=t[n],t[n]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8);return e},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}}),e.MD5=n._createHelper(r),e.HmacMD5=n._createHmacHelper(r)}(Math),a=(s=(o=C).lib).Base,f=s.WordArray,l=(s=o.algo).EvpKDF=a.extend({cfg:a.extend({keySize:4,hasher:s.MD5,iterations:1}),init:function(e){this.cfg=this.cfg.extend(e)},compute:function(e,t){for(var n=(o=this.cfg).hasher.create(),r=f.create(),i=r.words,s=o.keySize,o=o.iterations;i.length>>2]}},e.BlockCipher=s.extend({cfg:s.cfg.extend({mode:u,padding:c}),reset:function(){s.reset.call(this);var e=(t=this.cfg).iv,t=t.mode;if(this._xformMode==this._ENC_XFORM_MODE)var n=t.createEncryptor;else n=t.createDecryptor,this._minBufferSize=1;this._mode=n.call(t,this,e&&e.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 f=e.CipherParams=t.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),l=(u=(d.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext;return((e=e.salt)?o.create([1398893684,1701076831]).concat(e).concat(t):t).toString(r)},parse:function(e){var t=(e=r.parse(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 f.create({ciphertext:e,salt:n})}},e.SerializableCipher=t.extend({cfg:t.extend({format:u}),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,f.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}})),d=(d.kdf={}).OpenSSL={execute:function(e,t,n,r){return r=r||o.random(8),e=i.create({keySize:t+n}).compute(e,r),n=o.create(e.words.slice(t),4*n),e.sigBytes=4*t,f.create({key:e,iv:n,salt:r})}},h=e.PasswordBasedCipher=l.extend({cfg:l.cfg.extend({kdf:d}),encrypt:function(e,t,n,r){return n=(r=this.cfg.extend(r)).kdf.execute(n,e.keySize,e.ivSize),r.iv=n.iv,(e=l.encrypt.call(this,e,t,n.key,r)).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,l.decrypt.call(this,e,t,n.key,r)}})}(),function(){for(var e=C,t=e.lib.BlockCipher,n=e.algo,o=[],r=[],i=[],s=[],a=[],u=[],c=[],f=[],l=[],d=[],h=[],p=0;p<256;p++)h[p]=p<128?p<<1:p<<1^283;var g=0,v=0;for(p=0;p<256;p++){var b=(b=v^v<<1^v<<2^v<<3^v<<4)>>>8^255&b^99;o[g]=b;var y=h[r[b]=g],m=h[y],_=h[m],k=257*h[b]^16843008*b;i[g]=k<<24|k>>>8,s[g]=k<<16|k>>>16,a[g]=k<<8|k>>>24,u[g]=k,k=16843009*_^65537*m^257*y^16843008*g,c[b]=k<<24|k>>>8,f[b]=k<<16|k>>>16,l[b]=k<<8|k>>>24,d[b]=k,g?(g=y^h[h[h[_^y]]],v^=h[h[v]]):g=v=1}var P=[0,1,2,4,8,16,32,64,128,27,54];n=n.AES=t.extend({_doReset:function(){for(var e=(n=this._key).words,t=n.sigBytes/4,n=4*((this._nRounds=t+6)+1),r=this._keySchedule=[],i=0;i>>24]<<24|o[s>>>16&255]<<16|o[s>>>8&255]<<8|o[255&s]):(s=o[(s=s<<8|s>>>24)>>>24]<<24|o[s>>>16&255]<<16|o[s>>>8&255]<<8|o[255&s],s^=P[i/t|0]<<24),r[i]=r[i-t]^s}for(e=this._invKeySchedule=[],t=0;t>>24]]^f[o[s>>>16&255]]^l[o[s>>>8&255]]^d[o[255&s]]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,i,s,a,u,o)},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,c,f,l,d,r),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],f=e[t+1]^n[1],l=e[t+2]^n[2],d=e[t+3]^n[3],h=4,p=1;p>>24]^i[f>>>16&255]^s[l>>>8&255]^o[255&d]^n[h++],v=r[f>>>24]^i[l>>>16&255]^s[d>>>8&255]^o[255&c]^n[h++],b=r[l>>>24]^i[d>>>16&255]^s[c>>>8&255]^o[255&f]^n[h++];d=r[d>>>24]^i[c>>>16&255]^s[f>>>8&255]^o[255&l]^n[h++],c=g,f=v,l=b}g=(a[c>>>24]<<24|a[f>>>16&255]<<16|a[l>>>8&255]<<8|a[255&d])^n[h++],v=(a[f>>>24]<<24|a[l>>>16&255]<<16|a[d>>>8&255]<<8|a[255&c])^n[h++],b=(a[l>>>24]<<24|a[d>>>16&255]<<16|a[c>>>8&255]<<8|a[255&f])^n[h++],d=(a[d>>>24]<<24|a[c>>>16&255]<<16|a[f>>>8&255]<<8|a[255&l])^n[h++],e[t]=g,e[t+1]=v,e[t+2]=b,e[t+3]=d},keySize:8});e.AES=t._createHelper(n)}(),C.mode.ECB=((d=C.lib.BlockCipherMode.extend()).Encryptor=d.extend({processBlock:function(e,t){this._cipher.encryptBlock(e,t)}}),d.Decryptor=d.extend({processBlock:function(e,t){this._cipher.decryptBlock(e,t)}}),d),e.exports=C},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;r(n(6)),r(n(3)),r(n(7));var c=r(n(14)),f=r(n(15)),l=r(n(2)),a=(n(0),r(n(4)));function r(e){return e&&e.__esModule?e:{default:e}}function i(e,t){for(var n=0;n=s){var o={};o.category=a.default.PNRequestMessageCountExceededCategory,o.operation=t.operation,this._listenerManager.announceStatus(o)}r.forEach(function(e){var t=e.channel,n=e.subscriptionMatch,r=e.publishMetaData;if(t===n&&(n=null),f){if(c._dedupingManager.isDuplicate(e))return;c._dedupingManager.addEntry(e)}if(l.default.endsWith(e.channel,"-pnpres")){var i={channel:null,subscription:null};i.actualChannel=null!=n?t:null,i.subscribedChannel=null!=n?n:t,t&&(i.channel=t.substring(0,t.lastIndexOf("-pnpres"))),n&&(i.subscription=n.substring(0,n.lastIndexOf("-pnpres"))),i.action=e.payload.action,i.state=e.payload.data,i.timetoken=r.publishTimetoken,i.occupancy=e.payload.occupancy,i.uuid=e.payload.uuid,i.timestamp=e.payload.timestamp,e.payload.join&&(i.join=e.payload.join),e.payload.leave&&(i.leave=e.payload.leave),e.payload.timeout&&(i.timeout=e.payload.timeout),c._listenerManager.announcePresence(i)}else if(1===e.messageType){var s={channel:null,subscription:null};s.channel=t,s.subscription=n,s.timetoken=r.publishTimetoken,s.publisher=e.issuingClientId,e.userMetadata&&(s.userMetadata=e.userMetadata),s.message=e.payload,c._listenerManager.announceSignal(s)}else if(2===e.messageType){var o={channel:null,subscription:null};o.channel=t,o.subscription=n,o.timetoken=r.publishTimetoken,o.publisher=e.issuingClientId,e.userMetadata&&(o.userMetadata=e.userMetadata),o.message={event:e.payload.event,type:e.payload.type,data:e.payload.data},"user"===e.payload.type?c._listenerManager.announceUser(o):"space"===e.payload.type?c._listenerManager.announceSpace(o):"membership"===e.payload.type&&c._listenerManager.announceMembership(o)}else if(3===e.messageType){var a={};a.channel=t,a.subscription=n,a.timetoken=r.publishTimetoken,a.publisher=e.issuingClientId,a.data={messageTimetoken:e.payload.data.messageTimetoken,actionTimetoken:e.payload.data.actionTimetoken,type:e.payload.data.type,uuid:e.issuingClientId,value:e.payload.data.value},a.event=e.payload.event,c._listenerManager.announceMessageAction(a)}else{var u={channel:null,subscription:null};u.actualChannel=null!=n?t:null,u.subscribedChannel=null!=n?n:t,u.channel=t,u.subscription=n,u.timetoken=r.publishTimetoken,u.publisher=e.issuingClientId,e.userMetadata&&(u.userMetadata=e.userMetadata),c._config.cipherKey?u.message=c._crypto.decrypt(e.payload):u.message=e.payload,c._listenerManager.announceMessage(u)}}),this._region=e.metadata.region,this._startSubscribeLoop()}}},{key:"_stopSubscribeLoop",value:function(){this._subscribeCall&&("function"==typeof this._subscribeCall.abort&&this._subscribeCall.abort(),this._subscribeCall=null)}}])&&i(s.prototype,o),void(u&&i(s,u)),p);function p(e){var t=e.subscribeEndpoint,n=e.leaveEndpoint,r=e.heartbeatEndpoint,i=e.setStateEndpoint,s=e.timeEndpoint,o=e.config,a=e.crypto,u=e.listenerManager;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,p),d(this,"_crypto",void 0),d(this,"_config",void 0),d(this,"_listenerManager",void 0),d(this,"_reconnectionManager",void 0),d(this,"_leaveEndpoint",void 0),d(this,"_heartbeatEndpoint",void 0),d(this,"_setStateEndpoint",void 0),d(this,"_subscribeEndpoint",void 0),d(this,"_channels",void 0),d(this,"_presenceChannels",void 0),d(this,"_heartbeatChannels",void 0),d(this,"_heartbeatChannelGroups",void 0),d(this,"_channelGroups",void 0),d(this,"_presenceChannelGroups",void 0),d(this,"_currentTimetoken",void 0),d(this,"_lastTimetoken",void 0),d(this,"_storedTimetoken",void 0),d(this,"_region",void 0),d(this,"_subscribeCall",void 0),d(this,"_heartbeatTimer",void 0),d(this,"_subscriptionStatusAnnounced",void 0),d(this,"_autoNetworkDetection",void 0),d(this,"_isOnline",void 0),d(this,"_pendingChannelSubscriptions",void 0),d(this,"_pendingChannelGroupSubscriptions",void 0),d(this,"_dedupingManager",void 0),this._listenerManager=u,this._config=o,this._leaveEndpoint=n,this._heartbeatEndpoint=r,this._setStateEndpoint=i,this._subscribeEndpoint=t,this._crypto=a,this._channels={},this._presenceChannels={},this._heartbeatChannels={},this._heartbeatChannelGroups={},this._channelGroups={},this._presenceChannelGroups={},this._pendingChannelSubscriptions=[],this._pendingChannelGroupSubscriptions=[],this._currentTimetoken=0,this._lastTimetoken=0,this._storedTimetoken=null,this._subscriptionStatusAnnounced=!1,this._isOnline=!0,this._reconnectionManager=new c.default({timeEndpoint:s}),this._dedupingManager=new f.default({config:o})}t.default=h,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r;(r=n(8))&&r.__esModule,n(0);function i(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=[]}}])&&i(o.prototype,a),void(u&&i(o,u)),f);function f(e){var t=e.config;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,f),s(this,"_config",void 0),s(this,"hashHistory",void 0),this.hashHistory=[],this._config=t}t.default=c,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r;(r=n(3))&&r.__esModule,n(0);function i(e){return(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})(e)}function s(e,t){for(var n=0;n=this._maxSubDomain&&(this._currentSubDomain=1),e=this._currentSubDomain.toString(),this._providedFQDN.replace("ps.pndsn.com","ps".concat(e,".pndsn.com"))):this._providedFQDN;var e}},{key:"hasModule",value:function(e){return e in this._modules}},{key:"shiftStandardOrigin",value:function(){return this._standardOrigin=this.nextOrigin(),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:"PATCH",value:function(e,t,n,r){return this._modules.patch(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 r.default.PNNetworkIssuesCategory;if("ECONNREFUSED"===e.code)return r.default.PNNetworkIssuesCategory;if("ECONNRESET"===e.code)return r.default.PNNetworkIssuesCategory;if("EAI_AGAIN"===e.code)return r.default.PNNetworkIssuesCategory;if(0===e.status||e.hasOwnProperty("status")&&void 0===e.status)return r.default.PNNetworkIssuesCategory;if(e.timeout)return r.default.PNTimeoutCategory;if("ETIMEDOUT"===e.code)return r.default.PNNetworkIssuesCategory;if(e.response){if(e.response.badRequest)return r.default.PNBadRequestCategory;if(e.response.forbidden)return r.default.PNAccessDeniedCategory}return r.default.PNUnknownCategory}}])&&s(a.prototype,u),void(c&&s(a,c)),l);function l(t){var n=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,l),o(this,"_modules",void 0),o(this,"_config",void 0),o(this,"_maxSubDomain",void 0),o(this,"_currentSubDomain",void 0),o(this,"_standardOrigin",void 0),o(this,"_subscribeOrigin",void 0),o(this,"_providedFQDN",void 0),o(this,"_requestTimeout",void 0),o(this,"_coreParams",void 0),this._modules={},Object.keys(t).forEach(function(e){n._modules[e]=t[e].bind(n)})}t.default=f,e.exports=t.default},function(e,t,n){"use strict";function r(e,t){for(var n=0;n>10,n=1023&e,r=32768&e;if(31==t)return 0==n?r?-1/0:1/0:NaN;var i=t?Math.pow(2,t-25)*(1024+n):Math.pow(2,-24)*n;return r?-i:i},readFloat32:function(){var e=this.readUint32(),t=(2147483647&e)>>23,n=8388607&e,r=2147483648&e;if(255==t)return 0==n?r?-1/0:1/0:NaN;var i=t?Math.pow(2,t-23-127)*(8388608+n):Math.pow(2,-149)*n;return r?-i:i},readFloat64:function(){var e=this.readUint32(),t=this.readUint32(),n=e>>20&2047,r=4294967296*(1048575&e)+t,i=2147483648&e;if(2047==n)return 0===r?i?-1/0:1/0:NaN;var s=n?Math.pow(2,n-52-1023)*(4503599627370496+r):Math.pow(2,-1074)*r;return i?-s:s},readUint16:function(){return 256*this.readByte()+this.readByte()},readUint32:function(){return 65536*this.readUint16()+this.readUint16()},readUint64:function(){return 4294967296*this.readUint32()+this.readUint32()}},t.prototype={writeByte:r("writeByte"),result:r("result"),writeFloat16:r("writeFloat16"),writeFloat32:r("writeFloat32"),writeFloat64:r("writeFloat64"),writeUint16:function(e){this.writeByte(e>>8&255),this.writeByte(255&e)},writeUint32:function(e){this.writeUint16(e>>16&65535),this.writeUint16(65535&e)},writeUint64:function(e){if(9007199254740992<=e||e<=-9007199254740992)throw new Error("Cannot encode Uint64 of: "+e+" magnitude to big (floating point errors)");this.writeUint32(Math.floor(e/4294967296)),this.writeUint32(e%4294967296)},writeString:r("writeString"),canWriteBinary:function(e){return!1},writeBinary:r("writeChunk")};var d=new Error;function h(e){var t=function(e){var t=e.readByte();return{type:t>>5,value:31&t}}(e);switch(t.type){case 0:return l(t,e);case 1:return-1-l(t,e);case 2:return e.readChunk(l(t,e));case 3:var n=e.readChunk(l(t,e));return n.toString("utf-8");case 4:case 5:var r=l(t,e),i=[];if(null!==r){5===t.type&&(r*=2);for(var s=0;s=this.latestBuffer.length&&(this.completeBuffers.push(this.latestBuffer),this.latestBuffer=Buffer.alloc(this.defaultBufferLength),this.latestBufferOffset=0),this.byteLength++},n.prototype.writeFloat32=function(e){var t=Buffer.alloc(4);t.writeFloatBE(e,0),this.writeBuffer(t)},n.prototype.writeFloat64=function(e){var t=Buffer.alloc(8);t.writeDoubleBE(e,0),this.writeBuffer(t)},n.prototype.writeString=function(e,t){var n=Buffer.from(e,"utf-8");t(n.length),this.writeBuffer(n)},n.prototype.canWriteBinary=function(e){return e instanceof Buffer},n.prototype.writeBinary=function(e,t){t(e.length),this.writeBuffer(e)},n.prototype.writeBuffer=function(e){if(!(e instanceof Buffer))throw new TypeError("BufferWriter only accepts Buffers");this.latestBufferOffset?this.latestBuffer.length-this.latestBufferOffset>=e.length?(e.copy(this.latestBuffer,this.latestBufferOffset),this.latestBufferOffset+=e.length,this.latestBufferOffset>=this.latestBuffer.length&&(this.completeBuffers.push(this.latestBuffer),this.latestBuffer=Buffer.alloc(this.defaultBufferLength),this.latestBufferOffset=0)):(this.completeBuffers.push(this.latestBuffer.slice(0,this.latestBufferOffset)),this.completeBuffers.push(e),this.latestBuffer=Buffer.alloc(this.defaultBufferLength),this.latestBufferOffset=0):this.completeBuffers.push(e),this.byteLength+=e.length},n.prototype.result=function(){for(var e=Buffer.alloc(this.byteLength),t=0,n=0;n>>>>>"),s.log("[".concat(a," / ").concat(o,"]"),"\n",e,"\n",t,"\n",n),s.log("-----")}(n,r,t.responseText),o(u,e)},t.onerror=function(e){return u.error=!0,u.errorData=e.error,u.category=a._detectErrorCategory(e.error),o(u,null)},t.timeout="android"===Ti.Platform.osname?2147483647:1/0,t.send(i)}},function(e,t,n){"use strict";function i(e){return(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})(e)}function s(t,n,r){null!=r?Array.isArray(r)?r.forEach(function(e){s(t,n,e)}):"object"===i(r)?Object.keys(r).forEach(function(e){s(t,"".concat(n,"[").concat(e,"]"),r[e])}):t.push("".concat(encodeURIComponent(n),"=").concat(encodeURIComponent(r))):null===r&&t.push(encodeURIComponent("".concat(encodeURIComponent(n))))}Object.defineProperty(t,"__esModule",{value:!0}),t.encodedKeyValuePair=s,t.buildUrl=function(e,t){var n=[];return Object.keys(t).forEach(function(e){s(n,e,t[e])}),"".concat(e,"?").concat(n.join("&"))}}]),module.exports=exports.PubNub; \ No newline at end of file +exports.PubNub=function(n){var r={};function i(e){if(r[e])return r[e].exports;var t=r[e]={i:e,l:!1,exports:{}};return n[e].call(t.exports,t,t.exports,i),t.l=!0,t.exports}return i.m=n,i.c=r,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)i.d(n,r,function(e){return t[e]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="",i(i.s=9)}([function(e,t,n){"use strict";e.exports={}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;t.default={PNTimeOperation:"PNTimeOperation",PNHistoryOperation:"PNHistoryOperation",PNDeleteMessagesOperation:"PNDeleteMessagesOperation",PNFetchMessagesOperation:"PNFetchMessagesOperation",PNMessageCounts:"PNMessageCountsOperation",PNSubscribeOperation:"PNSubscribeOperation",PNUnsubscribeOperation:"PNUnsubscribeOperation",PNPublishOperation:"PNPublishOperation",PNSignalOperation:"PNSignalOperation",PNAddMessageActionOperation:"PNAddActionOperation",PNRemoveMessageActionOperation:"PNRemoveMessageActionOperation",PNGetMessageActionsOperation:"PNGetMessageActionsOperation",PNCreateUserOperation:"PNCreateUserOperation",PNUpdateUserOperation:"PNUpdateUserOperation",PNDeleteUserOperation:"PNDeleteUserOperation",PNGetUserOperation:"PNGetUsersOperation",PNGetUsersOperation:"PNGetUsersOperation",PNCreateSpaceOperation:"PNCreateSpaceOperation",PNUpdateSpaceOperation:"PNUpdateSpaceOperation",PNDeleteSpaceOperation:"PNDeleteSpaceOperation",PNGetSpaceOperation:"PNGetSpacesOperation",PNGetSpacesOperation:"PNGetSpacesOperation",PNGetMembersOperation:"PNGetMembersOperation",PNUpdateMembersOperation:"PNUpdateMembersOperation",PNGetMembershipsOperation:"PNGetMembershipsOperation",PNUpdateMembershipsOperation:"PNUpdateMembershipsOperation",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",PNAccessManagerGrantToken:"PNAccessManagerGrantToken",PNAccessManagerAudit:"PNAccessManagerAudit"},e.exports=t.default},function(e,t,n){"use strict";function r(e){return encodeURIComponent(e).replace(/[!~*'()]/g,function(e){return"%".concat(e.charCodeAt(0).toString(16).toUpperCase())})}function i(e){return function(e){var t=[];return Object.keys(e).forEach(function(e){return t.push(e)}),t}(e).sort()}e.exports={signPamFromParams:function(t){return i(t).map(function(e){return"".concat(e,"=").concat(r(t[e]))}).join("&")},endsWith:function(e,t){return-1!==e.indexOf(t,this.length-t.length)},createPromise:function(){var n,r;return{promise:new Promise(function(e,t){n=e,r=t}),reject:r,fulfill:n}},encodeString:r}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r,i=(r=n(5))&&r.__esModule?r:{default:r};n(0);function s(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 e=this.words,t=this.sigBytes;e[t>>>2]&=4294967295<<32-t%4*8,e.length=a.ceil(t/4)},clone:function(){var e=r.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],n=0;n>>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 u.init(n,t/2)}},o=i.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 u.init(n,t)}},c=i.Utf8={stringify:function(e){try{return decodeURIComponent(escape(o.stringify(e)))}catch(e){throw Error("Malformed UTF-8 data")}},parse:function(e){return o.parse(unescape(encodeURIComponent(e)))}},f=t.BufferedBlockAlgorithm=r.extend({reset:function(){this._data=new u.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=c.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(e){var t=this._data,n=t.words,r=t.sigBytes,i=this.blockSize,s=r/(4*i);if(e=(s=e?a.ceil(s):a.max((0|s)-this._minBufferSize,0))*i,r=a.min(4*e,r),e){for(var o=0;o>>7)^(d<<14|d>>>18)^d>>>3)+g[l-7]+((h<<15|h>>>17)^(h<<13|h>>>19)^h>>>10)+g[l-16]}d=f+((a<<26|a>>>6)^(a<<21|a>>>11)^(a<<7|a>>>25))+(a&u^~a&c)+p[l]+g[l],h=((r<<30|r>>>2)^(r<<19|r>>>13)^(r<<10|r>>>22))+(r&i^r&s^i&s),f=c,c=u,u=a,a=o+d|0,o=s,s=i,i=r,r=d+h|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]+a|0,n[5]=n[5]+u|0,n[6]=n[6]+c|0,n[7]=n[7]+f|0},_doFinalize:function(){var e=this._data,t=e.words,n=8*this._nDataBytes,r=8*e.sigBytes;return t[r>>>5]|=128<<24-r%32,t[14+(64+r>>>9<<4)]=i.floor(n/4294967296),t[15+(64+r>>>9<<4)]=n,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}});e.SHA256=n._createHelper(r),e.HmacSHA256=n._createHmacHelper(r)}(Math),c=(r=C).enc.Utf8,r.algo.HMAC=r.lib.Base.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=c.parse(t));var n=e.blockSize,r=4*n;t.sigBytes>r&&(t=e.finalize(t)),t.clamp();for(var i=this._oKey=t.clone(),s=this._iKey=t.clone(),o=i.words,a=s.words,u=0;u>>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;o<4&&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 t=e.length,n=this._map;!(r=n.charAt(64))||-1!=(r=e.indexOf(r))&&(t=r);for(var r=[],i=0,s=0;s>>6-s%4*2;r[i>>>2]|=(o|a)<<24-i%4*8,i++}return u.create(r,i)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="},function(s){function T(e,t,n,r,i,s,o){return((e=e+(t&n|~t&r)+i+o)<>>32-s)+t}function O(e,t,n,r,i,s,o){return((e=e+(t&r|n&~r)+i+o)<>>32-s)+t}function M(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 e=C,t=(r=e.lib).WordArray,n=r.Hasher,r=e.algo,w=[],i=0;i<64;i++)w[i]=4294967296*s.abs(s.sin(i+1))|0;r=r.MD5=n.extend({_doReset:function(){this._hash=new t.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(e,t){for(var n=0;n<16;n++){var r=e[o=t+n];e[o]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8)}n=this._hash.words;var i,s,o=e[t+0],a=(r=e[t+1],e[t+2]),u=e[t+3],c=e[t+4],f=e[t+5],l=e[t+6],d=e[t+7],h=e[t+8],p=e[t+9],g=e[t+10],v=e[t+11],b=e[t+12],y=e[t+13],m=e[t+14],_=e[t+15],k=n[0],P=S(P=S(P=S(P=S(P=M(P=M(P=M(P=M(P=O(P=O(P=O(P=O(P=T(P=T(P=T(P=T(P=n[1],s=T(s=n[2],i=T(i=n[3],k=T(k,P,s,i,o,7,w[0]),P,s,r,12,w[1]),k,P,a,17,w[2]),i,k,u,22,w[3]),s=T(s,i=T(i,k=T(k,P,s,i,c,7,w[4]),P,s,f,12,w[5]),k,P,l,17,w[6]),i,k,d,22,w[7]),s=T(s,i=T(i,k=T(k,P,s,i,h,7,w[8]),P,s,p,12,w[9]),k,P,g,17,w[10]),i,k,v,22,w[11]),s=T(s,i=T(i,k=T(k,P,s,i,b,7,w[12]),P,s,y,12,w[13]),k,P,m,17,w[14]),i,k,_,22,w[15]),s=O(s,i=O(i,k=O(k,P,s,i,r,5,w[16]),P,s,l,9,w[17]),k,P,v,14,w[18]),i,k,o,20,w[19]),s=O(s,i=O(i,k=O(k,P,s,i,f,5,w[20]),P,s,g,9,w[21]),k,P,_,14,w[22]),i,k,c,20,w[23]),s=O(s,i=O(i,k=O(k,P,s,i,p,5,w[24]),P,s,m,9,w[25]),k,P,u,14,w[26]),i,k,h,20,w[27]),s=O(s,i=O(i,k=O(k,P,s,i,y,5,w[28]),P,s,a,9,w[29]),k,P,d,14,w[30]),i,k,b,20,w[31]),s=M(s,i=M(i,k=M(k,P,s,i,f,4,w[32]),P,s,h,11,w[33]),k,P,v,16,w[34]),i,k,m,23,w[35]),s=M(s,i=M(i,k=M(k,P,s,i,r,4,w[36]),P,s,c,11,w[37]),k,P,d,16,w[38]),i,k,g,23,w[39]),s=M(s,i=M(i,k=M(k,P,s,i,y,4,w[40]),P,s,o,11,w[41]),k,P,u,16,w[42]),i,k,l,23,w[43]),s=M(s,i=M(i,k=M(k,P,s,i,p,4,w[44]),P,s,b,11,w[45]),k,P,_,16,w[46]),i,k,a,23,w[47]),s=S(s,i=S(i,k=S(k,P,s,i,o,6,w[48]),P,s,d,10,w[49]),k,P,m,15,w[50]),i,k,f,21,w[51]),s=S(s,i=S(i,k=S(k,P,s,i,b,6,w[52]),P,s,u,10,w[53]),k,P,g,15,w[54]),i,k,r,21,w[55]),s=S(s,i=S(i,k=S(k,P,s,i,h,6,w[56]),P,s,_,10,w[57]),k,P,l,15,w[58]),i,k,y,21,w[59]),s=S(s,i=S(i,k=S(k,P,s,i,c,6,w[60]),P,s,v,10,w[61]),k,P,a,15,w[62]),i,k,p,21,w[63]);n[0]=n[0]+k|0,n[1]=n[1]+P|0,n[2]=n[2]+s|0,n[3]=n[3]+i|0},_doFinalize:function(){var e=this._data,t=e.words,n=8*this._nDataBytes,r=8*e.sigBytes;t[r>>>5]|=128<<24-r%32;var i=s.floor(n/4294967296);for(t[15+(r+64>>>9<<4)]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8),t[14+(r+64>>>9<<4)]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),e.sigBytes=4*(t.length+1),this._process(),t=(e=this._hash).words,n=0;n<4;n++)r=t[n],t[n]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8);return e},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}}),e.MD5=n._createHelper(r),e.HmacMD5=n._createHmacHelper(r)}(Math),a=(s=(o=C).lib).Base,f=s.WordArray,l=(s=o.algo).EvpKDF=a.extend({cfg:a.extend({keySize:4,hasher:s.MD5,iterations:1}),init:function(e){this.cfg=this.cfg.extend(e)},compute:function(e,t){for(var n=(o=this.cfg).hasher.create(),r=f.create(),i=r.words,s=o.keySize,o=o.iterations;i.length>>2]}},e.BlockCipher=s.extend({cfg:s.cfg.extend({mode:u,padding:c}),reset:function(){s.reset.call(this);var e=(t=this.cfg).iv,t=t.mode;if(this._xformMode==this._ENC_XFORM_MODE)var n=t.createEncryptor;else n=t.createDecryptor,this._minBufferSize=1;this._mode=n.call(t,this,e&&e.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 f=e.CipherParams=t.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),l=(u=(d.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext;return((e=e.salt)?o.create([1398893684,1701076831]).concat(e).concat(t):t).toString(r)},parse:function(e){var t=(e=r.parse(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 f.create({ciphertext:e,salt:n})}},e.SerializableCipher=t.extend({cfg:t.extend({format:u}),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,f.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}})),d=(d.kdf={}).OpenSSL={execute:function(e,t,n,r){return r=r||o.random(8),e=i.create({keySize:t+n}).compute(e,r),n=o.create(e.words.slice(t),4*n),e.sigBytes=4*t,f.create({key:e,iv:n,salt:r})}},h=e.PasswordBasedCipher=l.extend({cfg:l.cfg.extend({kdf:d}),encrypt:function(e,t,n,r){return n=(r=this.cfg.extend(r)).kdf.execute(n,e.keySize,e.ivSize),r.iv=n.iv,(e=l.encrypt.call(this,e,t,n.key,r)).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,l.decrypt.call(this,e,t,n.key,r)}})}(),function(){for(var e=C,t=e.lib.BlockCipher,n=e.algo,o=[],r=[],i=[],s=[],a=[],u=[],c=[],f=[],l=[],d=[],h=[],p=0;p<256;p++)h[p]=p<128?p<<1:p<<1^283;var g=0,v=0;for(p=0;p<256;p++){var b=(b=v^v<<1^v<<2^v<<3^v<<4)>>>8^255&b^99;o[g]=b;var y=h[r[b]=g],m=h[y],_=h[m],k=257*h[b]^16843008*b;i[g]=k<<24|k>>>8,s[g]=k<<16|k>>>16,a[g]=k<<8|k>>>24,u[g]=k,k=16843009*_^65537*m^257*y^16843008*g,c[b]=k<<24|k>>>8,f[b]=k<<16|k>>>16,l[b]=k<<8|k>>>24,d[b]=k,g?(g=y^h[h[h[_^y]]],v^=h[h[v]]):g=v=1}var P=[0,1,2,4,8,16,32,64,128,27,54];n=n.AES=t.extend({_doReset:function(){for(var e=(n=this._key).words,t=n.sigBytes/4,n=4*((this._nRounds=t+6)+1),r=this._keySchedule=[],i=0;i>>24]<<24|o[s>>>16&255]<<16|o[s>>>8&255]<<8|o[255&s]):(s=o[(s=s<<8|s>>>24)>>>24]<<24|o[s>>>16&255]<<16|o[s>>>8&255]<<8|o[255&s],s^=P[i/t|0]<<24),r[i]=r[i-t]^s}for(e=this._invKeySchedule=[],t=0;t>>24]]^f[o[s>>>16&255]]^l[o[s>>>8&255]]^d[o[255&s]]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,i,s,a,u,o)},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,c,f,l,d,r),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],f=e[t+1]^n[1],l=e[t+2]^n[2],d=e[t+3]^n[3],h=4,p=1;p>>24]^i[f>>>16&255]^s[l>>>8&255]^o[255&d]^n[h++],v=r[f>>>24]^i[l>>>16&255]^s[d>>>8&255]^o[255&c]^n[h++],b=r[l>>>24]^i[d>>>16&255]^s[c>>>8&255]^o[255&f]^n[h++];d=r[d>>>24]^i[c>>>16&255]^s[f>>>8&255]^o[255&l]^n[h++],c=g,f=v,l=b}g=(a[c>>>24]<<24|a[f>>>16&255]<<16|a[l>>>8&255]<<8|a[255&d])^n[h++],v=(a[f>>>24]<<24|a[l>>>16&255]<<16|a[d>>>8&255]<<8|a[255&c])^n[h++],b=(a[l>>>24]<<24|a[d>>>16&255]<<16|a[c>>>8&255]<<8|a[255&f])^n[h++],d=(a[d>>>24]<<24|a[c>>>16&255]<<16|a[f>>>8&255]<<8|a[255&l])^n[h++],e[t]=g,e[t+1]=v,e[t+2]=b,e[t+3]=d},keySize:8});e.AES=t._createHelper(n)}(),C.mode.ECB=((d=C.lib.BlockCipherMode.extend()).Encryptor=d.extend({processBlock:function(e,t){this._cipher.encryptBlock(e,t)}}),d.Decryptor=d.extend({processBlock:function(e,t){this._cipher.decryptBlock(e,t)}}),d),e.exports=C},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;r(n(6)),r(n(3)),r(n(7));var c=r(n(14)),f=r(n(15)),l=r(n(2)),a=(n(0),r(n(4)));function r(e){return e&&e.__esModule?e:{default:e}}function i(e,t){for(var n=0;n=s){var o={};o.category=a.default.PNRequestMessageCountExceededCategory,o.operation=t.operation,this._listenerManager.announceStatus(o)}r.forEach(function(e){var t=e.channel,n=e.subscriptionMatch,r=e.publishMetaData;if(t===n&&(n=null),f){if(c._dedupingManager.isDuplicate(e))return;c._dedupingManager.addEntry(e)}if(l.default.endsWith(e.channel,"-pnpres")){var i={channel:null,subscription:null};i.actualChannel=null!=n?t:null,i.subscribedChannel=null!=n?n:t,t&&(i.channel=t.substring(0,t.lastIndexOf("-pnpres"))),n&&(i.subscription=n.substring(0,n.lastIndexOf("-pnpres"))),i.action=e.payload.action,i.state=e.payload.data,i.timetoken=r.publishTimetoken,i.occupancy=e.payload.occupancy,i.uuid=e.payload.uuid,i.timestamp=e.payload.timestamp,e.payload.join&&(i.join=e.payload.join),e.payload.leave&&(i.leave=e.payload.leave),e.payload.timeout&&(i.timeout=e.payload.timeout),c._listenerManager.announcePresence(i)}else if(1===e.messageType){var s={channel:null,subscription:null};s.channel=t,s.subscription=n,s.timetoken=r.publishTimetoken,s.publisher=e.issuingClientId,e.userMetadata&&(s.userMetadata=e.userMetadata),s.message=e.payload,c._listenerManager.announceSignal(s)}else if(2===e.messageType){var o={channel:null,subscription:null};o.channel=t,o.subscription=n,o.timetoken=r.publishTimetoken,o.publisher=e.issuingClientId,e.userMetadata&&(o.userMetadata=e.userMetadata),o.message={event:e.payload.event,type:e.payload.type,data:e.payload.data},"user"===e.payload.type?c._listenerManager.announceUser(o):"space"===e.payload.type?c._listenerManager.announceSpace(o):"membership"===e.payload.type&&c._listenerManager.announceMembership(o)}else if(3===e.messageType){var a={};a.channel=t,a.subscription=n,a.timetoken=r.publishTimetoken,a.publisher=e.issuingClientId,a.data={messageTimetoken:e.payload.data.messageTimetoken,actionTimetoken:e.payload.data.actionTimetoken,type:e.payload.data.type,uuid:e.issuingClientId,value:e.payload.data.value},a.event=e.payload.event,c._listenerManager.announceMessageAction(a)}else{var u={channel:null,subscription:null};u.actualChannel=null!=n?t:null,u.subscribedChannel=null!=n?n:t,u.channel=t,u.subscription=n,u.timetoken=r.publishTimetoken,u.publisher=e.issuingClientId,e.userMetadata&&(u.userMetadata=e.userMetadata),c._config.cipherKey?u.message=c._crypto.decrypt(e.payload):u.message=e.payload,c._listenerManager.announceMessage(u)}}),this._region=e.metadata.region,this._startSubscribeLoop()}}},{key:"_stopSubscribeLoop",value:function(){this._subscribeCall&&("function"==typeof this._subscribeCall.abort&&this._subscribeCall.abort(),this._subscribeCall=null)}}])&&i(s.prototype,o),void(u&&i(s,u)),p);function p(e){var t=e.subscribeEndpoint,n=e.leaveEndpoint,r=e.heartbeatEndpoint,i=e.setStateEndpoint,s=e.timeEndpoint,o=e.config,a=e.crypto,u=e.listenerManager;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,p),d(this,"_crypto",void 0),d(this,"_config",void 0),d(this,"_listenerManager",void 0),d(this,"_reconnectionManager",void 0),d(this,"_leaveEndpoint",void 0),d(this,"_heartbeatEndpoint",void 0),d(this,"_setStateEndpoint",void 0),d(this,"_subscribeEndpoint",void 0),d(this,"_channels",void 0),d(this,"_presenceChannels",void 0),d(this,"_heartbeatChannels",void 0),d(this,"_heartbeatChannelGroups",void 0),d(this,"_channelGroups",void 0),d(this,"_presenceChannelGroups",void 0),d(this,"_currentTimetoken",void 0),d(this,"_lastTimetoken",void 0),d(this,"_storedTimetoken",void 0),d(this,"_region",void 0),d(this,"_subscribeCall",void 0),d(this,"_heartbeatTimer",void 0),d(this,"_subscriptionStatusAnnounced",void 0),d(this,"_autoNetworkDetection",void 0),d(this,"_isOnline",void 0),d(this,"_pendingChannelSubscriptions",void 0),d(this,"_pendingChannelGroupSubscriptions",void 0),d(this,"_dedupingManager",void 0),this._listenerManager=u,this._config=o,this._leaveEndpoint=n,this._heartbeatEndpoint=r,this._setStateEndpoint=i,this._subscribeEndpoint=t,this._crypto=a,this._channels={},this._presenceChannels={},this._heartbeatChannels={},this._heartbeatChannelGroups={},this._channelGroups={},this._presenceChannelGroups={},this._pendingChannelSubscriptions=[],this._pendingChannelGroupSubscriptions=[],this._currentTimetoken=0,this._lastTimetoken=0,this._storedTimetoken=null,this._subscriptionStatusAnnounced=!1,this._isOnline=!0,this._reconnectionManager=new c.default({timeEndpoint:s}),this._dedupingManager=new f.default({config:o})}t.default=h,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r;(r=n(8))&&r.__esModule,n(0);function i(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=[]}}])&&i(o.prototype,a),void(u&&i(o,u)),f);function f(e){var t=e.config;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,f),s(this,"_config",void 0),s(this,"hashHistory",void 0),this.hashHistory=[],this._config=t}t.default=c,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r;(r=n(3))&&r.__esModule,n(0);function i(e){return(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})(e)}function s(e,t){for(var n=0;n=this._maxSubDomain&&(this._currentSubDomain=1),e=this._currentSubDomain.toString(),this._providedFQDN.replace("ps.pndsn.com","ps".concat(e,".pndsn.com"))):this._providedFQDN;var e}},{key:"hasModule",value:function(e){return e in this._modules}},{key:"shiftStandardOrigin",value:function(){return this._standardOrigin=this.nextOrigin(),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:"PATCH",value:function(e,t,n,r){return this._modules.patch(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 r.default.PNNetworkIssuesCategory;if("ECONNREFUSED"===e.code)return r.default.PNNetworkIssuesCategory;if("ECONNRESET"===e.code)return r.default.PNNetworkIssuesCategory;if("EAI_AGAIN"===e.code)return r.default.PNNetworkIssuesCategory;if(0===e.status||e.hasOwnProperty("status")&&void 0===e.status)return r.default.PNNetworkIssuesCategory;if(e.timeout)return r.default.PNTimeoutCategory;if("ETIMEDOUT"===e.code)return r.default.PNNetworkIssuesCategory;if(e.response){if(e.response.badRequest)return r.default.PNBadRequestCategory;if(e.response.forbidden)return r.default.PNAccessDeniedCategory}return r.default.PNUnknownCategory}}])&&s(a.prototype,u),void(c&&s(a,c)),l);function l(t){var n=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,l),o(this,"_modules",void 0),o(this,"_config",void 0),o(this,"_maxSubDomain",void 0),o(this,"_currentSubDomain",void 0),o(this,"_standardOrigin",void 0),o(this,"_subscribeOrigin",void 0),o(this,"_providedFQDN",void 0),o(this,"_requestTimeout",void 0),o(this,"_coreParams",void 0),this._modules={},Object.keys(t).forEach(function(e){n._modules[e]=t[e].bind(n)})}t.default=f,e.exports=t.default},function(e,t,n){"use strict";function r(e,t){for(var n=0;n>10,n=1023&e,r=32768&e;if(31==t)return 0==n?r?-1/0:1/0:NaN;var i=t?Math.pow(2,t-25)*(1024+n):Math.pow(2,-24)*n;return r?-i:i},readFloat32:function(){var e=this.readUint32(),t=(2147483647&e)>>23,n=8388607&e,r=2147483648&e;if(255==t)return 0==n?r?-1/0:1/0:NaN;var i=t?Math.pow(2,t-23-127)*(8388608+n):Math.pow(2,-149)*n;return r?-i:i},readFloat64:function(){var e=this.readUint32(),t=this.readUint32(),n=e>>20&2047,r=4294967296*(1048575&e)+t,i=2147483648&e;if(2047==n)return 0===r?i?-1/0:1/0:NaN;var s=n?Math.pow(2,n-52-1023)*(4503599627370496+r):Math.pow(2,-1074)*r;return i?-s:s},readUint16:function(){return 256*this.readByte()+this.readByte()},readUint32:function(){return 65536*this.readUint16()+this.readUint16()},readUint64:function(){return 4294967296*this.readUint32()+this.readUint32()}},t.prototype={writeByte:r("writeByte"),result:r("result"),writeFloat16:r("writeFloat16"),writeFloat32:r("writeFloat32"),writeFloat64:r("writeFloat64"),writeUint16:function(e){this.writeByte(e>>8&255),this.writeByte(255&e)},writeUint32:function(e){this.writeUint16(e>>16&65535),this.writeUint16(65535&e)},writeUint64:function(e){if(9007199254740992<=e||e<=-9007199254740992)throw new Error("Cannot encode Uint64 of: "+e+" magnitude to big (floating point errors)");this.writeUint32(Math.floor(e/4294967296)),this.writeUint32(e%4294967296)},writeString:r("writeString"),canWriteBinary:function(e){return!1},writeBinary:r("writeChunk")};var d=new Error;function h(e){var t=function(e){var t=e.readByte();return{type:t>>5,value:31&t}}(e);switch(t.type){case 0:return l(t,e);case 1:return-1-l(t,e);case 2:return e.readChunk(l(t,e));case 3:var n=e.readChunk(l(t,e));return n.toString("utf-8");case 4:case 5:var r=l(t,e),i=[];if(null!==r){5===t.type&&(r*=2);for(var s=0;s=this.latestBuffer.length&&(this.completeBuffers.push(this.latestBuffer),this.latestBuffer=Buffer.alloc(this.defaultBufferLength),this.latestBufferOffset=0),this.byteLength++},n.prototype.writeFloat32=function(e){var t=Buffer.alloc(4);t.writeFloatBE(e,0),this.writeBuffer(t)},n.prototype.writeFloat64=function(e){var t=Buffer.alloc(8);t.writeDoubleBE(e,0),this.writeBuffer(t)},n.prototype.writeString=function(e,t){var n=Buffer.from(e,"utf-8");t(n.length),this.writeBuffer(n)},n.prototype.canWriteBinary=function(e){return e instanceof Buffer},n.prototype.writeBinary=function(e,t){t(e.length),this.writeBuffer(e)},n.prototype.writeBuffer=function(e){if(!(e instanceof Buffer))throw new TypeError("BufferWriter only accepts Buffers");this.latestBufferOffset?this.latestBuffer.length-this.latestBufferOffset>=e.length?(e.copy(this.latestBuffer,this.latestBufferOffset),this.latestBufferOffset+=e.length,this.latestBufferOffset>=this.latestBuffer.length&&(this.completeBuffers.push(this.latestBuffer),this.latestBuffer=Buffer.alloc(this.defaultBufferLength),this.latestBufferOffset=0)):(this.completeBuffers.push(this.latestBuffer.slice(0,this.latestBufferOffset)),this.completeBuffers.push(e),this.latestBuffer=Buffer.alloc(this.defaultBufferLength),this.latestBufferOffset=0):this.completeBuffers.push(e),this.byteLength+=e.length},n.prototype.result=function(){for(var e=Buffer.alloc(this.byteLength),t=0,n=0;n>>>>>"),s.log("[".concat(a," / ").concat(o,"]"),"\n",e,"\n",t,"\n",n),s.log("-----")}(n,r,t.responseText),o(u,e)},t.onerror=function(e){return u.error=!0,u.errorData=e.error,u.category=a._detectErrorCategory(e.error),o(u,null)},t.timeout="android"===Ti.Platform.osname?2147483647:1/0,t.send(i)}},function(e,t,n){"use strict";function i(e){return(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})(e)}function s(t,n,r){null!=r?Array.isArray(r)?r.forEach(function(e){s(t,n,e)}):"object"===i(r)?Object.keys(r).forEach(function(e){s(t,"".concat(n,"[").concat(e,"]"),r[e])}):t.push("".concat(encodeURIComponent(n),"=").concat(encodeURIComponent(r))):null===r&&t.push(encodeURIComponent("".concat(encodeURIComponent(n))))}Object.defineProperty(t,"__esModule",{value:!0}),t.encodedKeyValuePair=s,t.buildUrl=function(e,t){var n=[];return Object.keys(t).forEach(function(e){s(n,e,t[e])}),"".concat(e,"?").concat(n.join("&"))}}]),module.exports=exports.PubNub; \ No newline at end of file diff --git a/dist/web/pubnub.js b/dist/web/pubnub.js index 52b234ef1..03708b509 100644 --- a/dist/web/pubnub.js +++ b/dist/web/pubnub.js @@ -1,4 +1,4 @@ -/*! 4.27.0 / Consumer */ +/*! 4.27.1 / Consumer */ (function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); @@ -480,7 +480,7 @@ var _default = function () { }, { key: "getVersion", value: function getVersion() { - return '4.27.0'; + return '4.27.1'; } }, { key: "_decideUUID", diff --git a/dist/web/pubnub.min.js b/dist/web/pubnub.min.js index 706ded0f3..6f83dbaa0 100644 --- a/dist/web/pubnub.min.js +++ b/dist/web/pubnub.min.js @@ -1 +1 @@ -!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()}(window,function(){return r={},i.m=n=[function(e,t,n){"use strict";e.exports={}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;t.default={PNTimeOperation:"PNTimeOperation",PNHistoryOperation:"PNHistoryOperation",PNDeleteMessagesOperation:"PNDeleteMessagesOperation",PNFetchMessagesOperation:"PNFetchMessagesOperation",PNMessageCounts:"PNMessageCountsOperation",PNSubscribeOperation:"PNSubscribeOperation",PNUnsubscribeOperation:"PNUnsubscribeOperation",PNPublishOperation:"PNPublishOperation",PNSignalOperation:"PNSignalOperation",PNAddMessageActionOperation:"PNAddActionOperation",PNRemoveMessageActionOperation:"PNRemoveMessageActionOperation",PNGetMessageActionsOperation:"PNGetMessageActionsOperation",PNCreateUserOperation:"PNCreateUserOperation",PNUpdateUserOperation:"PNUpdateUserOperation",PNDeleteUserOperation:"PNDeleteUserOperation",PNGetUserOperation:"PNGetUsersOperation",PNGetUsersOperation:"PNGetUsersOperation",PNCreateSpaceOperation:"PNCreateSpaceOperation",PNUpdateSpaceOperation:"PNUpdateSpaceOperation",PNDeleteSpaceOperation:"PNDeleteSpaceOperation",PNGetSpaceOperation:"PNGetSpacesOperation",PNGetSpacesOperation:"PNGetSpacesOperation",PNGetMembersOperation:"PNGetMembersOperation",PNUpdateMembersOperation:"PNUpdateMembersOperation",PNGetMembershipsOperation:"PNGetMembershipsOperation",PNUpdateMembershipsOperation:"PNUpdateMembershipsOperation",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",PNAccessManagerGrantToken:"PNAccessManagerGrantToken",PNAccessManagerAudit:"PNAccessManagerAudit"},e.exports=t.default},function(e,t,n){"use strict";function r(e){return encodeURIComponent(e).replace(/[!~*'()]/g,function(e){return"%".concat(e.charCodeAt(0).toString(16).toUpperCase())})}function i(e){return function(e){var t=[];return Object.keys(e).forEach(function(e){return t.push(e)}),t}(e).sort()}e.exports={signPamFromParams:function(t){return i(t).map(function(e){return"".concat(e,"=").concat(r(t[e]))}).join("&")},endsWith:function(e,t){return-1!==e.indexOf(t,this.length-t.length)},createPromise:function(){var n,r;return{promise:new Promise(function(e,t){n=e,r=t}),reject:r,fulfill:n}},encodeString:r}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r,i=(r=n(5))&&r.__esModule?r:{default:r};n(0);function o(e,t){for(var n=0;n=n())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+n().toString(16)+" bytes");return 0|e}function p(e,t){if(l.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return N(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return j(e).length;default:if(r)return N(e).length;t=(""+t).toLowerCase(),r=!0}}function d(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function g(e,t,n,r,i){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):2147483647=e.length){if(i)return-1;n=e.length-1}else if(n<0){if(!i)return-1;n=0}if("string"==typeof t&&(t=l.from(t,r)),l.isBuffer(t))return 0===t.length?-1:y(e,t,n,r,i);if("number"==typeof t)return t&=255,l.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):y(e,[t],n,r,i);throw new TypeError("val must be string, number or Buffer")}function y(e,t,n,r,i){var o,s=1,a=e.length,u=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;a/=s=2,u/=2,n/=2}function c(e,t){return 1===s?e[t]:e.readUInt16BE(t*s)}if(i){var f=-1;for(o=n;o>>10&1023|55296),f=56320|1023&f),r.push(f),i+=l}return function(e){var t=e.length;if(t<=k)return String.fromCharCode.apply(String,e);var n="",r=0;for(;rthis.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e=e||"utf8";;)switch(e){case"hex":return P(this,t,n);case"utf8":case"utf-8":return _(this,t,n);case"ascii":return T(this,t,n);case"latin1":case"binary":return w(this,t,n);case"base64":return m(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return O(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}.apply(this,arguments)},l.prototype.equals=function(e){if(!l.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===l.compare(this,e)},l.prototype.inspect=function(){var e="",t=I.INSPECT_MAX_BYTES;return 0t&&(e+=" ... ")),""},l.prototype.compare=function(e,t,n,r,i){if(!l.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),t<0||n>e.length||r<0||i>this.length)throw new RangeError("out of range index");if(i<=r&&n<=t)return 0;if(i<=r)return-1;if(n<=t)return 1;if(this===e)return 0;for(var o=(i>>>=0)-(r>>>=0),s=(n>>>=0)-(t>>>=0),a=Math.min(o,s),u=this.slice(r,i),c=e.slice(t,n),f=0;fthis.length)throw new RangeError("Attempt to write outside buffer bounds");r=r||"utf8";for(var o,s,a,u,c,f,l,h,p,d=!1;;)switch(r){case"hex":return v(this,e,t,n);case"utf8":case"utf-8":return h=t,p=n,B(N(e,(l=this).length-h),l,h,p);case"ascii":return b(this,e,t,n);case"latin1":case"binary":return b(this,e,t,n);case"base64":return u=this,c=t,f=n,B(j(e),u,c,f);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return s=t,a=n,B(function(e,t){for(var n,r,i,o=[],s=0;s>8,i=n%256,o.push(i),o.push(r);return o}(e,(o=this).length-s),o,s,a);default:if(d)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),d=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var k=4096;function T(e,t,n){var r="";n=Math.min(e.length,n);for(var i=t;ie.length)throw new RangeError("Index out of range")}function E(e,t,n,r){t<0&&(t=65535+t+1);for(var i=0,o=Math.min(e.length-n,2);i>>8*(r?i:1-i)}function R(e,t,n,r){t<0&&(t=4294967295+t+1);for(var i=0,o=Math.min(e.length-n,4);i>>8*(r?i:3-i)&255}function A(e,t,n,r){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function C(e,t,n,r,i){return i||A(e,0,n,4),o.write(e,t,n,r,23,4),n+4}function U(e,t,n,r,i){return i||A(e,0,n,8),o.write(e,t,n,r,52,8),n+8}l.prototype.slice=function(e,t){var n,r=this.length;if((e=~~e)<0?(e+=r)<0&&(e=0):r>>8):E(this,e,t,!0),t+2},l.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):E(this,e,t,!1),t+2},l.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):R(this,e,t,!0),t+4},l.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):R(this,e,t,!1),t+4},l.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t|=0,!r){var i=Math.pow(2,8*n-1);M(this,e,t,n,i-1,-i)}var o=0,s=1,a=0;for(this[t]=255&e;++o>0)-a&255;return t+n},l.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t|=0,!r){var i=Math.pow(2,8*n-1);M(this,e,t,n,i-1,-i)}var o=n-1,s=1,a=0;for(this[t+o]=255&e;0<=--o&&(s*=256);)e<0&&0===a&&0!==this[t+o+1]&&(a=1),this[t+o]=(e/s>>0)-a&255;return t+n},l.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,1,127,-128),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},l.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):E(this,e,t,!0),t+2},l.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):E(this,e,t,!1),t+2},l.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,4,2147483647,-2147483648),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):R(this,e,t,!0),t+4},l.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):R(this,e,t,!1),t+4},l.prototype.writeFloatLE=function(e,t,n){return C(this,e,t,!0,n)},l.prototype.writeFloatBE=function(e,t,n){return C(this,e,t,!1,n)},l.prototype.writeDoubleLE=function(e,t,n){return U(this,e,t,!0,n)},l.prototype.writeDoubleBE=function(e,t,n){return U(this,e,t,!1,n)},l.prototype.copy=function(e,t,n,r){if(n=n||0,r||0===r||(r=this.length),t>=e.length&&(t=e.length),t=t||0,0=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t>>=0,n=void 0===n?this.length:n>>>0,"number"==typeof(e=e||0))for(o=t;o>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;o.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return o}function j(e){return r.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(t,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function B(e,t,n,r){for(var i=0;i=t.length||i>=e.length);++i)t[i+n]=e[i];return i}}).call(this,K(69))},function(e,t,n){"use strict";e.exports=function(e){return null!==e&&"object"==typeof e}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=u(n(12)),i=u(n(66)),o=u(n(67)),s=u(n(68)),a=n(74);n(0);function u(e){return e&&e.__esModule?e:{default:e}}function c(e){return(c="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})(e)}function f(e,t){return!t||"object"!==c(t)&&"function"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(e):t}function l(e){return(l=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function h(e,t){return(h=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function p(e){if(!navigator||!navigator.sendBeacon)return!1;navigator.sendBeacon(e)}var d=(function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&h(e,t)}(g,r.default),g);function g(e){var t;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,g);var n=e.listenToBrowserNetworkEvents,r=void 0===n||n;return e.db=o.default,e.cbor=new s.default,e.sdkFamily="Web",e.networking=new i.default({del:a.del,get:a.get,post:a.post,patch:a.patch,sendBeacon:p}),t=f(this,l(g).call(this,e)),r&&(window.addEventListener("offline",function(){t.networkDownDetected()}),window.addEventListener("online",function(){t.networkUpDetected()})),t}t.default=d,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var y=a(n(3)),v=a(n(6)),b=a(n(15)),m=a(n(7)),_=a(n(18)),k=a(n(19)),T=s(n(20)),w=s(n(21)),P=s(n(22)),O=s(n(23)),S=s(n(24)),M=s(n(25)),E=s(n(26)),R=s(n(27)),A=s(n(28)),C=s(n(29)),U=s(n(30)),x=s(n(31)),N=s(n(32)),j=s(n(33)),B=s(n(34)),I=s(n(35)),K=s(n(36)),D=s(n(37)),L=s(n(38)),F=s(n(39)),G=s(n(40)),H=s(n(41)),q=s(n(42)),z=s(n(43)),Y=s(n(44)),$=s(n(45)),W=s(n(46)),J=s(n(47)),X=s(n(48)),V=s(n(49)),Q=s(n(50)),Z=s(n(51)),ee=s(n(52)),te=s(n(53)),ne=s(n(54)),re=s(n(55)),ie=s(n(56)),oe=s(n(57)),se=s(n(58)),ae=s(n(59)),ue=s(n(60)),ce=s(n(61)),fe=s(n(62)),le=s(n(63)),he=s(n(64)),pe=s(n(8)),de=s(n(65)),r=a(n(1)),i=a(n(4)),o=(n(0),a(n(5)));function s(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var r=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,n):{};r.get||r.set?Object.defineProperty(t,n,r):t[n]=e[n]}return t.default=e,t}function a(e){return e&&e.__esModule?e:{default:e}}function u(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 e=this.words,t=this.sigBytes;e[t>>>2]&=4294967295<<32-t%4*8,e.length=a.ceil(t/4)},clone:function(){var e=r.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],n=0;n>>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 u.init(n,t/2)}},s=i.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 u.init(n,t)}},c=i.Utf8={stringify:function(e){try{return decodeURIComponent(escape(s.stringify(e)))}catch(e){throw Error("Malformed UTF-8 data")}},parse:function(e){return s.parse(unescape(encodeURIComponent(e)))}},f=t.BufferedBlockAlgorithm=r.extend({reset:function(){this._data=new u.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=c.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(e){var t=this._data,n=t.words,r=t.sigBytes,i=this.blockSize,o=r/(4*i);if(e=(o=e?a.ceil(o):a.max((0|o)-this._minBufferSize,0))*i,r=a.min(4*e,r),e){for(var s=0;s>>7)^(h<<14|h>>>18)^h>>>3)+g[l-7]+((p<<15|p>>>17)^(p<<13|p>>>19)^p>>>10)+g[l-16]}h=f+((a<<26|a>>>6)^(a<<21|a>>>11)^(a<<7|a>>>25))+(a&u^~a&c)+d[l]+g[l],p=((r<<30|r>>>2)^(r<<19|r>>>13)^(r<<10|r>>>22))+(r&i^r&o^i&o),f=c,c=u,u=a,a=s+h|0,s=o,o=i,i=r,r=h+p|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]+a|0,n[5]=n[5]+u|0,n[6]=n[6]+c|0,n[7]=n[7]+f|0},_doFinalize:function(){var e=this._data,t=e.words,n=8*this._nDataBytes,r=8*e.sigBytes;return t[r>>>5]|=128<<24-r%32,t[14+(64+r>>>9<<4)]=i.floor(n/4294967296),t[15+(64+r>>>9<<4)]=n,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}});e.SHA256=n._createHelper(r),e.HmacSHA256=n._createHmacHelper(r)}(Math),c=(r=E).enc.Utf8,r.algo.HMAC=r.lib.Base.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=c.parse(t));var n=e.blockSize,r=4*n;t.sigBytes>r&&(t=e.finalize(t)),t.clamp();for(var i=this._oKey=t.clone(),o=this._iKey=t.clone(),s=i.words,a=o.words,u=0;u>>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;s<4&&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 t=e.length,n=this._map;!(r=n.charAt(64))||-1!=(r=e.indexOf(r))&&(t=r);for(var r=[],i=0,o=0;o>>6-o%4*2;r[i>>>2]|=(s|a)<<24-i%4*8,i++}return u.create(r,i)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="},function(o){function w(e,t,n,r,i,o,s){return((e=e+(t&n|~t&r)+i+s)<>>32-o)+t}function P(e,t,n,r,i,o,s){return((e=e+(t&r|n&~r)+i+s)<>>32-o)+t}function O(e,t,n,r,i,o,s){return((e=e+(t^n^r)+i+s)<>>32-o)+t}function S(e,t,n,r,i,o,s){return((e=e+(n^(t|~r))+i+s)<>>32-o)+t}for(var e=E,t=(r=e.lib).WordArray,n=r.Hasher,r=e.algo,M=[],i=0;i<64;i++)M[i]=4294967296*o.abs(o.sin(i+1))|0;r=r.MD5=n.extend({_doReset:function(){this._hash=new t.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(e,t){for(var n=0;n<16;n++){var r=e[s=t+n];e[s]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8)}n=this._hash.words;var i,o,s=e[t+0],a=(r=e[t+1],e[t+2]),u=e[t+3],c=e[t+4],f=e[t+5],l=e[t+6],h=e[t+7],p=e[t+8],d=e[t+9],g=e[t+10],y=e[t+11],v=e[t+12],b=e[t+13],m=e[t+14],_=e[t+15],k=n[0],T=S(T=S(T=S(T=S(T=O(T=O(T=O(T=O(T=P(T=P(T=P(T=P(T=w(T=w(T=w(T=w(T=n[1],o=w(o=n[2],i=w(i=n[3],k=w(k,T,o,i,s,7,M[0]),T,o,r,12,M[1]),k,T,a,17,M[2]),i,k,u,22,M[3]),o=w(o,i=w(i,k=w(k,T,o,i,c,7,M[4]),T,o,f,12,M[5]),k,T,l,17,M[6]),i,k,h,22,M[7]),o=w(o,i=w(i,k=w(k,T,o,i,p,7,M[8]),T,o,d,12,M[9]),k,T,g,17,M[10]),i,k,y,22,M[11]),o=w(o,i=w(i,k=w(k,T,o,i,v,7,M[12]),T,o,b,12,M[13]),k,T,m,17,M[14]),i,k,_,22,M[15]),o=P(o,i=P(i,k=P(k,T,o,i,r,5,M[16]),T,o,l,9,M[17]),k,T,y,14,M[18]),i,k,s,20,M[19]),o=P(o,i=P(i,k=P(k,T,o,i,f,5,M[20]),T,o,g,9,M[21]),k,T,_,14,M[22]),i,k,c,20,M[23]),o=P(o,i=P(i,k=P(k,T,o,i,d,5,M[24]),T,o,m,9,M[25]),k,T,u,14,M[26]),i,k,p,20,M[27]),o=P(o,i=P(i,k=P(k,T,o,i,b,5,M[28]),T,o,a,9,M[29]),k,T,h,14,M[30]),i,k,v,20,M[31]),o=O(o,i=O(i,k=O(k,T,o,i,f,4,M[32]),T,o,p,11,M[33]),k,T,y,16,M[34]),i,k,m,23,M[35]),o=O(o,i=O(i,k=O(k,T,o,i,r,4,M[36]),T,o,c,11,M[37]),k,T,h,16,M[38]),i,k,g,23,M[39]),o=O(o,i=O(i,k=O(k,T,o,i,b,4,M[40]),T,o,s,11,M[41]),k,T,u,16,M[42]),i,k,l,23,M[43]),o=O(o,i=O(i,k=O(k,T,o,i,d,4,M[44]),T,o,v,11,M[45]),k,T,_,16,M[46]),i,k,a,23,M[47]),o=S(o,i=S(i,k=S(k,T,o,i,s,6,M[48]),T,o,h,10,M[49]),k,T,m,15,M[50]),i,k,f,21,M[51]),o=S(o,i=S(i,k=S(k,T,o,i,v,6,M[52]),T,o,u,10,M[53]),k,T,g,15,M[54]),i,k,r,21,M[55]),o=S(o,i=S(i,k=S(k,T,o,i,p,6,M[56]),T,o,_,10,M[57]),k,T,l,15,M[58]),i,k,b,21,M[59]),o=S(o,i=S(i,k=S(k,T,o,i,c,6,M[60]),T,o,y,10,M[61]),k,T,a,15,M[62]),i,k,d,21,M[63]);n[0]=n[0]+k|0,n[1]=n[1]+T|0,n[2]=n[2]+o|0,n[3]=n[3]+i|0},_doFinalize:function(){var e=this._data,t=e.words,n=8*this._nDataBytes,r=8*e.sigBytes;t[r>>>5]|=128<<24-r%32;var i=o.floor(n/4294967296);for(t[15+(r+64>>>9<<4)]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8),t[14+(r+64>>>9<<4)]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),e.sigBytes=4*(t.length+1),this._process(),t=(e=this._hash).words,n=0;n<4;n++)r=t[n],t[n]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8);return e},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}}),e.MD5=n._createHelper(r),e.HmacMD5=n._createHmacHelper(r)}(Math),a=(o=(s=E).lib).Base,f=o.WordArray,l=(o=s.algo).EvpKDF=a.extend({cfg:a.extend({keySize:4,hasher:o.MD5,iterations:1}),init:function(e){this.cfg=this.cfg.extend(e)},compute:function(e,t){for(var n=(s=this.cfg).hasher.create(),r=f.create(),i=r.words,o=s.keySize,s=s.iterations;i.length>>2]}},e.BlockCipher=o.extend({cfg:o.cfg.extend({mode:u,padding:c}),reset:function(){o.reset.call(this);var e=(t=this.cfg).iv,t=t.mode;if(this._xformMode==this._ENC_XFORM_MODE)var n=t.createEncryptor;else n=t.createDecryptor,this._minBufferSize=1;this._mode=n.call(t,this,e&&e.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 f=e.CipherParams=t.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),l=(u=(h.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext;return((e=e.salt)?s.create([1398893684,1701076831]).concat(e).concat(t):t).toString(r)},parse:function(e){var t=(e=r.parse(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 f.create({ciphertext:e,salt:n})}},e.SerializableCipher=t.extend({cfg:t.extend({format:u}),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,f.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}})),h=(h.kdf={}).OpenSSL={execute:function(e,t,n,r){return r=r||s.random(8),e=i.create({keySize:t+n}).compute(e,r),n=s.create(e.words.slice(t),4*n),e.sigBytes=4*t,f.create({key:e,iv:n,salt:r})}},p=e.PasswordBasedCipher=l.extend({cfg:l.cfg.extend({kdf:h}),encrypt:function(e,t,n,r){return n=(r=this.cfg.extend(r)).kdf.execute(n,e.keySize,e.ivSize),r.iv=n.iv,(e=l.encrypt.call(this,e,t,n.key,r)).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,l.decrypt.call(this,e,t,n.key,r)}})}(),function(){for(var e=E,t=e.lib.BlockCipher,n=e.algo,s=[],r=[],i=[],o=[],a=[],u=[],c=[],f=[],l=[],h=[],p=[],d=0;d<256;d++)p[d]=d<128?d<<1:d<<1^283;var g=0,y=0;for(d=0;d<256;d++){var v=(v=y^y<<1^y<<2^y<<3^y<<4)>>>8^255&v^99;s[g]=v;var b=p[r[v]=g],m=p[b],_=p[m],k=257*p[v]^16843008*v;i[g]=k<<24|k>>>8,o[g]=k<<16|k>>>16,a[g]=k<<8|k>>>24,u[g]=k,k=16843009*_^65537*m^257*b^16843008*g,c[v]=k<<24|k>>>8,f[v]=k<<16|k>>>16,l[v]=k<<8|k>>>24,h[v]=k,g?(g=b^p[p[p[_^b]]],y^=p[p[y]]):g=y=1}var T=[0,1,2,4,8,16,32,64,128,27,54];n=n.AES=t.extend({_doReset:function(){for(var e=(n=this._key).words,t=n.sigBytes/4,n=4*((this._nRounds=t+6)+1),r=this._keySchedule=[],i=0;i>>24]<<24|s[o>>>16&255]<<16|s[o>>>8&255]<<8|s[255&o]):(o=s[(o=o<<8|o>>>24)>>>24]<<24|s[o>>>16&255]<<16|s[o>>>8&255]<<8|s[255&o],o^=T[i/t|0]<<24),r[i]=r[i-t]^o}for(e=this._invKeySchedule=[],t=0;t>>24]]^f[s[o>>>16&255]]^l[s[o>>>8&255]]^h[s[255&o]]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,i,o,a,u,s)},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,c,f,l,h,r),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],f=e[t+1]^n[1],l=e[t+2]^n[2],h=e[t+3]^n[3],p=4,d=1;d>>24]^i[f>>>16&255]^o[l>>>8&255]^s[255&h]^n[p++],y=r[f>>>24]^i[l>>>16&255]^o[h>>>8&255]^s[255&c]^n[p++],v=r[l>>>24]^i[h>>>16&255]^o[c>>>8&255]^s[255&f]^n[p++];h=r[h>>>24]^i[c>>>16&255]^o[f>>>8&255]^s[255&l]^n[p++],c=g,f=y,l=v}g=(a[c>>>24]<<24|a[f>>>16&255]<<16|a[l>>>8&255]<<8|a[255&h])^n[p++],y=(a[f>>>24]<<24|a[l>>>16&255]<<16|a[h>>>8&255]<<8|a[255&c])^n[p++],v=(a[l>>>24]<<24|a[h>>>16&255]<<16|a[c>>>8&255]<<8|a[255&f])^n[p++],h=(a[h>>>24]<<24|a[c>>>16&255]<<16|a[f>>>8&255]<<8|a[255&l])^n[p++],e[t]=g,e[t+1]=y,e[t+2]=v,e[t+3]=h},keySize:8});e.AES=t._createHelper(n)}(),E.mode.ECB=((h=E.lib.BlockCipherMode.extend()).Encryptor=h.extend({processBlock:function(e,t){this._cipher.encryptBlock(e,t)}}),h.Decryptor=h.extend({processBlock:function(e,t){this._cipher.decryptBlock(e,t)}}),h),e.exports=E},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;r(n(6)),r(n(3)),r(n(7));var c=r(n(16)),f=r(n(17)),l=r(n(2)),a=(n(0),r(n(4)));function r(e){return e&&e.__esModule?e:{default:e}}function i(e,t){for(var n=0;n=o){var s={};s.category=a.default.PNRequestMessageCountExceededCategory,s.operation=t.operation,this._listenerManager.announceStatus(s)}r.forEach(function(e){var t=e.channel,n=e.subscriptionMatch,r=e.publishMetaData;if(t===n&&(n=null),f){if(c._dedupingManager.isDuplicate(e))return;c._dedupingManager.addEntry(e)}if(l.default.endsWith(e.channel,"-pnpres")){var i={channel:null,subscription:null};i.actualChannel=null!=n?t:null,i.subscribedChannel=null!=n?n:t,t&&(i.channel=t.substring(0,t.lastIndexOf("-pnpres"))),n&&(i.subscription=n.substring(0,n.lastIndexOf("-pnpres"))),i.action=e.payload.action,i.state=e.payload.data,i.timetoken=r.publishTimetoken,i.occupancy=e.payload.occupancy,i.uuid=e.payload.uuid,i.timestamp=e.payload.timestamp,e.payload.join&&(i.join=e.payload.join),e.payload.leave&&(i.leave=e.payload.leave),e.payload.timeout&&(i.timeout=e.payload.timeout),c._listenerManager.announcePresence(i)}else if(1===e.messageType){var o={channel:null,subscription:null};o.channel=t,o.subscription=n,o.timetoken=r.publishTimetoken,o.publisher=e.issuingClientId,e.userMetadata&&(o.userMetadata=e.userMetadata),o.message=e.payload,c._listenerManager.announceSignal(o)}else if(2===e.messageType){var s={channel:null,subscription:null};s.channel=t,s.subscription=n,s.timetoken=r.publishTimetoken,s.publisher=e.issuingClientId,e.userMetadata&&(s.userMetadata=e.userMetadata),s.message={event:e.payload.event,type:e.payload.type,data:e.payload.data},"user"===e.payload.type?c._listenerManager.announceUser(s):"space"===e.payload.type?c._listenerManager.announceSpace(s):"membership"===e.payload.type&&c._listenerManager.announceMembership(s)}else if(3===e.messageType){var a={};a.channel=t,a.subscription=n,a.timetoken=r.publishTimetoken,a.publisher=e.issuingClientId,a.data={messageTimetoken:e.payload.data.messageTimetoken,actionTimetoken:e.payload.data.actionTimetoken,type:e.payload.data.type,uuid:e.issuingClientId,value:e.payload.data.value},a.event=e.payload.event,c._listenerManager.announceMessageAction(a)}else{var u={channel:null,subscription:null};u.actualChannel=null!=n?t:null,u.subscribedChannel=null!=n?n:t,u.channel=t,u.subscription=n,u.timetoken=r.publishTimetoken,u.publisher=e.issuingClientId,e.userMetadata&&(u.userMetadata=e.userMetadata),c._config.cipherKey?u.message=c._crypto.decrypt(e.payload):u.message=e.payload,c._listenerManager.announceMessage(u)}}),this._region=e.metadata.region,this._startSubscribeLoop()}}},{key:"_stopSubscribeLoop",value:function(){this._subscribeCall&&("function"==typeof this._subscribeCall.abort&&this._subscribeCall.abort(),this._subscribeCall=null)}}])&&i(o.prototype,s),void(u&&i(o,u)),d);function d(e){var t=e.subscribeEndpoint,n=e.leaveEndpoint,r=e.heartbeatEndpoint,i=e.setStateEndpoint,o=e.timeEndpoint,s=e.config,a=e.crypto,u=e.listenerManager;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,d),h(this,"_crypto",void 0),h(this,"_config",void 0),h(this,"_listenerManager",void 0),h(this,"_reconnectionManager",void 0),h(this,"_leaveEndpoint",void 0),h(this,"_heartbeatEndpoint",void 0),h(this,"_setStateEndpoint",void 0),h(this,"_subscribeEndpoint",void 0),h(this,"_channels",void 0),h(this,"_presenceChannels",void 0),h(this,"_heartbeatChannels",void 0),h(this,"_heartbeatChannelGroups",void 0),h(this,"_channelGroups",void 0),h(this,"_presenceChannelGroups",void 0),h(this,"_currentTimetoken",void 0),h(this,"_lastTimetoken",void 0),h(this,"_storedTimetoken",void 0),h(this,"_region",void 0),h(this,"_subscribeCall",void 0),h(this,"_heartbeatTimer",void 0),h(this,"_subscriptionStatusAnnounced",void 0),h(this,"_autoNetworkDetection",void 0),h(this,"_isOnline",void 0),h(this,"_pendingChannelSubscriptions",void 0),h(this,"_pendingChannelGroupSubscriptions",void 0),h(this,"_dedupingManager",void 0),this._listenerManager=u,this._config=s,this._leaveEndpoint=n,this._heartbeatEndpoint=r,this._setStateEndpoint=i,this._subscribeEndpoint=t,this._crypto=a,this._channels={},this._presenceChannels={},this._heartbeatChannels={},this._heartbeatChannelGroups={},this._channelGroups={},this._presenceChannelGroups={},this._pendingChannelSubscriptions=[],this._pendingChannelGroupSubscriptions=[],this._currentTimetoken=0,this._lastTimetoken=0,this._storedTimetoken=null,this._subscriptionStatusAnnounced=!1,this._isOnline=!0,this._reconnectionManager=new c.default({timeEndpoint:o}),this._dedupingManager=new f.default({config:s})}t.default=p,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r;(r=n(8))&&r.__esModule,n(0);function i(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=[]}}])&&i(s.prototype,a),void(u&&i(s,u)),f);function f(e){var t=e.config;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,f),o(this,"_config",void 0),o(this,"hashHistory",void 0),this.hashHistory=[],this._config=t}t.default=c,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r;(r=n(3))&&r.__esModule,n(0);function i(e){return(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})(e)}function o(e,t){for(var n=0;n=this._maxSubDomain&&(this._currentSubDomain=1),e=this._currentSubDomain.toString(),this._providedFQDN.replace("ps.pndsn.com","ps".concat(e,".pndsn.com"))):this._providedFQDN;var e}},{key:"hasModule",value:function(e){return e in this._modules}},{key:"shiftStandardOrigin",value:function(){return this._standardOrigin=this.nextOrigin(),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:"PATCH",value:function(e,t,n,r){return this._modules.patch(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 r.default.PNNetworkIssuesCategory;if("ECONNREFUSED"===e.code)return r.default.PNNetworkIssuesCategory;if("ECONNRESET"===e.code)return r.default.PNNetworkIssuesCategory;if("EAI_AGAIN"===e.code)return r.default.PNNetworkIssuesCategory;if(0===e.status||e.hasOwnProperty("status")&&void 0===e.status)return r.default.PNNetworkIssuesCategory;if(e.timeout)return r.default.PNTimeoutCategory;if("ETIMEDOUT"===e.code)return r.default.PNNetworkIssuesCategory;if(e.response){if(e.response.badRequest)return r.default.PNBadRequestCategory;if(e.response.forbidden)return r.default.PNAccessDeniedCategory}return r.default.PNUnknownCategory}}])&&o(a.prototype,u),void(c&&o(a,c)),l);function l(t){var n=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,l),s(this,"_modules",void 0),s(this,"_config",void 0),s(this,"_maxSubDomain",void 0),s(this,"_currentSubDomain",void 0),s(this,"_standardOrigin",void 0),s(this,"_subscribeOrigin",void 0),s(this,"_providedFQDN",void 0),s(this,"_requestTimeout",void 0),s(this,"_coreParams",void 0),this._modules={},Object.keys(t).forEach(function(e){n._modules[e]=t[e].bind(n)})}t.default=f,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r={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}}};t.default=r,e.exports=t.default},function(f,l,h){"use strict";(function(i){Object.defineProperty(l,"__esModule",{value:!0}),l.default=void 0;var e,o=(e=h(73))&&e.__esModule?e:{default:e};function s(e){return(s="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})(e)}function t(e,t){for(var n=0;n>16&255,s[a++]=t>>8&255,s[a++]=255&t;2===o&&(t=c[e.charCodeAt(n)]<<2|c[e.charCodeAt(n+1)]>>4,s[a++]=255&t);1===o&&(t=c[e.charCodeAt(n)]<<10|c[e.charCodeAt(n+1)]<<4|c[e.charCodeAt(n+2)]>>2,s[a++]=t>>8&255,s[a++]=255&t);return s},t.fromByteArray=function(e){for(var t,n=e.length,r=n%3,i=[],o=0,s=n-r;o>2]+a[t<<4&63]+"==")):2==r&&(t=(e[n-2]<<8)+e[n-1],i.push(a[t>>10]+a[t>>4&63]+a[t<<2&63]+"="));return i.join("")};for(var a=[],c=[],f="undefined"!=typeof Uint8Array?Uint8Array:Array,r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i=0,o=r.length;i>18&63]+a[i>>12&63]+a[i>>6&63]+a[63&i]);return o.join("")}c["-".charCodeAt(0)]=62,c["_".charCodeAt(0)]=63},function(e,t){t.read=function(e,t,n,r,i){var o,s,a=8*i-r-1,u=(1<>1,f=-7,l=n?i-1:0,h=n?-1:1,p=e[t+l];for(l+=h,o=p&(1<<-f)-1,p>>=-f,f+=a;0>=-f,f+=r;0>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=r?0:o-1,d=r?1:-1,g=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,s=f):(s=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-s))<1&&(s--,u*=2),2<=(t+=1<=s+l?h/u:h*Math.pow(2,1-l))*u&&(s++,u/=2),f<=s+l?(a=0,s=f):1<=s+l?(a=(t*u-1)*Math.pow(2,i),s+=l):(a=t*Math.pow(2,l-1)*Math.pow(2,i),s=0));8<=i;e[n+p]=255&a,p+=d,a/=256,i-=8);for(s=s<>10,n=1023&e,r=32768&e;if(31==t)return 0==n?r?-1/0:1/0:NaN;var i=t?Math.pow(2,t-25)*(1024+n):Math.pow(2,-24)*n;return r?-i:i},readFloat32:function(){var e=this.readUint32(),t=(2147483647&e)>>23,n=8388607&e,r=2147483648&e;if(255==t)return 0==n?r?-1/0:1/0:NaN;var i=t?Math.pow(2,t-23-127)*(8388608+n):Math.pow(2,-149)*n;return r?-i:i},readFloat64:function(){var e=this.readUint32(),t=this.readUint32(),n=e>>20&2047,r=4294967296*(1048575&e)+t,i=2147483648&e;if(2047==n)return 0===r?i?-1/0:1/0:NaN;var o=n?Math.pow(2,n-52-1023)*(4503599627370496+r):Math.pow(2,-1074)*r;return i?-o:o},readUint16:function(){return 256*this.readByte()+this.readByte()},readUint32:function(){return 65536*this.readUint16()+this.readUint16()},readUint64:function(){return 4294967296*this.readUint32()+this.readUint32()}},t.prototype={writeByte:r("writeByte"),result:r("result"),writeFloat16:r("writeFloat16"),writeFloat32:r("writeFloat32"),writeFloat64:r("writeFloat64"),writeUint16:function(e){this.writeByte(e>>8&255),this.writeByte(255&e)},writeUint32:function(e){this.writeUint16(e>>16&65535),this.writeUint16(65535&e)},writeUint64:function(e){if(9007199254740992<=e||e<=-9007199254740992)throw new Error("Cannot encode Uint64 of: "+e+" magnitude to big (floating point errors)");this.writeUint32(Math.floor(e/4294967296)),this.writeUint32(e%4294967296)},writeString:r("writeString"),canWriteBinary:function(e){return!1},writeBinary:r("writeChunk")};var h=new Error;function p(e){var t=function(e){var t=e.readByte();return{type:t>>5,value:31&t}}(e);switch(t.type){case 0:return l(t,e);case 1:return-1-l(t,e);case 2:return e.readChunk(l(t,e));case 3:var n=e.readChunk(l(t,e));return n.toString("utf-8");case 4:case 5:var r=l(t,e),i=[];if(null!==r){5===t.type&&(r*=2);for(var o=0;o=this.latestBuffer.length&&(this.completeBuffers.push(this.latestBuffer),this.latestBuffer=b.alloc(this.defaultBufferLength),this.latestBufferOffset=0),this.byteLength++},n.prototype.writeFloat32=function(e){var t=b.alloc(4);t.writeFloatBE(e,0),this.writeBuffer(t)},n.prototype.writeFloat64=function(e){var t=b.alloc(8);t.writeDoubleBE(e,0),this.writeBuffer(t)},n.prototype.writeString=function(e,t){var n=b.from(e,"utf-8");t(n.length),this.writeBuffer(n)},n.prototype.canWriteBinary=function(e){return e instanceof b},n.prototype.writeBinary=function(e,t){t(e.length),this.writeBuffer(e)},n.prototype.writeBuffer=function(e){if(!(e instanceof b))throw new TypeError("BufferWriter only accepts Buffers");this.latestBufferOffset?this.latestBuffer.length-this.latestBufferOffset>=e.length?(e.copy(this.latestBuffer,this.latestBufferOffset),this.latestBufferOffset+=e.length,this.latestBufferOffset>=this.latestBuffer.length&&(this.completeBuffers.push(this.latestBuffer),this.latestBuffer=b.alloc(this.defaultBufferLength),this.latestBufferOffset=0)):(this.completeBuffers.push(this.latestBuffer.slice(0,this.latestBufferOffset)),this.completeBuffers.push(e),this.latestBuffer=b.alloc(this.defaultBufferLength),this.latestBufferOffset=0):this.completeBuffers.push(e),this.byteLength+=e.length},n.prototype.result=function(){for(var e=b.alloc(this.byteLength),t=0,n=0;n>>>>>"),o.log("[".concat(n," / ").concat(t,"]"),"\n",r.url,"\n",r.qs,"\n",e.text),o.log("-----")})}function s(e,i,o){var s=this;return this._config.logVerbosity&&(e=e.use(a)),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(i.timeout).end(function(t,n){var e,r={};if(r.error=null!==t,r.operation=i.operation,n&&n.status&&(r.statusCode=n.status),t){if(t.response&&t.response.text&&!s._config.logVerbosity)try{r.errorData=JSON.parse(t.response.text)}catch(e){r.errorData=t}else r.errorData=t;return r.category=s._detectErrorCategory(t),o(r,null)}try{e=JSON.parse(n.text)}catch(e){return r.errorData=n,r.error=!0,o(r,null)}return e.error&&1===e.error&&e.status&&e.message&&e.service?(r.errorData=e,r.statusCode=e.status,r.error=!0,r.category=s._detectErrorCategory(r),o(r,null)):(e.error&&e.error.message&&(r.errorData=e.error),o(r,e))})}},function(e,n,t){var r;r="undefined"!=typeof window?window:"undefined"!=typeof self?self:(console.warn("Using browser-only version of superagent in non-browser environment"),this);var i=t(76),o=t(77),s=t(10),a=t(78),u=t(80);function c(){}var f=n=e.exports=function(e,t){return"function"==typeof t?new n.Request("GET",e).end(t):1==arguments.length?new n.Request("GET",e):new n.Request(e,t)};n.Request=v,f.getXHR=function(){if(!(!r.XMLHttpRequest||r.location&&"file:"==r.location.protocol&&r.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 version of superagent could not find XHR")};var l="".trim?function(e){return e.trim()}:function(e){return e.replace(/(^\s*|\s*$)/g,"")};function h(e){if(!s(e))return e;var t=[];for(var n in e)p(t,n,e[n]);return t.join("&")}function p(t,n,e){if(null!=e)if(Array.isArray(e))e.forEach(function(e){p(t,n,e)});else if(s(e))for(var r in e)p(t,n+"["+r+"]",e[r]);else t.push(encodeURIComponent(n)+"="+encodeURIComponent(e));else null===e&&t.push(encodeURIComponent(n))}function d(e){for(var t,n,r={},i=e.split("&"),o=0,s=i.length;o=this._maxRetries)return!1;if(this._retryCallback)try{var n=this._retryCallback(e,t);if(!0===n)return!0;if(!1===n)return!1}catch(e){console.error(e)}if(t&&t.status&&500<=t.status&&501!=t.status)return!0;if(e){if(e.code&&~o.indexOf(e.code))return!0;if(e.timeout&&"ECONNABORTED"==e.code)return!0;if(e.crossDomain)return!0}return!1},r.prototype._retry=function(){return this.clearTimeout(),this.req&&(this.req=null,this.req=this.request()),this._aborted=!1,this.timedout=!1,this._end()},r.prototype.then=function(e,t){if(!this._fullfilledPromise){var i=this;this._endCalled&&console.warn("Warning: superagent request was sent twice, because both .end() and .then() were called. Never call .end() if you use promises"),this._fullfilledPromise=new Promise(function(n,r){i.end(function(e,t){e?r(e):n(t)})})}return this._fullfilledPromise.then(e,t)},r.prototype.catch=function(e){return this.then(void 0,e)},r.prototype.use=function(e){return e(this),this},r.prototype.ok=function(e){if("function"!=typeof e)throw Error("Callback required");return this._okCallback=e,this},r.prototype._isResponseOK=function(e){return!!e&&(this._okCallback?this._okCallback(e):200<=e.status&&e.status<300)},r.prototype.getHeader=r.prototype.get=function(e){return this._header[e.toLowerCase()]},r.prototype.set=function(e,t){if(i(e)){for(var n in e)this.set(n,e[n]);return this}return this._header[e.toLowerCase()]=t,this.header[e]=t,this},r.prototype.unset=function(e){return delete this._header[e.toLowerCase()],delete this.header[e],this},r.prototype.field=function(e,t){if(null==e)throw new Error(".field(name, val) name can not be empty");if(this._data&&console.error(".field() can't be used if .send() is used. Please use only .send() or only .field() & .attach()"),i(e)){for(var n in e)this.field(n,e[n]);return this}if(Array.isArray(t)){for(var r in t)this.field(e,t[r]);return this}if(null==t)throw new Error(".field(name, val) val can not be empty");return"boolean"==typeof t&&(t=""+t),this._getFormData().append(e,t),this},r.prototype.abort=function(){return this._aborted||(this._aborted=!0,this.xhr&&this.xhr.abort(),this.req&&this.req.abort(),this.clearTimeout(),this.emit("abort")),this},r.prototype._auth=function(e,t,n,r){switch(n.type){case"basic":this.set("Authorization","Basic "+r(e+":"+t));break;case"auto":this.username=e,this.password=t;break;case"bearer":this.set("Authorization","Bearer "+e)}return this},r.prototype.withCredentials=function(e){return null==e&&(e=!0),this._withCredentials=e,this},r.prototype.redirects=function(e){return this._maxRedirects=e,this},r.prototype.maxResponseSize=function(e){if("number"!=typeof e)throw TypeError("Invalid argument");return this._maxResponseSize=e,this},r.prototype.toJSON=function(){return{method:this.method,url:this.url,data:this._data,headers:this._header}},r.prototype.send=function(e){var t=i(e),n=this._header["content-type"];if(this._formData&&console.error(".send() can't be used if .attach() or .field() is used. Please use only .send() or only .field() & .attach()"),t&&!this._data)Array.isArray(e)?this._data=[]:this._isHost(e)||(this._data={});else if(e&&this._data&&this._isHost(this._data))throw Error("Can't merge these send calls");if(t&&i(this._data))for(var r in e)this._data[r]=e[r];else"string"==typeof e?(n||this.type("form"),n=this._header["content-type"],this._data="application/x-www-form-urlencoded"==n?this._data?this._data+"&"+e:e:(this._data||"")+e):this._data=e;return!t||this._isHost(e)||n||this.type("json"),this},r.prototype.sortQuery=function(e){return this._sort=void 0===e||e,this},r.prototype._finalizeQueryString=function(){var e=this._query.join("&");if(e&&(this.url+=(0<=this.url.indexOf("?")?"&":"?")+e),this._query.length=0,this._sort){var t=this.url.indexOf("?");if(0<=t){var n=this.url.substring(t+1).split("&");"function"==typeof this._sort?n.sort(this._sort):n.sort(),this.url=this.url.substring(0,t)+"?"+n.join("&")}}},r.prototype._appendQueryString=function(){console.trace("Unsupported")},r.prototype._timeoutError=function(e,t,n){if(!this._aborted){var r=new Error(e+t+"ms exceeded");r.timeout=t,r.code="ECONNABORTED",r.errno=n,this.timedout=!0,this.abort(),this.callback(r)}},r.prototype._setTimeouts=function(){var e=this;this._timeout&&!this._timer&&(this._timer=setTimeout(function(){e._timeoutError("Timeout of ",e._timeout,"ETIME")},this._timeout)),this._responseTimeout&&!this._responseTimeoutTimer&&(this._responseTimeoutTimer=setTimeout(function(){e._timeoutError("Response timeout of ",e._responseTimeout,"ETIMEDOUT")},this._responseTimeout))}},function(e,t,n){"use strict";var i=n(79);function r(e){if(e)return function(e){for(var t in r.prototype)e[t]=r.prototype[t];return e}(e)}(e.exports=r).prototype.get=function(e){return this.header[e.toLowerCase()]},r.prototype._setHeaderProperties=function(e){var t=e["content-type"]||"";this.type=i.type(t);var n=i.params(t);for(var r in n)this[r]=n[r];this.links={};try{e.link&&(this.links=i.parseLinks(e.link))}catch(e){}},r.prototype._setStatusProperties=function(e){var t=e/100|0;this.status=this.statusCode=e,this.statusType=t,this.info=1==t,this.ok=2==t,this.redirect=3==t,this.clientError=4==t,this.serverError=5==t,this.error=(4==t||5==t)&&this.toError(),this.created=201==e,this.accepted=202==e,this.noContent=204==e,this.badRequest=400==e,this.unauthorized=401==e,this.notAcceptable=406==e,this.forbidden=403==e,this.notFound=404==e,this.unprocessableEntity=422==e}},function(e,t,n){"use strict";t.type=function(e){return e.split(/ *; */).shift()},t.params=function(e){return e.split(/ *; */).reduce(function(e,t){var n=t.split(/ *= */),r=n.shift(),i=n.shift();return r&&i&&(e[r]=i),e},{})},t.parseLinks=function(e){return e.split(/ *, */).reduce(function(e,t){var n=t.split(/ *; */),r=n[0].slice(1,-1);return e[n[1].split(/ *= */)[1].slice(1,-1)]=r,e},{})},t.cleanHeader=function(e,t){return delete e["content-type"],delete e["content-length"],delete e["transfer-encoding"],delete e.host,t&&(delete e.authorization,delete e.cookie),e}},function(e,t){function n(){this._defaults=[]}["use","on","once","set","query","type","accept","auth","withCredentials","sortQuery","retry","ok","redirects","timeout","buffer","serialize","parse","ca","key","pfx","cert"].forEach(function(e){n.prototype[e]=function(){return this._defaults.push({fn:e,arguments:arguments}),this}}),n.prototype._setDefaults=function(t){this._defaults.forEach(function(e){t[e.fn].apply(t,e.arguments)})},e.exports=n}],i.c=r,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)i.d(n,r,function(e){return t[e]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="",i(i.s=11);function i(e){if(r[e])return r[e].exports;var t=r[e]={i:e,l:!1,exports:{}};return n[e].call(t.exports,t,t.exports,i),t.l=!0,t.exports}var n,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()}(window,function(){return r={},i.m=n=[function(e,t,n){"use strict";e.exports={}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;t.default={PNTimeOperation:"PNTimeOperation",PNHistoryOperation:"PNHistoryOperation",PNDeleteMessagesOperation:"PNDeleteMessagesOperation",PNFetchMessagesOperation:"PNFetchMessagesOperation",PNMessageCounts:"PNMessageCountsOperation",PNSubscribeOperation:"PNSubscribeOperation",PNUnsubscribeOperation:"PNUnsubscribeOperation",PNPublishOperation:"PNPublishOperation",PNSignalOperation:"PNSignalOperation",PNAddMessageActionOperation:"PNAddActionOperation",PNRemoveMessageActionOperation:"PNRemoveMessageActionOperation",PNGetMessageActionsOperation:"PNGetMessageActionsOperation",PNCreateUserOperation:"PNCreateUserOperation",PNUpdateUserOperation:"PNUpdateUserOperation",PNDeleteUserOperation:"PNDeleteUserOperation",PNGetUserOperation:"PNGetUsersOperation",PNGetUsersOperation:"PNGetUsersOperation",PNCreateSpaceOperation:"PNCreateSpaceOperation",PNUpdateSpaceOperation:"PNUpdateSpaceOperation",PNDeleteSpaceOperation:"PNDeleteSpaceOperation",PNGetSpaceOperation:"PNGetSpacesOperation",PNGetSpacesOperation:"PNGetSpacesOperation",PNGetMembersOperation:"PNGetMembersOperation",PNUpdateMembersOperation:"PNUpdateMembersOperation",PNGetMembershipsOperation:"PNGetMembershipsOperation",PNUpdateMembershipsOperation:"PNUpdateMembershipsOperation",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",PNAccessManagerGrantToken:"PNAccessManagerGrantToken",PNAccessManagerAudit:"PNAccessManagerAudit"},e.exports=t.default},function(e,t,n){"use strict";function r(e){return encodeURIComponent(e).replace(/[!~*'()]/g,function(e){return"%".concat(e.charCodeAt(0).toString(16).toUpperCase())})}function i(e){return function(e){var t=[];return Object.keys(e).forEach(function(e){return t.push(e)}),t}(e).sort()}e.exports={signPamFromParams:function(t){return i(t).map(function(e){return"".concat(e,"=").concat(r(t[e]))}).join("&")},endsWith:function(e,t){return-1!==e.indexOf(t,this.length-t.length)},createPromise:function(){var n,r;return{promise:new Promise(function(e,t){n=e,r=t}),reject:r,fulfill:n}},encodeString:r}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r,i=(r=n(5))&&r.__esModule?r:{default:r};n(0);function o(e,t){for(var n=0;n=n())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+n().toString(16)+" bytes");return 0|e}function p(e,t){if(l.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return N(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return j(e).length;default:if(r)return N(e).length;t=(""+t).toLowerCase(),r=!0}}function d(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function g(e,t,n,r,i){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):2147483647=e.length){if(i)return-1;n=e.length-1}else if(n<0){if(!i)return-1;n=0}if("string"==typeof t&&(t=l.from(t,r)),l.isBuffer(t))return 0===t.length?-1:y(e,t,n,r,i);if("number"==typeof t)return t&=255,l.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):y(e,[t],n,r,i);throw new TypeError("val must be string, number or Buffer")}function y(e,t,n,r,i){var o,s=1,a=e.length,u=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;a/=s=2,u/=2,n/=2}function c(e,t){return 1===s?e[t]:e.readUInt16BE(t*s)}if(i){var f=-1;for(o=n;o>>10&1023|55296),f=56320|1023&f),r.push(f),i+=l}return function(e){var t=e.length;if(t<=k)return String.fromCharCode.apply(String,e);var n="",r=0;for(;rthis.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e=e||"utf8";;)switch(e){case"hex":return P(this,t,n);case"utf8":case"utf-8":return _(this,t,n);case"ascii":return T(this,t,n);case"latin1":case"binary":return w(this,t,n);case"base64":return m(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return O(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}.apply(this,arguments)},l.prototype.equals=function(e){if(!l.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===l.compare(this,e)},l.prototype.inspect=function(){var e="",t=I.INSPECT_MAX_BYTES;return 0t&&(e+=" ... ")),""},l.prototype.compare=function(e,t,n,r,i){if(!l.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),t<0||n>e.length||r<0||i>this.length)throw new RangeError("out of range index");if(i<=r&&n<=t)return 0;if(i<=r)return-1;if(n<=t)return 1;if(this===e)return 0;for(var o=(i>>>=0)-(r>>>=0),s=(n>>>=0)-(t>>>=0),a=Math.min(o,s),u=this.slice(r,i),c=e.slice(t,n),f=0;fthis.length)throw new RangeError("Attempt to write outside buffer bounds");r=r||"utf8";for(var o,s,a,u,c,f,l,h,p,d=!1;;)switch(r){case"hex":return v(this,e,t,n);case"utf8":case"utf-8":return h=t,p=n,B(N(e,(l=this).length-h),l,h,p);case"ascii":return b(this,e,t,n);case"latin1":case"binary":return b(this,e,t,n);case"base64":return u=this,c=t,f=n,B(j(e),u,c,f);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return s=t,a=n,B(function(e,t){for(var n,r,i,o=[],s=0;s>8,i=n%256,o.push(i),o.push(r);return o}(e,(o=this).length-s),o,s,a);default:if(d)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),d=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var k=4096;function T(e,t,n){var r="";n=Math.min(e.length,n);for(var i=t;ie.length)throw new RangeError("Index out of range")}function E(e,t,n,r){t<0&&(t=65535+t+1);for(var i=0,o=Math.min(e.length-n,2);i>>8*(r?i:1-i)}function R(e,t,n,r){t<0&&(t=4294967295+t+1);for(var i=0,o=Math.min(e.length-n,4);i>>8*(r?i:3-i)&255}function A(e,t,n,r){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function C(e,t,n,r,i){return i||A(e,0,n,4),o.write(e,t,n,r,23,4),n+4}function U(e,t,n,r,i){return i||A(e,0,n,8),o.write(e,t,n,r,52,8),n+8}l.prototype.slice=function(e,t){var n,r=this.length;if((e=~~e)<0?(e+=r)<0&&(e=0):r>>8):E(this,e,t,!0),t+2},l.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):E(this,e,t,!1),t+2},l.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):R(this,e,t,!0),t+4},l.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):R(this,e,t,!1),t+4},l.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t|=0,!r){var i=Math.pow(2,8*n-1);M(this,e,t,n,i-1,-i)}var o=0,s=1,a=0;for(this[t]=255&e;++o>0)-a&255;return t+n},l.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t|=0,!r){var i=Math.pow(2,8*n-1);M(this,e,t,n,i-1,-i)}var o=n-1,s=1,a=0;for(this[t+o]=255&e;0<=--o&&(s*=256);)e<0&&0===a&&0!==this[t+o+1]&&(a=1),this[t+o]=(e/s>>0)-a&255;return t+n},l.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,1,127,-128),l.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},l.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):E(this,e,t,!0),t+2},l.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):E(this,e,t,!1),t+2},l.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,4,2147483647,-2147483648),l.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):R(this,e,t,!0),t+4},l.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||M(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),l.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):R(this,e,t,!1),t+4},l.prototype.writeFloatLE=function(e,t,n){return C(this,e,t,!0,n)},l.prototype.writeFloatBE=function(e,t,n){return C(this,e,t,!1,n)},l.prototype.writeDoubleLE=function(e,t,n){return U(this,e,t,!0,n)},l.prototype.writeDoubleBE=function(e,t,n){return U(this,e,t,!1,n)},l.prototype.copy=function(e,t,n,r){if(n=n||0,r||0===r||(r=this.length),t>=e.length&&(t=e.length),t=t||0,0=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t>>=0,n=void 0===n?this.length:n>>>0,"number"==typeof(e=e||0))for(o=t;o>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;o.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return o}function j(e){return r.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(t,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function B(e,t,n,r){for(var i=0;i=t.length||i>=e.length);++i)t[i+n]=e[i];return i}}).call(this,K(69))},function(e,t,n){"use strict";e.exports=function(e){return null!==e&&"object"==typeof e}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=u(n(12)),i=u(n(66)),o=u(n(67)),s=u(n(68)),a=n(74);n(0);function u(e){return e&&e.__esModule?e:{default:e}}function c(e){return(c="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})(e)}function f(e,t){return!t||"object"!==c(t)&&"function"!=typeof t?function(e){if(void 0!==e)return e;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(e):t}function l(e){return(l=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function h(e,t){return(h=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function p(e){if(!navigator||!navigator.sendBeacon)return!1;navigator.sendBeacon(e)}var d=(function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&h(e,t)}(g,r.default),g);function g(e){var t;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,g);var n=e.listenToBrowserNetworkEvents,r=void 0===n||n;return e.db=o.default,e.cbor=new s.default,e.sdkFamily="Web",e.networking=new i.default({del:a.del,get:a.get,post:a.post,patch:a.patch,sendBeacon:p}),t=f(this,l(g).call(this,e)),r&&(window.addEventListener("offline",function(){t.networkDownDetected()}),window.addEventListener("online",function(){t.networkUpDetected()})),t}t.default=d,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var y=a(n(3)),v=a(n(6)),b=a(n(15)),m=a(n(7)),_=a(n(18)),k=a(n(19)),T=s(n(20)),w=s(n(21)),P=s(n(22)),O=s(n(23)),S=s(n(24)),M=s(n(25)),E=s(n(26)),R=s(n(27)),A=s(n(28)),C=s(n(29)),U=s(n(30)),x=s(n(31)),N=s(n(32)),j=s(n(33)),B=s(n(34)),I=s(n(35)),K=s(n(36)),D=s(n(37)),L=s(n(38)),F=s(n(39)),G=s(n(40)),H=s(n(41)),q=s(n(42)),z=s(n(43)),Y=s(n(44)),$=s(n(45)),W=s(n(46)),J=s(n(47)),X=s(n(48)),V=s(n(49)),Q=s(n(50)),Z=s(n(51)),ee=s(n(52)),te=s(n(53)),ne=s(n(54)),re=s(n(55)),ie=s(n(56)),oe=s(n(57)),se=s(n(58)),ae=s(n(59)),ue=s(n(60)),ce=s(n(61)),fe=s(n(62)),le=s(n(63)),he=s(n(64)),pe=s(n(8)),de=s(n(65)),r=a(n(1)),i=a(n(4)),o=(n(0),a(n(5)));function s(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var r=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,n):{};r.get||r.set?Object.defineProperty(t,n,r):t[n]=e[n]}return t.default=e,t}function a(e){return e&&e.__esModule?e:{default:e}}function u(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 e=this.words,t=this.sigBytes;e[t>>>2]&=4294967295<<32-t%4*8,e.length=a.ceil(t/4)},clone:function(){var e=r.clone.call(this);return e.words=this.words.slice(0),e},random:function(e){for(var t=[],n=0;n>>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 u.init(n,t/2)}},s=i.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 u.init(n,t)}},c=i.Utf8={stringify:function(e){try{return decodeURIComponent(escape(s.stringify(e)))}catch(e){throw Error("Malformed UTF-8 data")}},parse:function(e){return s.parse(unescape(encodeURIComponent(e)))}},f=t.BufferedBlockAlgorithm=r.extend({reset:function(){this._data=new u.init,this._nDataBytes=0},_append:function(e){"string"==typeof e&&(e=c.parse(e)),this._data.concat(e),this._nDataBytes+=e.sigBytes},_process:function(e){var t=this._data,n=t.words,r=t.sigBytes,i=this.blockSize,o=r/(4*i);if(e=(o=e?a.ceil(o):a.max((0|o)-this._minBufferSize,0))*i,r=a.min(4*e,r),e){for(var s=0;s>>7)^(h<<14|h>>>18)^h>>>3)+g[l-7]+((p<<15|p>>>17)^(p<<13|p>>>19)^p>>>10)+g[l-16]}h=f+((a<<26|a>>>6)^(a<<21|a>>>11)^(a<<7|a>>>25))+(a&u^~a&c)+d[l]+g[l],p=((r<<30|r>>>2)^(r<<19|r>>>13)^(r<<10|r>>>22))+(r&i^r&o^i&o),f=c,c=u,u=a,a=s+h|0,s=o,o=i,i=r,r=h+p|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]+a|0,n[5]=n[5]+u|0,n[6]=n[6]+c|0,n[7]=n[7]+f|0},_doFinalize:function(){var e=this._data,t=e.words,n=8*this._nDataBytes,r=8*e.sigBytes;return t[r>>>5]|=128<<24-r%32,t[14+(64+r>>>9<<4)]=i.floor(n/4294967296),t[15+(64+r>>>9<<4)]=n,e.sigBytes=4*t.length,this._process(),this._hash},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}});e.SHA256=n._createHelper(r),e.HmacSHA256=n._createHmacHelper(r)}(Math),c=(r=E).enc.Utf8,r.algo.HMAC=r.lib.Base.extend({init:function(e,t){e=this._hasher=new e.init,"string"==typeof t&&(t=c.parse(t));var n=e.blockSize,r=4*n;t.sigBytes>r&&(t=e.finalize(t)),t.clamp();for(var i=this._oKey=t.clone(),o=this._iKey=t.clone(),s=i.words,a=o.words,u=0;u>>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;s<4&&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 t=e.length,n=this._map;!(r=n.charAt(64))||-1!=(r=e.indexOf(r))&&(t=r);for(var r=[],i=0,o=0;o>>6-o%4*2;r[i>>>2]|=(s|a)<<24-i%4*8,i++}return u.create(r,i)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="},function(o){function w(e,t,n,r,i,o,s){return((e=e+(t&n|~t&r)+i+s)<>>32-o)+t}function P(e,t,n,r,i,o,s){return((e=e+(t&r|n&~r)+i+s)<>>32-o)+t}function O(e,t,n,r,i,o,s){return((e=e+(t^n^r)+i+s)<>>32-o)+t}function S(e,t,n,r,i,o,s){return((e=e+(n^(t|~r))+i+s)<>>32-o)+t}for(var e=E,t=(r=e.lib).WordArray,n=r.Hasher,r=e.algo,M=[],i=0;i<64;i++)M[i]=4294967296*o.abs(o.sin(i+1))|0;r=r.MD5=n.extend({_doReset:function(){this._hash=new t.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(e,t){for(var n=0;n<16;n++){var r=e[s=t+n];e[s]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8)}n=this._hash.words;var i,o,s=e[t+0],a=(r=e[t+1],e[t+2]),u=e[t+3],c=e[t+4],f=e[t+5],l=e[t+6],h=e[t+7],p=e[t+8],d=e[t+9],g=e[t+10],y=e[t+11],v=e[t+12],b=e[t+13],m=e[t+14],_=e[t+15],k=n[0],T=S(T=S(T=S(T=S(T=O(T=O(T=O(T=O(T=P(T=P(T=P(T=P(T=w(T=w(T=w(T=w(T=n[1],o=w(o=n[2],i=w(i=n[3],k=w(k,T,o,i,s,7,M[0]),T,o,r,12,M[1]),k,T,a,17,M[2]),i,k,u,22,M[3]),o=w(o,i=w(i,k=w(k,T,o,i,c,7,M[4]),T,o,f,12,M[5]),k,T,l,17,M[6]),i,k,h,22,M[7]),o=w(o,i=w(i,k=w(k,T,o,i,p,7,M[8]),T,o,d,12,M[9]),k,T,g,17,M[10]),i,k,y,22,M[11]),o=w(o,i=w(i,k=w(k,T,o,i,v,7,M[12]),T,o,b,12,M[13]),k,T,m,17,M[14]),i,k,_,22,M[15]),o=P(o,i=P(i,k=P(k,T,o,i,r,5,M[16]),T,o,l,9,M[17]),k,T,y,14,M[18]),i,k,s,20,M[19]),o=P(o,i=P(i,k=P(k,T,o,i,f,5,M[20]),T,o,g,9,M[21]),k,T,_,14,M[22]),i,k,c,20,M[23]),o=P(o,i=P(i,k=P(k,T,o,i,d,5,M[24]),T,o,m,9,M[25]),k,T,u,14,M[26]),i,k,p,20,M[27]),o=P(o,i=P(i,k=P(k,T,o,i,b,5,M[28]),T,o,a,9,M[29]),k,T,h,14,M[30]),i,k,v,20,M[31]),o=O(o,i=O(i,k=O(k,T,o,i,f,4,M[32]),T,o,p,11,M[33]),k,T,y,16,M[34]),i,k,m,23,M[35]),o=O(o,i=O(i,k=O(k,T,o,i,r,4,M[36]),T,o,c,11,M[37]),k,T,h,16,M[38]),i,k,g,23,M[39]),o=O(o,i=O(i,k=O(k,T,o,i,b,4,M[40]),T,o,s,11,M[41]),k,T,u,16,M[42]),i,k,l,23,M[43]),o=O(o,i=O(i,k=O(k,T,o,i,d,4,M[44]),T,o,v,11,M[45]),k,T,_,16,M[46]),i,k,a,23,M[47]),o=S(o,i=S(i,k=S(k,T,o,i,s,6,M[48]),T,o,h,10,M[49]),k,T,m,15,M[50]),i,k,f,21,M[51]),o=S(o,i=S(i,k=S(k,T,o,i,v,6,M[52]),T,o,u,10,M[53]),k,T,g,15,M[54]),i,k,r,21,M[55]),o=S(o,i=S(i,k=S(k,T,o,i,p,6,M[56]),T,o,_,10,M[57]),k,T,l,15,M[58]),i,k,b,21,M[59]),o=S(o,i=S(i,k=S(k,T,o,i,c,6,M[60]),T,o,y,10,M[61]),k,T,a,15,M[62]),i,k,d,21,M[63]);n[0]=n[0]+k|0,n[1]=n[1]+T|0,n[2]=n[2]+o|0,n[3]=n[3]+i|0},_doFinalize:function(){var e=this._data,t=e.words,n=8*this._nDataBytes,r=8*e.sigBytes;t[r>>>5]|=128<<24-r%32;var i=o.floor(n/4294967296);for(t[15+(r+64>>>9<<4)]=16711935&(i<<8|i>>>24)|4278255360&(i<<24|i>>>8),t[14+(r+64>>>9<<4)]=16711935&(n<<8|n>>>24)|4278255360&(n<<24|n>>>8),e.sigBytes=4*(t.length+1),this._process(),t=(e=this._hash).words,n=0;n<4;n++)r=t[n],t[n]=16711935&(r<<8|r>>>24)|4278255360&(r<<24|r>>>8);return e},clone:function(){var e=n.clone.call(this);return e._hash=this._hash.clone(),e}}),e.MD5=n._createHelper(r),e.HmacMD5=n._createHmacHelper(r)}(Math),a=(o=(s=E).lib).Base,f=o.WordArray,l=(o=s.algo).EvpKDF=a.extend({cfg:a.extend({keySize:4,hasher:o.MD5,iterations:1}),init:function(e){this.cfg=this.cfg.extend(e)},compute:function(e,t){for(var n=(s=this.cfg).hasher.create(),r=f.create(),i=r.words,o=s.keySize,s=s.iterations;i.length>>2]}},e.BlockCipher=o.extend({cfg:o.cfg.extend({mode:u,padding:c}),reset:function(){o.reset.call(this);var e=(t=this.cfg).iv,t=t.mode;if(this._xformMode==this._ENC_XFORM_MODE)var n=t.createEncryptor;else n=t.createDecryptor,this._minBufferSize=1;this._mode=n.call(t,this,e&&e.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 f=e.CipherParams=t.extend({init:function(e){this.mixIn(e)},toString:function(e){return(e||this.formatter).stringify(this)}}),l=(u=(h.format={}).OpenSSL={stringify:function(e){var t=e.ciphertext;return((e=e.salt)?s.create([1398893684,1701076831]).concat(e).concat(t):t).toString(r)},parse:function(e){var t=(e=r.parse(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 f.create({ciphertext:e,salt:n})}},e.SerializableCipher=t.extend({cfg:t.extend({format:u}),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,f.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}})),h=(h.kdf={}).OpenSSL={execute:function(e,t,n,r){return r=r||s.random(8),e=i.create({keySize:t+n}).compute(e,r),n=s.create(e.words.slice(t),4*n),e.sigBytes=4*t,f.create({key:e,iv:n,salt:r})}},p=e.PasswordBasedCipher=l.extend({cfg:l.cfg.extend({kdf:h}),encrypt:function(e,t,n,r){return n=(r=this.cfg.extend(r)).kdf.execute(n,e.keySize,e.ivSize),r.iv=n.iv,(e=l.encrypt.call(this,e,t,n.key,r)).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,l.decrypt.call(this,e,t,n.key,r)}})}(),function(){for(var e=E,t=e.lib.BlockCipher,n=e.algo,s=[],r=[],i=[],o=[],a=[],u=[],c=[],f=[],l=[],h=[],p=[],d=0;d<256;d++)p[d]=d<128?d<<1:d<<1^283;var g=0,y=0;for(d=0;d<256;d++){var v=(v=y^y<<1^y<<2^y<<3^y<<4)>>>8^255&v^99;s[g]=v;var b=p[r[v]=g],m=p[b],_=p[m],k=257*p[v]^16843008*v;i[g]=k<<24|k>>>8,o[g]=k<<16|k>>>16,a[g]=k<<8|k>>>24,u[g]=k,k=16843009*_^65537*m^257*b^16843008*g,c[v]=k<<24|k>>>8,f[v]=k<<16|k>>>16,l[v]=k<<8|k>>>24,h[v]=k,g?(g=b^p[p[p[_^b]]],y^=p[p[y]]):g=y=1}var T=[0,1,2,4,8,16,32,64,128,27,54];n=n.AES=t.extend({_doReset:function(){for(var e=(n=this._key).words,t=n.sigBytes/4,n=4*((this._nRounds=t+6)+1),r=this._keySchedule=[],i=0;i>>24]<<24|s[o>>>16&255]<<16|s[o>>>8&255]<<8|s[255&o]):(o=s[(o=o<<8|o>>>24)>>>24]<<24|s[o>>>16&255]<<16|s[o>>>8&255]<<8|s[255&o],o^=T[i/t|0]<<24),r[i]=r[i-t]^o}for(e=this._invKeySchedule=[],t=0;t>>24]]^f[s[o>>>16&255]]^l[s[o>>>8&255]]^h[s[255&o]]},encryptBlock:function(e,t){this._doCryptBlock(e,t,this._keySchedule,i,o,a,u,s)},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,c,f,l,h,r),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],f=e[t+1]^n[1],l=e[t+2]^n[2],h=e[t+3]^n[3],p=4,d=1;d>>24]^i[f>>>16&255]^o[l>>>8&255]^s[255&h]^n[p++],y=r[f>>>24]^i[l>>>16&255]^o[h>>>8&255]^s[255&c]^n[p++],v=r[l>>>24]^i[h>>>16&255]^o[c>>>8&255]^s[255&f]^n[p++];h=r[h>>>24]^i[c>>>16&255]^o[f>>>8&255]^s[255&l]^n[p++],c=g,f=y,l=v}g=(a[c>>>24]<<24|a[f>>>16&255]<<16|a[l>>>8&255]<<8|a[255&h])^n[p++],y=(a[f>>>24]<<24|a[l>>>16&255]<<16|a[h>>>8&255]<<8|a[255&c])^n[p++],v=(a[l>>>24]<<24|a[h>>>16&255]<<16|a[c>>>8&255]<<8|a[255&f])^n[p++],h=(a[h>>>24]<<24|a[c>>>16&255]<<16|a[f>>>8&255]<<8|a[255&l])^n[p++],e[t]=g,e[t+1]=y,e[t+2]=v,e[t+3]=h},keySize:8});e.AES=t._createHelper(n)}(),E.mode.ECB=((h=E.lib.BlockCipherMode.extend()).Encryptor=h.extend({processBlock:function(e,t){this._cipher.encryptBlock(e,t)}}),h.Decryptor=h.extend({processBlock:function(e,t){this._cipher.decryptBlock(e,t)}}),h),e.exports=E},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;r(n(6)),r(n(3)),r(n(7));var c=r(n(16)),f=r(n(17)),l=r(n(2)),a=(n(0),r(n(4)));function r(e){return e&&e.__esModule?e:{default:e}}function i(e,t){for(var n=0;n=o){var s={};s.category=a.default.PNRequestMessageCountExceededCategory,s.operation=t.operation,this._listenerManager.announceStatus(s)}r.forEach(function(e){var t=e.channel,n=e.subscriptionMatch,r=e.publishMetaData;if(t===n&&(n=null),f){if(c._dedupingManager.isDuplicate(e))return;c._dedupingManager.addEntry(e)}if(l.default.endsWith(e.channel,"-pnpres")){var i={channel:null,subscription:null};i.actualChannel=null!=n?t:null,i.subscribedChannel=null!=n?n:t,t&&(i.channel=t.substring(0,t.lastIndexOf("-pnpres"))),n&&(i.subscription=n.substring(0,n.lastIndexOf("-pnpres"))),i.action=e.payload.action,i.state=e.payload.data,i.timetoken=r.publishTimetoken,i.occupancy=e.payload.occupancy,i.uuid=e.payload.uuid,i.timestamp=e.payload.timestamp,e.payload.join&&(i.join=e.payload.join),e.payload.leave&&(i.leave=e.payload.leave),e.payload.timeout&&(i.timeout=e.payload.timeout),c._listenerManager.announcePresence(i)}else if(1===e.messageType){var o={channel:null,subscription:null};o.channel=t,o.subscription=n,o.timetoken=r.publishTimetoken,o.publisher=e.issuingClientId,e.userMetadata&&(o.userMetadata=e.userMetadata),o.message=e.payload,c._listenerManager.announceSignal(o)}else if(2===e.messageType){var s={channel:null,subscription:null};s.channel=t,s.subscription=n,s.timetoken=r.publishTimetoken,s.publisher=e.issuingClientId,e.userMetadata&&(s.userMetadata=e.userMetadata),s.message={event:e.payload.event,type:e.payload.type,data:e.payload.data},"user"===e.payload.type?c._listenerManager.announceUser(s):"space"===e.payload.type?c._listenerManager.announceSpace(s):"membership"===e.payload.type&&c._listenerManager.announceMembership(s)}else if(3===e.messageType){var a={};a.channel=t,a.subscription=n,a.timetoken=r.publishTimetoken,a.publisher=e.issuingClientId,a.data={messageTimetoken:e.payload.data.messageTimetoken,actionTimetoken:e.payload.data.actionTimetoken,type:e.payload.data.type,uuid:e.issuingClientId,value:e.payload.data.value},a.event=e.payload.event,c._listenerManager.announceMessageAction(a)}else{var u={channel:null,subscription:null};u.actualChannel=null!=n?t:null,u.subscribedChannel=null!=n?n:t,u.channel=t,u.subscription=n,u.timetoken=r.publishTimetoken,u.publisher=e.issuingClientId,e.userMetadata&&(u.userMetadata=e.userMetadata),c._config.cipherKey?u.message=c._crypto.decrypt(e.payload):u.message=e.payload,c._listenerManager.announceMessage(u)}}),this._region=e.metadata.region,this._startSubscribeLoop()}}},{key:"_stopSubscribeLoop",value:function(){this._subscribeCall&&("function"==typeof this._subscribeCall.abort&&this._subscribeCall.abort(),this._subscribeCall=null)}}])&&i(o.prototype,s),void(u&&i(o,u)),d);function d(e){var t=e.subscribeEndpoint,n=e.leaveEndpoint,r=e.heartbeatEndpoint,i=e.setStateEndpoint,o=e.timeEndpoint,s=e.config,a=e.crypto,u=e.listenerManager;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,d),h(this,"_crypto",void 0),h(this,"_config",void 0),h(this,"_listenerManager",void 0),h(this,"_reconnectionManager",void 0),h(this,"_leaveEndpoint",void 0),h(this,"_heartbeatEndpoint",void 0),h(this,"_setStateEndpoint",void 0),h(this,"_subscribeEndpoint",void 0),h(this,"_channels",void 0),h(this,"_presenceChannels",void 0),h(this,"_heartbeatChannels",void 0),h(this,"_heartbeatChannelGroups",void 0),h(this,"_channelGroups",void 0),h(this,"_presenceChannelGroups",void 0),h(this,"_currentTimetoken",void 0),h(this,"_lastTimetoken",void 0),h(this,"_storedTimetoken",void 0),h(this,"_region",void 0),h(this,"_subscribeCall",void 0),h(this,"_heartbeatTimer",void 0),h(this,"_subscriptionStatusAnnounced",void 0),h(this,"_autoNetworkDetection",void 0),h(this,"_isOnline",void 0),h(this,"_pendingChannelSubscriptions",void 0),h(this,"_pendingChannelGroupSubscriptions",void 0),h(this,"_dedupingManager",void 0),this._listenerManager=u,this._config=s,this._leaveEndpoint=n,this._heartbeatEndpoint=r,this._setStateEndpoint=i,this._subscribeEndpoint=t,this._crypto=a,this._channels={},this._presenceChannels={},this._heartbeatChannels={},this._heartbeatChannelGroups={},this._channelGroups={},this._presenceChannelGroups={},this._pendingChannelSubscriptions=[],this._pendingChannelGroupSubscriptions=[],this._currentTimetoken=0,this._lastTimetoken=0,this._storedTimetoken=null,this._subscriptionStatusAnnounced=!1,this._isOnline=!0,this._reconnectionManager=new c.default({timeEndpoint:o}),this._dedupingManager=new f.default({config:s})}t.default=p,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r;(r=n(8))&&r.__esModule,n(0);function i(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=[]}}])&&i(s.prototype,a),void(u&&i(s,u)),f);function f(e){var t=e.config;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,f),o(this,"_config",void 0),o(this,"hashHistory",void 0),this.hashHistory=[],this._config=t}t.default=c,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r;(r=n(3))&&r.__esModule,n(0);function i(e){return(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})(e)}function o(e,t){for(var n=0;n=this._maxSubDomain&&(this._currentSubDomain=1),e=this._currentSubDomain.toString(),this._providedFQDN.replace("ps.pndsn.com","ps".concat(e,".pndsn.com"))):this._providedFQDN;var e}},{key:"hasModule",value:function(e){return e in this._modules}},{key:"shiftStandardOrigin",value:function(){return this._standardOrigin=this.nextOrigin(),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:"PATCH",value:function(e,t,n,r){return this._modules.patch(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 r.default.PNNetworkIssuesCategory;if("ECONNREFUSED"===e.code)return r.default.PNNetworkIssuesCategory;if("ECONNRESET"===e.code)return r.default.PNNetworkIssuesCategory;if("EAI_AGAIN"===e.code)return r.default.PNNetworkIssuesCategory;if(0===e.status||e.hasOwnProperty("status")&&void 0===e.status)return r.default.PNNetworkIssuesCategory;if(e.timeout)return r.default.PNTimeoutCategory;if("ETIMEDOUT"===e.code)return r.default.PNNetworkIssuesCategory;if(e.response){if(e.response.badRequest)return r.default.PNBadRequestCategory;if(e.response.forbidden)return r.default.PNAccessDeniedCategory}return r.default.PNUnknownCategory}}])&&o(a.prototype,u),void(c&&o(a,c)),l);function l(t){var n=this;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,l),s(this,"_modules",void 0),s(this,"_config",void 0),s(this,"_maxSubDomain",void 0),s(this,"_currentSubDomain",void 0),s(this,"_standardOrigin",void 0),s(this,"_subscribeOrigin",void 0),s(this,"_providedFQDN",void 0),s(this,"_requestTimeout",void 0),s(this,"_coreParams",void 0),this._modules={},Object.keys(t).forEach(function(e){n._modules[e]=t[e].bind(n)})}t.default=f,e.exports=t.default},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r={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}}};t.default=r,e.exports=t.default},function(f,l,h){"use strict";(function(i){Object.defineProperty(l,"__esModule",{value:!0}),l.default=void 0;var e,o=(e=h(73))&&e.__esModule?e:{default:e};function s(e){return(s="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})(e)}function t(e,t){for(var n=0;n>16&255,s[a++]=t>>8&255,s[a++]=255&t;2===o&&(t=c[e.charCodeAt(n)]<<2|c[e.charCodeAt(n+1)]>>4,s[a++]=255&t);1===o&&(t=c[e.charCodeAt(n)]<<10|c[e.charCodeAt(n+1)]<<4|c[e.charCodeAt(n+2)]>>2,s[a++]=t>>8&255,s[a++]=255&t);return s},t.fromByteArray=function(e){for(var t,n=e.length,r=n%3,i=[],o=0,s=n-r;o>2]+a[t<<4&63]+"==")):2==r&&(t=(e[n-2]<<8)+e[n-1],i.push(a[t>>10]+a[t>>4&63]+a[t<<2&63]+"="));return i.join("")};for(var a=[],c=[],f="undefined"!=typeof Uint8Array?Uint8Array:Array,r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i=0,o=r.length;i>18&63]+a[i>>12&63]+a[i>>6&63]+a[63&i]);return o.join("")}c["-".charCodeAt(0)]=62,c["_".charCodeAt(0)]=63},function(e,t){t.read=function(e,t,n,r,i){var o,s,a=8*i-r-1,u=(1<>1,f=-7,l=n?i-1:0,h=n?-1:1,p=e[t+l];for(l+=h,o=p&(1<<-f)-1,p>>=-f,f+=a;0>=-f,f+=r;0>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=r?0:o-1,d=r?1:-1,g=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,s=f):(s=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-s))<1&&(s--,u*=2),2<=(t+=1<=s+l?h/u:h*Math.pow(2,1-l))*u&&(s++,u/=2),f<=s+l?(a=0,s=f):1<=s+l?(a=(t*u-1)*Math.pow(2,i),s+=l):(a=t*Math.pow(2,l-1)*Math.pow(2,i),s=0));8<=i;e[n+p]=255&a,p+=d,a/=256,i-=8);for(s=s<>10,n=1023&e,r=32768&e;if(31==t)return 0==n?r?-1/0:1/0:NaN;var i=t?Math.pow(2,t-25)*(1024+n):Math.pow(2,-24)*n;return r?-i:i},readFloat32:function(){var e=this.readUint32(),t=(2147483647&e)>>23,n=8388607&e,r=2147483648&e;if(255==t)return 0==n?r?-1/0:1/0:NaN;var i=t?Math.pow(2,t-23-127)*(8388608+n):Math.pow(2,-149)*n;return r?-i:i},readFloat64:function(){var e=this.readUint32(),t=this.readUint32(),n=e>>20&2047,r=4294967296*(1048575&e)+t,i=2147483648&e;if(2047==n)return 0===r?i?-1/0:1/0:NaN;var o=n?Math.pow(2,n-52-1023)*(4503599627370496+r):Math.pow(2,-1074)*r;return i?-o:o},readUint16:function(){return 256*this.readByte()+this.readByte()},readUint32:function(){return 65536*this.readUint16()+this.readUint16()},readUint64:function(){return 4294967296*this.readUint32()+this.readUint32()}},t.prototype={writeByte:r("writeByte"),result:r("result"),writeFloat16:r("writeFloat16"),writeFloat32:r("writeFloat32"),writeFloat64:r("writeFloat64"),writeUint16:function(e){this.writeByte(e>>8&255),this.writeByte(255&e)},writeUint32:function(e){this.writeUint16(e>>16&65535),this.writeUint16(65535&e)},writeUint64:function(e){if(9007199254740992<=e||e<=-9007199254740992)throw new Error("Cannot encode Uint64 of: "+e+" magnitude to big (floating point errors)");this.writeUint32(Math.floor(e/4294967296)),this.writeUint32(e%4294967296)},writeString:r("writeString"),canWriteBinary:function(e){return!1},writeBinary:r("writeChunk")};var h=new Error;function p(e){var t=function(e){var t=e.readByte();return{type:t>>5,value:31&t}}(e);switch(t.type){case 0:return l(t,e);case 1:return-1-l(t,e);case 2:return e.readChunk(l(t,e));case 3:var n=e.readChunk(l(t,e));return n.toString("utf-8");case 4:case 5:var r=l(t,e),i=[];if(null!==r){5===t.type&&(r*=2);for(var o=0;o=this.latestBuffer.length&&(this.completeBuffers.push(this.latestBuffer),this.latestBuffer=b.alloc(this.defaultBufferLength),this.latestBufferOffset=0),this.byteLength++},n.prototype.writeFloat32=function(e){var t=b.alloc(4);t.writeFloatBE(e,0),this.writeBuffer(t)},n.prototype.writeFloat64=function(e){var t=b.alloc(8);t.writeDoubleBE(e,0),this.writeBuffer(t)},n.prototype.writeString=function(e,t){var n=b.from(e,"utf-8");t(n.length),this.writeBuffer(n)},n.prototype.canWriteBinary=function(e){return e instanceof b},n.prototype.writeBinary=function(e,t){t(e.length),this.writeBuffer(e)},n.prototype.writeBuffer=function(e){if(!(e instanceof b))throw new TypeError("BufferWriter only accepts Buffers");this.latestBufferOffset?this.latestBuffer.length-this.latestBufferOffset>=e.length?(e.copy(this.latestBuffer,this.latestBufferOffset),this.latestBufferOffset+=e.length,this.latestBufferOffset>=this.latestBuffer.length&&(this.completeBuffers.push(this.latestBuffer),this.latestBuffer=b.alloc(this.defaultBufferLength),this.latestBufferOffset=0)):(this.completeBuffers.push(this.latestBuffer.slice(0,this.latestBufferOffset)),this.completeBuffers.push(e),this.latestBuffer=b.alloc(this.defaultBufferLength),this.latestBufferOffset=0):this.completeBuffers.push(e),this.byteLength+=e.length},n.prototype.result=function(){for(var e=b.alloc(this.byteLength),t=0,n=0;n>>>>>"),o.log("[".concat(n," / ").concat(t,"]"),"\n",r.url,"\n",r.qs,"\n",e.text),o.log("-----")})}function s(e,i,o){var s=this;return this._config.logVerbosity&&(e=e.use(a)),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(i.timeout).end(function(t,n){var e,r={};if(r.error=null!==t,r.operation=i.operation,n&&n.status&&(r.statusCode=n.status),t){if(t.response&&t.response.text&&!s._config.logVerbosity)try{r.errorData=JSON.parse(t.response.text)}catch(e){r.errorData=t}else r.errorData=t;return r.category=s._detectErrorCategory(t),o(r,null)}try{e=JSON.parse(n.text)}catch(e){return r.errorData=n,r.error=!0,o(r,null)}return e.error&&1===e.error&&e.status&&e.message&&e.service?(r.errorData=e,r.statusCode=e.status,r.error=!0,r.category=s._detectErrorCategory(r),o(r,null)):(e.error&&e.error.message&&(r.errorData=e.error),o(r,e))})}},function(e,n,t){var r;r="undefined"!=typeof window?window:"undefined"!=typeof self?self:(console.warn("Using browser-only version of superagent in non-browser environment"),this);var i=t(76),o=t(77),s=t(10),a=t(78),u=t(80);function c(){}var f=n=e.exports=function(e,t){return"function"==typeof t?new n.Request("GET",e).end(t):1==arguments.length?new n.Request("GET",e):new n.Request(e,t)};n.Request=v,f.getXHR=function(){if(!(!r.XMLHttpRequest||r.location&&"file:"==r.location.protocol&&r.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 version of superagent could not find XHR")};var l="".trim?function(e){return e.trim()}:function(e){return e.replace(/(^\s*|\s*$)/g,"")};function h(e){if(!s(e))return e;var t=[];for(var n in e)p(t,n,e[n]);return t.join("&")}function p(t,n,e){if(null!=e)if(Array.isArray(e))e.forEach(function(e){p(t,n,e)});else if(s(e))for(var r in e)p(t,n+"["+r+"]",e[r]);else t.push(encodeURIComponent(n)+"="+encodeURIComponent(e));else null===e&&t.push(encodeURIComponent(n))}function d(e){for(var t,n,r={},i=e.split("&"),o=0,s=i.length;o=this._maxRetries)return!1;if(this._retryCallback)try{var n=this._retryCallback(e,t);if(!0===n)return!0;if(!1===n)return!1}catch(e){console.error(e)}if(t&&t.status&&500<=t.status&&501!=t.status)return!0;if(e){if(e.code&&~o.indexOf(e.code))return!0;if(e.timeout&&"ECONNABORTED"==e.code)return!0;if(e.crossDomain)return!0}return!1},r.prototype._retry=function(){return this.clearTimeout(),this.req&&(this.req=null,this.req=this.request()),this._aborted=!1,this.timedout=!1,this._end()},r.prototype.then=function(e,t){if(!this._fullfilledPromise){var i=this;this._endCalled&&console.warn("Warning: superagent request was sent twice, because both .end() and .then() were called. Never call .end() if you use promises"),this._fullfilledPromise=new Promise(function(n,r){i.end(function(e,t){e?r(e):n(t)})})}return this._fullfilledPromise.then(e,t)},r.prototype.catch=function(e){return this.then(void 0,e)},r.prototype.use=function(e){return e(this),this},r.prototype.ok=function(e){if("function"!=typeof e)throw Error("Callback required");return this._okCallback=e,this},r.prototype._isResponseOK=function(e){return!!e&&(this._okCallback?this._okCallback(e):200<=e.status&&e.status<300)},r.prototype.getHeader=r.prototype.get=function(e){return this._header[e.toLowerCase()]},r.prototype.set=function(e,t){if(i(e)){for(var n in e)this.set(n,e[n]);return this}return this._header[e.toLowerCase()]=t,this.header[e]=t,this},r.prototype.unset=function(e){return delete this._header[e.toLowerCase()],delete this.header[e],this},r.prototype.field=function(e,t){if(null==e)throw new Error(".field(name, val) name can not be empty");if(this._data&&console.error(".field() can't be used if .send() is used. Please use only .send() or only .field() & .attach()"),i(e)){for(var n in e)this.field(n,e[n]);return this}if(Array.isArray(t)){for(var r in t)this.field(e,t[r]);return this}if(null==t)throw new Error(".field(name, val) val can not be empty");return"boolean"==typeof t&&(t=""+t),this._getFormData().append(e,t),this},r.prototype.abort=function(){return this._aborted||(this._aborted=!0,this.xhr&&this.xhr.abort(),this.req&&this.req.abort(),this.clearTimeout(),this.emit("abort")),this},r.prototype._auth=function(e,t,n,r){switch(n.type){case"basic":this.set("Authorization","Basic "+r(e+":"+t));break;case"auto":this.username=e,this.password=t;break;case"bearer":this.set("Authorization","Bearer "+e)}return this},r.prototype.withCredentials=function(e){return null==e&&(e=!0),this._withCredentials=e,this},r.prototype.redirects=function(e){return this._maxRedirects=e,this},r.prototype.maxResponseSize=function(e){if("number"!=typeof e)throw TypeError("Invalid argument");return this._maxResponseSize=e,this},r.prototype.toJSON=function(){return{method:this.method,url:this.url,data:this._data,headers:this._header}},r.prototype.send=function(e){var t=i(e),n=this._header["content-type"];if(this._formData&&console.error(".send() can't be used if .attach() or .field() is used. Please use only .send() or only .field() & .attach()"),t&&!this._data)Array.isArray(e)?this._data=[]:this._isHost(e)||(this._data={});else if(e&&this._data&&this._isHost(this._data))throw Error("Can't merge these send calls");if(t&&i(this._data))for(var r in e)this._data[r]=e[r];else"string"==typeof e?(n||this.type("form"),n=this._header["content-type"],this._data="application/x-www-form-urlencoded"==n?this._data?this._data+"&"+e:e:(this._data||"")+e):this._data=e;return!t||this._isHost(e)||n||this.type("json"),this},r.prototype.sortQuery=function(e){return this._sort=void 0===e||e,this},r.prototype._finalizeQueryString=function(){var e=this._query.join("&");if(e&&(this.url+=(0<=this.url.indexOf("?")?"&":"?")+e),this._query.length=0,this._sort){var t=this.url.indexOf("?");if(0<=t){var n=this.url.substring(t+1).split("&");"function"==typeof this._sort?n.sort(this._sort):n.sort(),this.url=this.url.substring(0,t)+"?"+n.join("&")}}},r.prototype._appendQueryString=function(){console.trace("Unsupported")},r.prototype._timeoutError=function(e,t,n){if(!this._aborted){var r=new Error(e+t+"ms exceeded");r.timeout=t,r.code="ECONNABORTED",r.errno=n,this.timedout=!0,this.abort(),this.callback(r)}},r.prototype._setTimeouts=function(){var e=this;this._timeout&&!this._timer&&(this._timer=setTimeout(function(){e._timeoutError("Timeout of ",e._timeout,"ETIME")},this._timeout)),this._responseTimeout&&!this._responseTimeoutTimer&&(this._responseTimeoutTimer=setTimeout(function(){e._timeoutError("Response timeout of ",e._responseTimeout,"ETIMEDOUT")},this._responseTimeout))}},function(e,t,n){"use strict";var i=n(79);function r(e){if(e)return function(e){for(var t in r.prototype)e[t]=r.prototype[t];return e}(e)}(e.exports=r).prototype.get=function(e){return this.header[e.toLowerCase()]},r.prototype._setHeaderProperties=function(e){var t=e["content-type"]||"";this.type=i.type(t);var n=i.params(t);for(var r in n)this[r]=n[r];this.links={};try{e.link&&(this.links=i.parseLinks(e.link))}catch(e){}},r.prototype._setStatusProperties=function(e){var t=e/100|0;this.status=this.statusCode=e,this.statusType=t,this.info=1==t,this.ok=2==t,this.redirect=3==t,this.clientError=4==t,this.serverError=5==t,this.error=(4==t||5==t)&&this.toError(),this.created=201==e,this.accepted=202==e,this.noContent=204==e,this.badRequest=400==e,this.unauthorized=401==e,this.notAcceptable=406==e,this.forbidden=403==e,this.notFound=404==e,this.unprocessableEntity=422==e}},function(e,t,n){"use strict";t.type=function(e){return e.split(/ *; */).shift()},t.params=function(e){return e.split(/ *; */).reduce(function(e,t){var n=t.split(/ *= */),r=n.shift(),i=n.shift();return r&&i&&(e[r]=i),e},{})},t.parseLinks=function(e){return e.split(/ *, */).reduce(function(e,t){var n=t.split(/ *; */),r=n[0].slice(1,-1);return e[n[1].split(/ *= */)[1].slice(1,-1)]=r,e},{})},t.cleanHeader=function(e,t){return delete e["content-type"],delete e["content-length"],delete e["transfer-encoding"],delete e.host,t&&(delete e.authorization,delete e.cookie),e}},function(e,t){function n(){this._defaults=[]}["use","on","once","set","query","type","accept","auth","withCredentials","sortQuery","retry","ok","redirects","timeout","buffer","serialize","parse","ca","key","pfx","cert"].forEach(function(e){n.prototype[e]=function(){return this._defaults.push({fn:e,arguments:arguments}),this}}),n.prototype._setDefaults=function(t){this._defaults.forEach(function(e){t[e.fn].apply(t,e.arguments)})},e.exports=n}],i.c=r,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)i.d(n,r,function(e){return t[e]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="",i(i.s=11);function i(e){if(r[e])return r[e].exports;var t=r[e]={i:e,l:!1,exports:{}};return n[e].call(t.exports,t,t.exports,i),t.l=!0,t.exports}var n,r}); \ No newline at end of file diff --git a/lib/core/components/config.js b/lib/core/components/config.js index 0f5249023..8631debad 100644 --- a/lib/core/components/config.js +++ b/lib/core/components/config.js @@ -255,7 +255,7 @@ var _default = function () { }, { key: "getVersion", value: function getVersion() { - return '4.27.0'; + return '4.27.1'; } }, { key: "_decideUUID", diff --git a/lib/core/components/config.js.map b/lib/core/components/config.js.map index 1364b30f3..f22cc07af 100644 --- a/lib/core/components/config.js.map +++ b/lib/core/components/config.js.map @@ -1 +1 @@ -{"version":3,"sources":["core/components/config.js"],"names":["PRESENCE_TIMEOUT_MINIMUM","PRESENCE_TIMEOUT_DEFAULT","setup","db","_db","instanceId","uuidGenerator","createUUID","secretKey","secret_key","subscribeKey","subscribe_key","publishKey","publish_key","sdkName","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","console","log","_heartbeatInterval","_subscribeRequestTimeout","_transactionalRequestTimeout","_useSendBeacon","providedUUID","get"],"mappings":";;;;;;;AAGA;;AACA;;;;;;;;;;;;AAOA,IAAMA,wBAAgC,GAAG,EAAzC;AACA,IAAMC,wBAAgC,GAAG,GAAzC;;;AA8HE,0BAAgD;AAAA,QAAlCC,KAAkC,QAAlCA,KAAkC;AAAA,QAA3BC,EAA2B,QAA3BA,EAA2B;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAC9C,SAAKC,GAAL,GAAWD,EAAX;AAEA,SAAKE,UAAL,gBAAwBC,iBAAcC,UAAd,EAAxB;AACA,SAAKC,SAAL,GAAiBN,KAAK,CAACM,SAAN,IAAmBN,KAAK,CAACO,UAA1C;AACA,SAAKC,YAAL,GAAoBR,KAAK,CAACQ,YAAN,IAAsBR,KAAK,CAACS,aAAhD;AACA,SAAKC,UAAL,GAAkBV,KAAK,CAACU,UAAN,IAAoBV,KAAK,CAACW,WAA5C;AACA,SAAKC,OAAL,GAAeZ,KAAK,CAACY,OAArB;AACA,SAAKC,SAAL,GAAiBb,KAAK,CAACa,SAAvB;AACA,SAAKC,SAAL,GAAiBd,KAAK,CAACc,SAAvB;AACA,SAAKC,UAAL,CAAgBf,KAAK,CAACgB,OAAtB;AACA,SAAKC,YAAL,CAAkBjB,KAAK,CAACkB,SAAxB;AAEA,SAAKC,mBAAL,CAAyBnB,KAAK,CAACoB,gBAA/B;AAEA,SAAKC,MAAL,GAAcrB,KAAK,CAACqB,MAAN,IAAgB,cAA9B;AACA,SAAKC,MAAL,GAActB,KAAK,CAACuB,GAAN,IAAa,KAA3B;AACA,SAAKC,OAAL,GAAexB,KAAK,CAACwB,OAAN,IAAiB,KAAhC;AACA,SAAKC,KAAL,GAAazB,KAAK,CAACyB,KAAnB;AACA,SAAKC,SAAL,GAAiB1B,KAAK,CAAC0B,SAAvB;AACA,SAAKC,iBAAL,GAAyB3B,KAAK,CAAC2B,iBAA/B;AACA,SAAKC,oBAAL,GAA4B5B,KAAK,CAAC4B,oBAAN,IAA8B,KAA1D;AAEA,SAAKC,iBAAL,GAAyB7B,KAAK,CAAC6B,iBAAN,IAA2B,KAApD;AACA,SAAKC,gBAAL,GAAwB9B,KAAK,CAAC8B,gBAAN,IAA0B,GAAlD;AAEA,SAAKC,aAAL,GAAqB/B,KAAK,CAAC+B,aAA3B;AACA,SAAKC,aAAL,GAAqBhC,KAAK,CAACgC,aAA3B;;AAGA,QAAI,OAAOC,QAAP,KAAoB,WAApB,IAAmCA,QAAQ,CAACC,QAAT,KAAsB,QAA7D,EAAuE;AACrE,WAAKZ,MAAL,GAAc,IAAd;AACD;;AAED,SAAKa,YAAL,GAAoBnC,KAAK,CAACmC,YAAN,IAAsB,KAA1C;AACA,SAAKC,mBAAL,GAA2BpC,KAAK,CAACoC,mBAAN,IAA6B,KAAxD;AAEA,SAAKC,wBAAL,GAAgCrC,KAAK,CAACqC,wBAAN,IAAkC,IAAlE;AACA,SAAKC,4BAAL,GACEtC,KAAK,CAACsC,4BAAN,IAAsC,KADxC;AAGA,SAAKC,aAAL,GAAqBvC,KAAK,CAACuC,aAAN,IAAuB,KAA5C;AACA,SAAKC,YAAL,GAAoBxC,KAAK,CAACwC,YAAN,IAAsB,KAA1C;AAEA,SAAKC,4BAAL,GAAoCzC,KAAK,CAACyC,4BAA1C;AAGA,SAAKC,qBAAL,CAA2B1C,KAAK,CAAC2C,2BAAN,IAAqC,KAAK,IAArE;AAEA,SAAKC,mBAAL,CAAyB5C,KAAK,CAAC6C,uBAAN,IAAiC,MAAM,IAAhE;AAEA,SAAKC,mBAAL,CAAyB9C,KAAK,CAAC+C,aAAN,IAAuB,IAAhD;AAEA,SAAKC,kBAAL,CAAwBhD,KAAK,CAACiD,eAAN,IAAyBlD,wBAAjD;;AAEA,QAAIC,KAAK,CAACkD,iBAAN,IAA2B,IAA/B,EAAqC;AACnC,WAAKC,oBAAL,CAA0BnD,KAAK,CAACkD,iBAAhC;AACD;;AAED,SAAKE,OAAL,CAAa,KAAKC,WAAL,CAAiBrD,KAAK,CAACsD,IAAvB,CAAb;AACD;;;;iCAGoB;AACnB,aAAO,KAAKtC,OAAZ;AACD;;;+BAEUuC,G,EAAmB;AAC5B,WAAKvC,OAAL,GAAeuC,GAAf;AACA,aAAO,IAAP;AACD;;;iCAEYA,G,EAAmB;AAC9B,WAAKrC,SAAL,GAAiBqC,GAAjB;AACA,aAAO,IAAP;AACD;;;8BAEiB;AAChB,aAAO,KAAKC,IAAZ;AACD;;;4BAEOD,G,EAAmB;AACzB,UAAI,KAAKrD,GAAL,IAAY,KAAKA,GAAL,CAASuD,GAAzB,EAA8B,KAAKvD,GAAL,CAASuD,GAAT,WAAgB,KAAKjD,YAArB,WAAyC+C,GAAzC;AAC9B,WAAKC,IAAL,GAAYD,GAAZ;AACA,aAAO,IAAP;AACD;;;0CAE6B;AAC5B,aAAO,KAAKnC,gBAAZ;AACD;;;wCAEmBmC,G,EAAmB;AACrC,WAAKnC,gBAAL,GAAwBmC,GAAxB;AACA,aAAO,IAAP;AACD;;;yCAE4B;AAC3B,aAAO,KAAKG,gBAAZ;AACD;;;uCAEkBH,G,EAAmB;AACpC,UAAIA,GAAG,IAAIzD,wBAAX,EAAqC;AACnC,aAAK4D,gBAAL,GAAwBH,GAAxB;AACD,OAFD,MAEO;AACL,aAAKG,gBAAL,GAAwB5D,wBAAxB;AAGA6D,QAAAA,OAAO,CAACC,GAAR,CACE,2EADF,EAEE,KAAKF,gBAFP;AAID;;AAED,WAAKP,oBAAL,CAA0B,KAAKO,gBAAL,GAAwB,CAAxB,GAA4B,CAAtD;AAEA,aAAO,IAAP;AACD;;;6BAEQjC,K,EAAoB;AAC3B,WAAKA,KAAL,GAAaA,KAAb;AACD;;;2CAE8B;AAC7B,aAAO,KAAKoC,kBAAZ;AACD;;;yCAEoBN,G,EAAmB;AACtC,WAAKM,kBAAL,GAA0BN,GAA1B;AACA,aAAO,IAAP;AACD;;;0CAG6B;AAC5B,aAAO,KAAKO,wBAAZ;AACD;;;wCAEmBP,G,EAAmB;AACrC,WAAKO,wBAAL,GAAgCP,GAAhC;AACA,aAAO,IAAP;AACD;;;4CAE+B;AAC9B,aAAO,KAAKQ,4BAAZ;AACD;;;0CAEqBR,G,EAAmB;AACvC,WAAKQ,4BAAL,GAAoCR,GAApC;AACA,aAAO,IAAP;AACD;;;0CAE8B;AAC7B,aAAO,KAAKS,cAAZ;AACD;;;wCAEmBT,G,EAAoB;AACtC,WAAKS,cAAL,GAAsBT,GAAtB;AACA,aAAO,IAAP;AACD;;;iCAEoB;AACnB,aAAO,QAAP;AACD;;;gCAEWU,Y,EAA8B;AAExC,UAAIA,YAAJ,EAAkB;AAChB,eAAOA,YAAP;AACD;;AAGD,UAAI,KAAK/D,GAAL,IAAY,KAAKA,GAAL,CAASgE,GAArB,IAA4B,KAAKhE,GAAL,CAASgE,GAAT,WAAgB,KAAK1D,YAArB,UAAhC,EAA0E;AACxE,eAAO,KAAKN,GAAL,CAASgE,GAAT,WAAgB,KAAK1D,YAArB,UAAP;AACD;;AAGD,0BAAaJ,iBAAcC,UAAd,EAAb;AACD","sourcesContent":["/* @flow */\n/* global location */\n\nimport uuidGenerator from './uuid';\nimport {\n InternalSetupStruct,\n DatabaseInterface,\n KeepAliveStruct,\n ProxyStruct,\n} from '../flow_interfaces';\n\nconst PRESENCE_TIMEOUT_MINIMUM: number = 20;\nconst PRESENCE_TIMEOUT_DEFAULT: number = 300;\n\ntype ConfigConstructArgs = {\n setup: InternalSetupStruct,\n db: DatabaseInterface,\n};\n\nexport default class {\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: ProxyStruct;\n\n /*\n if _useInstanceId is true, this instanceId will be added to all requests\n */\n instanceId: string;\n\n /*\n If the SDK is running as part of another SDK built atop of it, allow a custom pnsdk with name and version.\n */\n sdkName: 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 support for client deduping\n */\n dedupeOnSubscribe: boolean;\n\n maximumCacheSize: number;\n\n /*\n support customp encryption and decryption functions.\n */\n customEncrypt: Function; // function to support custome encryption of messages\n\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.createUUID()}`;\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.sdkName = setup.sdkName;\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 || 'ps.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 =\n 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 || PRESENCE_TIMEOUT_DEFAULT);\n\n if (setup.heartbeatInterval != null) {\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 {\n return this.authKey;\n }\n\n setAuthKey(val: string): this {\n this.authKey = val;\n return this;\n }\n\n setCipherKey(val: string): this {\n this.cipherKey = val;\n return this;\n }\n\n getUUID(): string {\n return this.UUID;\n }\n\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 {\n return this.filterExpression;\n }\n\n setFilterExpression(val: string): this {\n this.filterExpression = val;\n return this;\n }\n\n getPresenceTimeout(): number {\n return this._presenceTimeout;\n }\n\n setPresenceTimeout(val: number): this {\n if (val >= PRESENCE_TIMEOUT_MINIMUM) {\n this._presenceTimeout = val;\n } else {\n this._presenceTimeout = PRESENCE_TIMEOUT_MINIMUM;\n\n // eslint-disable-next-line no-console\n console.log(\n 'WARNING: Presence timeout is less than the minimum. Using minimum value: ',\n this._presenceTimeout\n );\n }\n\n this.setHeartbeatInterval(this._presenceTimeout / 2 - 1);\n\n return this;\n }\n\n setProxy(proxy: ProxyStruct) {\n this.proxy = proxy;\n }\n\n getHeartbeatInterval(): number {\n return this._heartbeatInterval;\n }\n\n setHeartbeatInterval(val: number): this {\n this._heartbeatInterval = val;\n return this;\n }\n\n // deprecated setters.\n getSubscribeTimeout(): number {\n return this._subscribeRequestTimeout;\n }\n\n setSubscribeTimeout(val: number): this {\n this._subscribeRequestTimeout = val;\n return this;\n }\n\n getTransactionTimeout(): number {\n return this._transactionalRequestTimeout;\n }\n\n setTransactionTimeout(val: number): this {\n this._transactionalRequestTimeout = val;\n return this;\n }\n\n isSendBeaconEnabled(): boolean {\n return this._useSendBeacon;\n }\n\n setSendBeaconConfig(val: boolean): this {\n this._useSendBeacon = val;\n return this;\n }\n\n getVersion(): string {\n return '4.27.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.createUUID()}`;\n }\n}\n"],"file":"config.js"} \ No newline at end of file +{"version":3,"sources":["core/components/config.js"],"names":["PRESENCE_TIMEOUT_MINIMUM","PRESENCE_TIMEOUT_DEFAULT","setup","db","_db","instanceId","uuidGenerator","createUUID","secretKey","secret_key","subscribeKey","subscribe_key","publishKey","publish_key","sdkName","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","console","log","_heartbeatInterval","_subscribeRequestTimeout","_transactionalRequestTimeout","_useSendBeacon","providedUUID","get"],"mappings":";;;;;;;AAGA;;AACA;;;;;;;;;;;;AAOA,IAAMA,wBAAgC,GAAG,EAAzC;AACA,IAAMC,wBAAgC,GAAG,GAAzC;;;AA8HE,0BAAgD;AAAA,QAAlCC,KAAkC,QAAlCA,KAAkC;AAAA,QAA3BC,EAA2B,QAA3BA,EAA2B;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAAA;;AAC9C,SAAKC,GAAL,GAAWD,EAAX;AAEA,SAAKE,UAAL,gBAAwBC,iBAAcC,UAAd,EAAxB;AACA,SAAKC,SAAL,GAAiBN,KAAK,CAACM,SAAN,IAAmBN,KAAK,CAACO,UAA1C;AACA,SAAKC,YAAL,GAAoBR,KAAK,CAACQ,YAAN,IAAsBR,KAAK,CAACS,aAAhD;AACA,SAAKC,UAAL,GAAkBV,KAAK,CAACU,UAAN,IAAoBV,KAAK,CAACW,WAA5C;AACA,SAAKC,OAAL,GAAeZ,KAAK,CAACY,OAArB;AACA,SAAKC,SAAL,GAAiBb,KAAK,CAACa,SAAvB;AACA,SAAKC,SAAL,GAAiBd,KAAK,CAACc,SAAvB;AACA,SAAKC,UAAL,CAAgBf,KAAK,CAACgB,OAAtB;AACA,SAAKC,YAAL,CAAkBjB,KAAK,CAACkB,SAAxB;AAEA,SAAKC,mBAAL,CAAyBnB,KAAK,CAACoB,gBAA/B;AAEA,SAAKC,MAAL,GAAcrB,KAAK,CAACqB,MAAN,IAAgB,cAA9B;AACA,SAAKC,MAAL,GAActB,KAAK,CAACuB,GAAN,IAAa,KAA3B;AACA,SAAKC,OAAL,GAAexB,KAAK,CAACwB,OAAN,IAAiB,KAAhC;AACA,SAAKC,KAAL,GAAazB,KAAK,CAACyB,KAAnB;AACA,SAAKC,SAAL,GAAiB1B,KAAK,CAAC0B,SAAvB;AACA,SAAKC,iBAAL,GAAyB3B,KAAK,CAAC2B,iBAA/B;AACA,SAAKC,oBAAL,GAA4B5B,KAAK,CAAC4B,oBAAN,IAA8B,KAA1D;AAEA,SAAKC,iBAAL,GAAyB7B,KAAK,CAAC6B,iBAAN,IAA2B,KAApD;AACA,SAAKC,gBAAL,GAAwB9B,KAAK,CAAC8B,gBAAN,IAA0B,GAAlD;AAEA,SAAKC,aAAL,GAAqB/B,KAAK,CAAC+B,aAA3B;AACA,SAAKC,aAAL,GAAqBhC,KAAK,CAACgC,aAA3B;;AAGA,QAAI,OAAOC,QAAP,KAAoB,WAApB,IAAmCA,QAAQ,CAACC,QAAT,KAAsB,QAA7D,EAAuE;AACrE,WAAKZ,MAAL,GAAc,IAAd;AACD;;AAED,SAAKa,YAAL,GAAoBnC,KAAK,CAACmC,YAAN,IAAsB,KAA1C;AACA,SAAKC,mBAAL,GAA2BpC,KAAK,CAACoC,mBAAN,IAA6B,KAAxD;AAEA,SAAKC,wBAAL,GAAgCrC,KAAK,CAACqC,wBAAN,IAAkC,IAAlE;AACA,SAAKC,4BAAL,GACEtC,KAAK,CAACsC,4BAAN,IAAsC,KADxC;AAGA,SAAKC,aAAL,GAAqBvC,KAAK,CAACuC,aAAN,IAAuB,KAA5C;AACA,SAAKC,YAAL,GAAoBxC,KAAK,CAACwC,YAAN,IAAsB,KAA1C;AAEA,SAAKC,4BAAL,GAAoCzC,KAAK,CAACyC,4BAA1C;AAGA,SAAKC,qBAAL,CAA2B1C,KAAK,CAAC2C,2BAAN,IAAqC,KAAK,IAArE;AAEA,SAAKC,mBAAL,CAAyB5C,KAAK,CAAC6C,uBAAN,IAAiC,MAAM,IAAhE;AAEA,SAAKC,mBAAL,CAAyB9C,KAAK,CAAC+C,aAAN,IAAuB,IAAhD;AAEA,SAAKC,kBAAL,CAAwBhD,KAAK,CAACiD,eAAN,IAAyBlD,wBAAjD;;AAEA,QAAIC,KAAK,CAACkD,iBAAN,IAA2B,IAA/B,EAAqC;AACnC,WAAKC,oBAAL,CAA0BnD,KAAK,CAACkD,iBAAhC;AACD;;AAED,SAAKE,OAAL,CAAa,KAAKC,WAAL,CAAiBrD,KAAK,CAACsD,IAAvB,CAAb;AACD;;;;iCAGoB;AACnB,aAAO,KAAKtC,OAAZ;AACD;;;+BAEUuC,G,EAAmB;AAC5B,WAAKvC,OAAL,GAAeuC,GAAf;AACA,aAAO,IAAP;AACD;;;iCAEYA,G,EAAmB;AAC9B,WAAKrC,SAAL,GAAiBqC,GAAjB;AACA,aAAO,IAAP;AACD;;;8BAEiB;AAChB,aAAO,KAAKC,IAAZ;AACD;;;4BAEOD,G,EAAmB;AACzB,UAAI,KAAKrD,GAAL,IAAY,KAAKA,GAAL,CAASuD,GAAzB,EAA8B,KAAKvD,GAAL,CAASuD,GAAT,WAAgB,KAAKjD,YAArB,WAAyC+C,GAAzC;AAC9B,WAAKC,IAAL,GAAYD,GAAZ;AACA,aAAO,IAAP;AACD;;;0CAE6B;AAC5B,aAAO,KAAKnC,gBAAZ;AACD;;;wCAEmBmC,G,EAAmB;AACrC,WAAKnC,gBAAL,GAAwBmC,GAAxB;AACA,aAAO,IAAP;AACD;;;yCAE4B;AAC3B,aAAO,KAAKG,gBAAZ;AACD;;;uCAEkBH,G,EAAmB;AACpC,UAAIA,GAAG,IAAIzD,wBAAX,EAAqC;AACnC,aAAK4D,gBAAL,GAAwBH,GAAxB;AACD,OAFD,MAEO;AACL,aAAKG,gBAAL,GAAwB5D,wBAAxB;AAGA6D,QAAAA,OAAO,CAACC,GAAR,CACE,2EADF,EAEE,KAAKF,gBAFP;AAID;;AAED,WAAKP,oBAAL,CAA0B,KAAKO,gBAAL,GAAwB,CAAxB,GAA4B,CAAtD;AAEA,aAAO,IAAP;AACD;;;6BAEQjC,K,EAAoB;AAC3B,WAAKA,KAAL,GAAaA,KAAb;AACD;;;2CAE8B;AAC7B,aAAO,KAAKoC,kBAAZ;AACD;;;yCAEoBN,G,EAAmB;AACtC,WAAKM,kBAAL,GAA0BN,GAA1B;AACA,aAAO,IAAP;AACD;;;0CAG6B;AAC5B,aAAO,KAAKO,wBAAZ;AACD;;;wCAEmBP,G,EAAmB;AACrC,WAAKO,wBAAL,GAAgCP,GAAhC;AACA,aAAO,IAAP;AACD;;;4CAE+B;AAC9B,aAAO,KAAKQ,4BAAZ;AACD;;;0CAEqBR,G,EAAmB;AACvC,WAAKQ,4BAAL,GAAoCR,GAApC;AACA,aAAO,IAAP;AACD;;;0CAE8B;AAC7B,aAAO,KAAKS,cAAZ;AACD;;;wCAEmBT,G,EAAoB;AACtC,WAAKS,cAAL,GAAsBT,GAAtB;AACA,aAAO,IAAP;AACD;;;iCAEoB;AACnB,aAAO,QAAP;AACD;;;gCAEWU,Y,EAA8B;AAExC,UAAIA,YAAJ,EAAkB;AAChB,eAAOA,YAAP;AACD;;AAGD,UAAI,KAAK/D,GAAL,IAAY,KAAKA,GAAL,CAASgE,GAArB,IAA4B,KAAKhE,GAAL,CAASgE,GAAT,WAAgB,KAAK1D,YAArB,UAAhC,EAA0E;AACxE,eAAO,KAAKN,GAAL,CAASgE,GAAT,WAAgB,KAAK1D,YAArB,UAAP;AACD;;AAGD,0BAAaJ,iBAAcC,UAAd,EAAb;AACD","sourcesContent":["/* @flow */\n/* global location */\n\nimport uuidGenerator from './uuid';\nimport {\n InternalSetupStruct,\n DatabaseInterface,\n KeepAliveStruct,\n ProxyStruct,\n} from '../flow_interfaces';\n\nconst PRESENCE_TIMEOUT_MINIMUM: number = 20;\nconst PRESENCE_TIMEOUT_DEFAULT: number = 300;\n\ntype ConfigConstructArgs = {\n setup: InternalSetupStruct,\n db: DatabaseInterface,\n};\n\nexport default class {\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: ProxyStruct;\n\n /*\n if _useInstanceId is true, this instanceId will be added to all requests\n */\n instanceId: string;\n\n /*\n If the SDK is running as part of another SDK built atop of it, allow a custom pnsdk with name and version.\n */\n sdkName: 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 support for client deduping\n */\n dedupeOnSubscribe: boolean;\n\n maximumCacheSize: number;\n\n /*\n support customp encryption and decryption functions.\n */\n customEncrypt: Function; // function to support custome encryption of messages\n\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.createUUID()}`;\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.sdkName = setup.sdkName;\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 || 'ps.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 =\n 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 || PRESENCE_TIMEOUT_DEFAULT);\n\n if (setup.heartbeatInterval != null) {\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 {\n return this.authKey;\n }\n\n setAuthKey(val: string): this {\n this.authKey = val;\n return this;\n }\n\n setCipherKey(val: string): this {\n this.cipherKey = val;\n return this;\n }\n\n getUUID(): string {\n return this.UUID;\n }\n\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 {\n return this.filterExpression;\n }\n\n setFilterExpression(val: string): this {\n this.filterExpression = val;\n return this;\n }\n\n getPresenceTimeout(): number {\n return this._presenceTimeout;\n }\n\n setPresenceTimeout(val: number): this {\n if (val >= PRESENCE_TIMEOUT_MINIMUM) {\n this._presenceTimeout = val;\n } else {\n this._presenceTimeout = PRESENCE_TIMEOUT_MINIMUM;\n\n // eslint-disable-next-line no-console\n console.log(\n 'WARNING: Presence timeout is less than the minimum. Using minimum value: ',\n this._presenceTimeout\n );\n }\n\n this.setHeartbeatInterval(this._presenceTimeout / 2 - 1);\n\n return this;\n }\n\n setProxy(proxy: ProxyStruct) {\n this.proxy = proxy;\n }\n\n getHeartbeatInterval(): number {\n return this._heartbeatInterval;\n }\n\n setHeartbeatInterval(val: number): this {\n this._heartbeatInterval = val;\n return this;\n }\n\n // deprecated setters.\n getSubscribeTimeout(): number {\n return this._subscribeRequestTimeout;\n }\n\n setSubscribeTimeout(val: number): this {\n this._subscribeRequestTimeout = val;\n return this;\n }\n\n getTransactionTimeout(): number {\n return this._transactionalRequestTimeout;\n }\n\n setTransactionTimeout(val: number): this {\n this._transactionalRequestTimeout = val;\n return this;\n }\n\n isSendBeaconEnabled(): boolean {\n return this._useSendBeacon;\n }\n\n setSendBeaconConfig(val: boolean): this {\n this._useSendBeacon = val;\n return this;\n }\n\n getVersion(): string {\n return '4.27.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.createUUID()}`;\n }\n}\n"],"file":"config.js"} \ No newline at end of file diff --git a/package.json b/package.json index 34b14bb31..81e465307 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pubnub", - "version": "4.27.0", + "version": "4.27.1", "author": "PubNub ", "description": "Publish & Subscribe Real-time Messaging with PubNub", "bin": {}, diff --git a/src/core/components/config.js b/src/core/components/config.js index 02c27e9b8..49f53599a 100644 --- a/src/core/components/config.js +++ b/src/core/components/config.js @@ -296,7 +296,7 @@ export default class { } getVersion(): string { - return '4.27.0'; + return '4.27.1'; } _decideUUID(providedUUID: string): string { From aa1ba9f4cac938235ce2dc2d4aae8f5f5aa4b05a Mon Sep 17 00:00:00 2001 From: Rai Phairow Date: Wed, 20 Nov 2019 14:22:35 -0800 Subject: [PATCH 8/8] updated readme --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index de8f70d5c..1bb78210c 100644 --- a/README.md +++ b/README.md @@ -22,5 +22,5 @@ please use the [master_3x](https://github.com/pubnub/javascript/tree/master_3x) -* https://cdn.pubnub.com/sdk/javascript/pubnub.4.27.0.min.js -* https://cdn.pubnub.com/sdk/javascript/pubnub.4.27.0.js +* https://cdn.pubnub.com/sdk/javascript/pubnub.4.27.1.min.js +* https://cdn.pubnub.com/sdk/javascript/pubnub.4.27.1.js