@webex/internal-plugin-presence 2.59.8-next.1 → 2.60.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/presence-worker.js +2 -2
- package/dist/presence-worker.js.map +1 -1
- package/dist/presence.js +1 -1
- package/package.json +18 -19
package/dist/index.js
CHANGED
|
@@ -12,9 +12,9 @@ _Object$defineProperty(exports, "default", {
|
|
|
12
12
|
}
|
|
13
13
|
});
|
|
14
14
|
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
|
|
15
|
+
var _has2 = _interopRequireDefault(require("lodash/has"));
|
|
15
16
|
require("@webex/internal-plugin-device");
|
|
16
17
|
var _webexCore = require("@webex/webex-core");
|
|
17
|
-
var _lodash = require("lodash");
|
|
18
18
|
var _presence = _interopRequireDefault(require("./presence"));
|
|
19
19
|
var _config = _interopRequireDefault(require("./config"));
|
|
20
20
|
/*!
|
|
@@ -28,7 +28,7 @@ var _config = _interopRequireDefault(require("./config"));
|
|
|
28
28
|
direction: 'inbound',
|
|
29
29
|
test: function test(ctx, response) {
|
|
30
30
|
// POST to /apheleia/api/v1/events
|
|
31
|
-
return _promise.default.resolve((0,
|
|
31
|
+
return _promise.default.resolve((0, _has2.default)(response, 'body.eventType') && (0, _has2.default)(response, 'body.subject'));
|
|
32
32
|
},
|
|
33
33
|
extract: function extract(response) {
|
|
34
34
|
return _promise.default.resolve(response);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["require","_webexCore","
|
|
1
|
+
{"version":3,"names":["require","_webexCore","_presence","_interopRequireDefault","_config","registerInternalPlugin","Presence","payloadTransformer","predicates","name","direction","test","ctx","response","_promise","default","resolve","_has2","extract","transforms","fn","body","status","eventType","config"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport '@webex/internal-plugin-device';\n\nimport {registerInternalPlugin} from '@webex/webex-core';\nimport {has} from 'lodash';\n\nimport Presence from './presence';\nimport config from './config';\n\nregisterInternalPlugin('presence', Presence, {\n payloadTransformer: {\n predicates: [\n {\n name: 'normalizeSingleStatusResponse',\n direction: 'inbound',\n test(ctx, response) {\n // POST to /apheleia/api/v1/events\n return Promise.resolve(has(response, 'body.eventType') && has(response, 'body.subject'));\n },\n extract(response) {\n return Promise.resolve(response);\n },\n },\n ],\n transforms: [\n {\n name: 'normalizeSingleStatusResponse',\n direction: 'inbound',\n fn(ctx, response) {\n response.body.status = response.body.eventType;\n },\n },\n ],\n },\n config,\n});\n\nexport {default} from './presence';\n"],"mappings":";;;;;;;;;;;;;;;AAIAA,OAAA;AAEA,IAAAC,UAAA,GAAAD,OAAA;AAGA,IAAAE,SAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,OAAA,GAAAD,sBAAA,CAAAH,OAAA;AAVA;AACA;AACA;;AAUA,IAAAK,iCAAsB,EAAC,UAAU,EAAEC,iBAAQ,EAAE;EAC3CC,kBAAkB,EAAE;IAClBC,UAAU,EAAE,CACV;MACEC,IAAI,EAAE,+BAA+B;MACrCC,SAAS,EAAE,SAAS;MACpBC,IAAI,WAAAA,KAACC,GAAG,EAAEC,QAAQ,EAAE;QAClB;QACA,OAAOC,QAAA,CAAAC,OAAA,CAAQC,OAAO,CAAC,IAAAC,KAAA,CAAAF,OAAA,EAAIF,QAAQ,EAAE,gBAAgB,CAAC,IAAI,IAAAI,KAAA,CAAAF,OAAA,EAAIF,QAAQ,EAAE,cAAc,CAAC,CAAC;MAC1F,CAAC;MACDK,OAAO,WAAAA,QAACL,QAAQ,EAAE;QAChB,OAAOC,QAAA,CAAAC,OAAA,CAAQC,OAAO,CAACH,QAAQ,CAAC;MAClC;IACF,CAAC,CACF;IACDM,UAAU,EAAE,CACV;MACEV,IAAI,EAAE,+BAA+B;MACrCC,SAAS,EAAE,SAAS;MACpBU,EAAE,WAAAA,GAACR,GAAG,EAAEC,QAAQ,EAAE;QAChBA,QAAQ,CAACQ,IAAI,CAACC,MAAM,GAAGT,QAAQ,CAACQ,IAAI,CAACE,SAAS;MAChD;IACF,CAAC;EAEL,CAAC;EACDC,MAAM,EAANA;AACF,CAAC,CAAC"}
|
package/dist/presence-worker.js
CHANGED
|
@@ -14,7 +14,7 @@ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime-corejs2
|
|
|
14
14
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
|
|
15
15
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
|
|
16
16
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
17
|
-
var
|
|
17
|
+
var _debounce2 = _interopRequireDefault(require("lodash/debounce"));
|
|
18
18
|
var _constants = require("./constants");
|
|
19
19
|
/**
|
|
20
20
|
* Presence Worker
|
|
@@ -29,7 +29,7 @@ var PresenceWorker = /*#__PURE__*/function () {
|
|
|
29
29
|
*/
|
|
30
30
|
function PresenceWorker() {
|
|
31
31
|
(0, _classCallCheck2.default)(this, PresenceWorker);
|
|
32
|
-
(0, _defineProperty2.default)(this, "debouncedFetch", (0,
|
|
32
|
+
(0, _defineProperty2.default)(this, "debouncedFetch", (0, _debounce2.default)(this.checkFetchers, _constants.FETCH_DELAY));
|
|
33
33
|
this.presences = {}; // current presence objects; updated time
|
|
34
34
|
this.watchers = {}; // counter of visible presence-required objects
|
|
35
35
|
this.fetchers = {}; // waiting to get presence object
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_lodash","require","_constants","PresenceWorker","_classCallCheck2","default","_defineProperty2","debounce","checkFetchers","FETCH_DELAY","presences","watchers","fetchers","flights","campers","subscribers","_createClass2","key","value","initialize","webex","_this","internal","Error","mercury","connected","_promise","resolve","connect","then","on","APHELEIA_SUBSCRIPTION_UPDATE","subscriptionUpdate","bind","setInterval","groundskeeper","GROUNDSKEEPER_INTERVAL","event","data","subject","Date","getTime","presence","emitEvent","PRESENCE_UPDATE","type","ENVELOPE_TYPE","SUBSCRIPTION","payload","enqueue","id","now","UPDATE_PRESENCE_DELAY","debouncedFetch","dequeue","_this2","boarding","_assign","list","_keys","response","statusList","forEach","PRESENCE","checkCampers","_this3","_entries","camper","time","SUBSCRIPTION_DELAY","push","checkSubscriptions","_this4","renewIds","subscription","expiration","PREMATURE_EXPIRATION_SUBSCRIPTION_TIME","cleanPresences","_this5","trash","tenMinutesAgo","EXPIRED_PRESENCE_TIME","lastUpdated","length","DELETE","_this6","renewSubscriptions","ids","concat","_toConsumableArray2","subscribe","body","responses","responseCode","ttl","subscriptionTtl","status","DEFAULT_SUBSCRIPTION_TTL","exports"],"sources":["presence-worker.js"],"sourcesContent":["import {debounce} from 'lodash';\n\nimport {\n FETCH_DELAY,\n GROUNDSKEEPER_INTERVAL,\n SUBSCRIPTION_DELAY,\n UPDATE_PRESENCE_DELAY,\n EXPIRED_PRESENCE_TIME,\n PREMATURE_EXPIRATION_SUBSCRIPTION_TIME,\n DEFAULT_SUBSCRIPTION_TTL,\n APHELEIA_SUBSCRIPTION_UPDATE,\n PRESENCE_UPDATE,\n ENVELOPE_TYPE,\n} from './constants';\n\n/**\n * Presence Worker\n * Manages fetches and subscriptions for presence\n * @class\n */\nexport default class PresenceWorker {\n /**\n * Constructs a presence worker to execute and\n * maintain tasks related to presence upkeep.\n * @returns {undefined}\n */\n constructor() {\n this.presences = {}; // current presence objects; updated time\n this.watchers = {}; // counter of visible presence-required objects\n this.fetchers = {}; // waiting to get presence object\n this.flights = {}; // in flight to get presence object\n this.campers = {}; // waiting to subscribe; updated time\n this.subscribers = {}; // current subscriptions; expiration time\n }\n\n /**\n * Connect to the mercury for presence and starts worker.\n * @param {object} webex\n * @returns {undefined}\n */\n initialize(webex) {\n if (!webex || !webex.internal) {\n throw new Error('Must initialize Presence Worker with webex!');\n }\n\n this.webex = webex;\n\n const mercury = this.webex.internal.mercury.connected\n ? Promise.resolve()\n : this.webex.internal.mercury.connect();\n\n mercury.then(() => {\n this.webex.internal.mercury.on(\n APHELEIA_SUBSCRIPTION_UPDATE,\n this.subscriptionUpdate.bind(this)\n );\n });\n\n setInterval(this.groundskeeper.bind(this), GROUNDSKEEPER_INTERVAL);\n }\n\n /**\n * Trigger a subscription update event.\n * @param {string} event\n * @returns {undefined}\n */\n subscriptionUpdate(event) {\n this.presences[event.data.subject] = new Date().getTime();\n\n this.webex.internal.presence.emitEvent(PRESENCE_UPDATE, {\n type: ENVELOPE_TYPE.SUBSCRIPTION,\n payload: event.data,\n });\n }\n\n /**\n * Retrieves and subscribes to a user's presence.\n * @param {string} id\n * @returns {undefined}\n */\n enqueue(id) {\n const now = new Date().getTime();\n\n if (this.watchers[id]) {\n this.watchers[id] += 1;\n } else {\n this.watchers[id] = 1;\n }\n\n if (this.subscribers[id]) {\n return;\n }\n\n if (!this.campers[id]) {\n this.campers[id] = now;\n }\n\n // Retrieve presence if:\n // not in flight or\n // don't already have the presence or\n // presence has gone stale\n if (\n !this.flights[id] &&\n (!this.presences[id] || this.presences[id] < now - UPDATE_PRESENCE_DELAY)\n ) {\n this.fetchers[id] = id;\n this.debouncedFetch();\n }\n }\n\n /**\n * Retract from subscribing to a user's presence.\n * @param {string} id\n * @returns {undefined}\n */\n dequeue(id) {\n if (this.watchers[id]) {\n this.watchers[id] -= 1;\n\n if (this.watchers[id] <= 0) {\n delete this.watchers[id];\n delete this.fetchers[id];\n delete this.campers[id];\n }\n }\n }\n\n /**\n * Retrieve users' presences.\n * @returns {undefined}\n */\n checkFetchers() {\n const boarding = this.fetchers;\n\n Object.assign(this.flights, boarding);\n this.fetchers = {};\n\n this.webex.internal.presence.list(Object.keys(boarding)).then((response) => {\n const now = new Date().getTime();\n\n response.statusList.forEach((presence) => {\n const id = presence.subject;\n\n delete this.flights[id];\n this.presences[id] = now;\n });\n\n this.webex.internal.presence.emitEvent(PRESENCE_UPDATE, {\n type: ENVELOPE_TYPE.PRESENCE,\n payload: response,\n });\n });\n }\n\n debouncedFetch = debounce(this.checkFetchers, FETCH_DELAY);\n\n /**\n * Determine if we should subscribe to users' presences.\n * @returns {Array}: User ids to subscribe.\n */\n checkCampers() {\n const now = new Date().getTime();\n const subscribers = [];\n\n Object.entries(this.campers).forEach((camper) => {\n const id = camper[0];\n const time = camper[1];\n\n // Subscribe if they've been camping for a minute\n if (time < now - SUBSCRIPTION_DELAY) {\n delete this.campers[id];\n this.subscribers[id] = null;\n subscribers.push(id);\n }\n });\n\n return subscribers;\n }\n\n /**\n * Determine if we should re-subscribe or remove users' subscriptions.\n * @returns {Array}: User ids to re-subscribe.\n */\n checkSubscriptions() {\n const now = new Date().getTime();\n\n const renewIds = [];\n\n Object.entries(this.subscribers).forEach((subscription) => {\n const id = subscription[0];\n const expiration = subscription[1];\n\n if (expiration) {\n // Renew subscription if they're about to expire\n if (this.watchers[id] && now > expiration - PREMATURE_EXPIRATION_SUBSCRIPTION_TIME) {\n renewIds.push(id);\n } else if (now > expiration) {\n delete this.subscribers[id];\n }\n }\n });\n\n return renewIds;\n }\n\n /**\n * Remove expired presence objects.\n * @returns {undefined}\n */\n cleanPresences() {\n const trash = [];\n const tenMinutesAgo = new Date().getTime() - EXPIRED_PRESENCE_TIME;\n\n Object.entries(this.presences).forEach((presence) => {\n const id = presence[0];\n const lastUpdated = presence[1];\n\n // Delete the object if it is stale\n if (lastUpdated < tenMinutesAgo) {\n delete this.presences[id];\n trash.push(id);\n }\n });\n\n // Tells client to delete it too\n if (trash.length) {\n this.webex.internal.presence.emitEvent(PRESENCE_UPDATE, {\n type: ENVELOPE_TYPE.DELETE,\n payload: trash,\n });\n }\n }\n\n /**\n * Execute chores on an interval.\n * Checks if we should make new subscribe,\n * checks if we should re-subscribe,\n * removes expired subscriptions,\n * removes expired presence objects.\n * @returns {undefined}\n */\n groundskeeper() {\n const campers = this.checkCampers();\n const renewSubscriptions = this.checkSubscriptions();\n\n const ids = [...campers, ...renewSubscriptions];\n\n if (ids.length) {\n this.webex.internal.presence.subscribe(ids).then((body) => {\n const now = new Date().getTime();\n\n body.responses.forEach((response) => {\n if (response.responseCode === 200) {\n const ttl = response.subscriptionTtl * 1000;\n\n this.subscribers[response.subject] = now + ttl;\n this.presences[response.status.subject] = now;\n } else {\n // If it errored for any reason, set the ttl so we clean it out eventually\n this.subscribers[response.subject] = now + DEFAULT_SUBSCRIPTION_TTL;\n }\n });\n });\n }\n\n this.cleanPresences();\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_constants","require","PresenceWorker","_classCallCheck2","default","_defineProperty2","_debounce2","checkFetchers","FETCH_DELAY","presences","watchers","fetchers","flights","campers","subscribers","_createClass2","key","value","initialize","webex","_this","internal","Error","mercury","connected","_promise","resolve","connect","then","on","APHELEIA_SUBSCRIPTION_UPDATE","subscriptionUpdate","bind","setInterval","groundskeeper","GROUNDSKEEPER_INTERVAL","event","data","subject","Date","getTime","presence","emitEvent","PRESENCE_UPDATE","type","ENVELOPE_TYPE","SUBSCRIPTION","payload","enqueue","id","now","UPDATE_PRESENCE_DELAY","debouncedFetch","dequeue","_this2","boarding","_assign","list","_keys","response","statusList","forEach","PRESENCE","checkCampers","_this3","_entries","camper","time","SUBSCRIPTION_DELAY","push","checkSubscriptions","_this4","renewIds","subscription","expiration","PREMATURE_EXPIRATION_SUBSCRIPTION_TIME","cleanPresences","_this5","trash","tenMinutesAgo","EXPIRED_PRESENCE_TIME","lastUpdated","length","DELETE","_this6","renewSubscriptions","ids","concat","_toConsumableArray2","subscribe","body","responses","responseCode","ttl","subscriptionTtl","status","DEFAULT_SUBSCRIPTION_TTL","exports"],"sources":["presence-worker.js"],"sourcesContent":["import {debounce} from 'lodash';\n\nimport {\n FETCH_DELAY,\n GROUNDSKEEPER_INTERVAL,\n SUBSCRIPTION_DELAY,\n UPDATE_PRESENCE_DELAY,\n EXPIRED_PRESENCE_TIME,\n PREMATURE_EXPIRATION_SUBSCRIPTION_TIME,\n DEFAULT_SUBSCRIPTION_TTL,\n APHELEIA_SUBSCRIPTION_UPDATE,\n PRESENCE_UPDATE,\n ENVELOPE_TYPE,\n} from './constants';\n\n/**\n * Presence Worker\n * Manages fetches and subscriptions for presence\n * @class\n */\nexport default class PresenceWorker {\n /**\n * Constructs a presence worker to execute and\n * maintain tasks related to presence upkeep.\n * @returns {undefined}\n */\n constructor() {\n this.presences = {}; // current presence objects; updated time\n this.watchers = {}; // counter of visible presence-required objects\n this.fetchers = {}; // waiting to get presence object\n this.flights = {}; // in flight to get presence object\n this.campers = {}; // waiting to subscribe; updated time\n this.subscribers = {}; // current subscriptions; expiration time\n }\n\n /**\n * Connect to the mercury for presence and starts worker.\n * @param {object} webex\n * @returns {undefined}\n */\n initialize(webex) {\n if (!webex || !webex.internal) {\n throw new Error('Must initialize Presence Worker with webex!');\n }\n\n this.webex = webex;\n\n const mercury = this.webex.internal.mercury.connected\n ? Promise.resolve()\n : this.webex.internal.mercury.connect();\n\n mercury.then(() => {\n this.webex.internal.mercury.on(\n APHELEIA_SUBSCRIPTION_UPDATE,\n this.subscriptionUpdate.bind(this)\n );\n });\n\n setInterval(this.groundskeeper.bind(this), GROUNDSKEEPER_INTERVAL);\n }\n\n /**\n * Trigger a subscription update event.\n * @param {string} event\n * @returns {undefined}\n */\n subscriptionUpdate(event) {\n this.presences[event.data.subject] = new Date().getTime();\n\n this.webex.internal.presence.emitEvent(PRESENCE_UPDATE, {\n type: ENVELOPE_TYPE.SUBSCRIPTION,\n payload: event.data,\n });\n }\n\n /**\n * Retrieves and subscribes to a user's presence.\n * @param {string} id\n * @returns {undefined}\n */\n enqueue(id) {\n const now = new Date().getTime();\n\n if (this.watchers[id]) {\n this.watchers[id] += 1;\n } else {\n this.watchers[id] = 1;\n }\n\n if (this.subscribers[id]) {\n return;\n }\n\n if (!this.campers[id]) {\n this.campers[id] = now;\n }\n\n // Retrieve presence if:\n // not in flight or\n // don't already have the presence or\n // presence has gone stale\n if (\n !this.flights[id] &&\n (!this.presences[id] || this.presences[id] < now - UPDATE_PRESENCE_DELAY)\n ) {\n this.fetchers[id] = id;\n this.debouncedFetch();\n }\n }\n\n /**\n * Retract from subscribing to a user's presence.\n * @param {string} id\n * @returns {undefined}\n */\n dequeue(id) {\n if (this.watchers[id]) {\n this.watchers[id] -= 1;\n\n if (this.watchers[id] <= 0) {\n delete this.watchers[id];\n delete this.fetchers[id];\n delete this.campers[id];\n }\n }\n }\n\n /**\n * Retrieve users' presences.\n * @returns {undefined}\n */\n checkFetchers() {\n const boarding = this.fetchers;\n\n Object.assign(this.flights, boarding);\n this.fetchers = {};\n\n this.webex.internal.presence.list(Object.keys(boarding)).then((response) => {\n const now = new Date().getTime();\n\n response.statusList.forEach((presence) => {\n const id = presence.subject;\n\n delete this.flights[id];\n this.presences[id] = now;\n });\n\n this.webex.internal.presence.emitEvent(PRESENCE_UPDATE, {\n type: ENVELOPE_TYPE.PRESENCE,\n payload: response,\n });\n });\n }\n\n debouncedFetch = debounce(this.checkFetchers, FETCH_DELAY);\n\n /**\n * Determine if we should subscribe to users' presences.\n * @returns {Array}: User ids to subscribe.\n */\n checkCampers() {\n const now = new Date().getTime();\n const subscribers = [];\n\n Object.entries(this.campers).forEach((camper) => {\n const id = camper[0];\n const time = camper[1];\n\n // Subscribe if they've been camping for a minute\n if (time < now - SUBSCRIPTION_DELAY) {\n delete this.campers[id];\n this.subscribers[id] = null;\n subscribers.push(id);\n }\n });\n\n return subscribers;\n }\n\n /**\n * Determine if we should re-subscribe or remove users' subscriptions.\n * @returns {Array}: User ids to re-subscribe.\n */\n checkSubscriptions() {\n const now = new Date().getTime();\n\n const renewIds = [];\n\n Object.entries(this.subscribers).forEach((subscription) => {\n const id = subscription[0];\n const expiration = subscription[1];\n\n if (expiration) {\n // Renew subscription if they're about to expire\n if (this.watchers[id] && now > expiration - PREMATURE_EXPIRATION_SUBSCRIPTION_TIME) {\n renewIds.push(id);\n } else if (now > expiration) {\n delete this.subscribers[id];\n }\n }\n });\n\n return renewIds;\n }\n\n /**\n * Remove expired presence objects.\n * @returns {undefined}\n */\n cleanPresences() {\n const trash = [];\n const tenMinutesAgo = new Date().getTime() - EXPIRED_PRESENCE_TIME;\n\n Object.entries(this.presences).forEach((presence) => {\n const id = presence[0];\n const lastUpdated = presence[1];\n\n // Delete the object if it is stale\n if (lastUpdated < tenMinutesAgo) {\n delete this.presences[id];\n trash.push(id);\n }\n });\n\n // Tells client to delete it too\n if (trash.length) {\n this.webex.internal.presence.emitEvent(PRESENCE_UPDATE, {\n type: ENVELOPE_TYPE.DELETE,\n payload: trash,\n });\n }\n }\n\n /**\n * Execute chores on an interval.\n * Checks if we should make new subscribe,\n * checks if we should re-subscribe,\n * removes expired subscriptions,\n * removes expired presence objects.\n * @returns {undefined}\n */\n groundskeeper() {\n const campers = this.checkCampers();\n const renewSubscriptions = this.checkSubscriptions();\n\n const ids = [...campers, ...renewSubscriptions];\n\n if (ids.length) {\n this.webex.internal.presence.subscribe(ids).then((body) => {\n const now = new Date().getTime();\n\n body.responses.forEach((response) => {\n if (response.responseCode === 200) {\n const ttl = response.subscriptionTtl * 1000;\n\n this.subscribers[response.subject] = now + ttl;\n this.presences[response.status.subject] = now;\n } else {\n // If it errored for any reason, set the ttl so we clean it out eventually\n this.subscribers[response.subject] = now + DEFAULT_SUBSCRIPTION_TTL;\n }\n });\n });\n }\n\n this.cleanPresences();\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAEA,IAAAA,UAAA,GAAAC,OAAA;AAaA;AACA;AACA;AACA;AACA;AAJA,IAKqBC,cAAc;EACjC;AACF;AACA;AACA;AACA;EACE,SAAAA,eAAA,EAAc;IAAA,IAAAC,gBAAA,CAAAC,OAAA,QAAAF,cAAA;IAAA,IAAAG,gBAAA,CAAAD,OAAA,0BAgIG,IAAAE,UAAA,CAAAF,OAAA,EAAS,IAAI,CAACG,aAAa,EAAEC,sBAAW,CAAC;IA/HxD,IAAI,CAACC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;IACrB,IAAI,CAACC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;IACpB,IAAI,CAACC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;IACpB,IAAI,CAACC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;IACnB,IAAI,CAACC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;IACnB,IAAI,CAACC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC;EACzB;;EAEA;AACF;AACA;AACA;AACA;EAJE,IAAAC,aAAA,CAAAX,OAAA,EAAAF,cAAA;IAAAc,GAAA;IAAAC,KAAA,EAKA,SAAAC,WAAWC,KAAK,EAAE;MAAA,IAAAC,KAAA;MAChB,IAAI,CAACD,KAAK,IAAI,CAACA,KAAK,CAACE,QAAQ,EAAE;QAC7B,MAAM,IAAIC,KAAK,CAAC,6CAA6C,CAAC;MAChE;MAEA,IAAI,CAACH,KAAK,GAAGA,KAAK;MAElB,IAAMI,OAAO,GAAG,IAAI,CAACJ,KAAK,CAACE,QAAQ,CAACE,OAAO,CAACC,SAAS,GACjDC,QAAA,CAAArB,OAAA,CAAQsB,OAAO,EAAE,GACjB,IAAI,CAACP,KAAK,CAACE,QAAQ,CAACE,OAAO,CAACI,OAAO,EAAE;MAEzCJ,OAAO,CAACK,IAAI,CAAC,YAAM;QACjBR,KAAI,CAACD,KAAK,CAACE,QAAQ,CAACE,OAAO,CAACM,EAAE,CAC5BC,uCAA4B,EAC5BV,KAAI,CAACW,kBAAkB,CAACC,IAAI,CAACZ,KAAI,CAAC,CACnC;MACH,CAAC,CAAC;MAEFa,WAAW,CAAC,IAAI,CAACC,aAAa,CAACF,IAAI,CAAC,IAAI,CAAC,EAAEG,iCAAsB,CAAC;IACpE;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAnB,GAAA;IAAAC,KAAA,EAKA,SAAAc,mBAAmBK,KAAK,EAAE;MACxB,IAAI,CAAC3B,SAAS,CAAC2B,KAAK,CAACC,IAAI,CAACC,OAAO,CAAC,GAAG,IAAIC,IAAI,EAAE,CAACC,OAAO,EAAE;MAEzD,IAAI,CAACrB,KAAK,CAACE,QAAQ,CAACoB,QAAQ,CAACC,SAAS,CAACC,0BAAe,EAAE;QACtDC,IAAI,EAAEC,wBAAa,CAACC,YAAY;QAChCC,OAAO,EAAEX,KAAK,CAACC;MACjB,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAArB,GAAA;IAAAC,KAAA,EAKA,SAAA+B,QAAQC,EAAE,EAAE;MACV,IAAMC,GAAG,GAAG,IAAIX,IAAI,EAAE,CAACC,OAAO,EAAE;MAEhC,IAAI,IAAI,CAAC9B,QAAQ,CAACuC,EAAE,CAAC,EAAE;QACrB,IAAI,CAACvC,QAAQ,CAACuC,EAAE,CAAC,IAAI,CAAC;MACxB,CAAC,MAAM;QACL,IAAI,CAACvC,QAAQ,CAACuC,EAAE,CAAC,GAAG,CAAC;MACvB;MAEA,IAAI,IAAI,CAACnC,WAAW,CAACmC,EAAE,CAAC,EAAE;QACxB;MACF;MAEA,IAAI,CAAC,IAAI,CAACpC,OAAO,CAACoC,EAAE,CAAC,EAAE;QACrB,IAAI,CAACpC,OAAO,CAACoC,EAAE,CAAC,GAAGC,GAAG;MACxB;;MAEA;MACA;MACA;MACA;MACA,IACE,CAAC,IAAI,CAACtC,OAAO,CAACqC,EAAE,CAAC,KAChB,CAAC,IAAI,CAACxC,SAAS,CAACwC,EAAE,CAAC,IAAI,IAAI,CAACxC,SAAS,CAACwC,EAAE,CAAC,GAAGC,GAAG,GAAGC,gCAAqB,CAAC,EACzE;QACA,IAAI,CAACxC,QAAQ,CAACsC,EAAE,CAAC,GAAGA,EAAE;QACtB,IAAI,CAACG,cAAc,EAAE;MACvB;IACF;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAApC,GAAA;IAAAC,KAAA,EAKA,SAAAoC,QAAQJ,EAAE,EAAE;MACV,IAAI,IAAI,CAACvC,QAAQ,CAACuC,EAAE,CAAC,EAAE;QACrB,IAAI,CAACvC,QAAQ,CAACuC,EAAE,CAAC,IAAI,CAAC;QAEtB,IAAI,IAAI,CAACvC,QAAQ,CAACuC,EAAE,CAAC,IAAI,CAAC,EAAE;UAC1B,OAAO,IAAI,CAACvC,QAAQ,CAACuC,EAAE,CAAC;UACxB,OAAO,IAAI,CAACtC,QAAQ,CAACsC,EAAE,CAAC;UACxB,OAAO,IAAI,CAACpC,OAAO,CAACoC,EAAE,CAAC;QACzB;MACF;IACF;;IAEA;AACF;AACA;AACA;EAHE;IAAAjC,GAAA;IAAAC,KAAA,EAIA,SAAAV,cAAA,EAAgB;MAAA,IAAA+C,MAAA;MACd,IAAMC,QAAQ,GAAG,IAAI,CAAC5C,QAAQ;MAE9B,IAAA6C,OAAA,CAAApD,OAAA,EAAc,IAAI,CAACQ,OAAO,EAAE2C,QAAQ,CAAC;MACrC,IAAI,CAAC5C,QAAQ,GAAG,CAAC,CAAC;MAElB,IAAI,CAACQ,KAAK,CAACE,QAAQ,CAACoB,QAAQ,CAACgB,IAAI,CAAC,IAAAC,KAAA,CAAAtD,OAAA,EAAYmD,QAAQ,CAAC,CAAC,CAAC3B,IAAI,CAAC,UAAC+B,QAAQ,EAAK;QAC1E,IAAMT,GAAG,GAAG,IAAIX,IAAI,EAAE,CAACC,OAAO,EAAE;QAEhCmB,QAAQ,CAACC,UAAU,CAACC,OAAO,CAAC,UAACpB,QAAQ,EAAK;UACxC,IAAMQ,EAAE,GAAGR,QAAQ,CAACH,OAAO;UAE3B,OAAOgB,MAAI,CAAC1C,OAAO,CAACqC,EAAE,CAAC;UACvBK,MAAI,CAAC7C,SAAS,CAACwC,EAAE,CAAC,GAAGC,GAAG;QAC1B,CAAC,CAAC;QAEFI,MAAI,CAACnC,KAAK,CAACE,QAAQ,CAACoB,QAAQ,CAACC,SAAS,CAACC,0BAAe,EAAE;UACtDC,IAAI,EAAEC,wBAAa,CAACiB,QAAQ;UAC5Bf,OAAO,EAAEY;QACX,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ;EAAC;IAAA3C,GAAA;IAAAC,KAAA;IAID;AACF;AACA;AACA;IACE,SAAA8C,aAAA,EAAe;MAAA,IAAAC,MAAA;MACb,IAAMd,GAAG,GAAG,IAAIX,IAAI,EAAE,CAACC,OAAO,EAAE;MAChC,IAAM1B,WAAW,GAAG,EAAE;MAEtB,IAAAmD,QAAA,CAAA7D,OAAA,EAAe,IAAI,CAACS,OAAO,CAAC,CAACgD,OAAO,CAAC,UAACK,MAAM,EAAK;QAC/C,IAAMjB,EAAE,GAAGiB,MAAM,CAAC,CAAC,CAAC;QACpB,IAAMC,IAAI,GAAGD,MAAM,CAAC,CAAC,CAAC;;QAEtB;QACA,IAAIC,IAAI,GAAGjB,GAAG,GAAGkB,6BAAkB,EAAE;UACnC,OAAOJ,MAAI,CAACnD,OAAO,CAACoC,EAAE,CAAC;UACvBe,MAAI,CAAClD,WAAW,CAACmC,EAAE,CAAC,GAAG,IAAI;UAC3BnC,WAAW,CAACuD,IAAI,CAACpB,EAAE,CAAC;QACtB;MACF,CAAC,CAAC;MAEF,OAAOnC,WAAW;IACpB;;IAEA;AACF;AACA;AACA;EAHE;IAAAE,GAAA;IAAAC,KAAA,EAIA,SAAAqD,mBAAA,EAAqB;MAAA,IAAAC,MAAA;MACnB,IAAMrB,GAAG,GAAG,IAAIX,IAAI,EAAE,CAACC,OAAO,EAAE;MAEhC,IAAMgC,QAAQ,GAAG,EAAE;MAEnB,IAAAP,QAAA,CAAA7D,OAAA,EAAe,IAAI,CAACU,WAAW,CAAC,CAAC+C,OAAO,CAAC,UAACY,YAAY,EAAK;QACzD,IAAMxB,EAAE,GAAGwB,YAAY,CAAC,CAAC,CAAC;QAC1B,IAAMC,UAAU,GAAGD,YAAY,CAAC,CAAC,CAAC;QAElC,IAAIC,UAAU,EAAE;UACd;UACA,IAAIH,MAAI,CAAC7D,QAAQ,CAACuC,EAAE,CAAC,IAAIC,GAAG,GAAGwB,UAAU,GAAGC,iDAAsC,EAAE;YAClFH,QAAQ,CAACH,IAAI,CAACpB,EAAE,CAAC;UACnB,CAAC,MAAM,IAAIC,GAAG,GAAGwB,UAAU,EAAE;YAC3B,OAAOH,MAAI,CAACzD,WAAW,CAACmC,EAAE,CAAC;UAC7B;QACF;MACF,CAAC,CAAC;MAEF,OAAOuB,QAAQ;IACjB;;IAEA;AACF;AACA;AACA;EAHE;IAAAxD,GAAA;IAAAC,KAAA,EAIA,SAAA2D,eAAA,EAAiB;MAAA,IAAAC,MAAA;MACf,IAAMC,KAAK,GAAG,EAAE;MAChB,IAAMC,aAAa,GAAG,IAAIxC,IAAI,EAAE,CAACC,OAAO,EAAE,GAAGwC,gCAAqB;MAElE,IAAAf,QAAA,CAAA7D,OAAA,EAAe,IAAI,CAACK,SAAS,CAAC,CAACoD,OAAO,CAAC,UAACpB,QAAQ,EAAK;QACnD,IAAMQ,EAAE,GAAGR,QAAQ,CAAC,CAAC,CAAC;QACtB,IAAMwC,WAAW,GAAGxC,QAAQ,CAAC,CAAC,CAAC;;QAE/B;QACA,IAAIwC,WAAW,GAAGF,aAAa,EAAE;UAC/B,OAAOF,MAAI,CAACpE,SAAS,CAACwC,EAAE,CAAC;UACzB6B,KAAK,CAACT,IAAI,CAACpB,EAAE,CAAC;QAChB;MACF,CAAC,CAAC;;MAEF;MACA,IAAI6B,KAAK,CAACI,MAAM,EAAE;QAChB,IAAI,CAAC/D,KAAK,CAACE,QAAQ,CAACoB,QAAQ,CAACC,SAAS,CAACC,0BAAe,EAAE;UACtDC,IAAI,EAAEC,wBAAa,CAACsC,MAAM;UAC1BpC,OAAO,EAAE+B;QACX,CAAC,CAAC;MACJ;IACF;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EAPE;IAAA9D,GAAA;IAAAC,KAAA,EAQA,SAAAiB,cAAA,EAAgB;MAAA,IAAAkD,MAAA;MACd,IAAMvE,OAAO,GAAG,IAAI,CAACkD,YAAY,EAAE;MACnC,IAAMsB,kBAAkB,GAAG,IAAI,CAACf,kBAAkB,EAAE;MAEpD,IAAMgB,GAAG,MAAAC,MAAA,KAAAC,mBAAA,CAAApF,OAAA,EAAOS,OAAO,OAAA2E,mBAAA,CAAApF,OAAA,EAAKiF,kBAAkB,EAAC;MAE/C,IAAIC,GAAG,CAACJ,MAAM,EAAE;QACd,IAAI,CAAC/D,KAAK,CAACE,QAAQ,CAACoB,QAAQ,CAACgD,SAAS,CAACH,GAAG,CAAC,CAAC1D,IAAI,CAAC,UAAC8D,IAAI,EAAK;UACzD,IAAMxC,GAAG,GAAG,IAAIX,IAAI,EAAE,CAACC,OAAO,EAAE;UAEhCkD,IAAI,CAACC,SAAS,CAAC9B,OAAO,CAAC,UAACF,QAAQ,EAAK;YACnC,IAAIA,QAAQ,CAACiC,YAAY,KAAK,GAAG,EAAE;cACjC,IAAMC,GAAG,GAAGlC,QAAQ,CAACmC,eAAe,GAAG,IAAI;cAE3CV,MAAI,CAACtE,WAAW,CAAC6C,QAAQ,CAACrB,OAAO,CAAC,GAAGY,GAAG,GAAG2C,GAAG;cAC9CT,MAAI,CAAC3E,SAAS,CAACkD,QAAQ,CAACoC,MAAM,CAACzD,OAAO,CAAC,GAAGY,GAAG;YAC/C,CAAC,MAAM;cACL;cACAkC,MAAI,CAACtE,WAAW,CAAC6C,QAAQ,CAACrB,OAAO,CAAC,GAAGY,GAAG,GAAG8C,mCAAwB;YACrE;UACF,CAAC,CAAC;QACJ,CAAC,CAAC;MACJ;MAEA,IAAI,CAACpB,cAAc,EAAE;IACvB;EAAC;EAAA,OAAA1E,cAAA;AAAA;AAAA+F,OAAA,CAAA7F,OAAA,GAAAF,cAAA"}
|
package/dist/presence.js
CHANGED
package/package.json
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webex/internal-plugin-presence",
|
|
3
|
+
"version": "2.60.0",
|
|
3
4
|
"description": "",
|
|
4
5
|
"license": "MIT",
|
|
5
6
|
"main": "dist/index.js",
|
|
@@ -20,37 +21,35 @@
|
|
|
20
21
|
},
|
|
21
22
|
"devDependencies": {
|
|
22
23
|
"@babel/core": "^7.17.10",
|
|
23
|
-
"@webex/babel-config-legacy": "
|
|
24
|
-
"@webex/eslint-config-legacy": "
|
|
25
|
-
"@webex/jest-config-legacy": "
|
|
26
|
-
"@webex/legacy-tools": "
|
|
27
|
-
"@webex/test-helper-chai": "
|
|
28
|
-
"@webex/test-helper-mocha": "
|
|
29
|
-
"@webex/test-helper-mock-webex": "
|
|
30
|
-
"@webex/test-helper-test-users": "
|
|
24
|
+
"@webex/babel-config-legacy": "2.60.0",
|
|
25
|
+
"@webex/eslint-config-legacy": "2.60.0",
|
|
26
|
+
"@webex/jest-config-legacy": "2.60.0",
|
|
27
|
+
"@webex/legacy-tools": "2.60.0",
|
|
28
|
+
"@webex/test-helper-chai": "2.60.0",
|
|
29
|
+
"@webex/test-helper-mocha": "2.60.0",
|
|
30
|
+
"@webex/test-helper-mock-webex": "2.60.0",
|
|
31
|
+
"@webex/test-helper-test-users": "2.60.0",
|
|
31
32
|
"eslint": "^8.24.0",
|
|
32
33
|
"prettier": "^2.7.1",
|
|
33
34
|
"sinon": "^9.2.4"
|
|
34
35
|
},
|
|
35
36
|
"dependencies": {
|
|
36
|
-
"@webex/internal-plugin-device": "
|
|
37
|
-
"@webex/internal-plugin-mercury": "
|
|
38
|
-
"@webex/test-helper-chai": "
|
|
39
|
-
"@webex/test-helper-mocha": "
|
|
40
|
-
"@webex/test-helper-mock-webex": "
|
|
41
|
-
"@webex/test-helper-test-users": "
|
|
42
|
-
"@webex/webex-core": "
|
|
37
|
+
"@webex/internal-plugin-device": "2.60.0",
|
|
38
|
+
"@webex/internal-plugin-mercury": "2.60.0",
|
|
39
|
+
"@webex/test-helper-chai": "2.60.0",
|
|
40
|
+
"@webex/test-helper-mocha": "2.60.0",
|
|
41
|
+
"@webex/test-helper-mock-webex": "2.60.0",
|
|
42
|
+
"@webex/test-helper-test-users": "2.60.0",
|
|
43
|
+
"@webex/webex-core": "2.60.0",
|
|
43
44
|
"lodash": "^4.17.21"
|
|
44
45
|
},
|
|
45
46
|
"scripts": {
|
|
46
47
|
"build": "yarn build:src",
|
|
47
48
|
"build:src": "webex-legacy-tools build -dest \"./dist\" -src \"./src\" -js -ts -maps",
|
|
48
|
-
"deploy:npm": "yarn npm publish",
|
|
49
49
|
"test": "yarn test:style && yarn test:unit && yarn test:integration && yarn test:browser",
|
|
50
50
|
"test:browser:broken": "webex-legacy-tools test --integration --unit --runner karma",
|
|
51
51
|
"test:integration": "webex-legacy-tools test --integration --runner mocha",
|
|
52
52
|
"test:style": "eslint ./src/**/*.*",
|
|
53
53
|
"test:unit": "webex-legacy-tools test --unit --runner jest"
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
}
|
|
54
|
+
}
|
|
55
|
+
}
|