@webex/plugin-rooms 3.0.0-beta.15 → 3.0.0-beta.16

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 CHANGED
@@ -1,26 +1,19 @@
1
1
  "use strict";
2
2
 
3
3
  var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
-
5
4
  var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
6
-
7
5
  _Object$defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
-
11
8
  exports.default = void 0;
12
-
13
9
  require("@webex/internal-plugin-conversation");
14
-
15
10
  require("@webex/internal-plugin-mercury");
16
-
17
11
  var _webexCore = require("@webex/webex-core");
18
-
19
12
  var _rooms = _interopRequireDefault(require("./rooms"));
20
-
21
13
  /*!
22
14
  * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
23
15
  */
16
+
24
17
  (0, _webexCore.registerPlugin)('rooms', _rooms.default);
25
18
  var _default = _rooms.default;
26
19
  exports.default = _default;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["registerPlugin","Rooms"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport '@webex/internal-plugin-conversation';\nimport '@webex/internal-plugin-mercury';\n\nimport {registerPlugin} from '@webex/webex-core';\n\nimport Rooms from './rooms';\n\nregisterPlugin('rooms', Rooms);\n\nexport default Rooms;\n"],"mappings":";;;;;;;;;;;;AAIA;;AACA;;AAEA;;AAEA;;AATA;AACA;AACA;AASA,IAAAA,yBAAA,EAAe,OAAf,EAAwBC,cAAxB;eAEeA,c"}
1
+ {"version":3,"names":["registerPlugin","Rooms"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport '@webex/internal-plugin-conversation';\nimport '@webex/internal-plugin-mercury';\n\nimport {registerPlugin} from '@webex/webex-core';\n\nimport Rooms from './rooms';\n\nregisterPlugin('rooms', Rooms);\n\nexport default Rooms;\n"],"mappings":";;;;;;;;AAIA;AACA;AAEA;AAEA;AATA;AACA;AACA;;AASA,IAAAA,yBAAc,EAAC,OAAO,EAAEC,cAAK,CAAC;AAAC,eAEhBA,cAAK;AAAA"}
package/dist/rooms.js CHANGED
@@ -1,60 +1,35 @@
1
1
  "use strict";
2
2
 
3
3
  var _Object$keys = require("@babel/runtime-corejs2/core-js/object/keys");
4
-
5
4
  var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols");
6
-
7
5
  var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
8
-
9
6
  var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors");
10
-
11
7
  var _Object$defineProperties = require("@babel/runtime-corejs2/core-js/object/define-properties");
12
-
13
8
  var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
14
-
15
9
  var _Array$from = require("@babel/runtime-corejs2/core-js/array/from");
16
-
17
10
  var _Symbol = require("@babel/runtime-corejs2/core-js/symbol");
18
-
19
11
  var _Symbol$iterator = require("@babel/runtime-corejs2/core-js/symbol/iterator");
20
-
21
12
  var _Array$isArray = require("@babel/runtime-corejs2/core-js/array/is-array");
22
-
23
13
  var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
24
-
25
14
  _Object$defineProperty(exports, "__esModule", {
26
15
  value: true
27
16
  });
28
-
29
17
  exports.default = void 0;
30
-
31
18
  var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
32
-
33
19
  var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
34
-
35
20
  var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
36
-
37
21
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
38
-
39
22
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
40
-
41
23
  var _cloneDeep2 = _interopRequireDefault(require("lodash/cloneDeep"));
42
-
43
24
  var _webexCore = require("@webex/webex-core");
44
-
45
25
  var _common = require("@webex/common");
46
-
47
26
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof _Symbol !== "undefined" && o[_Symbol$iterator] || o["@@iterator"]; if (!it) { if (_Array$isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
48
-
49
27
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return _Array$from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
50
-
51
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
52
-
28
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
53
29
  function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
54
-
55
30
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
56
-
57
31
  var debug = require('debug')('rooms');
32
+
58
33
  /**
59
34
  * @typedef {Object} RoomObject
60
35
  * @property {string} id - (server generated) Unique identifier for the room
@@ -74,8 +49,6 @@ var debug = require('debug')('rooms');
74
49
  * @class
75
50
  * @name Rooms
76
51
  */
77
-
78
-
79
52
  var Rooms = _webexCore.WebexPlugin.extend({
80
53
  /**
81
54
  * Register to listen for incoming rooms events
@@ -107,7 +80,6 @@ var Rooms = _webexCore.WebexPlugin.extend({
107
80
  */
108
81
  listen: function listen() {
109
82
  var _this = this;
110
-
111
83
  return (0, _common.createEventEnvelope)(this.webex, _common.SDK_EVENT.EXTERNAL.RESOURCE.ROOMS).then(function (envelope) {
112
84
  _this.eventEnvelope = envelope;
113
85
  return _this.webex.internal.mercury.connect().then(function () {
@@ -117,7 +89,6 @@ var Rooms = _webexCore.WebexPlugin.extend({
117
89
  });
118
90
  });
119
91
  },
120
-
121
92
  /**
122
93
  * Creates a new room. The authenticated user is automatically added as a
123
94
  * member of the room. See the {@link Memberships} API to learn how to add
@@ -148,7 +119,6 @@ var Rooms = _webexCore.WebexPlugin.extend({
148
119
  return res.body;
149
120
  });
150
121
  },
151
-
152
122
  /**
153
123
  * Returns a single room.
154
124
  * @instance
@@ -180,7 +150,6 @@ var Rooms = _webexCore.WebexPlugin.extend({
180
150
  return res.body.items || res.body;
181
151
  });
182
152
  },
183
-
184
153
  /**
185
154
  * Returns a list of rooms. In most cases the results will only contain rooms
186
155
  * that the authenticated user is a member of.
@@ -215,7 +184,6 @@ var Rooms = _webexCore.WebexPlugin.extend({
215
184
  */
216
185
  list: function list(options) {
217
186
  var _this2 = this;
218
-
219
187
  return this.request({
220
188
  service: 'hydra',
221
189
  resource: 'rooms/',
@@ -224,7 +192,6 @@ var Rooms = _webexCore.WebexPlugin.extend({
224
192
  return new _webexCore.Page(res, _this2.webex);
225
193
  });
226
194
  },
227
-
228
195
  /**
229
196
  * Returns a list of rooms with details about the data of the last
230
197
  * activity in the room, and the date of the users last presences in
@@ -271,57 +238,47 @@ var Rooms = _webexCore.WebexPlugin.extend({
271
238
  */
272
239
  listWithReadStatus: function listWithReadStatus() {
273
240
  var _arguments = arguments,
274
- _this3 = this;
275
-
241
+ _this3 = this;
276
242
  return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
277
243
  var maxRecent, now, options;
278
244
  return _regenerator.default.wrap(function _callee$(_context) {
279
- while (1) {
280
- switch (_context.prev = _context.next) {
281
- case 0:
282
- maxRecent = _arguments.length > 0 && _arguments[0] !== undefined ? _arguments[0] : 0;
283
- now = new Date();
284
- options = {
285
- activitiesLimit: 0,
286
- computeTitleIfEmpty: true,
287
- conversationsLimit: 1000,
288
- isActive: true
289
- };
290
-
291
- if (!(maxRecent > 0)) {
292
- _context.next = 8;
293
- break;
294
- }
295
-
296
- options.conversationsLimit = maxRecent;
297
- options.sinceDate = now.setDate(now.getDate() - 14);
245
+ while (1) switch (_context.prev = _context.next) {
246
+ case 0:
247
+ maxRecent = _arguments.length > 0 && _arguments[0] !== undefined ? _arguments[0] : 0;
248
+ now = new Date();
249
+ options = {
250
+ activitiesLimit: 0,
251
+ computeTitleIfEmpty: true,
252
+ conversationsLimit: 1000,
253
+ isActive: true
254
+ };
255
+ if (!(maxRecent > 0)) {
256
+ _context.next = 8;
257
+ break;
258
+ }
259
+ options.conversationsLimit = maxRecent;
260
+ options.sinceDate = now.setDate(now.getDate() - 14);
261
+ _context.next = 10;
262
+ break;
263
+ case 8:
264
+ if (!(maxRecent < 0 || maxRecent > 100)) {
298
265
  _context.next = 10;
299
266
  break;
300
-
301
- case 8:
302
- if (!(maxRecent < 0 || maxRecent > 100)) {
303
- _context.next = 10;
304
- break;
305
- }
306
-
307
- return _context.abrupt("return", _promise.default.reject(new Error('rooms.listWithReadStatus: ' + 'optional maxRecent parameter must be an integer between 1 and 100')));
308
-
309
- case 10:
310
- return _context.abrupt("return", _this3.webex.internal.services.waitForCatalog('postauth').then(function () {
311
- return _this3.webex.internal.conversation.list(options);
312
- }).then(function (conversations) {
313
- return buildRoomInfoList(_this3.webex, conversations);
314
- }));
315
-
316
- case 11:
317
- case "end":
318
- return _context.stop();
319
- }
267
+ }
268
+ return _context.abrupt("return", _promise.default.reject(new Error('rooms.listWithReadStatus: ' + 'optional maxRecent parameter must be an integer between 1 and 100')));
269
+ case 10:
270
+ return _context.abrupt("return", _this3.webex.internal.services.waitForCatalog('postauth').then(function () {
271
+ return _this3.webex.internal.conversation.list(options);
272
+ }).then(function (conversations) {
273
+ return buildRoomInfoList(_this3.webex, conversations);
274
+ }));
275
+ case 11:
276
+ case "end":
277
+ return _context.stop();
320
278
  }
321
279
  }, _callee);
322
280
  }))();
323
281
  },
324
-
325
282
  /**
326
283
  * Returns a single room object with details about the data of the last
327
284
  * activity in the room, and the date of the users last presence in
@@ -355,7 +312,6 @@ var Rooms = _webexCore.WebexPlugin.extend({
355
312
  */
356
313
  getWithReadStatus: function getWithReadStatus(roomId) {
357
314
  var _this4 = this;
358
-
359
315
  var deconstructedId = (0, _common.deconstructHydraId)(roomId);
360
316
  var conversation = {
361
317
  id: deconstructedId.id,
@@ -365,13 +321,11 @@ var Rooms = _webexCore.WebexPlugin.extend({
365
321
  return _this4.webex.internal.conversation.get(conversation, {
366
322
  computeTitleIfEmpty: true,
367
323
  activitiesLimit: 0 // don't send the whole history of activity
368
-
369
324
  }).then(function (convo) {
370
325
  return buildRoomInfo(_this4.webex, convo);
371
326
  });
372
327
  });
373
328
  },
374
-
375
329
  /**
376
330
  * Deletes a single room.
377
331
  * @instance
@@ -411,11 +365,9 @@ var Rooms = _webexCore.WebexPlugin.extend({
411
365
  if (res.statusCode === 204) {
412
366
  return undefined;
413
367
  }
414
-
415
368
  return res.body;
416
369
  });
417
370
  },
418
-
419
371
  /**
420
372
  * Used to update a single room's properties.
421
373
  * @instance
@@ -451,7 +403,6 @@ var Rooms = _webexCore.WebexPlugin.extend({
451
403
  return res.body;
452
404
  });
453
405
  },
454
-
455
406
  /**
456
407
  * This function is called when an internal membership events fires,
457
408
  * if the user registered for these events with the listen() function.
@@ -463,37 +414,30 @@ var Rooms = _webexCore.WebexPlugin.extend({
463
414
  */
464
415
  onWebexApiEvent: function onWebexApiEvent(event) {
465
416
  var activity = event.data.activity;
466
- /* eslint-disable no-case-declarations */
467
417
 
418
+ /* eslint-disable no-case-declarations */
468
419
  switch (activity.verb) {
469
420
  case _common.SDK_EVENT.INTERNAL.ACTIVITY_VERB.CREATE:
470
421
  var roomCreatedEvent = this.getRoomEvent(this.webex, activity, _common.SDK_EVENT.EXTERNAL.EVENT_TYPE.CREATED);
471
-
472
422
  if (roomCreatedEvent) {
473
423
  debug("room \"created\" payload: ".concat((0, _stringify.default)(roomCreatedEvent)));
474
424
  this.trigger(_common.SDK_EVENT.EXTERNAL.EVENT_TYPE.CREATED, roomCreatedEvent);
475
425
  }
476
-
477
426
  break;
478
-
479
427
  case _common.SDK_EVENT.INTERNAL.ACTIVITY_VERB.UPDATE:
480
428
  case _common.SDK_EVENT.INTERNAL.ACTIVITY_VERB.LOCK:
481
429
  case _common.SDK_EVENT.INTERNAL.ACTIVITY_VERB.UNLOCK:
482
430
  debug("generating a rooms:updated based on ".concat(activity.verb, " activity"));
483
431
  var roomUpdatedEvent = this.getRoomEvent(this.webex, activity, _common.SDK_EVENT.EXTERNAL.EVENT_TYPE.UPDATED);
484
-
485
432
  if (roomUpdatedEvent) {
486
433
  debug("room \"updated\" payload: ".concat((0, _stringify.default)(roomUpdatedEvent)));
487
434
  this.trigger(_common.SDK_EVENT.EXTERNAL.EVENT_TYPE.UPDATED, roomUpdatedEvent);
488
435
  }
489
-
490
436
  break;
491
-
492
437
  default:
493
438
  break;
494
439
  }
495
440
  },
496
-
497
441
  /**
498
442
  * Constructs the data object for an event on the rooms resource,
499
443
  * adhering to Hydra's Webhook data structure.
@@ -513,13 +457,11 @@ var Rooms = _webexCore.WebexPlugin.extend({
513
457
  sdkEvent.event = event;
514
458
  sdkEvent.data.created = activity.published;
515
459
  sdkEvent.actorId = (0, _common.buildHydraPersonId)(activity.actor.entryUUID, cluster);
516
-
517
460
  if (activity.object.id) {
518
461
  sdkEvent.data.id = (0, _common.buildHydraRoomId)(activity.object.id, cluster);
519
462
  } else {
520
463
  sdkEvent.data.id = (0, _common.buildHydraRoomId)(activity.target.id, cluster);
521
464
  }
522
-
523
465
  if (event === _common.SDK_EVENT.EXTERNAL.EVENT_TYPE.CREATED) {
524
466
  sdkEvent.data.creatorId = (0, _common.buildHydraPersonId)(activity.actor.entryUUID, cluster);
525
467
  sdkEvent.data.lastActivity = activity.published;
@@ -528,20 +470,18 @@ var Rooms = _webexCore.WebexPlugin.extend({
528
470
  // For some reason the tags are not in the object for an update activity
529
471
  tags = activity.target.tags;
530
472
  }
531
-
532
473
  if (activity.object.creatorUUID) {
533
474
  // This seems to be set in lock/unlock activities but not updated...
534
475
  debug("Found a creatorId: ".concat(activity.object.creatorUUID, " in a ").concat(activity.verb, " event"));
535
476
  sdkEvent.data.creatorId = (0, _common.buildHydraPersonId)(activity.object.creatorUUID, cluster);
536
- } // Webhook engine team sets this based on lastReadableActivityDate
477
+ }
478
+ // Webhook engine team sets this based on lastReadableActivityDate
537
479
  // in the activity.target object. See: hydra/HydraRoom.java#L51
538
480
  // This elements seems to be missing from the activity that the SDK is getting
539
481
  // sdkEvent.data.lastActivity = activity.target.lastReadableActivityDate;
540
-
541
482
  } else {
542
483
  throw new Error('unexpected event type');
543
484
  }
544
-
545
485
  sdkEvent.data.type = (0, _common.getHydraRoomType)(tags);
546
486
  sdkEvent.data.isLocked = tags.includes(_common.SDK_EVENT.INTERNAL.ACTIVITY_TAG.LOCKED);
547
487
  return sdkEvent;
@@ -550,9 +490,8 @@ var Rooms = _webexCore.WebexPlugin.extend({
550
490
  return null;
551
491
  }
552
492
  },
553
- version: "3.0.0-beta.15"
493
+ version: "3.0.0-beta.16"
554
494
  });
555
-
556
495
  var _default = Rooms;
557
496
  /**
558
497
  * Helper method to build a roomInfo object from a conversation object
@@ -560,9 +499,7 @@ var _default = Rooms;
560
499
  * @param {Conversation~ConversationObject} conversation
561
500
  * @returns {Promise<RoomInfoObject>}
562
501
  */
563
-
564
502
  exports.default = _default;
565
-
566
503
  function buildRoomInfo(_x, _x2) {
567
504
  return _buildRoomInfo.apply(this, arguments);
568
505
  }
@@ -572,90 +509,77 @@ function buildRoomInfo(_x, _x2) {
572
509
  * @param {Conversation~ConversationObjectList} conversations
573
510
  * @returns {Promise<RoomInfoList>}
574
511
  */
575
-
576
-
577
512
  function _buildRoomInfo() {
578
513
  _buildRoomInfo = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(webex, conversation) {
579
514
  var type, cluster, title, lastActivityDate, roomInfo;
580
515
  return _regenerator.default.wrap(function _callee2$(_context2) {
581
- while (1) {
582
- switch (_context2.prev = _context2.next) {
583
- case 0:
584
- _context2.prev = 0;
585
- type = (0, _common.getHydraRoomType)(conversation.tags);
586
- cluster = (0, _common.getHydraClusterString)(webex, conversation.url);
587
- title = conversation.displayName ? conversation.displayName : conversation.computedTitle;
588
- lastActivityDate = conversation.lastReadableActivityDate ? conversation.lastReadableActivityDate : conversation.lastRelevantActivityDate;
589
- roomInfo = _objectSpread(_objectSpread(_objectSpread({
590
- id: (0, _common.buildHydraRoomId)(conversation.id, cluster),
591
- type: type
592
- }, title && {
593
- title: conversation.displayName
594
- }), lastActivityDate && {
595
- lastActivityDate: lastActivityDate
596
- }), {}, {
597
- lastSeenActivityDate: conversation.lastSeenActivityDate ? conversation.lastSeenActivityDate : // If user has never been seen set the date to "a long time ago"
598
- new Date(0).toISOString()
599
- });
600
- return _context2.abrupt("return", _promise.default.resolve(roomInfo));
601
-
602
- case 9:
603
- _context2.prev = 9;
604
- _context2.t0 = _context2["catch"](0);
605
- return _context2.abrupt("return", _promise.default.reject(_context2.t0));
606
-
607
- case 12:
608
- case "end":
609
- return _context2.stop();
610
- }
516
+ while (1) switch (_context2.prev = _context2.next) {
517
+ case 0:
518
+ _context2.prev = 0;
519
+ type = (0, _common.getHydraRoomType)(conversation.tags);
520
+ cluster = (0, _common.getHydraClusterString)(webex, conversation.url);
521
+ title = conversation.displayName ? conversation.displayName : conversation.computedTitle;
522
+ lastActivityDate = conversation.lastReadableActivityDate ? conversation.lastReadableActivityDate : conversation.lastRelevantActivityDate;
523
+ roomInfo = _objectSpread(_objectSpread(_objectSpread({
524
+ id: (0, _common.buildHydraRoomId)(conversation.id, cluster),
525
+ type: type
526
+ }, title && {
527
+ title: conversation.displayName
528
+ }), lastActivityDate && {
529
+ lastActivityDate: lastActivityDate
530
+ }), {}, {
531
+ lastSeenActivityDate: conversation.lastSeenActivityDate ? conversation.lastSeenActivityDate :
532
+ // If user has never been seen set the date to "a long time ago"
533
+ new Date(0).toISOString()
534
+ });
535
+ return _context2.abrupt("return", _promise.default.resolve(roomInfo));
536
+ case 9:
537
+ _context2.prev = 9;
538
+ _context2.t0 = _context2["catch"](0);
539
+ return _context2.abrupt("return", _promise.default.reject(_context2.t0));
540
+ case 12:
541
+ case "end":
542
+ return _context2.stop();
611
543
  }
612
544
  }, _callee2, null, [[0, 9]]);
613
545
  }));
614
546
  return _buildRoomInfo.apply(this, arguments);
615
547
  }
616
-
617
548
  function buildRoomInfoList(_x3, _x4) {
618
549
  return _buildRoomInfoList.apply(this, arguments);
619
550
  }
620
-
621
551
  function _buildRoomInfoList() {
622
552
  _buildRoomInfoList = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(webex, conversations) {
623
553
  var roomReadInfo, roomInfoPromises, _iterator, _step, conversation;
624
-
625
554
  return _regenerator.default.wrap(function _callee3$(_context3) {
626
- while (1) {
627
- switch (_context3.prev = _context3.next) {
628
- case 0:
629
- // Convert each Conversation into a roomInfo object
630
- roomReadInfo = {
631
- items: []
632
- };
633
- roomInfoPromises = [];
634
- _iterator = _createForOfIteratorHelper(conversations);
635
-
636
- try {
637
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
638
- conversation = _step.value;
639
- roomInfoPromises.push(buildRoomInfo(webex, conversation));
640
- }
641
- } catch (err) {
642
- _iterator.e(err);
643
- } finally {
644
- _iterator.f();
555
+ while (1) switch (_context3.prev = _context3.next) {
556
+ case 0:
557
+ // Convert each Conversation into a roomInfo object
558
+ roomReadInfo = {
559
+ items: []
560
+ };
561
+ roomInfoPromises = [];
562
+ _iterator = _createForOfIteratorHelper(conversations);
563
+ try {
564
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
565
+ conversation = _step.value;
566
+ roomInfoPromises.push(buildRoomInfo(webex, conversation));
645
567
  }
646
-
647
- return _context3.abrupt("return", _promise.default.all(roomInfoPromises).then(function (roomInfoList) {
648
- roomReadInfo.items = roomInfoList;
649
- roomReadInfo.items.sort(function (a, b) {
650
- return a.lastActivityDate < b.lastActivityDate ? 1 : -1;
651
- });
652
- return roomReadInfo;
653
- }));
654
-
655
- case 5:
656
- case "end":
657
- return _context3.stop();
658
- }
568
+ } catch (err) {
569
+ _iterator.e(err);
570
+ } finally {
571
+ _iterator.f();
572
+ }
573
+ return _context3.abrupt("return", _promise.default.all(roomInfoPromises).then(function (roomInfoList) {
574
+ roomReadInfo.items = roomInfoList;
575
+ roomReadInfo.items.sort(function (a, b) {
576
+ return a.lastActivityDate < b.lastActivityDate ? 1 : -1;
577
+ });
578
+ return roomReadInfo;
579
+ }));
580
+ case 5:
581
+ case "end":
582
+ return _context3.stop();
659
583
  }
660
584
  }, _callee3);
661
585
  }));
package/dist/rooms.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["debug","require","Rooms","WebexPlugin","extend","listen","createEventEnvelope","webex","SDK_EVENT","EXTERNAL","RESOURCE","ROOMS","then","envelope","eventEnvelope","internal","mercury","connect","listenTo","INTERNAL","WEBEX_ACTIVITY","event","onWebexApiEvent","create","room","request","method","service","resource","body","res","get","options","id","qs","items","list","Page","listWithReadStatus","maxRecent","now","Date","activitiesLimit","computeTitleIfEmpty","conversationsLimit","isActive","sinceDate","setDate","getDate","reject","Error","services","waitForCatalog","conversation","conversations","buildRoomInfoList","getWithReadStatus","roomId","deconstructedId","deconstructHydraId","cluster","convo","buildRoomInfo","remove","statusCode","undefined","update","activity","data","verb","ACTIVITY_VERB","CREATE","roomCreatedEvent","getRoomEvent","EVENT_TYPE","CREATED","trigger","UPDATE","LOCK","UNLOCK","roomUpdatedEvent","UPDATED","sdkEvent","getHydraClusterString","url","tags","object","created","published","actorId","buildHydraPersonId","actor","entryUUID","buildHydraRoomId","target","creatorId","lastActivity","creatorUUID","type","getHydraRoomType","isLocked","includes","ACTIVITY_TAG","LOCKED","e","logger","error","message","title","displayName","computedTitle","lastActivityDate","lastReadableActivityDate","lastRelevantActivityDate","roomInfo","lastSeenActivityDate","toISOString","resolve","roomReadInfo","roomInfoPromises","push","all","roomInfoList","sort","a","b"],"sources":["rooms.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {WebexPlugin, Page} from '@webex/webex-core';\nimport {cloneDeep} from 'lodash';\nimport {\n SDK_EVENT,\n createEventEnvelope,\n buildHydraPersonId,\n buildHydraRoomId,\n getHydraClusterString,\n getHydraRoomType,\n deconstructHydraId,\n} from '@webex/common';\n\nconst debug = require('debug')('rooms');\n\n/**\n * @typedef {Object} RoomObject\n * @property {string} id - (server generated) Unique identifier for the room\n * @property {string} title - The display name for the room. All room members\n * will see the title so make it something good\n * @property {string} teamId - (optional) The ID of the team to which the room\n * belongs\n * @property {isoDate} created - (server generated) The date and time that the\n * room was created\n */\n\n/**\n * Rooms are virtual meeting places for getting stuff done. This resource\n * represents the room itself. Check out the {@link Memberships} API to learn\n * how to add and remove people from rooms and the {@link Messages} API for\n * posting and managing content.\n * @class\n * @name Rooms\n */\nconst Rooms = WebexPlugin.extend({\n /**\n * Register to listen for incoming rooms events\n * This is an alternate approach to registering for rooms webhooks.\n * The events passed to any registered handlers will be similar to the webhook JSON,\n * but will omit webhook specific fields such as name, secret, url, etc.\n * To utilize the `listen()` method, the authorization token used\n * will need to have `spark:all` and `spark:kms` scopes enabled.\n * Note that by configuring your application to enable or disable `spark:all`\n * via its configuration page will also enable or disable `spark:kms`.\n * See the <a href=\"https://webex.github.io/webex-js-sdk/samples/browser-socket/\">Sample App</a>\n * for more details.\n * @instance\n * @memberof Rooms\n * @returns {Promise}\n * @example\n * webex.rooms.listen()\n * .then(() => {\n * console.log('listening to room events');\n * webex.rooms.on('created', (event) => console.log(`Got a room:created event:\\n${event}`);\n * webex.rooms.on('updated', (event) => console.log(`Got a room:updated event:\\n${event}`);\n * })\n * .catch((e) => console.error(`Unable to register for room events: ${e}`));\n * // Some app logic...\n * // WHen it is time to cleanup\n * webex.rooms.stopListening();\n * webex.rooms.off('created');\n * webex.rooms.off('updated');\n */\n listen() {\n return createEventEnvelope(this.webex, SDK_EVENT.EXTERNAL.RESOURCE.ROOMS).then((envelope) => {\n this.eventEnvelope = envelope;\n\n return this.webex.internal.mercury.connect().then(() => {\n this.listenTo(this.webex.internal.mercury, SDK_EVENT.INTERNAL.WEBEX_ACTIVITY, (event) =>\n this.onWebexApiEvent(event)\n );\n });\n });\n },\n\n /**\n * Creates a new room. The authenticated user is automatically added as a\n * member of the room. See the {@link Memberships} API to learn how to add\n * more people to the room.\n * @instance\n * @memberof Rooms\n * @param {RoomObject} room\n * @returns {Promise<RoomObject>}\n * @example\n * webex.rooms.create({title: 'Create Room Example'})\n * .then(function(room) {\n * var assert = require('assert')\n * assert(typeof room.created === 'string');\n * assert(typeof room.id === 'string');\n * assert(room.title === 'Create Room Example');\n * console.log(room.title);\n * return 'success';\n * });\n * // => success\n */\n create(room) {\n return this.request({\n method: 'POST',\n service: 'hydra',\n resource: 'rooms',\n body: room,\n }).then((res) => res.body);\n },\n\n /**\n * Returns a single room.\n * @instance\n * @memberof Rooms\n * @param {RoomObject|string} room\n * @param {Object} options\n * @returns {Promise<RoomObject>}\n * @example\n * var room;\n * webex.rooms.create({title: 'Get Room Example'})\n * .then(function(r) {\n * room = r\n * return webex.rooms.get(room.id)\n * })\n * .then(function(r) {\n * var assert = require('assert');\n * assert.deepEqual(r, room);\n * return 'success';\n * });\n * // => success\n */\n get(room, options) {\n const id = room.id || room;\n\n return this.request({\n service: 'hydra',\n resource: `rooms/${id}`,\n qs: options,\n }).then((res) => res.body.items || res.body);\n },\n\n /**\n * Returns a list of rooms. In most cases the results will only contain rooms\n * that the authenticated user is a member of.\n * @instance\n * @memberof Rooms\n * @param {Object} options\n * @param {Object} options.max Limit the maximum number of rooms in the\n * response.\n * @returns {Promise<Page<RoomObject>>}\n * @example\n * var createdRooms;\n * Promise.all([\n * webex.rooms.create({title: 'List Rooms Example 1'}),\n * webex.rooms.create({title: 'List Rooms Example 2'}),\n * webex.rooms.create({title: 'List Rooms Example 3'})\n * ])\n * .then(function(r) {\n * createdRooms = r;\n * return webex.rooms.list({max: 3})\n * .then(function(rooms) {\n * var assert = require('assert');\n * assert(rooms.length === 3);\n * for (var i = 0; i < rooms.items.length; i+= 1) {\n * assert(createdRooms.filter(function(room) {\n * return room.id === rooms.items[i].id;\n * }).length === 1);\n * }\n * return 'success';\n * });\n * });\n * // => success\n */\n list(options) {\n return this.request({\n service: 'hydra',\n resource: 'rooms/',\n qs: options,\n }).then((res) => new Page(res, this.webex));\n },\n\n /**\n * Returns a list of rooms with details about the data of the last\n * activity in the room, and the date of the users last presences in\n * the room. The list is sorted with this with most recent activity first\n *\n * For rooms where lastActivityDate > lastSeenDate the space\n * can be considered to be \"unread\"\n *\n * This differs from the rooms.list() function in the following ways:\n * -- when called with no parameters it returns an array of all\n * spaces, up to 1000, that the user is a member of\n * -- pagination is not supported. ALL rooms are returned which\n * can result in a large payload\n * -- For users with hundreds of spaces, this API can take some time to\n * to return, for this reason it supports an optional maxRecent parameter.\n * If set this will return only the specified number of spaces with activity\n * in the last two weeks. Recommended value is 30. Max supported is 100.\n * -- only \"id\", \"type\", \"lastActivityDate\", and \"lastSeenDate\" are\n * guaranteed to be available for each room in the list\n * -- \"title\" is usually returned, but not guaranteed\n *\n * In general this function should be used only when the client needs to\n * access read status info, for example on startup.\n * After startup, clients should track message and membership:seen events\n * to maintain read status client side.\n *\n * Since this API can take some time to return up to 1000 spaces, it is\n * recommended that custom clients call this first with the maxRecent parameter\n * set to 30, so that they can display some of the more recents spaces. Calling\n * this API a second time with no parameters will return all the spaces.\n *\n * Not all spaces may be returned, for example when users in more than 1000\n * spaces, or when a new spaces is added after this function is called,\n * but before it returns. Custom clients should be prepared to gracefully\n * handle cases where an event occurs in a space not returned by this call,\n * by querying rooms.getWithReadStatus() with the id of the room in question\n *\n * This function may be deprecated when this info is provided in the membership\n * objects returned in the list function.\n * @instance\n * @param {int} maxRecent\n * @memberof Rooms\n * @returns {Promise<RoomInfoObjectList>}\n */\n async listWithReadStatus(maxRecent = 0) {\n const now = new Date();\n const options = {\n activitiesLimit: 0,\n computeTitleIfEmpty: true,\n conversationsLimit: 1000,\n isActive: true,\n };\n\n if (maxRecent > 0) {\n options.conversationsLimit = maxRecent;\n options.sinceDate = now.setDate(now.getDate() - 14);\n } else if (maxRecent < 0 || maxRecent > 100) {\n return Promise.reject(\n new Error(\n 'rooms.listWithReadStatus: ' +\n 'optional maxRecent parameter must be an integer between 1 and 100'\n )\n );\n }\n\n return this.webex.internal.services\n .waitForCatalog('postauth')\n .then(() => this.webex.internal.conversation.list(options))\n .then((conversations) => buildRoomInfoList(this.webex, conversations));\n },\n\n /**\n * Returns a single room object with details about the data of the last\n * activity in the room, and the date of the users last presence in\n * the room.\n *\n * For rooms where lastActivityDate > lastSeenDate the room\n * can be considered to be \"unread\"\n *\n * This differs from the rooms.get() function in the following ways:\n * -- it takes a single roomId parameter to fetch\n * -- no other options are considered\n * -- only \"id\", \"type\", \"lastActivityDate\", and \"lastSeenDate\" are\n * guaranteed to be available in the return object\n * -- \"title\" is usually returned, but not guaranteed\n *\n * In general clients should use the listWithReadStatus() method on startup\n * to get the initial roomStatus and then update their client side copy by\n * responding to message, membership and room events.\n\n * This function allows a custom client to be \"nimble\" if it is responding\n * to an event with a roomId that was not in the original fetch. The\n * anticipated behavior is that getWithReadStats is called \"just in time\",\n * with the resulting room object being added to the list of cached room\n * objects on the client side.\n *\n * This function may be deprecated when this info is provided in the room\n * object returned in the get function.\n * @instance\n * @memberof Rooms\n * @param {string} roomId\n * @returns {Promise<RoomInfoObject>}\n */\n getWithReadStatus(roomId) {\n const deconstructedId = deconstructHydraId(roomId);\n const conversation = {\n id: deconstructedId.id,\n cluster: deconstructedId.cluster,\n };\n\n return this.webex.internal.services.waitForCatalog('postauth').then(() =>\n this.webex.internal.conversation\n .get(conversation, {\n computeTitleIfEmpty: true,\n activitiesLimit: 0, // don't send the whole history of activity\n })\n .then((convo) => buildRoomInfo(this.webex, convo))\n );\n },\n\n /**\n * Deletes a single room.\n * @instance\n * @memberof Rooms\n * @param {RoomObject|string} room\n * @returns {Promise}\n * @example\n * var room;\n * webex.rooms.create({title: 'Remove Room Example'})\n * .then(function(r) {\n * room = r;\n * return webex.rooms.remove(room.id);\n * })\n * .then(function() {\n * return webex.rooms.get(room.id);\n * })\n * .then(function() {\n * var assert = require('assert');\n * assert(false, 'the previous get should have failed');\n * })\n * .catch(function(reason) {\n * var assert = require('assert');\n * assert.equal(reason.statusCode, 404);\n * return 'success'\n * });\n * // => success\n */\n remove(room) {\n const id = room.id || room;\n\n return this.request({\n method: 'DELETE',\n service: 'hydra',\n resource: `rooms/${id}`,\n }).then((res) => {\n // Firefox has some issues with 204s and/or DELETE. This should move to\n // http-core\n if (res.statusCode === 204) {\n return undefined;\n }\n\n return res.body;\n });\n },\n\n /**\n * Used to update a single room's properties.\n * @instance\n * @memberof Rooms\n * @param {RoomObject} room\n * @returns {Promise<RoomObject>}\n * @example\n * var room;\n * webex.rooms.update({title: 'Update Room Example'})\n * .then(function(r) {\n * room = r;\n * room.title = 'Update Room Example (Updated Title)';\n * return webex.rooms.update(room);\n * })\n * .then(function() {\n * return webex.rooms.get(room.id);\n * })\n * .then(function(room) {\n * var assert = require('assert');\n * assert.equal(room.title, 'Update Room Example (Updated Title)');\n * return 'success';\n * });\n * // => success\n */\n update(room) {\n const {id} = room;\n\n return this.request({\n method: 'PUT',\n service: 'hydra',\n resource: `rooms/${id}`,\n body: room,\n }).then((res) => res.body);\n },\n\n /**\n * This function is called when an internal membership events fires,\n * if the user registered for these events with the listen() function.\n * External users of the SDK should not call this function\n * @private\n * @memberof Rooms\n * @param {Object} event\n * @returns {void}\n */\n onWebexApiEvent(event) {\n const {activity} = event.data;\n\n /* eslint-disable no-case-declarations */\n switch (activity.verb) {\n case SDK_EVENT.INTERNAL.ACTIVITY_VERB.CREATE:\n const roomCreatedEvent = this.getRoomEvent(\n this.webex,\n activity,\n SDK_EVENT.EXTERNAL.EVENT_TYPE.CREATED\n );\n\n if (roomCreatedEvent) {\n debug(`room \"created\" payload: \\\n ${JSON.stringify(roomCreatedEvent)}`);\n this.trigger(SDK_EVENT.EXTERNAL.EVENT_TYPE.CREATED, roomCreatedEvent);\n }\n break;\n\n case SDK_EVENT.INTERNAL.ACTIVITY_VERB.UPDATE:\n case SDK_EVENT.INTERNAL.ACTIVITY_VERB.LOCK:\n case SDK_EVENT.INTERNAL.ACTIVITY_VERB.UNLOCK:\n debug(`generating a rooms:updated based on ${activity.verb} activity`);\n const roomUpdatedEvent = this.getRoomEvent(\n this.webex,\n activity,\n SDK_EVENT.EXTERNAL.EVENT_TYPE.UPDATED\n );\n\n if (roomUpdatedEvent) {\n debug(`room \"updated\" payload: \\\n ${JSON.stringify(roomUpdatedEvent)}`);\n this.trigger(SDK_EVENT.EXTERNAL.EVENT_TYPE.UPDATED, roomUpdatedEvent);\n }\n break;\n\n default:\n break;\n }\n },\n\n /**\n * Constructs the data object for an event on the rooms resource,\n * adhering to Hydra's Webhook data structure.\n * External users of the SDK should not call this function\n * @private\n * @memberof Rooms\n * @param {Object} webex sdk instance\n * @param {Object} activity from mercury\n * @param {Object} event type of \"webhook\" event\n * @returns {Object} constructed event\n */\n getRoomEvent(webex, activity, event) {\n try {\n const sdkEvent = cloneDeep(this.eventEnvelope);\n const cluster = getHydraClusterString(webex, activity.url);\n let {tags} = activity.object;\n\n sdkEvent.event = event;\n sdkEvent.data.created = activity.published;\n sdkEvent.actorId = buildHydraPersonId(activity.actor.entryUUID, cluster);\n if (activity.object.id) {\n sdkEvent.data.id = buildHydraRoomId(activity.object.id, cluster);\n } else {\n sdkEvent.data.id = buildHydraRoomId(activity.target.id, cluster);\n }\n\n if (event === SDK_EVENT.EXTERNAL.EVENT_TYPE.CREATED) {\n sdkEvent.data.creatorId = buildHydraPersonId(activity.actor.entryUUID, cluster);\n sdkEvent.data.lastActivity = activity.published;\n } else if (event === SDK_EVENT.EXTERNAL.EVENT_TYPE.UPDATED) {\n if (activity.verb === 'update') {\n // For some reason the tags are not in the object for an update activity\n tags = activity.target.tags;\n }\n if (activity.object.creatorUUID) {\n // This seems to be set in lock/unlock activities but not updated...\n debug(`Found a creatorId: ${activity.object.creatorUUID} in a ${activity.verb} event`);\n sdkEvent.data.creatorId = buildHydraPersonId(activity.object.creatorUUID, cluster);\n }\n // Webhook engine team sets this based on lastReadableActivityDate\n // in the activity.target object. See: hydra/HydraRoom.java#L51\n // This elements seems to be missing from the activity that the SDK is getting\n // sdkEvent.data.lastActivity = activity.target.lastReadableActivityDate;\n } else {\n throw new Error('unexpected event type');\n }\n sdkEvent.data.type = getHydraRoomType(tags);\n sdkEvent.data.isLocked = tags.includes(SDK_EVENT.INTERNAL.ACTIVITY_TAG.LOCKED);\n\n return sdkEvent;\n } catch (e) {\n this.webex.logger.error(\n `Unable to generate SDK event from mercury socket activity for rooms:${event} event: ${e.message}`\n );\n\n return null;\n }\n },\n});\n\nexport default Rooms;\n\n/**\n * Helper method to build a roomInfo object from a conversation object\n * @param {Object} webex sdk object\n * @param {Conversation~ConversationObject} conversation\n * @returns {Promise<RoomInfoObject>}\n */\nasync function buildRoomInfo(webex, conversation) {\n try {\n const type = getHydraRoomType(conversation.tags);\n const cluster = getHydraClusterString(webex, conversation.url);\n const title = conversation.displayName ? conversation.displayName : conversation.computedTitle;\n const lastActivityDate = conversation.lastReadableActivityDate\n ? conversation.lastReadableActivityDate\n : conversation.lastRelevantActivityDate;\n\n const roomInfo = {\n id: buildHydraRoomId(conversation.id, cluster),\n type,\n ...(title && {title: conversation.displayName}),\n ...(lastActivityDate && {lastActivityDate}),\n lastSeenActivityDate: conversation.lastSeenActivityDate\n ? conversation.lastSeenActivityDate\n : // If user has never been seen set the date to \"a long time ago\"\n new Date(0).toISOString(),\n };\n\n return Promise.resolve(roomInfo);\n } catch (e) {\n return Promise.reject(e);\n }\n}\n\n/**\n * Helper method to build a list of roomInfo object from conversation list\n * @param {Object} webex sdk object\n * @param {Conversation~ConversationObjectList} conversations\n * @returns {Promise<RoomInfoList>}\n */\nasync function buildRoomInfoList(webex, conversations) {\n // Convert each Conversation into a roomInfo object\n const roomReadInfo = {items: []};\n const roomInfoPromises = [];\n\n for (const conversation of conversations) {\n roomInfoPromises.push(buildRoomInfo(webex, conversation));\n }\n\n return Promise.all(roomInfoPromises).then((roomInfoList) => {\n roomReadInfo.items = roomInfoList;\n roomReadInfo.items.sort((a, b) => (a.lastActivityDate < b.lastActivityDate ? 1 : -1));\n\n return roomReadInfo;\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA;;AAEA;;;;;;;;;;;;AAUA,IAAMA,KAAK,GAAGC,OAAO,CAAC,OAAD,CAAP,CAAiB,OAAjB,CAAd;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAMC,KAAK,GAAGC,sBAAA,CAAYC,MAAZ,CAAmB;EAC/B;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,MA7B+B,oBA6BtB;IAAA;;IACP,OAAO,IAAAC,2BAAA,EAAoB,KAAKC,KAAzB,EAAgCC,iBAAA,CAAUC,QAAV,CAAmBC,QAAnB,CAA4BC,KAA5D,EAAmEC,IAAnE,CAAwE,UAACC,QAAD,EAAc;MAC3F,KAAI,CAACC,aAAL,GAAqBD,QAArB;MAEA,OAAO,KAAI,CAACN,KAAL,CAAWQ,QAAX,CAAoBC,OAApB,CAA4BC,OAA5B,GAAsCL,IAAtC,CAA2C,YAAM;QACtD,KAAI,CAACM,QAAL,CAAc,KAAI,CAACX,KAAL,CAAWQ,QAAX,CAAoBC,OAAlC,EAA2CR,iBAAA,CAAUW,QAAV,CAAmBC,cAA9D,EAA8E,UAACC,KAAD;UAAA,OAC5E,KAAI,CAACC,eAAL,CAAqBD,KAArB,CAD4E;QAAA,CAA9E;MAGD,CAJM,CAAP;IAKD,CARM,CAAP;EASD,CAvC8B;;EAyC/B;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEE,MA7D+B,kBA6DxBC,IA7DwB,EA6DlB;IACX,OAAO,KAAKC,OAAL,CAAa;MAClBC,MAAM,EAAE,MADU;MAElBC,OAAO,EAAE,OAFS;MAGlBC,QAAQ,EAAE,OAHQ;MAIlBC,IAAI,EAAEL;IAJY,CAAb,EAKJZ,IALI,CAKC,UAACkB,GAAD;MAAA,OAASA,GAAG,CAACD,IAAb;IAAA,CALD,CAAP;EAMD,CApE8B;;EAsE/B;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEE,GA3F+B,eA2F3BP,IA3F2B,EA2FrBQ,OA3FqB,EA2FZ;IACjB,IAAMC,EAAE,GAAGT,IAAI,CAACS,EAAL,IAAWT,IAAtB;IAEA,OAAO,KAAKC,OAAL,CAAa;MAClBE,OAAO,EAAE,OADS;MAElBC,QAAQ,kBAAWK,EAAX,CAFU;MAGlBC,EAAE,EAAEF;IAHc,CAAb,EAIJpB,IAJI,CAIC,UAACkB,GAAD;MAAA,OAASA,GAAG,CAACD,IAAJ,CAASM,KAAT,IAAkBL,GAAG,CAACD,IAA/B;IAAA,CAJD,CAAP;EAKD,CAnG8B;;EAqG/B;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEO,IArI+B,gBAqI1BJ,OArI0B,EAqIjB;IAAA;;IACZ,OAAO,KAAKP,OAAL,CAAa;MAClBE,OAAO,EAAE,OADS;MAElBC,QAAQ,EAAE,QAFQ;MAGlBM,EAAE,EAAEF;IAHc,CAAb,EAIJpB,IAJI,CAIC,UAACkB,GAAD;MAAA,OAAS,IAAIO,eAAJ,CAASP,GAAT,EAAc,MAAI,CAACvB,KAAnB,CAAT;IAAA,CAJD,CAAP;EAKD,CA3I8B;;EA6I/B;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACQ+B,kBAzLyB,gCAyLS;IAAA;IAAA;;IAAA;MAAA;MAAA;QAAA;UAAA;YAAA;cAAfC,SAAe,0EAAH,CAAG;cAChC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"}
1
+ {"version":3,"names":["debug","require","Rooms","WebexPlugin","extend","listen","createEventEnvelope","webex","SDK_EVENT","EXTERNAL","RESOURCE","ROOMS","then","envelope","eventEnvelope","internal","mercury","connect","listenTo","INTERNAL","WEBEX_ACTIVITY","event","onWebexApiEvent","create","room","request","method","service","resource","body","res","get","options","id","qs","items","list","Page","listWithReadStatus","maxRecent","now","Date","activitiesLimit","computeTitleIfEmpty","conversationsLimit","isActive","sinceDate","setDate","getDate","reject","Error","services","waitForCatalog","conversation","conversations","buildRoomInfoList","getWithReadStatus","roomId","deconstructedId","deconstructHydraId","cluster","convo","buildRoomInfo","remove","statusCode","undefined","update","activity","data","verb","ACTIVITY_VERB","CREATE","roomCreatedEvent","getRoomEvent","EVENT_TYPE","CREATED","trigger","UPDATE","LOCK","UNLOCK","roomUpdatedEvent","UPDATED","sdkEvent","getHydraClusterString","url","tags","object","created","published","actorId","buildHydraPersonId","actor","entryUUID","buildHydraRoomId","target","creatorId","lastActivity","creatorUUID","type","getHydraRoomType","isLocked","includes","ACTIVITY_TAG","LOCKED","e","logger","error","message","title","displayName","computedTitle","lastActivityDate","lastReadableActivityDate","lastRelevantActivityDate","roomInfo","lastSeenActivityDate","toISOString","resolve","roomReadInfo","roomInfoPromises","push","all","roomInfoList","sort","a","b"],"sources":["rooms.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {WebexPlugin, Page} from '@webex/webex-core';\nimport {cloneDeep} from 'lodash';\nimport {\n SDK_EVENT,\n createEventEnvelope,\n buildHydraPersonId,\n buildHydraRoomId,\n getHydraClusterString,\n getHydraRoomType,\n deconstructHydraId,\n} from '@webex/common';\n\nconst debug = require('debug')('rooms');\n\n/**\n * @typedef {Object} RoomObject\n * @property {string} id - (server generated) Unique identifier for the room\n * @property {string} title - The display name for the room. All room members\n * will see the title so make it something good\n * @property {string} teamId - (optional) The ID of the team to which the room\n * belongs\n * @property {isoDate} created - (server generated) The date and time that the\n * room was created\n */\n\n/**\n * Rooms are virtual meeting places for getting stuff done. This resource\n * represents the room itself. Check out the {@link Memberships} API to learn\n * how to add and remove people from rooms and the {@link Messages} API for\n * posting and managing content.\n * @class\n * @name Rooms\n */\nconst Rooms = WebexPlugin.extend({\n /**\n * Register to listen for incoming rooms events\n * This is an alternate approach to registering for rooms webhooks.\n * The events passed to any registered handlers will be similar to the webhook JSON,\n * but will omit webhook specific fields such as name, secret, url, etc.\n * To utilize the `listen()` method, the authorization token used\n * will need to have `spark:all` and `spark:kms` scopes enabled.\n * Note that by configuring your application to enable or disable `spark:all`\n * via its configuration page will also enable or disable `spark:kms`.\n * See the <a href=\"https://webex.github.io/webex-js-sdk/samples/browser-socket/\">Sample App</a>\n * for more details.\n * @instance\n * @memberof Rooms\n * @returns {Promise}\n * @example\n * webex.rooms.listen()\n * .then(() => {\n * console.log('listening to room events');\n * webex.rooms.on('created', (event) => console.log(`Got a room:created event:\\n${event}`);\n * webex.rooms.on('updated', (event) => console.log(`Got a room:updated event:\\n${event}`);\n * })\n * .catch((e) => console.error(`Unable to register for room events: ${e}`));\n * // Some app logic...\n * // WHen it is time to cleanup\n * webex.rooms.stopListening();\n * webex.rooms.off('created');\n * webex.rooms.off('updated');\n */\n listen() {\n return createEventEnvelope(this.webex, SDK_EVENT.EXTERNAL.RESOURCE.ROOMS).then((envelope) => {\n this.eventEnvelope = envelope;\n\n return this.webex.internal.mercury.connect().then(() => {\n this.listenTo(this.webex.internal.mercury, SDK_EVENT.INTERNAL.WEBEX_ACTIVITY, (event) =>\n this.onWebexApiEvent(event)\n );\n });\n });\n },\n\n /**\n * Creates a new room. The authenticated user is automatically added as a\n * member of the room. See the {@link Memberships} API to learn how to add\n * more people to the room.\n * @instance\n * @memberof Rooms\n * @param {RoomObject} room\n * @returns {Promise<RoomObject>}\n * @example\n * webex.rooms.create({title: 'Create Room Example'})\n * .then(function(room) {\n * var assert = require('assert')\n * assert(typeof room.created === 'string');\n * assert(typeof room.id === 'string');\n * assert(room.title === 'Create Room Example');\n * console.log(room.title);\n * return 'success';\n * });\n * // => success\n */\n create(room) {\n return this.request({\n method: 'POST',\n service: 'hydra',\n resource: 'rooms',\n body: room,\n }).then((res) => res.body);\n },\n\n /**\n * Returns a single room.\n * @instance\n * @memberof Rooms\n * @param {RoomObject|string} room\n * @param {Object} options\n * @returns {Promise<RoomObject>}\n * @example\n * var room;\n * webex.rooms.create({title: 'Get Room Example'})\n * .then(function(r) {\n * room = r\n * return webex.rooms.get(room.id)\n * })\n * .then(function(r) {\n * var assert = require('assert');\n * assert.deepEqual(r, room);\n * return 'success';\n * });\n * // => success\n */\n get(room, options) {\n const id = room.id || room;\n\n return this.request({\n service: 'hydra',\n resource: `rooms/${id}`,\n qs: options,\n }).then((res) => res.body.items || res.body);\n },\n\n /**\n * Returns a list of rooms. In most cases the results will only contain rooms\n * that the authenticated user is a member of.\n * @instance\n * @memberof Rooms\n * @param {Object} options\n * @param {Object} options.max Limit the maximum number of rooms in the\n * response.\n * @returns {Promise<Page<RoomObject>>}\n * @example\n * var createdRooms;\n * Promise.all([\n * webex.rooms.create({title: 'List Rooms Example 1'}),\n * webex.rooms.create({title: 'List Rooms Example 2'}),\n * webex.rooms.create({title: 'List Rooms Example 3'})\n * ])\n * .then(function(r) {\n * createdRooms = r;\n * return webex.rooms.list({max: 3})\n * .then(function(rooms) {\n * var assert = require('assert');\n * assert(rooms.length === 3);\n * for (var i = 0; i < rooms.items.length; i+= 1) {\n * assert(createdRooms.filter(function(room) {\n * return room.id === rooms.items[i].id;\n * }).length === 1);\n * }\n * return 'success';\n * });\n * });\n * // => success\n */\n list(options) {\n return this.request({\n service: 'hydra',\n resource: 'rooms/',\n qs: options,\n }).then((res) => new Page(res, this.webex));\n },\n\n /**\n * Returns a list of rooms with details about the data of the last\n * activity in the room, and the date of the users last presences in\n * the room. The list is sorted with this with most recent activity first\n *\n * For rooms where lastActivityDate > lastSeenDate the space\n * can be considered to be \"unread\"\n *\n * This differs from the rooms.list() function in the following ways:\n * -- when called with no parameters it returns an array of all\n * spaces, up to 1000, that the user is a member of\n * -- pagination is not supported. ALL rooms are returned which\n * can result in a large payload\n * -- For users with hundreds of spaces, this API can take some time to\n * to return, for this reason it supports an optional maxRecent parameter.\n * If set this will return only the specified number of spaces with activity\n * in the last two weeks. Recommended value is 30. Max supported is 100.\n * -- only \"id\", \"type\", \"lastActivityDate\", and \"lastSeenDate\" are\n * guaranteed to be available for each room in the list\n * -- \"title\" is usually returned, but not guaranteed\n *\n * In general this function should be used only when the client needs to\n * access read status info, for example on startup.\n * After startup, clients should track message and membership:seen events\n * to maintain read status client side.\n *\n * Since this API can take some time to return up to 1000 spaces, it is\n * recommended that custom clients call this first with the maxRecent parameter\n * set to 30, so that they can display some of the more recents spaces. Calling\n * this API a second time with no parameters will return all the spaces.\n *\n * Not all spaces may be returned, for example when users in more than 1000\n * spaces, or when a new spaces is added after this function is called,\n * but before it returns. Custom clients should be prepared to gracefully\n * handle cases where an event occurs in a space not returned by this call,\n * by querying rooms.getWithReadStatus() with the id of the room in question\n *\n * This function may be deprecated when this info is provided in the membership\n * objects returned in the list function.\n * @instance\n * @param {int} maxRecent\n * @memberof Rooms\n * @returns {Promise<RoomInfoObjectList>}\n */\n async listWithReadStatus(maxRecent = 0) {\n const now = new Date();\n const options = {\n activitiesLimit: 0,\n computeTitleIfEmpty: true,\n conversationsLimit: 1000,\n isActive: true,\n };\n\n if (maxRecent > 0) {\n options.conversationsLimit = maxRecent;\n options.sinceDate = now.setDate(now.getDate() - 14);\n } else if (maxRecent < 0 || maxRecent > 100) {\n return Promise.reject(\n new Error(\n 'rooms.listWithReadStatus: ' +\n 'optional maxRecent parameter must be an integer between 1 and 100'\n )\n );\n }\n\n return this.webex.internal.services\n .waitForCatalog('postauth')\n .then(() => this.webex.internal.conversation.list(options))\n .then((conversations) => buildRoomInfoList(this.webex, conversations));\n },\n\n /**\n * Returns a single room object with details about the data of the last\n * activity in the room, and the date of the users last presence in\n * the room.\n *\n * For rooms where lastActivityDate > lastSeenDate the room\n * can be considered to be \"unread\"\n *\n * This differs from the rooms.get() function in the following ways:\n * -- it takes a single roomId parameter to fetch\n * -- no other options are considered\n * -- only \"id\", \"type\", \"lastActivityDate\", and \"lastSeenDate\" are\n * guaranteed to be available in the return object\n * -- \"title\" is usually returned, but not guaranteed\n *\n * In general clients should use the listWithReadStatus() method on startup\n * to get the initial roomStatus and then update their client side copy by\n * responding to message, membership and room events.\n\n * This function allows a custom client to be \"nimble\" if it is responding\n * to an event with a roomId that was not in the original fetch. The\n * anticipated behavior is that getWithReadStats is called \"just in time\",\n * with the resulting room object being added to the list of cached room\n * objects on the client side.\n *\n * This function may be deprecated when this info is provided in the room\n * object returned in the get function.\n * @instance\n * @memberof Rooms\n * @param {string} roomId\n * @returns {Promise<RoomInfoObject>}\n */\n getWithReadStatus(roomId) {\n const deconstructedId = deconstructHydraId(roomId);\n const conversation = {\n id: deconstructedId.id,\n cluster: deconstructedId.cluster,\n };\n\n return this.webex.internal.services.waitForCatalog('postauth').then(() =>\n this.webex.internal.conversation\n .get(conversation, {\n computeTitleIfEmpty: true,\n activitiesLimit: 0, // don't send the whole history of activity\n })\n .then((convo) => buildRoomInfo(this.webex, convo))\n );\n },\n\n /**\n * Deletes a single room.\n * @instance\n * @memberof Rooms\n * @param {RoomObject|string} room\n * @returns {Promise}\n * @example\n * var room;\n * webex.rooms.create({title: 'Remove Room Example'})\n * .then(function(r) {\n * room = r;\n * return webex.rooms.remove(room.id);\n * })\n * .then(function() {\n * return webex.rooms.get(room.id);\n * })\n * .then(function() {\n * var assert = require('assert');\n * assert(false, 'the previous get should have failed');\n * })\n * .catch(function(reason) {\n * var assert = require('assert');\n * assert.equal(reason.statusCode, 404);\n * return 'success'\n * });\n * // => success\n */\n remove(room) {\n const id = room.id || room;\n\n return this.request({\n method: 'DELETE',\n service: 'hydra',\n resource: `rooms/${id}`,\n }).then((res) => {\n // Firefox has some issues with 204s and/or DELETE. This should move to\n // http-core\n if (res.statusCode === 204) {\n return undefined;\n }\n\n return res.body;\n });\n },\n\n /**\n * Used to update a single room's properties.\n * @instance\n * @memberof Rooms\n * @param {RoomObject} room\n * @returns {Promise<RoomObject>}\n * @example\n * var room;\n * webex.rooms.update({title: 'Update Room Example'})\n * .then(function(r) {\n * room = r;\n * room.title = 'Update Room Example (Updated Title)';\n * return webex.rooms.update(room);\n * })\n * .then(function() {\n * return webex.rooms.get(room.id);\n * })\n * .then(function(room) {\n * var assert = require('assert');\n * assert.equal(room.title, 'Update Room Example (Updated Title)');\n * return 'success';\n * });\n * // => success\n */\n update(room) {\n const {id} = room;\n\n return this.request({\n method: 'PUT',\n service: 'hydra',\n resource: `rooms/${id}`,\n body: room,\n }).then((res) => res.body);\n },\n\n /**\n * This function is called when an internal membership events fires,\n * if the user registered for these events with the listen() function.\n * External users of the SDK should not call this function\n * @private\n * @memberof Rooms\n * @param {Object} event\n * @returns {void}\n */\n onWebexApiEvent(event) {\n const {activity} = event.data;\n\n /* eslint-disable no-case-declarations */\n switch (activity.verb) {\n case SDK_EVENT.INTERNAL.ACTIVITY_VERB.CREATE:\n const roomCreatedEvent = this.getRoomEvent(\n this.webex,\n activity,\n SDK_EVENT.EXTERNAL.EVENT_TYPE.CREATED\n );\n\n if (roomCreatedEvent) {\n debug(`room \"created\" payload: \\\n ${JSON.stringify(roomCreatedEvent)}`);\n this.trigger(SDK_EVENT.EXTERNAL.EVENT_TYPE.CREATED, roomCreatedEvent);\n }\n break;\n\n case SDK_EVENT.INTERNAL.ACTIVITY_VERB.UPDATE:\n case SDK_EVENT.INTERNAL.ACTIVITY_VERB.LOCK:\n case SDK_EVENT.INTERNAL.ACTIVITY_VERB.UNLOCK:\n debug(`generating a rooms:updated based on ${activity.verb} activity`);\n const roomUpdatedEvent = this.getRoomEvent(\n this.webex,\n activity,\n SDK_EVENT.EXTERNAL.EVENT_TYPE.UPDATED\n );\n\n if (roomUpdatedEvent) {\n debug(`room \"updated\" payload: \\\n ${JSON.stringify(roomUpdatedEvent)}`);\n this.trigger(SDK_EVENT.EXTERNAL.EVENT_TYPE.UPDATED, roomUpdatedEvent);\n }\n break;\n\n default:\n break;\n }\n },\n\n /**\n * Constructs the data object for an event on the rooms resource,\n * adhering to Hydra's Webhook data structure.\n * External users of the SDK should not call this function\n * @private\n * @memberof Rooms\n * @param {Object} webex sdk instance\n * @param {Object} activity from mercury\n * @param {Object} event type of \"webhook\" event\n * @returns {Object} constructed event\n */\n getRoomEvent(webex, activity, event) {\n try {\n const sdkEvent = cloneDeep(this.eventEnvelope);\n const cluster = getHydraClusterString(webex, activity.url);\n let {tags} = activity.object;\n\n sdkEvent.event = event;\n sdkEvent.data.created = activity.published;\n sdkEvent.actorId = buildHydraPersonId(activity.actor.entryUUID, cluster);\n if (activity.object.id) {\n sdkEvent.data.id = buildHydraRoomId(activity.object.id, cluster);\n } else {\n sdkEvent.data.id = buildHydraRoomId(activity.target.id, cluster);\n }\n\n if (event === SDK_EVENT.EXTERNAL.EVENT_TYPE.CREATED) {\n sdkEvent.data.creatorId = buildHydraPersonId(activity.actor.entryUUID, cluster);\n sdkEvent.data.lastActivity = activity.published;\n } else if (event === SDK_EVENT.EXTERNAL.EVENT_TYPE.UPDATED) {\n if (activity.verb === 'update') {\n // For some reason the tags are not in the object for an update activity\n tags = activity.target.tags;\n }\n if (activity.object.creatorUUID) {\n // This seems to be set in lock/unlock activities but not updated...\n debug(`Found a creatorId: ${activity.object.creatorUUID} in a ${activity.verb} event`);\n sdkEvent.data.creatorId = buildHydraPersonId(activity.object.creatorUUID, cluster);\n }\n // Webhook engine team sets this based on lastReadableActivityDate\n // in the activity.target object. See: hydra/HydraRoom.java#L51\n // This elements seems to be missing from the activity that the SDK is getting\n // sdkEvent.data.lastActivity = activity.target.lastReadableActivityDate;\n } else {\n throw new Error('unexpected event type');\n }\n sdkEvent.data.type = getHydraRoomType(tags);\n sdkEvent.data.isLocked = tags.includes(SDK_EVENT.INTERNAL.ACTIVITY_TAG.LOCKED);\n\n return sdkEvent;\n } catch (e) {\n this.webex.logger.error(\n `Unable to generate SDK event from mercury socket activity for rooms:${event} event: ${e.message}`\n );\n\n return null;\n }\n },\n});\n\nexport default Rooms;\n\n/**\n * Helper method to build a roomInfo object from a conversation object\n * @param {Object} webex sdk object\n * @param {Conversation~ConversationObject} conversation\n * @returns {Promise<RoomInfoObject>}\n */\nasync function buildRoomInfo(webex, conversation) {\n try {\n const type = getHydraRoomType(conversation.tags);\n const cluster = getHydraClusterString(webex, conversation.url);\n const title = conversation.displayName ? conversation.displayName : conversation.computedTitle;\n const lastActivityDate = conversation.lastReadableActivityDate\n ? conversation.lastReadableActivityDate\n : conversation.lastRelevantActivityDate;\n\n const roomInfo = {\n id: buildHydraRoomId(conversation.id, cluster),\n type,\n ...(title && {title: conversation.displayName}),\n ...(lastActivityDate && {lastActivityDate}),\n lastSeenActivityDate: conversation.lastSeenActivityDate\n ? conversation.lastSeenActivityDate\n : // If user has never been seen set the date to \"a long time ago\"\n new Date(0).toISOString(),\n };\n\n return Promise.resolve(roomInfo);\n } catch (e) {\n return Promise.reject(e);\n }\n}\n\n/**\n * Helper method to build a list of roomInfo object from conversation list\n * @param {Object} webex sdk object\n * @param {Conversation~ConversationObjectList} conversations\n * @returns {Promise<RoomInfoList>}\n */\nasync function buildRoomInfoList(webex, conversations) {\n // Convert each Conversation into a roomInfo object\n const roomReadInfo = {items: []};\n const roomInfoPromises = [];\n\n for (const conversation of conversations) {\n roomInfoPromises.push(buildRoomInfo(webex, conversation));\n }\n\n return Promise.all(roomInfoPromises).then((roomInfoList) => {\n roomReadInfo.items = roomInfoList;\n roomReadInfo.items.sort((a, b) => (a.lastActivityDate < b.lastActivityDate ? 1 : -1));\n\n return roomReadInfo;\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAIA;AAEA;AAQuB;AAAA;AAAA;AAAA;AAAA;AAEvB,IAAMA,KAAK,GAAGC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMC,KAAK,GAAGC,sBAAW,CAACC,MAAM,CAAC;EAC/B;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,MAAM,oBAAG;IAAA;IACP,OAAO,IAAAC,2BAAmB,EAAC,IAAI,CAACC,KAAK,EAAEC,iBAAS,CAACC,QAAQ,CAACC,QAAQ,CAACC,KAAK,CAAC,CAACC,IAAI,CAAC,UAACC,QAAQ,EAAK;MAC3F,KAAI,CAACC,aAAa,GAAGD,QAAQ;MAE7B,OAAO,KAAI,CAACN,KAAK,CAACQ,QAAQ,CAACC,OAAO,CAACC,OAAO,EAAE,CAACL,IAAI,CAAC,YAAM;QACtD,KAAI,CAACM,QAAQ,CAAC,KAAI,CAACX,KAAK,CAACQ,QAAQ,CAACC,OAAO,EAAER,iBAAS,CAACW,QAAQ,CAACC,cAAc,EAAE,UAACC,KAAK;UAAA,OAClF,KAAI,CAACC,eAAe,CAACD,KAAK,CAAC;QAAA,EAC5B;MACH,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEE,MAAM,kBAACC,IAAI,EAAE;IACX,OAAO,IAAI,CAACC,OAAO,CAAC;MAClBC,MAAM,EAAE,MAAM;MACdC,OAAO,EAAE,OAAO;MAChBC,QAAQ,EAAE,OAAO;MACjBC,IAAI,EAAEL;IACR,CAAC,CAAC,CAACZ,IAAI,CAAC,UAACkB,GAAG;MAAA,OAAKA,GAAG,CAACD,IAAI;IAAA,EAAC;EAC5B,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEE,GAAG,eAACP,IAAI,EAAEQ,OAAO,EAAE;IACjB,IAAMC,EAAE,GAAGT,IAAI,CAACS,EAAE,IAAIT,IAAI;IAE1B,OAAO,IAAI,CAACC,OAAO,CAAC;MAClBE,OAAO,EAAE,OAAO;MAChBC,QAAQ,kBAAWK,EAAE,CAAE;MACvBC,EAAE,EAAEF;IACN,CAAC,CAAC,CAACpB,IAAI,CAAC,UAACkB,GAAG;MAAA,OAAKA,GAAG,CAACD,IAAI,CAACM,KAAK,IAAIL,GAAG,CAACD,IAAI;IAAA,EAAC;EAC9C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEO,IAAI,gBAACJ,OAAO,EAAE;IAAA;IACZ,OAAO,IAAI,CAACP,OAAO,CAAC;MAClBE,OAAO,EAAE,OAAO;MAChBC,QAAQ,EAAE,QAAQ;MAClBM,EAAE,EAAEF;IACN,CAAC,CAAC,CAACpB,IAAI,CAAC,UAACkB,GAAG;MAAA,OAAK,IAAIO,eAAI,CAACP,GAAG,EAAE,MAAI,CAACvB,KAAK,CAAC;IAAA,EAAC;EAC7C,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACQ+B,kBAAkB,gCAAgB;IAAA;MAAA;IAAA;MAAA;MAAA;QAAA;UAAA;YAAfC,SAAS,0EAAG,CAAC;YAC9BC,GAAG,GAAG,IAAIC,IAAI,EAAE;YAChBT,OAAO,GAAG;cACdU,eAAe,EAAE,CAA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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webex/plugin-rooms",
3
- "version": "3.0.0-beta.15",
3
+ "version": "3.0.0-beta.16",
4
4
  "description": "",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",
@@ -20,20 +20,20 @@
20
20
  ]
21
21
  },
22
22
  "devDependencies": {
23
- "@webex/test-helper-chai": "3.0.0-beta.15",
24
- "@webex/test-helper-test-users": "3.0.0-beta.15",
23
+ "@webex/test-helper-chai": "3.0.0-beta.16",
24
+ "@webex/test-helper-test-users": "3.0.0-beta.16",
25
25
  "sinon": "^9.2.4"
26
26
  },
27
27
  "dependencies": {
28
- "@webex/common": "3.0.0-beta.15",
29
- "@webex/internal-plugin-conversation": "3.0.0-beta.15",
30
- "@webex/internal-plugin-mercury": "3.0.0-beta.15",
31
- "@webex/plugin-logger": "3.0.0-beta.15",
32
- "@webex/plugin-memberships": "3.0.0-beta.15",
33
- "@webex/plugin-messages": "3.0.0-beta.15",
34
- "@webex/plugin-people": "3.0.0-beta.15",
35
- "@webex/plugin-rooms": "3.0.0-beta.15",
36
- "@webex/webex-core": "3.0.0-beta.15",
28
+ "@webex/common": "3.0.0-beta.16",
29
+ "@webex/internal-plugin-conversation": "3.0.0-beta.16",
30
+ "@webex/internal-plugin-mercury": "3.0.0-beta.16",
31
+ "@webex/plugin-logger": "3.0.0-beta.16",
32
+ "@webex/plugin-memberships": "3.0.0-beta.16",
33
+ "@webex/plugin-messages": "3.0.0-beta.16",
34
+ "@webex/plugin-people": "3.0.0-beta.16",
35
+ "@webex/plugin-rooms": "3.0.0-beta.16",
36
+ "@webex/webex-core": "3.0.0-beta.16",
37
37
  "debug": "^4.3.4",
38
38
  "lodash": "^4.17.21"
39
39
  }