@webex/internal-plugin-calendar 2.59.3-next.1 → 2.59.4-next.1

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/calendar.js CHANGED
@@ -7,37 +7,81 @@ _Object$defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
  var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
10
- var _isArray2 = _interopRequireDefault(require("lodash/isArray"));
10
+ var _lodash = require("lodash");
11
11
  var _common = require("@webex/common");
12
12
  var _webexCore = require("@webex/webex-core");
13
13
  var _collection = _interopRequireDefault(require("./collection"));
14
14
  var _constants = require("./constants");
15
15
  var _calendarEncrypt = _interopRequireDefault(require("./calendar.encrypt.helper"));
16
16
  var _calendarDecrypt = _interopRequireDefault(require("./calendar.decrypt.helper"));
17
+ /*!
18
+ * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
19
+ */
20
+
21
+ /**
22
+ * Calendar Item Create Event
23
+ * Emitted when a calendar item has been added
24
+ * @event calendar:meeting:create
25
+ * @instance
26
+ * @memberof Calendar
27
+ */
28
+
29
+ /**
30
+ * Calendar Item Update Event
31
+ * Emitted when a calendar item has been updated
32
+ * @event calendar:meeting:update
33
+ * @instance
34
+ * @memberof Calendar
35
+ */
36
+
37
+ /**
38
+ * Calendar Item Update Event
39
+ * Emitted when a calendar item has been deleted
40
+ * @event calendar:meeting:delete
41
+ * @instance
42
+ * @memberof Calendar
43
+ */
44
+
45
+ /**
46
+ * Calendar Registered Event
47
+ * Emitted when the calendar instance has been registered and listening
48
+ * @event calendar:registered
49
+ * @instance
50
+ * @memberof Calendar
51
+ */
52
+
53
+ /**
54
+ * Calendar Registered Event
55
+ * Emitted when the calendar instance has been registered and listening
56
+ * @event calendar:unregistered
57
+ * @instance
58
+ * @memberof Calendar
59
+ */
60
+
17
61
  var Calendar = _webexCore.WebexPlugin.extend({
18
62
  namespace: 'Calendar',
19
- /**
20
- * registered value indicating events registration is successful
21
- * @instance
22
- * @type {Boolean}
23
- * @memberof Calendar
63
+ /**
64
+ * registered value indicating events registration is successful
65
+ * @instance
66
+ * @type {Boolean}
67
+ * @memberof Calendar
24
68
  */
25
69
  registered: false,
26
- /**
27
- * Cache all rpc event request locally
70
+ /**
71
+ * Cache all rpc event request locally
28
72
  * */
29
73
  rpcEventRequests: [],
30
- /**
31
- * Cache KMS encryptionKeyUrl
74
+ /**
75
+ * Cache KMS encryptionKeyUrl
32
76
  * */
33
77
  encryptionKeyUrl: null,
34
- /**
35
- * WebexPlugin initialize method. This triggers once Webex has completed its
36
- * initialization workflow.
37
- *
38
- * If the plugin is meant to perform startup actions, place them in this
39
- * `initialize()` method instead of the `constructor()` method.
40
- * @returns {void}
78
+ /**
79
+ * WebexPlugin initialize method. This triggers once Webex has completed its
80
+ * initialization workflow.
81
+ *
82
+ * If the plugin is meant to perform startup actions, place them in this
83
+ * `initialize()` method instead of the `constructor()` method.
84
+ * @returns {void}
41
85
  */
42
86
  initialize: function initialize() {
43
87
  var _this = this;
@@ -48,7 +92,7 @@ var Calendar = _webexCore.WebexPlugin.extend({
48
92
  _this.webex.internal.encryption.kms.createUnboundKeys({
49
93
  count: 1
50
94
  }).then(function (keys) {
51
- var key = (0, _isArray2.default)(keys) ? keys[0] : keys;
95
+ var key = (0, _lodash.isArray)(keys) ? keys[0] : keys;
52
96
  _this.encryptionKeyUrl = key ? key.uri : null;
53
97
  _this.logger.info('calendar->bind a KMS encryption key url');
54
98
  _this.webex.internal.encryption.getKey(_this.encryptionKeyUrl, {
@@ -60,12 +104,12 @@ var Calendar = _webexCore.WebexPlugin.extend({
60
104
  });
61
105
  });
62
106
  },
63
- /**
64
- * Explicitly sets up the calendar plugin by registering
65
- * the device, connecting to mercury, and listening for calendar events.
66
- * @returns {Promise}
67
- * @public
68
- * @memberof Calendar
107
+ /**
108
+ * Explicitly sets up the calendar plugin by registering
109
+ * the device, connecting to mercury, and listening for calendar events.
110
+ * @returns {Promise}
111
+ * @public
112
+ * @memberof Calendar
69
113
  */
70
114
  register: function register() {
71
115
  var _this2 = this;
@@ -88,13 +132,13 @@ var Calendar = _webexCore.WebexPlugin.extend({
88
132
  return _promise.default.reject(error);
89
133
  });
90
134
  },
91
- /**
92
- * Explicitly tears down the calendar plugin by deregistering
93
- * the device, disconnecting from mercury, and stops listening to calendar events
94
- *
95
- * @returns {Promise}
96
- * @public
97
- * @memberof Calendar
135
+ /**
136
+ * Explicitly tears down the calendar plugin by deregistering
137
+ * the device, disconnecting from mercury, and stops listening to calendar events
138
+ *
139
+ * @returns {Promise}
140
+ * @public
141
+ * @memberof Calendar
98
142
  */
99
143
  unregister: function unregister() {
100
144
  var _this3 = this;
@@ -110,10 +154,10 @@ var Calendar = _webexCore.WebexPlugin.extend({
110
154
  _this3.registered = false;
111
155
  });
112
156
  },
113
- /**
114
- * registers for calendar events through mercury
115
- * @returns {undefined}
116
- * @private
157
+ /**
158
+ * registers for calendar events through mercury
159
+ * @returns {undefined}
160
+ * @private
117
161
  */
118
162
  listenForEvents: function listenForEvents() {
119
163
  var _this4 = this;
@@ -137,10 +181,10 @@ var Calendar = _webexCore.WebexPlugin.extend({
137
181
  _this4._handleFreeBusy(envelope.data);
138
182
  });
139
183
  },
140
- /**
141
- * unregisteres all the calendar events from mercury
142
- * @returns {undefined}
143
- * @private
184
+ /**
185
+ * unregisteres all the calendar events from mercury
186
+ * @returns {undefined}
187
+ * @private
144
188
  */
145
189
  stopListeningForEvents: function stopListeningForEvents() {
146
190
  this.webex.internal.mercury.off('event:calendar.meeting.create');
@@ -150,41 +194,41 @@ var Calendar = _webexCore.WebexPlugin.extend({
150
194
  this.webex.internal.mercury.off('event:calendar.meeting.delete');
151
195
  this.webex.internal.mercury.off('event:calendar.free_busy');
152
196
  },
153
- /**
154
- * handles update events, triggers after collection updates
155
- * @param {Object} data
156
- * @returns {undefined}
157
- * @private
197
+ /**
198
+ * handles update events, triggers after collection updates
199
+ * @param {Object} data
200
+ * @returns {undefined}
201
+ * @private
158
202
  */
159
203
  _handleUpdate: function _handleUpdate(data) {
160
204
  var id = _collection.default.set(data.calendarMeetingExternal);
161
205
  this.trigger(_constants.CALENDAR_UPDATED, _collection.default.get(id));
162
206
  },
163
- /**
164
- * handles create events, triggers after collection updates
165
- * @param {Object} data
166
- * @returns {undefined}
167
- * @private
207
+ /**
208
+ * handles create events, triggers after collection updates
209
+ * @param {Object} data
210
+ * @returns {undefined}
211
+ * @private
168
212
  */
169
213
  _handleCreate: function _handleCreate(data) {
170
214
  var id = _collection.default.set(data.calendarMeetingExternal);
171
215
  this.trigger(_constants.CALENDAR_CREATE, _collection.default.get(id));
172
216
  },
173
- /**
174
- * handles delete events, triggers after collection updates
175
- * @param {Object} data
176
- * @returns {undefined}
177
- * @private
217
+ /**
218
+ * handles delete events, triggers after collection updates
219
+ * @param {Object} data
220
+ * @returns {undefined}
221
+ * @private
178
222
  */
179
223
  _handleDelete: function _handleDelete(data) {
180
224
  var item = _collection.default.remove(data.calendarMeetingExternal.id);
181
225
  this.trigger(_constants.CALENDAR_DELETE, item);
182
226
  },
183
- /**
184
- * handles free_busy events
185
- * @param {Object} data
186
- * @returns {undefined}
187
- * @private
227
+ /**
228
+ * handles free_busy events
229
+ * @param {Object} data
230
+ * @returns {undefined}
231
+ * @private
188
232
  */
189
233
  _handleFreeBusy: function _handleFreeBusy(data) {
190
234
  var _this5 = this;
@@ -204,13 +248,13 @@ var Calendar = _webexCore.WebexPlugin.extend({
204
248
  }
205
249
  });
206
250
  },
207
- /**
208
- * Retrieves a collection of calendars based on the request parameters
209
- * Defaults to 1 day before and 7 days ahead
210
- * @param {Object} options
211
- * @param {Date} options.fromDate the start of the time range
212
- * @param {Date} options.toDate the end of the time range
213
- * @returns {Promise} Resolves with an array of calendars
251
+ /**
252
+ * Retrieves a collection of calendars based on the request parameters
253
+ * Defaults to 1 day before and 7 days ahead
254
+ * @param {Object} options
255
+ * @param {Date} options.fromDate the start of the time range
256
+ * @param {Date} options.toDate the end of the time range
257
+ * @returns {Promise} Resolves with an array of calendars
214
258
  */
215
259
  syncCalendar: function syncCalendar() {
216
260
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
@@ -225,11 +269,11 @@ var Calendar = _webexCore.WebexPlugin.extend({
225
269
  return _collection.default.getAll();
226
270
  });
227
271
  },
228
- /**
229
- * get the calendar item that has a matching value
230
- * @param {String} key meeting property
231
- * @param {Any} value the meeting property to match
232
- * @returns {Object}
272
+ /**
273
+ * get the calendar item that has a matching value
274
+ * @param {String} key meeting property
275
+ * @param {Any} value the meeting property to match
276
+ * @returns {Object}
233
277
  */
234
278
  getByType: function getByType(key, value) {
235
279
  if (['spaceURI', 'spaceMeetURL', 'conversationId'].includes(key)) {
@@ -237,27 +281,27 @@ var Calendar = _webexCore.WebexPlugin.extend({
237
281
  }
238
282
  throw new Error('key must be one of, spaceURI, spaceMeetURL, or conversationId');
239
283
  },
240
- /**
241
- * gets all the calendar items that have been populated
242
- * @returns {Object}
284
+ /**
285
+ * gets all the calendar items that have been populated
286
+ * @returns {Object}
243
287
  */
244
288
  getAll: function getAll() {
245
289
  return _collection.default.getAll();
246
290
  },
247
- /**
248
- * Decrypts an encrypted incoming calendar event
249
- * @param {Object} event
250
- * @returns {Promise} Resolves with a decrypted calendar event
291
+ /**
292
+ * Decrypts an encrypted incoming calendar event
293
+ * @param {Object} event
294
+ * @returns {Promise} Resolves with a decrypted calendar event
251
295
  */
252
296
  processMeetingEvent: function processMeetingEvent(event) {
253
297
  return this.webex.transform('inbound', event).then(function () {
254
298
  return event;
255
299
  });
256
300
  },
257
- /**
258
- * Retrieves an array of meeting participants for the meeting id
259
- * @param {String} id
260
- * @returns {Promise} Resolves with an object of meeting participants
301
+ /**
302
+ * Retrieves an array of meeting participants for the meeting id
303
+ * @param {String} id
304
+ * @returns {Promise} Resolves with an object of meeting participants
261
305
  */
262
306
  getParticipants: function getParticipants(id) {
263
307
  return this.request({
@@ -266,10 +310,10 @@ var Calendar = _webexCore.WebexPlugin.extend({
266
310
  resource: "calendarEvents/".concat(_common.base64.encode(id), "/participants")
267
311
  });
268
312
  },
269
- /**
270
- * Retrieves a collection of meetings based on the request parameters
271
- * @param {String} id
272
- * @returns {Promise} Resolves with an object of meeting notes
313
+ /**
314
+ * Retrieves a collection of meetings based on the request parameters
315
+ * @param {String} id
316
+ * @returns {Promise} Resolves with an object of meeting notes
273
317
  */
274
318
  getNotes: function getNotes(id) {
275
319
  return this.request({
@@ -278,12 +322,12 @@ var Calendar = _webexCore.WebexPlugin.extend({
278
322
  resource: "calendarEvents/".concat(_common.base64.encode(id), "/notes")
279
323
  });
280
324
  },
281
- /**
282
- * Retrieves a collection of meetings based on the request parameters
283
- * @param {Object} options
284
- * @param {Date} options.fromDate the start of the time range
285
- * @param {Date} options.toDate the end of the time range
286
- * @returns {Promise} Resolves with an array of meetings
325
+ /**
326
+ * Retrieves a collection of meetings based on the request parameters
327
+ * @param {Object} options
328
+ * @param {Date} options.fromDate the start of the time range
329
+ * @param {Date} options.toDate the end of the time range
330
+ * @returns {Promise} Resolves with an array of meetings
287
331
  */
288
332
  list: function list(options) {
289
333
  var _this6 = this;
@@ -308,11 +352,11 @@ var Calendar = _webexCore.WebexPlugin.extend({
308
352
  });
309
353
  });
310
354
  },
311
- /**
312
- * Create calendar event
313
- * @param {object} [data] meeting payload data
314
- * @param {object} [query] the query parameters for specific usage
315
- * @returns {Promise} Resolves with creating calendar event response
355
+ /**
356
+ * Create calendar event
357
+ * @param {object} [data] meeting payload data
358
+ * @param {object} [query] the query parameters for specific usage
359
+ * @returns {Promise} Resolves with creating calendar event response
316
360
  * */
317
361
  createCalendarEvent: function createCalendarEvent(data, query) {
318
362
  var _this7 = this;
@@ -326,12 +370,12 @@ var Calendar = _webexCore.WebexPlugin.extend({
326
370
  });
327
371
  });
328
372
  },
329
- /**
330
- * Update calendar event
331
- * @param {string} [id] calendar event id
332
- * @param {object} [data] meeting payload data
333
- * @param {object} [query] the query parameters for specific usage
334
- * @returns {Promise} Resolves with updating calendar event response
373
+ /**
374
+ * Update calendar event
375
+ * @param {string} [id] calendar event id
376
+ * @param {object} [data] meeting payload data
377
+ * @param {object} [query] the query parameters for specific usage
378
+ * @returns {Promise} Resolves with updating calendar event response
335
379
  * */
336
380
  updateCalendarEvent: function updateCalendarEvent(id, data, query) {
337
381
  var _this8 = this;
@@ -345,11 +389,11 @@ var Calendar = _webexCore.WebexPlugin.extend({
345
389
  });
346
390
  });
347
391
  },
348
- /**
349
- * Delete calendar event
350
- * @param {string} [id] calendar event id
351
- * @param {object} [query] the query parameters for specific usage
352
- * @returns {Promise} Resolves with deleting calendar event response
392
+ /**
393
+ * Delete calendar event
394
+ * @param {string} [id] calendar event id
395
+ * @param {object} [query] the query parameters for specific usage
396
+ * @returns {Promise} Resolves with deleting calendar event response
353
397
  * */
354
398
  deleteCalendarEvent: function deleteCalendarEvent(id, query) {
355
399
  return this.request({
@@ -359,26 +403,26 @@ var Calendar = _webexCore.WebexPlugin.extend({
359
403
  qs: query || {}
360
404
  });
361
405
  },
362
- /**
363
- * @typedef QuerySchedulerDataOptions
364
- * @param {string} [siteName] it is site full url, must have. Example: ccctest.dmz.webex.com
365
- * @param {string} [id] it is seriesOrOccurrenceId. If present, the series/occurrence meeting ID to fetch data for.
366
- * Example: 040000008200E00074C5B7101A82E008000000004A99F11A0841D9010000000000000000100000009EE499D4A71C1A46B51494C70EC7BFE5
367
- * @param {string} [clientMeetingId] If present, the client meeting UUID to fetch data for.
368
- * Example: 7f318aa9-887c-6e94-802a-8dc8e6eb1a0a
369
- * @param {string} [scheduleTemplateId] it template id.
370
- * @param {string} [sessionTypeId] it session type id.
371
- * @param {string} [organizerCIUserId] required in schedule-on-behalf case. It is the organizer's CI UUID.
372
- * @param {boolean} [usmPreference]
373
- * @param {string} [webexMeetingId] webex side meeting UUID
374
- * @param {string} [eventId] event ID.
375
- * @param {string} [icalUid] icalendar UUID.
376
- * @param {string} [thirdPartyType] third part type, such as: Microsoft
406
+ /**
407
+ * @typedef QuerySchedulerDataOptions
408
+ * @param {string} [siteName] it is site full url, must have. Example: ccctest.dmz.webex.com
409
+ * @param {string} [id] it is seriesOrOccurrenceId. If present, the series/occurrence meeting ID to fetch data for.
410
+ * Example: 040000008200E00074C5B7101A82E008000000004A99F11A0841D9010000000000000000100000009EE499D4A71C1A46B51494C70EC7BFE5
411
+ * @param {string} [clientMeetingId] If present, the client meeting UUID to fetch data for.
412
+ * Example: 7f318aa9-887c-6e94-802a-8dc8e6eb1a0a
413
+ * @param {string} [scheduleTemplateId] it template id.
414
+ * @param {string} [sessionTypeId] it session type id.
415
+ * @param {string} [organizerCIUserId] required in schedule-on-behalf case. It is the organizer's CI UUID.
416
+ * @param {boolean} [usmPreference]
417
+ * @param {string} [webexMeetingId] webex side meeting UUID
418
+ * @param {string} [eventId] event ID.
419
+ * @param {string} [icalUid] icalendar UUID.
420
+ * @param {string} [thirdPartyType] third part type, such as: Microsoft
377
421
  */
378
- /**
379
- * Get scheduler data from calendar service
380
- * @param {QuerySchedulerDataOptions} [query] the command parameters for fetching scheduler data.
381
- * @returns {Promise} Resolves with a decrypted scheduler data
422
+ /**
423
+ * Get scheduler data from calendar service
424
+ * @param {QuerySchedulerDataOptions} [query] the command parameters for fetching scheduler data.
425
+ * @returns {Promise} Resolves with a decrypted scheduler data
382
426
  * */
383
427
  getSchedulerData: function getSchedulerData(query) {
384
428
  var _this9 = this;
@@ -393,11 +437,11 @@ var Calendar = _webexCore.WebexPlugin.extend({
393
437
  });
394
438
  });
395
439
  },
396
- /**
397
- * Get free busy status from calendar service
398
- * @param {Object} [data] the command parameters for fetching free busy status.
399
- * @param {object} [query] the query parameters for specific usage
400
- * @returns {Promise} Resolves with a decrypted response
440
+ /**
441
+ * Get free busy status from calendar service
442
+ * @param {Object} [data] the command parameters for fetching free busy status.
443
+ * @param {object} [query] the query parameters for specific usage
444
+ * @returns {Promise} Resolves with a decrypted response
401
445
  * */
402
446
  getFreeBusy: function getFreeBusy(data, query) {
403
447
  var _this10 = this;
@@ -420,7 +464,7 @@ var Calendar = _webexCore.WebexPlugin.extend({
420
464
  throw error;
421
465
  });
422
466
  },
423
- version: "2.59.0"
467
+ version: "2.59.4-next.1"
424
468
  });
425
469
  var _default = Calendar;
426
470
  exports.default = _default;
@@ -1 +1 @@
1
- {"version":3,"names":["_common","require","_webexCore","_collection","_interopRequireDefault","_constants","_calendarEncrypt","_calendarDecrypt","Calendar","WebexPlugin","extend","namespace","registered","rpcEventRequests","encryptionKeyUrl","initialize","_this","listenToOnce","webex","internal","encryption","kms","createUnboundKeys","count","then","keys","key","_isArray2","default","uri","logger","info","getKey","onBehalfOf","retrievedKey","register","_this2","canAuthorize","error","_promise","reject","Error","resolve","device","mercury","connect","listenForEvents","trigger","CALENDAR_REGISTERED","catch","concat","message","unregister","_this3","stopListeningForEvents","disconnect","CALENDAR_UNREGISTERED","_this4","on","envelope","_handleCreate","data","_handleUpdate","_handleDelete","_handleFreeBusy","off","id","CalendarCollection","set","calendarMeetingExternal","CALENDAR_UPDATED","get","CALENDAR_CREATE","item","remove","CALENDAR_DELETE","_this5","DecryptHelper","decryptFreeBusyResponse","response","calendarFreeBusyScheduleResponse","requestId","log","syncCalendar","options","arguments","length","undefined","fromDate","config","toDate","list","res","setAll","getAll","getByType","value","includes","getBy","processMeetingEvent","event","transform","getParticipants","request","method","service","resource","base64","encode","getNotes","_this6","qs","meetingObjects","body","items","promises","forEach","meeting","encryptedParticipants","push","notesResponse","all","createCalendarEvent","query","_this7","EncryptHelper","encryptCalendarEventRequest","updateCalendarEvent","_this8","deleteCalendarEvent","getSchedulerData","_this9","decryptSchedulerDataResponse","getFreeBusy","_this10","encryptFreeBusyRequest","version","_default","exports"],"sources":["calendar.js"],"sourcesContent":["/*!\r\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\r\n */\r\n\r\n/**\r\n * Calendar Item Create Event\r\n * Emitted when a calendar item has been added\r\n * @event calendar:meeting:create\r\n * @instance\r\n * @memberof Calendar\r\n */\r\n\r\n/**\r\n * Calendar Item Update Event\r\n * Emitted when a calendar item has been updated\r\n * @event calendar:meeting:update\r\n * @instance\r\n * @memberof Calendar\r\n */\r\n\r\n/**\r\n * Calendar Item Update Event\r\n * Emitted when a calendar item has been deleted\r\n * @event calendar:meeting:delete\r\n * @instance\r\n * @memberof Calendar\r\n */\r\n\r\n/**\r\n * Calendar Registered Event\r\n * Emitted when the calendar instance has been registered and listening\r\n * @event calendar:registered\r\n * @instance\r\n * @memberof Calendar\r\n */\r\n\r\n/**\r\n * Calendar Registered Event\r\n * Emitted when the calendar instance has been registered and listening\r\n * @event calendar:unregistered\r\n * @instance\r\n * @memberof Calendar\r\n */\r\nimport {isArray} from 'lodash';\r\nimport {base64} from '@webex/common';\r\nimport {WebexPlugin} from '@webex/webex-core';\r\n\r\nimport CalendarCollection from './collection';\r\nimport {\r\n CALENDAR_REGISTERED,\r\n CALENDAR_UNREGISTERED,\r\n CALENDAR_DELETE,\r\n CALENDAR_CREATE,\r\n CALENDAR_UPDATED,\r\n} from './constants';\r\n\r\nimport EncryptHelper from './calendar.encrypt.helper';\r\nimport DecryptHelper from './calendar.decrypt.helper';\r\n\r\nconst Calendar = WebexPlugin.extend({\r\n namespace: 'Calendar',\r\n\r\n /**\r\n * registered value indicating events registration is successful\r\n * @instance\r\n * @type {Boolean}\r\n * @memberof Calendar\r\n */\r\n registered: false,\r\n\r\n /**\r\n * Cache all rpc event request locally\r\n * */\r\n rpcEventRequests: [],\r\n\r\n /**\r\n * Cache KMS encryptionKeyUrl\r\n * */\r\n encryptionKeyUrl: null,\r\n\r\n /**\r\n * WebexPlugin initialize method. This triggers once Webex has completed its\r\n * initialization workflow.\r\n *\r\n * If the plugin is meant to perform startup actions, place them in this\r\n * `initialize()` method instead of the `constructor()` method.\r\n * @returns {void}\r\n */\r\n initialize() {\r\n // Used to perform actions after webex is fully qualified and ready for\r\n // operation.\r\n this.listenToOnce(this.webex, 'ready', () => {\r\n // Pre-fetch a KMS encryption key url to improve performance\r\n this.webex.internal.encryption.kms.createUnboundKeys({count: 1}).then((keys) => {\r\n const key = isArray(keys) ? keys[0] : keys;\r\n this.encryptionKeyUrl = key ? key.uri : null;\r\n this.logger.info('calendar->bind a KMS encryption key url');\r\n this.webex.internal.encryption\r\n .getKey(this.encryptionKeyUrl, {onBehalfOf: null})\r\n .then((retrievedKey) => {\r\n this.encryptionKeyUrl = retrievedKey ? retrievedKey.uri : null;\r\n this.logger.info('calendar->retrieve the KMS encryption key url and cache it');\r\n });\r\n });\r\n });\r\n },\r\n\r\n /**\r\n * Explicitly sets up the calendar plugin by registering\r\n * the device, connecting to mercury, and listening for calendar events.\r\n * @returns {Promise}\r\n * @public\r\n * @memberof Calendar\r\n */\r\n register() {\r\n if (!this.webex.canAuthorize) {\r\n this.logger.error('calendar->register#ERROR, Unable to register, SDK cannot authorize');\r\n\r\n return Promise.reject(new Error('SDK cannot authorize'));\r\n }\r\n\r\n if (this.registered) {\r\n this.logger.info('calendar->register#INFO, Calendar plugin already registered');\r\n\r\n return Promise.resolve();\r\n }\r\n\r\n return this.webex.internal.device\r\n .register()\r\n .then(() => this.webex.internal.mercury.connect())\r\n .then(() => {\r\n this.listenForEvents();\r\n this.trigger(CALENDAR_REGISTERED);\r\n this.registered = true;\r\n })\r\n .catch((error) => {\r\n this.logger.error(`calendar->register#ERROR, Unable to register, ${error.message}`);\r\n\r\n return Promise.reject(error);\r\n });\r\n },\r\n\r\n /**\r\n * Explicitly tears down the calendar plugin by deregistering\r\n * the device, disconnecting from mercury, and stops listening to calendar events\r\n *\r\n * @returns {Promise}\r\n * @public\r\n * @memberof Calendar\r\n */\r\n unregister() {\r\n if (!this.registered) {\r\n this.logger.info('calendar->unregister#INFO, Calendar plugin already unregistered');\r\n\r\n return Promise.resolve();\r\n }\r\n\r\n this.stopListeningForEvents();\r\n\r\n return this.webex.internal.mercury\r\n .disconnect()\r\n .then(() => this.webex.internal.device.unregister())\r\n .then(() => {\r\n this.trigger(CALENDAR_UNREGISTERED);\r\n this.registered = false;\r\n });\r\n },\r\n\r\n /**\r\n * registers for calendar events through mercury\r\n * @returns {undefined}\r\n * @private\r\n */\r\n listenForEvents() {\r\n // Calendar mercury events listener\r\n this.webex.internal.mercury.on('event:calendar.meeting.create', (envelope) => {\r\n this._handleCreate(envelope.data);\r\n });\r\n this.webex.internal.mercury.on('event:calendar.meeting.update', (envelope) => {\r\n this._handleUpdate(envelope.data);\r\n });\r\n this.webex.internal.mercury.on('event:calendar.meeting.create.minimal', (envelope) => {\r\n this._handleCreate(envelope.data);\r\n });\r\n this.webex.internal.mercury.on('event:calendar.meeting.update.minimal', (envelope) => {\r\n this._handleUpdate(envelope.data);\r\n });\r\n this.webex.internal.mercury.on('event:calendar.meeting.delete', (envelope) => {\r\n this._handleDelete(envelope.data);\r\n });\r\n this.webex.internal.mercury.on('event:calendar.free_busy', (envelope) => {\r\n this._handleFreeBusy(envelope.data);\r\n });\r\n },\r\n\r\n /**\r\n * unregisteres all the calendar events from mercury\r\n * @returns {undefined}\r\n * @private\r\n */\r\n stopListeningForEvents() {\r\n this.webex.internal.mercury.off('event:calendar.meeting.create');\r\n this.webex.internal.mercury.off('event:calendar.meeting.create.minimal');\r\n this.webex.internal.mercury.off('event:calendar.meeting.update');\r\n this.webex.internal.mercury.off('event:calendar.meeting.update.minimal');\r\n this.webex.internal.mercury.off('event:calendar.meeting.delete');\r\n this.webex.internal.mercury.off('event:calendar.free_busy');\r\n },\r\n\r\n /**\r\n * handles update events, triggers after collection updates\r\n * @param {Object} data\r\n * @returns {undefined}\r\n * @private\r\n */\r\n _handleUpdate(data) {\r\n const id = CalendarCollection.set(data.calendarMeetingExternal);\r\n\r\n this.trigger(CALENDAR_UPDATED, CalendarCollection.get(id));\r\n },\r\n\r\n /**\r\n * handles create events, triggers after collection updates\r\n * @param {Object} data\r\n * @returns {undefined}\r\n * @private\r\n */\r\n _handleCreate(data) {\r\n const id = CalendarCollection.set(data.calendarMeetingExternal);\r\n\r\n this.trigger(CALENDAR_CREATE, CalendarCollection.get(id));\r\n },\r\n\r\n /**\r\n * handles delete events, triggers after collection updates\r\n * @param {Object} data\r\n * @returns {undefined}\r\n * @private\r\n */\r\n _handleDelete(data) {\r\n const item = CalendarCollection.remove(data.calendarMeetingExternal.id);\r\n\r\n this.trigger(CALENDAR_DELETE, item);\r\n },\r\n\r\n /**\r\n * handles free_busy events\r\n * @param {Object} data\r\n * @returns {undefined}\r\n * @private\r\n */\r\n _handleFreeBusy(data) {\r\n DecryptHelper.decryptFreeBusyResponse(this, data).then(() => {\r\n let response = {};\r\n if (data && data.calendarFreeBusyScheduleResponse) {\r\n response = data.calendarFreeBusyScheduleResponse;\r\n }\r\n if (response && response.requestId && response.requestId in this.rpcEventRequests) {\r\n this.logger.log(\r\n `webex.internal.calendar - receive requests, requestId: ${response.requestId}`\r\n );\r\n delete response.encryptionKeyUrl;\r\n const {resolve} = this.rpcEventRequests[response.requestId];\r\n resolve(response);\r\n delete this.rpcEventRequests[response.requestId];\r\n } else {\r\n this.logger.log('webex.internal.calendar - receive other requests.');\r\n }\r\n });\r\n },\r\n\r\n /**\r\n * Retrieves a collection of calendars based on the request parameters\r\n * Defaults to 1 day before and 7 days ahead\r\n * @param {Object} options\r\n * @param {Date} options.fromDate the start of the time range\r\n * @param {Date} options.toDate the end of the time range\r\n * @returns {Promise} Resolves with an array of calendars\r\n */\r\n syncCalendar(options = {fromDate: this.config.fromDate, toDate: this.config.toDate}) {\r\n return this.list({fromDate: options.fromDate, toDate: options.toDate}).then((res) => {\r\n CalendarCollection.setAll(res);\r\n\r\n return CalendarCollection.getAll();\r\n });\r\n },\r\n /**\r\n * get the calendar item that has a matching value\r\n * @param {String} key meeting property\r\n * @param {Any} value the meeting property to match\r\n * @returns {Object}\r\n */\r\n getByType(key, value) {\r\n if (['spaceURI', 'spaceMeetURL', 'conversationId'].includes(key)) {\r\n return CalendarCollection.getBy(key, value);\r\n }\r\n throw new Error('key must be one of, spaceURI, spaceMeetURL, or conversationId');\r\n },\r\n\r\n /**\r\n * gets all the calendar items that have been populated\r\n * @returns {Object}\r\n */\r\n getAll() {\r\n return CalendarCollection.getAll();\r\n },\r\n\r\n /**\r\n * Decrypts an encrypted incoming calendar event\r\n * @param {Object} event\r\n * @returns {Promise} Resolves with a decrypted calendar event\r\n */\r\n processMeetingEvent(event) {\r\n return this.webex.transform('inbound', event).then(() => event);\r\n },\r\n\r\n /**\r\n * Retrieves an array of meeting participants for the meeting id\r\n * @param {String} id\r\n * @returns {Promise} Resolves with an object of meeting participants\r\n */\r\n getParticipants(id) {\r\n return this.request({\r\n method: 'GET',\r\n service: 'calendar',\r\n resource: `calendarEvents/${base64.encode(id)}/participants`,\r\n });\r\n },\r\n\r\n /**\r\n * Retrieves a collection of meetings based on the request parameters\r\n * @param {String} id\r\n * @returns {Promise} Resolves with an object of meeting notes\r\n */\r\n getNotes(id) {\r\n return this.request({\r\n method: 'GET',\r\n service: 'calendar',\r\n resource: `calendarEvents/${base64.encode(id)}/notes`,\r\n });\r\n },\r\n\r\n /**\r\n * Retrieves a collection of meetings based on the request parameters\r\n * @param {Object} options\r\n * @param {Date} options.fromDate the start of the time range\r\n * @param {Date} options.toDate the end of the time range\r\n * @returns {Promise} Resolves with an array of meetings\r\n */\r\n list(options) {\r\n options = options || {};\r\n\r\n return this.webex\r\n .request({\r\n method: 'GET',\r\n service: 'calendar',\r\n resource: 'calendarEvents',\r\n qs: options,\r\n })\r\n .then((res) => {\r\n const meetingObjects = res.body.items;\r\n const promises = [];\r\n\r\n meetingObjects.forEach((meeting) => {\r\n if (!meeting.encryptedParticipants) {\r\n promises.push(\r\n this.getParticipants(meeting.id).then((notesResponse) => {\r\n meeting.encryptedParticipants = notesResponse.body.encryptedParticipants;\r\n })\r\n );\r\n }\r\n });\r\n\r\n return Promise.all(promises).then(() => meetingObjects);\r\n });\r\n },\r\n\r\n /**\r\n * Create calendar event\r\n * @param {object} [data] meeting payload data\r\n * @param {object} [query] the query parameters for specific usage\r\n * @returns {Promise} Resolves with creating calendar event response\r\n * */\r\n createCalendarEvent(data, query) {\r\n return EncryptHelper.encryptCalendarEventRequest(this, data).then(() =>\r\n this.request({\r\n method: 'POST',\r\n service: 'calendar',\r\n body: data,\r\n resource: 'calendarEvents/sync',\r\n qs: query || {},\r\n })\r\n );\r\n },\r\n\r\n /**\r\n * Update calendar event\r\n * @param {string} [id] calendar event id\r\n * @param {object} [data] meeting payload data\r\n * @param {object} [query] the query parameters for specific usage\r\n * @returns {Promise} Resolves with updating calendar event response\r\n * */\r\n updateCalendarEvent(id, data, query) {\r\n return EncryptHelper.encryptCalendarEventRequest(this, data).then(() =>\r\n this.request({\r\n method: 'PATCH',\r\n service: 'calendar',\r\n body: data,\r\n resource: `calendarEvents/${base64.encode(id)}/sync`,\r\n qs: query || {},\r\n })\r\n );\r\n },\r\n\r\n /**\r\n * Delete calendar event\r\n * @param {string} [id] calendar event id\r\n * @param {object} [query] the query parameters for specific usage\r\n * @returns {Promise} Resolves with deleting calendar event response\r\n * */\r\n deleteCalendarEvent(id, query) {\r\n return this.request({\r\n method: 'DELETE',\r\n service: 'calendar',\r\n resource: `calendarEvents/${base64.encode(id)}/sync`,\r\n qs: query || {},\r\n });\r\n },\r\n\r\n /**\r\n * @typedef QuerySchedulerDataOptions\r\n * @param {string} [siteName] it is site full url, must have. Example: ccctest.dmz.webex.com\r\n * @param {string} [id] it is seriesOrOccurrenceId. If present, the series/occurrence meeting ID to fetch data for.\r\n * Example: 040000008200E00074C5B7101A82E008000000004A99F11A0841D9010000000000000000100000009EE499D4A71C1A46B51494C70EC7BFE5\r\n * @param {string} [clientMeetingId] If present, the client meeting UUID to fetch data for.\r\n * Example: 7f318aa9-887c-6e94-802a-8dc8e6eb1a0a\r\n * @param {string} [scheduleTemplateId] it template id.\r\n * @param {string} [sessionTypeId] it session type id.\r\n * @param {string} [organizerCIUserId] required in schedule-on-behalf case. It is the organizer's CI UUID.\r\n * @param {boolean} [usmPreference]\r\n * @param {string} [webexMeetingId] webex side meeting UUID\r\n * @param {string} [eventId] event ID.\r\n * @param {string} [icalUid] icalendar UUID.\r\n * @param {string} [thirdPartyType] third part type, such as: Microsoft\r\n */\r\n /**\r\n * Get scheduler data from calendar service\r\n * @param {QuerySchedulerDataOptions} [query] the command parameters for fetching scheduler data.\r\n * @returns {Promise} Resolves with a decrypted scheduler data\r\n * */\r\n getSchedulerData(query) {\r\n return this.request({\r\n method: 'GET',\r\n service: 'calendar',\r\n resource: 'schedulerData',\r\n qs: query || {},\r\n }).then((response) => {\r\n return DecryptHelper.decryptSchedulerDataResponse(this, response.body).then(() => response);\r\n });\r\n },\r\n\r\n /**\r\n * Get free busy status from calendar service\r\n * @param {Object} [data] the command parameters for fetching free busy status.\r\n * @param {object} [query] the query parameters for specific usage\r\n * @returns {Promise} Resolves with a decrypted response\r\n * */\r\n getFreeBusy(data, query) {\r\n return EncryptHelper.encryptFreeBusyRequest(this, data)\r\n .then(() => {\r\n return this.request({\r\n method: 'POST',\r\n service: 'calendar',\r\n body: data,\r\n resource: 'freebusy',\r\n qs: query || {},\r\n });\r\n })\r\n .then(() => {\r\n return new Promise((resolve, reject) => {\r\n this.rpcEventRequests[data.requestId] = {resolve, reject};\r\n });\r\n })\r\n .catch((error) => {\r\n throw error;\r\n });\r\n },\r\n});\r\n\r\nexport default Calendar;\r\n"],"mappings":";;;;;;;;;;AA4CA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AAEA,IAAAE,WAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,UAAA,GAAAJ,OAAA;AAQA,IAAAK,gBAAA,GAAAF,sBAAA,CAAAH,OAAA;AACA,IAAAM,gBAAA,GAAAH,sBAAA,CAAAH,OAAA;AAEA,IAAMO,QAAQ,GAAGC,sBAAW,CAACC,MAAM,CAAC;EAClCC,SAAS,EAAE,UAAU;EAErB;AACF;AACA;AACA;AACA;AACA;EACEC,UAAU,EAAE,KAAK;EAEjB;AACF;AACA;EACEC,gBAAgB,EAAE,EAAE;EAEpB;AACF;AACA;EACEC,gBAAgB,EAAE,IAAI;EAEtB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,UAAU,WAAAA,WAAA,EAAG;IAAA,IAAAC,KAAA;IACX;IACA;IACA,IAAI,CAACC,YAAY,CAAC,IAAI,CAACC,KAAK,EAAE,OAAO,EAAE,YAAM;MAC3C;MACAF,KAAI,CAACE,KAAK,CAACC,QAAQ,CAACC,UAAU,CAACC,GAAG,CAACC,iBAAiB,CAAC;QAACC,KAAK,EAAE;MAAC,CAAC,CAAC,CAACC,IAAI,CAAC,UAACC,IAAI,EAAK;QAC9E,IAAMC,GAAG,GAAG,IAAAC,SAAA,CAAAC,OAAA,EAAQH,IAAI,CAAC,GAAGA,IAAI,CAAC,CAAC,CAAC,GAAGA,IAAI;QAC1CT,KAAI,CAACF,gBAAgB,GAAGY,GAAG,GAAGA,GAAG,CAACG,GAAG,GAAG,IAAI;QAC5Cb,KAAI,CAACc,MAAM,CAACC,IAAI,CAAC,yCAAyC,CAAC;QAC3Df,KAAI,CAACE,KAAK,CAACC,QAAQ,CAACC,UAAU,CAC3BY,MAAM,CAAChB,KAAI,CAACF,gBAAgB,EAAE;UAACmB,UAAU,EAAE;QAAI,CAAC,CAAC,CACjDT,IAAI,CAAC,UAACU,YAAY,EAAK;UACtBlB,KAAI,CAACF,gBAAgB,GAAGoB,YAAY,GAAGA,YAAY,CAACL,GAAG,GAAG,IAAI;UAC9Db,KAAI,CAACc,MAAM,CAACC,IAAI,CAAC,4DAA4D,CAAC;QAChF,CAAC,CAAC;MACN,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACEI,QAAQ,WAAAA,SAAA,EAAG;IAAA,IAAAC,MAAA;IACT,IAAI,CAAC,IAAI,CAAClB,KAAK,CAACmB,YAAY,EAAE;MAC5B,IAAI,CAACP,MAAM,CAACQ,KAAK,CAAC,oEAAoE,CAAC;MAEvF,OAAOC,QAAA,CAAAX,OAAA,CAAQY,MAAM,CAAC,IAAIC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1D;IAEA,IAAI,IAAI,CAAC7B,UAAU,EAAE;MACnB,IAAI,CAACkB,MAAM,CAACC,IAAI,CAAC,6DAA6D,CAAC;MAE/E,OAAOQ,QAAA,CAAAX,OAAA,CAAQc,OAAO,EAAE;IAC1B;IAEA,OAAO,IAAI,CAACxB,KAAK,CAACC,QAAQ,CAACwB,MAAM,CAC9BR,QAAQ,EAAE,CACVX,IAAI,CAAC;MAAA,OAAMY,MAAI,CAAClB,KAAK,CAACC,QAAQ,CAACyB,OAAO,CAACC,OAAO,EAAE;IAAA,EAAC,CACjDrB,IAAI,CAAC,YAAM;MACVY,MAAI,CAACU,eAAe,EAAE;MACtBV,MAAI,CAACW,OAAO,CAACC,8BAAmB,CAAC;MACjCZ,MAAI,CAACxB,UAAU,GAAG,IAAI;IACxB,CAAC,CAAC,CACDqC,KAAK,CAAC,UAACX,KAAK,EAAK;MAChBF,MAAI,CAACN,MAAM,CAACQ,KAAK,kDAAAY,MAAA,CAAkDZ,KAAK,CAACa,OAAO,EAAG;MAEnF,OAAOZ,QAAA,CAAAX,OAAA,CAAQY,MAAM,CAACF,KAAK,CAAC;IAC9B,CAAC,CAAC;EACN,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACEc,UAAU,WAAAA,WAAA,EAAG;IAAA,IAAAC,MAAA;IACX,IAAI,CAAC,IAAI,CAACzC,UAAU,EAAE;MACpB,IAAI,CAACkB,MAAM,CAACC,IAAI,CAAC,iEAAiE,CAAC;MAEnF,OAAOQ,QAAA,CAAAX,OAAA,CAAQc,OAAO,EAAE;IAC1B;IAEA,IAAI,CAACY,sBAAsB,EAAE;IAE7B,OAAO,IAAI,CAACpC,KAAK,CAACC,QAAQ,CAACyB,OAAO,CAC/BW,UAAU,EAAE,CACZ/B,IAAI,CAAC;MAAA,OAAM6B,MAAI,CAACnC,KAAK,CAACC,QAAQ,CAACwB,MAAM,CAACS,UAAU,EAAE;IAAA,EAAC,CACnD5B,IAAI,CAAC,YAAM;MACV6B,MAAI,CAACN,OAAO,CAACS,gCAAqB,CAAC;MACnCH,MAAI,CAACzC,UAAU,GAAG,KAAK;IACzB,CAAC,CAAC;EACN,CAAC;EAED;AACF;AACA;AACA;AACA;EACEkC,eAAe,WAAAA,gBAAA,EAAG;IAAA,IAAAW,MAAA;IAChB;IACA,IAAI,CAACvC,KAAK,CAACC,QAAQ,CAACyB,OAAO,CAACc,EAAE,CAAC,+BAA+B,EAAE,UAACC,QAAQ,EAAK;MAC5EF,MAAI,CAACG,aAAa,CAACD,QAAQ,CAACE,IAAI,CAAC;IACnC,CAAC,CAAC;IACF,IAAI,CAAC3C,KAAK,CAACC,QAAQ,CAACyB,OAAO,CAACc,EAAE,CAAC,+BAA+B,EAAE,UAACC,QAAQ,EAAK;MAC5EF,MAAI,CAACK,aAAa,CAACH,QAAQ,CAACE,IAAI,CAAC;IACnC,CAAC,CAAC;IACF,IAAI,CAAC3C,KAAK,CAACC,QAAQ,CAACyB,OAAO,CAACc,EAAE,CAAC,uCAAuC,EAAE,UAACC,QAAQ,EAAK;MACpFF,MAAI,CAACG,aAAa,CAACD,QAAQ,CAACE,IAAI,CAAC;IACnC,CAAC,CAAC;IACF,IAAI,CAAC3C,KAAK,CAACC,QAAQ,CAACyB,OAAO,CAACc,EAAE,CAAC,uCAAuC,EAAE,UAACC,QAAQ,EAAK;MACpFF,MAAI,CAACK,aAAa,CAACH,QAAQ,CAACE,IAAI,CAAC;IACnC,CAAC,CAAC;IACF,IAAI,CAAC3C,KAAK,CAACC,QAAQ,CAACyB,OAAO,CAACc,EAAE,CAAC,+BAA+B,EAAE,UAACC,QAAQ,EAAK;MAC5EF,MAAI,CAACM,aAAa,CAACJ,QAAQ,CAACE,IAAI,CAAC;IACnC,CAAC,CAAC;IACF,IAAI,CAAC3C,KAAK,CAACC,QAAQ,CAACyB,OAAO,CAACc,EAAE,CAAC,0BAA0B,EAAE,UAACC,QAAQ,EAAK;MACvEF,MAAI,CAACO,eAAe,CAACL,QAAQ,CAACE,IAAI,CAAC;IACrC,CAAC,CAAC;EACJ,CAAC;EAED;AACF;AACA;AACA;AACA;EACEP,sBAAsB,WAAAA,uBAAA,EAAG;IACvB,IAAI,CAACpC,KAAK,CAACC,QAAQ,CAACyB,OAAO,CAACqB,GAAG,CAAC,+BAA+B,CAAC;IAChE,IAAI,CAAC/C,KAAK,CAACC,QAAQ,CAACyB,OAAO,CAACqB,GAAG,CAAC,uCAAuC,CAAC;IACxE,IAAI,CAAC/C,KAAK,CAACC,QAAQ,CAACyB,OAAO,CAACqB,GAAG,CAAC,+BAA+B,CAAC;IAChE,IAAI,CAAC/C,KAAK,CAACC,QAAQ,CAACyB,OAAO,CAACqB,GAAG,CAAC,uCAAuC,CAAC;IACxE,IAAI,CAAC/C,KAAK,CAACC,QAAQ,CAACyB,OAAO,CAACqB,GAAG,CAAC,+BAA+B,CAAC;IAChE,IAAI,CAAC/C,KAAK,CAACC,QAAQ,CAACyB,OAAO,CAACqB,GAAG,CAAC,0BAA0B,CAAC;EAC7D,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEH,aAAa,WAAAA,cAACD,IAAI,EAAE;IAClB,IAAMK,EAAE,GAAGC,mBAAkB,CAACC,GAAG,CAACP,IAAI,CAACQ,uBAAuB,CAAC;IAE/D,IAAI,CAACtB,OAAO,CAACuB,2BAAgB,EAAEH,mBAAkB,CAACI,GAAG,CAACL,EAAE,CAAC,CAAC;EAC5D,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEN,aAAa,WAAAA,cAACC,IAAI,EAAE;IAClB,IAAMK,EAAE,GAAGC,mBAAkB,CAACC,GAAG,CAACP,IAAI,CAACQ,uBAAuB,CAAC;IAE/D,IAAI,CAACtB,OAAO,CAACyB,0BAAe,EAAEL,mBAAkB,CAACI,GAAG,CAACL,EAAE,CAAC,CAAC;EAC3D,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEH,aAAa,WAAAA,cAACF,IAAI,EAAE;IAClB,IAAMY,IAAI,GAAGN,mBAAkB,CAACO,MAAM,CAACb,IAAI,CAACQ,uBAAuB,CAACH,EAAE,CAAC;IAEvE,IAAI,CAACnB,OAAO,CAAC4B,0BAAe,EAAEF,IAAI,CAAC;EACrC,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACET,eAAe,WAAAA,gBAACH,IAAI,EAAE;IAAA,IAAAe,MAAA;IACpBC,wBAAa,CAACC,uBAAuB,CAAC,IAAI,EAAEjB,IAAI,CAAC,CAACrC,IAAI,CAAC,YAAM;MAC3D,IAAIuD,QAAQ,GAAG,CAAC,CAAC;MACjB,IAAIlB,IAAI,IAAIA,IAAI,CAACmB,gCAAgC,EAAE;QACjDD,QAAQ,GAAGlB,IAAI,CAACmB,gCAAgC;MAClD;MACA,IAAID,QAAQ,IAAIA,QAAQ,CAACE,SAAS,IAAIF,QAAQ,CAACE,SAAS,IAAIL,MAAI,CAAC/D,gBAAgB,EAAE;QACjF+D,MAAI,CAAC9C,MAAM,CAACoD,GAAG,2DAAAhC,MAAA,CAC6C6B,QAAQ,CAACE,SAAS,EAC7E;QACD,OAAOF,QAAQ,CAACjE,gBAAgB;QAChC,IAAO4B,OAAO,GAAIkC,MAAI,CAAC/D,gBAAgB,CAACkE,QAAQ,CAACE,SAAS,CAAC,CAApDvC,OAAO;QACdA,OAAO,CAACqC,QAAQ,CAAC;QACjB,OAAOH,MAAI,CAAC/D,gBAAgB,CAACkE,QAAQ,CAACE,SAAS,CAAC;MAClD,CAAC,MAAM;QACLL,MAAI,CAAC9C,MAAM,CAACoD,GAAG,CAAC,mDAAmD,CAAC;MACtE;IACF,CAAC,CAAC;EACJ,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,YAAY,WAAAA,aAAA,EAAyE;IAAA,IAAxEC,OAAO,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG;MAACG,QAAQ,EAAE,IAAI,CAACC,MAAM,CAACD,QAAQ;MAAEE,MAAM,EAAE,IAAI,CAACD,MAAM,CAACC;IAAM,CAAC;IACjF,OAAO,IAAI,CAACC,IAAI,CAAC;MAACH,QAAQ,EAAEJ,OAAO,CAACI,QAAQ;MAAEE,MAAM,EAAEN,OAAO,CAACM;IAAM,CAAC,CAAC,CAAClE,IAAI,CAAC,UAACoE,GAAG,EAAK;MACnFzB,mBAAkB,CAAC0B,MAAM,CAACD,GAAG,CAAC;MAE9B,OAAOzB,mBAAkB,CAAC2B,MAAM,EAAE;IACpC,CAAC,CAAC;EACJ,CAAC;EACD;AACF;AACA;AACA;AACA;AACA;EACEC,SAAS,WAAAA,UAACrE,GAAG,EAAEsE,KAAK,EAAE;IACpB,IAAI,CAAC,UAAU,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAACC,QAAQ,CAACvE,GAAG,CAAC,EAAE;MAChE,OAAOyC,mBAAkB,CAAC+B,KAAK,CAACxE,GAAG,EAAEsE,KAAK,CAAC;IAC7C;IACA,MAAM,IAAIvD,KAAK,CAAC,+DAA+D,CAAC;EAClF,CAAC;EAED;AACF;AACA;AACA;EACEqD,MAAM,WAAAA,OAAA,EAAG;IACP,OAAO3B,mBAAkB,CAAC2B,MAAM,EAAE;EACpC,CAAC;EAED;AACF;AACA;AACA;AACA;EACEK,mBAAmB,WAAAA,oBAACC,KAAK,EAAE;IACzB,OAAO,IAAI,CAAClF,KAAK,CAACmF,SAAS,CAAC,SAAS,EAAED,KAAK,CAAC,CAAC5E,IAAI,CAAC;MAAA,OAAM4E,KAAK;IAAA,EAAC;EACjE,CAAC;EAED;AACF;AACA;AACA;AACA;EACEE,eAAe,WAAAA,gBAACpC,EAAE,EAAE;IAClB,OAAO,IAAI,CAACqC,OAAO,CAAC;MAClBC,MAAM,EAAE,KAAK;MACbC,OAAO,EAAE,UAAU;MACnBC,QAAQ,oBAAAxD,MAAA,CAAoByD,cAAM,CAACC,MAAM,CAAC1C,EAAE,CAAC;IAC/C,CAAC,CAAC;EACJ,CAAC;EAED;AACF;AACA;AACA;AACA;EACE2C,QAAQ,WAAAA,SAAC3C,EAAE,EAAE;IACX,OAAO,IAAI,CAACqC,OAAO,CAAC;MAClBC,MAAM,EAAE,KAAK;MACbC,OAAO,EAAE,UAAU;MACnBC,QAAQ,oBAAAxD,MAAA,CAAoByD,cAAM,CAACC,MAAM,CAAC1C,EAAE,CAAC;IAC/C,CAAC,CAAC;EACJ,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACEyB,IAAI,WAAAA,KAACP,OAAO,EAAE;IAAA,IAAA0B,MAAA;IACZ1B,OAAO,GAAGA,OAAO,IAAI,CAAC,CAAC;IAEvB,OAAO,IAAI,CAAClE,KAAK,CACdqF,OAAO,CAAC;MACPC,MAAM,EAAE,KAAK;MACbC,OAAO,EAAE,UAAU;MACnBC,QAAQ,EAAE,gBAAgB;MAC1BK,EAAE,EAAE3B;IACN,CAAC,CAAC,CACD5D,IAAI,CAAC,UAACoE,GAAG,EAAK;MACb,IAAMoB,cAAc,GAAGpB,GAAG,CAACqB,IAAI,CAACC,KAAK;MACrC,IAAMC,QAAQ,GAAG,EAAE;MAEnBH,cAAc,CAACI,OAAO,CAAC,UAACC,OAAO,EAAK;QAClC,IAAI,CAACA,OAAO,CAACC,qBAAqB,EAAE;UAClCH,QAAQ,CAACI,IAAI,CACXT,MAAI,CAACR,eAAe,CAACe,OAAO,CAACnD,EAAE,CAAC,CAAC1C,IAAI,CAAC,UAACgG,aAAa,EAAK;YACvDH,OAAO,CAACC,qBAAqB,GAAGE,aAAa,CAACP,IAAI,CAACK,qBAAqB;UAC1E,CAAC,CAAC,CACH;QACH;MACF,CAAC,CAAC;MAEF,OAAO/E,QAAA,CAAAX,OAAA,CAAQ6F,GAAG,CAACN,QAAQ,CAAC,CAAC3F,IAAI,CAAC;QAAA,OAAMwF,cAAc;MAAA,EAAC;IACzD,CAAC,CAAC;EACN,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEU,mBAAmB,WAAAA,oBAAC7D,IAAI,EAAE8D,KAAK,EAAE;IAAA,IAAAC,MAAA;IAC/B,OAAOC,wBAAa,CAACC,2BAA2B,CAAC,IAAI,EAAEjE,IAAI,CAAC,CAACrC,IAAI,CAAC;MAAA,OAChEoG,MAAI,CAACrB,OAAO,CAAC;QACXC,MAAM,EAAE,MAAM;QACdC,OAAO,EAAE,UAAU;QACnBQ,IAAI,EAAEpD,IAAI;QACV6C,QAAQ,EAAE,qBAAqB;QAC/BK,EAAE,EAAEY,KAAK,IAAI,CAAC;MAChB,CAAC,CAAC;IAAA,EACH;EACH,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACEI,mBAAmB,WAAAA,oBAAC7D,EAAE,EAAEL,IAAI,EAAE8D,KAAK,EAAE;IAAA,IAAAK,MAAA;IACnC,OAAOH,wBAAa,CAACC,2BAA2B,CAAC,IAAI,EAAEjE,IAAI,CAAC,CAACrC,IAAI,CAAC;MAAA,OAChEwG,MAAI,CAACzB,OAAO,CAAC;QACXC,MAAM,EAAE,OAAO;QACfC,OAAO,EAAE,UAAU;QACnBQ,IAAI,EAAEpD,IAAI;QACV6C,QAAQ,oBAAAxD,MAAA,CAAoByD,cAAM,CAACC,MAAM,CAAC1C,EAAE,CAAC,UAAO;QACpD6C,EAAE,EAAEY,KAAK,IAAI,CAAC;MAChB,CAAC,CAAC;IAAA,EACH;EACH,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEM,mBAAmB,WAAAA,oBAAC/D,EAAE,EAAEyD,KAAK,EAAE;IAC7B,OAAO,IAAI,CAACpB,OAAO,CAAC;MAClBC,MAAM,EAAE,QAAQ;MAChBC,OAAO,EAAE,UAAU;MACnBC,QAAQ,oBAAAxD,MAAA,CAAoByD,cAAM,CAACC,MAAM,CAAC1C,EAAE,CAAC,UAAO;MACpD6C,EAAE,EAAEY,KAAK,IAAI,CAAC;IAChB,CAAC,CAAC;EACJ,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE;AACF;AACA;AACA;AACA;EACEO,gBAAgB,WAAAA,iBAACP,KAAK,EAAE;IAAA,IAAAQ,MAAA;IACtB,OAAO,IAAI,CAAC5B,OAAO,CAAC;MAClBC,MAAM,EAAE,KAAK;MACbC,OAAO,EAAE,UAAU;MACnBC,QAAQ,EAAE,eAAe;MACzBK,EAAE,EAAEY,KAAK,IAAI,CAAC;IAChB,CAAC,CAAC,CAACnG,IAAI,CAAC,UAACuD,QAAQ,EAAK;MACpB,OAAOF,wBAAa,CAACuD,4BAA4B,CAACD,MAAI,EAAEpD,QAAQ,CAACkC,IAAI,CAAC,CAACzF,IAAI,CAAC;QAAA,OAAMuD,QAAQ;MAAA,EAAC;IAC7F,CAAC,CAAC;EACJ,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEsD,WAAW,WAAAA,YAACxE,IAAI,EAAE8D,KAAK,EAAE;IAAA,IAAAW,OAAA;IACvB,OAAOT,wBAAa,CAACU,sBAAsB,CAAC,IAAI,EAAE1E,IAAI,CAAC,CACpDrC,IAAI,CAAC,YAAM;MACV,OAAO8G,OAAI,CAAC/B,OAAO,CAAC;QAClBC,MAAM,EAAE,MAAM;QACdC,OAAO,EAAE,UAAU;QACnBQ,IAAI,EAAEpD,IAAI;QACV6C,QAAQ,EAAE,UAAU;QACpBK,EAAE,EAAEY,KAAK,IAAI,CAAC;MAChB,CAAC,CAAC;IACJ,CAAC,CAAC,CACDnG,IAAI,CAAC,YAAM;MACV,OAAO,IAAAe,QAAA,CAAAX,OAAA,CAAY,UAACc,OAAO,EAAEF,MAAM,EAAK;QACtC8F,OAAI,CAACzH,gBAAgB,CAACgD,IAAI,CAACoB,SAAS,CAAC,GAAG;UAACvC,OAAO,EAAPA,OAAO;UAAEF,MAAM,EAANA;QAAM,CAAC;MAC3D,CAAC,CAAC;IACJ,CAAC,CAAC,CACDS,KAAK,CAAC,UAACX,KAAK,EAAK;MAChB,MAAMA,KAAK;IACb,CAAC,CAAC;EACN,CAAC;EAAAkG,OAAA;AACH,CAAC,CAAC;AAAC,IAAAC,QAAA,GAEYjI,QAAQ;AAAAkI,OAAA,CAAA9G,OAAA,GAAA6G,QAAA"}
1
+ {"version":3,"names":["_lodash","require","_common","_webexCore","_collection","_interopRequireDefault","_constants","_calendarEncrypt","_calendarDecrypt","Calendar","WebexPlugin","extend","namespace","registered","rpcEventRequests","encryptionKeyUrl","initialize","_this","listenToOnce","webex","internal","encryption","kms","createUnboundKeys","count","then","keys","key","isArray","uri","logger","info","getKey","onBehalfOf","retrievedKey","register","_this2","canAuthorize","error","_promise","default","reject","Error","resolve","device","mercury","connect","listenForEvents","trigger","CALENDAR_REGISTERED","catch","concat","message","unregister","_this3","stopListeningForEvents","disconnect","CALENDAR_UNREGISTERED","_this4","on","envelope","_handleCreate","data","_handleUpdate","_handleDelete","_handleFreeBusy","off","id","CalendarCollection","set","calendarMeetingExternal","CALENDAR_UPDATED","get","CALENDAR_CREATE","item","remove","CALENDAR_DELETE","_this5","DecryptHelper","decryptFreeBusyResponse","response","calendarFreeBusyScheduleResponse","requestId","log","syncCalendar","options","arguments","length","undefined","fromDate","config","toDate","list","res","setAll","getAll","getByType","value","includes","getBy","processMeetingEvent","event","transform","getParticipants","request","method","service","resource","base64","encode","getNotes","_this6","qs","meetingObjects","body","items","promises","forEach","meeting","encryptedParticipants","push","notesResponse","all","createCalendarEvent","query","_this7","EncryptHelper","encryptCalendarEventRequest","updateCalendarEvent","_this8","deleteCalendarEvent","getSchedulerData","_this9","decryptSchedulerDataResponse","getFreeBusy","_this10","encryptFreeBusyRequest","version","_default","exports"],"sources":["calendar.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/**\n * Calendar Item Create Event\n * Emitted when a calendar item has been added\n * @event calendar:meeting:create\n * @instance\n * @memberof Calendar\n */\n\n/**\n * Calendar Item Update Event\n * Emitted when a calendar item has been updated\n * @event calendar:meeting:update\n * @instance\n * @memberof Calendar\n */\n\n/**\n * Calendar Item Update Event\n * Emitted when a calendar item has been deleted\n * @event calendar:meeting:delete\n * @instance\n * @memberof Calendar\n */\n\n/**\n * Calendar Registered Event\n * Emitted when the calendar instance has been registered and listening\n * @event calendar:registered\n * @instance\n * @memberof Calendar\n */\n\n/**\n * Calendar Registered Event\n * Emitted when the calendar instance has been registered and listening\n * @event calendar:unregistered\n * @instance\n * @memberof Calendar\n */\nimport {isArray} from 'lodash';\nimport {base64} from '@webex/common';\nimport {WebexPlugin} from '@webex/webex-core';\n\nimport CalendarCollection from './collection';\nimport {\n CALENDAR_REGISTERED,\n CALENDAR_UNREGISTERED,\n CALENDAR_DELETE,\n CALENDAR_CREATE,\n CALENDAR_UPDATED,\n} from './constants';\n\nimport EncryptHelper from './calendar.encrypt.helper';\nimport DecryptHelper from './calendar.decrypt.helper';\n\nconst Calendar = WebexPlugin.extend({\n namespace: 'Calendar',\n\n /**\n * registered value indicating events registration is successful\n * @instance\n * @type {Boolean}\n * @memberof Calendar\n */\n registered: false,\n\n /**\n * Cache all rpc event request locally\n * */\n rpcEventRequests: [],\n\n /**\n * Cache KMS encryptionKeyUrl\n * */\n encryptionKeyUrl: null,\n\n /**\n * WebexPlugin initialize method. This triggers once Webex has completed its\n * initialization workflow.\n *\n * If the plugin is meant to perform startup actions, place them in this\n * `initialize()` method instead of the `constructor()` method.\n * @returns {void}\n */\n initialize() {\n // Used to perform actions after webex is fully qualified and ready for\n // operation.\n this.listenToOnce(this.webex, 'ready', () => {\n // Pre-fetch a KMS encryption key url to improve performance\n this.webex.internal.encryption.kms.createUnboundKeys({count: 1}).then((keys) => {\n const key = isArray(keys) ? keys[0] : keys;\n this.encryptionKeyUrl = key ? key.uri : null;\n this.logger.info('calendar->bind a KMS encryption key url');\n this.webex.internal.encryption\n .getKey(this.encryptionKeyUrl, {onBehalfOf: null})\n .then((retrievedKey) => {\n this.encryptionKeyUrl = retrievedKey ? retrievedKey.uri : null;\n this.logger.info('calendar->retrieve the KMS encryption key url and cache it');\n });\n });\n });\n },\n\n /**\n * Explicitly sets up the calendar plugin by registering\n * the device, connecting to mercury, and listening for calendar events.\n * @returns {Promise}\n * @public\n * @memberof Calendar\n */\n register() {\n if (!this.webex.canAuthorize) {\n this.logger.error('calendar->register#ERROR, Unable to register, SDK cannot authorize');\n\n return Promise.reject(new Error('SDK cannot authorize'));\n }\n\n if (this.registered) {\n this.logger.info('calendar->register#INFO, Calendar plugin already registered');\n\n return Promise.resolve();\n }\n\n return this.webex.internal.device\n .register()\n .then(() => this.webex.internal.mercury.connect())\n .then(() => {\n this.listenForEvents();\n this.trigger(CALENDAR_REGISTERED);\n this.registered = true;\n })\n .catch((error) => {\n this.logger.error(`calendar->register#ERROR, Unable to register, ${error.message}`);\n\n return Promise.reject(error);\n });\n },\n\n /**\n * Explicitly tears down the calendar plugin by deregistering\n * the device, disconnecting from mercury, and stops listening to calendar events\n *\n * @returns {Promise}\n * @public\n * @memberof Calendar\n */\n unregister() {\n if (!this.registered) {\n this.logger.info('calendar->unregister#INFO, Calendar plugin already unregistered');\n\n return Promise.resolve();\n }\n\n this.stopListeningForEvents();\n\n return this.webex.internal.mercury\n .disconnect()\n .then(() => this.webex.internal.device.unregister())\n .then(() => {\n this.trigger(CALENDAR_UNREGISTERED);\n this.registered = false;\n });\n },\n\n /**\n * registers for calendar events through mercury\n * @returns {undefined}\n * @private\n */\n listenForEvents() {\n // Calendar mercury events listener\n this.webex.internal.mercury.on('event:calendar.meeting.create', (envelope) => {\n this._handleCreate(envelope.data);\n });\n this.webex.internal.mercury.on('event:calendar.meeting.update', (envelope) => {\n this._handleUpdate(envelope.data);\n });\n this.webex.internal.mercury.on('event:calendar.meeting.create.minimal', (envelope) => {\n this._handleCreate(envelope.data);\n });\n this.webex.internal.mercury.on('event:calendar.meeting.update.minimal', (envelope) => {\n this._handleUpdate(envelope.data);\n });\n this.webex.internal.mercury.on('event:calendar.meeting.delete', (envelope) => {\n this._handleDelete(envelope.data);\n });\n this.webex.internal.mercury.on('event:calendar.free_busy', (envelope) => {\n this._handleFreeBusy(envelope.data);\n });\n },\n\n /**\n * unregisteres all the calendar events from mercury\n * @returns {undefined}\n * @private\n */\n stopListeningForEvents() {\n this.webex.internal.mercury.off('event:calendar.meeting.create');\n this.webex.internal.mercury.off('event:calendar.meeting.create.minimal');\n this.webex.internal.mercury.off('event:calendar.meeting.update');\n this.webex.internal.mercury.off('event:calendar.meeting.update.minimal');\n this.webex.internal.mercury.off('event:calendar.meeting.delete');\n this.webex.internal.mercury.off('event:calendar.free_busy');\n },\n\n /**\n * handles update events, triggers after collection updates\n * @param {Object} data\n * @returns {undefined}\n * @private\n */\n _handleUpdate(data) {\n const id = CalendarCollection.set(data.calendarMeetingExternal);\n\n this.trigger(CALENDAR_UPDATED, CalendarCollection.get(id));\n },\n\n /**\n * handles create events, triggers after collection updates\n * @param {Object} data\n * @returns {undefined}\n * @private\n */\n _handleCreate(data) {\n const id = CalendarCollection.set(data.calendarMeetingExternal);\n\n this.trigger(CALENDAR_CREATE, CalendarCollection.get(id));\n },\n\n /**\n * handles delete events, triggers after collection updates\n * @param {Object} data\n * @returns {undefined}\n * @private\n */\n _handleDelete(data) {\n const item = CalendarCollection.remove(data.calendarMeetingExternal.id);\n\n this.trigger(CALENDAR_DELETE, item);\n },\n\n /**\n * handles free_busy events\n * @param {Object} data\n * @returns {undefined}\n * @private\n */\n _handleFreeBusy(data) {\n DecryptHelper.decryptFreeBusyResponse(this, data).then(() => {\n let response = {};\n if (data && data.calendarFreeBusyScheduleResponse) {\n response = data.calendarFreeBusyScheduleResponse;\n }\n if (response && response.requestId && response.requestId in this.rpcEventRequests) {\n this.logger.log(\n `webex.internal.calendar - receive requests, requestId: ${response.requestId}`\n );\n delete response.encryptionKeyUrl;\n const {resolve} = this.rpcEventRequests[response.requestId];\n resolve(response);\n delete this.rpcEventRequests[response.requestId];\n } else {\n this.logger.log('webex.internal.calendar - receive other requests.');\n }\n });\n },\n\n /**\n * Retrieves a collection of calendars based on the request parameters\n * Defaults to 1 day before and 7 days ahead\n * @param {Object} options\n * @param {Date} options.fromDate the start of the time range\n * @param {Date} options.toDate the end of the time range\n * @returns {Promise} Resolves with an array of calendars\n */\n syncCalendar(options = {fromDate: this.config.fromDate, toDate: this.config.toDate}) {\n return this.list({fromDate: options.fromDate, toDate: options.toDate}).then((res) => {\n CalendarCollection.setAll(res);\n\n return CalendarCollection.getAll();\n });\n },\n /**\n * get the calendar item that has a matching value\n * @param {String} key meeting property\n * @param {Any} value the meeting property to match\n * @returns {Object}\n */\n getByType(key, value) {\n if (['spaceURI', 'spaceMeetURL', 'conversationId'].includes(key)) {\n return CalendarCollection.getBy(key, value);\n }\n throw new Error('key must be one of, spaceURI, spaceMeetURL, or conversationId');\n },\n\n /**\n * gets all the calendar items that have been populated\n * @returns {Object}\n */\n getAll() {\n return CalendarCollection.getAll();\n },\n\n /**\n * Decrypts an encrypted incoming calendar event\n * @param {Object} event\n * @returns {Promise} Resolves with a decrypted calendar event\n */\n processMeetingEvent(event) {\n return this.webex.transform('inbound', event).then(() => event);\n },\n\n /**\n * Retrieves an array of meeting participants for the meeting id\n * @param {String} id\n * @returns {Promise} Resolves with an object of meeting participants\n */\n getParticipants(id) {\n return this.request({\n method: 'GET',\n service: 'calendar',\n resource: `calendarEvents/${base64.encode(id)}/participants`,\n });\n },\n\n /**\n * Retrieves a collection of meetings based on the request parameters\n * @param {String} id\n * @returns {Promise} Resolves with an object of meeting notes\n */\n getNotes(id) {\n return this.request({\n method: 'GET',\n service: 'calendar',\n resource: `calendarEvents/${base64.encode(id)}/notes`,\n });\n },\n\n /**\n * Retrieves a collection of meetings based on the request parameters\n * @param {Object} options\n * @param {Date} options.fromDate the start of the time range\n * @param {Date} options.toDate the end of the time range\n * @returns {Promise} Resolves with an array of meetings\n */\n list(options) {\n options = options || {};\n\n return this.webex\n .request({\n method: 'GET',\n service: 'calendar',\n resource: 'calendarEvents',\n qs: options,\n })\n .then((res) => {\n const meetingObjects = res.body.items;\n const promises = [];\n\n meetingObjects.forEach((meeting) => {\n if (!meeting.encryptedParticipants) {\n promises.push(\n this.getParticipants(meeting.id).then((notesResponse) => {\n meeting.encryptedParticipants = notesResponse.body.encryptedParticipants;\n })\n );\n }\n });\n\n return Promise.all(promises).then(() => meetingObjects);\n });\n },\n\n /**\n * Create calendar event\n * @param {object} [data] meeting payload data\n * @param {object} [query] the query parameters for specific usage\n * @returns {Promise} Resolves with creating calendar event response\n * */\n createCalendarEvent(data, query) {\n return EncryptHelper.encryptCalendarEventRequest(this, data).then(() =>\n this.request({\n method: 'POST',\n service: 'calendar',\n body: data,\n resource: 'calendarEvents/sync',\n qs: query || {},\n })\n );\n },\n\n /**\n * Update calendar event\n * @param {string} [id] calendar event id\n * @param {object} [data] meeting payload data\n * @param {object} [query] the query parameters for specific usage\n * @returns {Promise} Resolves with updating calendar event response\n * */\n updateCalendarEvent(id, data, query) {\n return EncryptHelper.encryptCalendarEventRequest(this, data).then(() =>\n this.request({\n method: 'PATCH',\n service: 'calendar',\n body: data,\n resource: `calendarEvents/${base64.encode(id)}/sync`,\n qs: query || {},\n })\n );\n },\n\n /**\n * Delete calendar event\n * @param {string} [id] calendar event id\n * @param {object} [query] the query parameters for specific usage\n * @returns {Promise} Resolves with deleting calendar event response\n * */\n deleteCalendarEvent(id, query) {\n return this.request({\n method: 'DELETE',\n service: 'calendar',\n resource: `calendarEvents/${base64.encode(id)}/sync`,\n qs: query || {},\n });\n },\n\n /**\n * @typedef QuerySchedulerDataOptions\n * @param {string} [siteName] it is site full url, must have. Example: ccctest.dmz.webex.com\n * @param {string} [id] it is seriesOrOccurrenceId. If present, the series/occurrence meeting ID to fetch data for.\n * Example: 040000008200E00074C5B7101A82E008000000004A99F11A0841D9010000000000000000100000009EE499D4A71C1A46B51494C70EC7BFE5\n * @param {string} [clientMeetingId] If present, the client meeting UUID to fetch data for.\n * Example: 7f318aa9-887c-6e94-802a-8dc8e6eb1a0a\n * @param {string} [scheduleTemplateId] it template id.\n * @param {string} [sessionTypeId] it session type id.\n * @param {string} [organizerCIUserId] required in schedule-on-behalf case. It is the organizer's CI UUID.\n * @param {boolean} [usmPreference]\n * @param {string} [webexMeetingId] webex side meeting UUID\n * @param {string} [eventId] event ID.\n * @param {string} [icalUid] icalendar UUID.\n * @param {string} [thirdPartyType] third part type, such as: Microsoft\n */\n /**\n * Get scheduler data from calendar service\n * @param {QuerySchedulerDataOptions} [query] the command parameters for fetching scheduler data.\n * @returns {Promise} Resolves with a decrypted scheduler data\n * */\n getSchedulerData(query) {\n return this.request({\n method: 'GET',\n service: 'calendar',\n resource: 'schedulerData',\n qs: query || {},\n }).then((response) => {\n return DecryptHelper.decryptSchedulerDataResponse(this, response.body).then(() => response);\n });\n },\n\n /**\n * Get free busy status from calendar service\n * @param {Object} [data] the command parameters for fetching free busy status.\n * @param {object} [query] the query parameters for specific usage\n * @returns {Promise} Resolves with a decrypted response\n * */\n getFreeBusy(data, query) {\n return EncryptHelper.encryptFreeBusyRequest(this, data)\n .then(() => {\n return this.request({\n method: 'POST',\n service: 'calendar',\n body: data,\n resource: 'freebusy',\n qs: query || {},\n });\n })\n .then(() => {\n return new Promise((resolve, reject) => {\n this.rpcEventRequests[data.requestId] = {resolve, reject};\n });\n })\n .catch((error) => {\n throw error;\n });\n },\n});\n\nexport default Calendar;\n"],"mappings":";;;;;;;;;AA2CA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AAEA,IAAAG,WAAA,GAAAC,sBAAA,CAAAJ,OAAA;AACA,IAAAK,UAAA,GAAAL,OAAA;AAQA,IAAAM,gBAAA,GAAAF,sBAAA,CAAAJ,OAAA;AACA,IAAAO,gBAAA,GAAAH,sBAAA,CAAAJ,OAAA;AAzDA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAiBA,IAAMQ,QAAQ,GAAGC,sBAAW,CAACC,MAAM,CAAC;EAClCC,SAAS,EAAE,UAAU;EAErB;AACF;AACA;AACA;AACA;AACA;EACEC,UAAU,EAAE,KAAK;EAEjB;AACF;AACA;EACEC,gBAAgB,EAAE,EAAE;EAEpB;AACF;AACA;EACEC,gBAAgB,EAAE,IAAI;EAEtB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,UAAU,WAAAA,WAAA,EAAG;IAAA,IAAAC,KAAA;IACX;IACA;IACA,IAAI,CAACC,YAAY,CAAC,IAAI,CAACC,KAAK,EAAE,OAAO,EAAE,YAAM;MAC3C;MACAF,KAAI,CAACE,KAAK,CAACC,QAAQ,CAACC,UAAU,CAACC,GAAG,CAACC,iBAAiB,CAAC;QAACC,KAAK,EAAE;MAAC,CAAC,CAAC,CAACC,IAAI,CAAC,UAACC,IAAI,EAAK;QAC9E,IAAMC,GAAG,GAAG,IAAAC,eAAO,EAACF,IAAI,CAAC,GAAGA,IAAI,CAAC,CAAC,CAAC,GAAGA,IAAI;QAC1CT,KAAI,CAACF,gBAAgB,GAAGY,GAAG,GAAGA,GAAG,CAACE,GAAG,GAAG,IAAI;QAC5CZ,KAAI,CAACa,MAAM,CAACC,IAAI,CAAC,yCAAyC,CAAC;QAC3Dd,KAAI,CAACE,KAAK,CAACC,QAAQ,CAACC,UAAU,CAC3BW,MAAM,CAACf,KAAI,CAACF,gBAAgB,EAAE;UAACkB,UAAU,EAAE;QAAI,CAAC,CAAC,CACjDR,IAAI,CAAC,UAACS,YAAY,EAAK;UACtBjB,KAAI,CAACF,gBAAgB,GAAGmB,YAAY,GAAGA,YAAY,CAACL,GAAG,GAAG,IAAI;UAC9DZ,KAAI,CAACa,MAAM,CAACC,IAAI,CAAC,4DAA4D,CAAC;QAChF,CAAC,CAAC;MACN,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACEI,QAAQ,WAAAA,SAAA,EAAG;IAAA,IAAAC,MAAA;IACT,IAAI,CAAC,IAAI,CAACjB,KAAK,CAACkB,YAAY,EAAE;MAC5B,IAAI,CAACP,MAAM,CAACQ,KAAK,CAAC,oEAAoE,CAAC;MAEvF,OAAOC,QAAA,CAAAC,OAAA,CAAQC,MAAM,CAAC,IAAIC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1D;IAEA,IAAI,IAAI,CAAC7B,UAAU,EAAE;MACnB,IAAI,CAACiB,MAAM,CAACC,IAAI,CAAC,6DAA6D,CAAC;MAE/E,OAAOQ,QAAA,CAAAC,OAAA,CAAQG,OAAO,EAAE;IAC1B;IAEA,OAAO,IAAI,CAACxB,KAAK,CAACC,QAAQ,CAACwB,MAAM,CAC9BT,QAAQ,EAAE,CACVV,IAAI,CAAC;MAAA,OAAMW,MAAI,CAACjB,KAAK,CAACC,QAAQ,CAACyB,OAAO,CAACC,OAAO,EAAE;IAAA,EAAC,CACjDrB,IAAI,CAAC,YAAM;MACVW,MAAI,CAACW,eAAe,EAAE;MACtBX,MAAI,CAACY,OAAO,CAACC,8BAAmB,CAAC;MACjCb,MAAI,CAACvB,UAAU,GAAG,IAAI;IACxB,CAAC,CAAC,CACDqC,KAAK,CAAC,UAACZ,KAAK,EAAK;MAChBF,MAAI,CAACN,MAAM,CAACQ,KAAK,kDAAAa,MAAA,CAAkDb,KAAK,CAACc,OAAO,EAAG;MAEnF,OAAOb,QAAA,CAAAC,OAAA,CAAQC,MAAM,CAACH,KAAK,CAAC;IAC9B,CAAC,CAAC;EACN,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACEe,UAAU,WAAAA,WAAA,EAAG;IAAA,IAAAC,MAAA;IACX,IAAI,CAAC,IAAI,CAACzC,UAAU,EAAE;MACpB,IAAI,CAACiB,MAAM,CAACC,IAAI,CAAC,iEAAiE,CAAC;MAEnF,OAAOQ,QAAA,CAAAC,OAAA,CAAQG,OAAO,EAAE;IAC1B;IAEA,IAAI,CAACY,sBAAsB,EAAE;IAE7B,OAAO,IAAI,CAACpC,KAAK,CAACC,QAAQ,CAACyB,OAAO,CAC/BW,UAAU,EAAE,CACZ/B,IAAI,CAAC;MAAA,OAAM6B,MAAI,CAACnC,KAAK,CAACC,QAAQ,CAACwB,MAAM,CAACS,UAAU,EAAE;IAAA,EAAC,CACnD5B,IAAI,CAAC,YAAM;MACV6B,MAAI,CAACN,OAAO,CAACS,gCAAqB,CAAC;MACnCH,MAAI,CAACzC,UAAU,GAAG,KAAK;IACzB,CAAC,CAAC;EACN,CAAC;EAED;AACF;AACA;AACA;AACA;EACEkC,eAAe,WAAAA,gBAAA,EAAG;IAAA,IAAAW,MAAA;IAChB;IACA,IAAI,CAACvC,KAAK,CAACC,QAAQ,CAACyB,OAAO,CAACc,EAAE,CAAC,+BAA+B,EAAE,UAACC,QAAQ,EAAK;MAC5EF,MAAI,CAACG,aAAa,CAACD,QAAQ,CAACE,IAAI,CAAC;IACnC,CAAC,CAAC;IACF,IAAI,CAAC3C,KAAK,CAACC,QAAQ,CAACyB,OAAO,CAACc,EAAE,CAAC,+BAA+B,EAAE,UAACC,QAAQ,EAAK;MAC5EF,MAAI,CAACK,aAAa,CAACH,QAAQ,CAACE,IAAI,CAAC;IACnC,CAAC,CAAC;IACF,IAAI,CAAC3C,KAAK,CAACC,QAAQ,CAACyB,OAAO,CAACc,EAAE,CAAC,uCAAuC,EAAE,UAACC,QAAQ,EAAK;MACpFF,MAAI,CAACG,aAAa,CAACD,QAAQ,CAACE,IAAI,CAAC;IACnC,CAAC,CAAC;IACF,IAAI,CAAC3C,KAAK,CAACC,QAAQ,CAACyB,OAAO,CAACc,EAAE,CAAC,uCAAuC,EAAE,UAACC,QAAQ,EAAK;MACpFF,MAAI,CAACK,aAAa,CAACH,QAAQ,CAACE,IAAI,CAAC;IACnC,CAAC,CAAC;IACF,IAAI,CAAC3C,KAAK,CAACC,QAAQ,CAACyB,OAAO,CAACc,EAAE,CAAC,+BAA+B,EAAE,UAACC,QAAQ,EAAK;MAC5EF,MAAI,CAACM,aAAa,CAACJ,QAAQ,CAACE,IAAI,CAAC;IACnC,CAAC,CAAC;IACF,IAAI,CAAC3C,KAAK,CAACC,QAAQ,CAACyB,OAAO,CAACc,EAAE,CAAC,0BAA0B,EAAE,UAACC,QAAQ,EAAK;MACvEF,MAAI,CAACO,eAAe,CAACL,QAAQ,CAACE,IAAI,CAAC;IACrC,CAAC,CAAC;EACJ,CAAC;EAED;AACF;AACA;AACA;AACA;EACEP,sBAAsB,WAAAA,uBAAA,EAAG;IACvB,IAAI,CAACpC,KAAK,CAACC,QAAQ,CAACyB,OAAO,CAACqB,GAAG,CAAC,+BAA+B,CAAC;IAChE,IAAI,CAAC/C,KAAK,CAACC,QAAQ,CAACyB,OAAO,CAACqB,GAAG,CAAC,uCAAuC,CAAC;IACxE,IAAI,CAAC/C,KAAK,CAACC,QAAQ,CAACyB,OAAO,CAACqB,GAAG,CAAC,+BAA+B,CAAC;IAChE,IAAI,CAAC/C,KAAK,CAACC,QAAQ,CAACyB,OAAO,CAACqB,GAAG,CAAC,uCAAuC,CAAC;IACxE,IAAI,CAAC/C,KAAK,CAACC,QAAQ,CAACyB,OAAO,CAACqB,GAAG,CAAC,+BAA+B,CAAC;IAChE,IAAI,CAAC/C,KAAK,CAACC,QAAQ,CAACyB,OAAO,CAACqB,GAAG,CAAC,0BAA0B,CAAC;EAC7D,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEH,aAAa,WAAAA,cAACD,IAAI,EAAE;IAClB,IAAMK,EAAE,GAAGC,mBAAkB,CAACC,GAAG,CAACP,IAAI,CAACQ,uBAAuB,CAAC;IAE/D,IAAI,CAACtB,OAAO,CAACuB,2BAAgB,EAAEH,mBAAkB,CAACI,GAAG,CAACL,EAAE,CAAC,CAAC;EAC5D,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEN,aAAa,WAAAA,cAACC,IAAI,EAAE;IAClB,IAAMK,EAAE,GAAGC,mBAAkB,CAACC,GAAG,CAACP,IAAI,CAACQ,uBAAuB,CAAC;IAE/D,IAAI,CAACtB,OAAO,CAACyB,0BAAe,EAAEL,mBAAkB,CAACI,GAAG,CAACL,EAAE,CAAC,CAAC;EAC3D,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEH,aAAa,WAAAA,cAACF,IAAI,EAAE;IAClB,IAAMY,IAAI,GAAGN,mBAAkB,CAACO,MAAM,CAACb,IAAI,CAACQ,uBAAuB,CAACH,EAAE,CAAC;IAEvE,IAAI,CAACnB,OAAO,CAAC4B,0BAAe,EAAEF,IAAI,CAAC;EACrC,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACET,eAAe,WAAAA,gBAACH,IAAI,EAAE;IAAA,IAAAe,MAAA;IACpBC,wBAAa,CAACC,uBAAuB,CAAC,IAAI,EAAEjB,IAAI,CAAC,CAACrC,IAAI,CAAC,YAAM;MAC3D,IAAIuD,QAAQ,GAAG,CAAC,CAAC;MACjB,IAAIlB,IAAI,IAAIA,IAAI,CAACmB,gCAAgC,EAAE;QACjDD,QAAQ,GAAGlB,IAAI,CAACmB,gCAAgC;MAClD;MACA,IAAID,QAAQ,IAAIA,QAAQ,CAACE,SAAS,IAAIF,QAAQ,CAACE,SAAS,IAAIL,MAAI,CAAC/D,gBAAgB,EAAE;QACjF+D,MAAI,CAAC/C,MAAM,CAACqD,GAAG,2DAAAhC,MAAA,CAC6C6B,QAAQ,CAACE,SAAS,EAC7E;QACD,OAAOF,QAAQ,CAACjE,gBAAgB;QAChC,IAAO4B,OAAO,GAAIkC,MAAI,CAAC/D,gBAAgB,CAACkE,QAAQ,CAACE,SAAS,CAAC,CAApDvC,OAAO;QACdA,OAAO,CAACqC,QAAQ,CAAC;QACjB,OAAOH,MAAI,CAAC/D,gBAAgB,CAACkE,QAAQ,CAACE,SAAS,CAAC;MAClD,CAAC,MAAM;QACLL,MAAI,CAAC/C,MAAM,CAACqD,GAAG,CAAC,mDAAmD,CAAC;MACtE;IACF,CAAC,CAAC;EACJ,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,YAAY,WAAAA,aAAA,EAAyE;IAAA,IAAxEC,OAAO,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG;MAACG,QAAQ,EAAE,IAAI,CAACC,MAAM,CAACD,QAAQ;MAAEE,MAAM,EAAE,IAAI,CAACD,MAAM,CAACC;IAAM,CAAC;IACjF,OAAO,IAAI,CAACC,IAAI,CAAC;MAACH,QAAQ,EAAEJ,OAAO,CAACI,QAAQ;MAAEE,MAAM,EAAEN,OAAO,CAACM;IAAM,CAAC,CAAC,CAAClE,IAAI,CAAC,UAACoE,GAAG,EAAK;MACnFzB,mBAAkB,CAAC0B,MAAM,CAACD,GAAG,CAAC;MAE9B,OAAOzB,mBAAkB,CAAC2B,MAAM,EAAE;IACpC,CAAC,CAAC;EACJ,CAAC;EACD;AACF;AACA;AACA;AACA;AACA;EACEC,SAAS,WAAAA,UAACrE,GAAG,EAAEsE,KAAK,EAAE;IACpB,IAAI,CAAC,UAAU,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAACC,QAAQ,CAACvE,GAAG,CAAC,EAAE;MAChE,OAAOyC,mBAAkB,CAAC+B,KAAK,CAACxE,GAAG,EAAEsE,KAAK,CAAC;IAC7C;IACA,MAAM,IAAIvD,KAAK,CAAC,+DAA+D,CAAC;EAClF,CAAC;EAED;AACF;AACA;AACA;EACEqD,MAAM,WAAAA,OAAA,EAAG;IACP,OAAO3B,mBAAkB,CAAC2B,MAAM,EAAE;EACpC,CAAC;EAED;AACF;AACA;AACA;AACA;EACEK,mBAAmB,WAAAA,oBAACC,KAAK,EAAE;IACzB,OAAO,IAAI,CAAClF,KAAK,CAACmF,SAAS,CAAC,SAAS,EAAED,KAAK,CAAC,CAAC5E,IAAI,CAAC;MAAA,OAAM4E,KAAK;IAAA,EAAC;EACjE,CAAC;EAED;AACF;AACA;AACA;AACA;EACEE,eAAe,WAAAA,gBAACpC,EAAE,EAAE;IAClB,OAAO,IAAI,CAACqC,OAAO,CAAC;MAClBC,MAAM,EAAE,KAAK;MACbC,OAAO,EAAE,UAAU;MACnBC,QAAQ,oBAAAxD,MAAA,CAAoByD,cAAM,CAACC,MAAM,CAAC1C,EAAE,CAAC;IAC/C,CAAC,CAAC;EACJ,CAAC;EAED;AACF;AACA;AACA;AACA;EACE2C,QAAQ,WAAAA,SAAC3C,EAAE,EAAE;IACX,OAAO,IAAI,CAACqC,OAAO,CAAC;MAClBC,MAAM,EAAE,KAAK;MACbC,OAAO,EAAE,UAAU;MACnBC,QAAQ,oBAAAxD,MAAA,CAAoByD,cAAM,CAACC,MAAM,CAAC1C,EAAE,CAAC;IAC/C,CAAC,CAAC;EACJ,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACEyB,IAAI,WAAAA,KAACP,OAAO,EAAE;IAAA,IAAA0B,MAAA;IACZ1B,OAAO,GAAGA,OAAO,IAAI,CAAC,CAAC;IAEvB,OAAO,IAAI,CAAClE,KAAK,CACdqF,OAAO,CAAC;MACPC,MAAM,EAAE,KAAK;MACbC,OAAO,EAAE,UAAU;MACnBC,QAAQ,EAAE,gBAAgB;MAC1BK,EAAE,EAAE3B;IACN,CAAC,CAAC,CACD5D,IAAI,CAAC,UAACoE,GAAG,EAAK;MACb,IAAMoB,cAAc,GAAGpB,GAAG,CAACqB,IAAI,CAACC,KAAK;MACrC,IAAMC,QAAQ,GAAG,EAAE;MAEnBH,cAAc,CAACI,OAAO,CAAC,UAACC,OAAO,EAAK;QAClC,IAAI,CAACA,OAAO,CAACC,qBAAqB,EAAE;UAClCH,QAAQ,CAACI,IAAI,CACXT,MAAI,CAACR,eAAe,CAACe,OAAO,CAACnD,EAAE,CAAC,CAAC1C,IAAI,CAAC,UAACgG,aAAa,EAAK;YACvDH,OAAO,CAACC,qBAAqB,GAAGE,aAAa,CAACP,IAAI,CAACK,qBAAqB;UAC1E,CAAC,CAAC,CACH;QACH;MACF,CAAC,CAAC;MAEF,OAAOhF,QAAA,CAAAC,OAAA,CAAQkF,GAAG,CAACN,QAAQ,CAAC,CAAC3F,IAAI,CAAC;QAAA,OAAMwF,cAAc;MAAA,EAAC;IACzD,CAAC,CAAC;EACN,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEU,mBAAmB,WAAAA,oBAAC7D,IAAI,EAAE8D,KAAK,EAAE;IAAA,IAAAC,MAAA;IAC/B,OAAOC,wBAAa,CAACC,2BAA2B,CAAC,IAAI,EAAEjE,IAAI,CAAC,CAACrC,IAAI,CAAC;MAAA,OAChEoG,MAAI,CAACrB,OAAO,CAAC;QACXC,MAAM,EAAE,MAAM;QACdC,OAAO,EAAE,UAAU;QACnBQ,IAAI,EAAEpD,IAAI;QACV6C,QAAQ,EAAE,qBAAqB;QAC/BK,EAAE,EAAEY,KAAK,IAAI,CAAC;MAChB,CAAC,CAAC;IAAA,EACH;EACH,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACEI,mBAAmB,WAAAA,oBAAC7D,EAAE,EAAEL,IAAI,EAAE8D,KAAK,EAAE;IAAA,IAAAK,MAAA;IACnC,OAAOH,wBAAa,CAACC,2BAA2B,CAAC,IAAI,EAAEjE,IAAI,CAAC,CAACrC,IAAI,CAAC;MAAA,OAChEwG,MAAI,CAACzB,OAAO,CAAC;QACXC,MAAM,EAAE,OAAO;QACfC,OAAO,EAAE,UAAU;QACnBQ,IAAI,EAAEpD,IAAI;QACV6C,QAAQ,oBAAAxD,MAAA,CAAoByD,cAAM,CAACC,MAAM,CAAC1C,EAAE,CAAC,UAAO;QACpD6C,EAAE,EAAEY,KAAK,IAAI,CAAC;MAChB,CAAC,CAAC;IAAA,EACH;EACH,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEM,mBAAmB,WAAAA,oBAAC/D,EAAE,EAAEyD,KAAK,EAAE;IAC7B,OAAO,IAAI,CAACpB,OAAO,CAAC;MAClBC,MAAM,EAAE,QAAQ;MAChBC,OAAO,EAAE,UAAU;MACnBC,QAAQ,oBAAAxD,MAAA,CAAoByD,cAAM,CAACC,MAAM,CAAC1C,EAAE,CAAC,UAAO;MACpD6C,EAAE,EAAEY,KAAK,IAAI,CAAC;IAChB,CAAC,CAAC;EACJ,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE;AACF;AACA;AACA;AACA;EACEO,gBAAgB,WAAAA,iBAACP,KAAK,EAAE;IAAA,IAAAQ,MAAA;IACtB,OAAO,IAAI,CAAC5B,OAAO,CAAC;MAClBC,MAAM,EAAE,KAAK;MACbC,OAAO,EAAE,UAAU;MACnBC,QAAQ,EAAE,eAAe;MACzBK,EAAE,EAAEY,KAAK,IAAI,CAAC;IAChB,CAAC,CAAC,CAACnG,IAAI,CAAC,UAACuD,QAAQ,EAAK;MACpB,OAAOF,wBAAa,CAACuD,4BAA4B,CAACD,MAAI,EAAEpD,QAAQ,CAACkC,IAAI,CAAC,CAACzF,IAAI,CAAC;QAAA,OAAMuD,QAAQ;MAAA,EAAC;IAC7F,CAAC,CAAC;EACJ,CAAC;EAED;AACF;AACA;AACA;AACA;AACA;EACEsD,WAAW,WAAAA,YAACxE,IAAI,EAAE8D,KAAK,EAAE;IAAA,IAAAW,OAAA;IACvB,OAAOT,wBAAa,CAACU,sBAAsB,CAAC,IAAI,EAAE1E,IAAI,CAAC,CACpDrC,IAAI,CAAC,YAAM;MACV,OAAO8G,OAAI,CAAC/B,OAAO,CAAC;QAClBC,MAAM,EAAE,MAAM;QACdC,OAAO,EAAE,UAAU;QACnBQ,IAAI,EAAEpD,IAAI;QACV6C,QAAQ,EAAE,UAAU;QACpBK,EAAE,EAAEY,KAAK,IAAI,CAAC;MAChB,CAAC,CAAC;IACJ,CAAC,CAAC,CACDnG,IAAI,CAAC,YAAM;MACV,OAAO,IAAAc,QAAA,CAAAC,OAAA,CAAY,UAACG,OAAO,EAAEF,MAAM,EAAK;QACtC8F,OAAI,CAACzH,gBAAgB,CAACgD,IAAI,CAACoB,SAAS,CAAC,GAAG;UAACvC,OAAO,EAAPA,OAAO;UAAEF,MAAM,EAANA;QAAM,CAAC;MAC3D,CAAC,CAAC;IACJ,CAAC,CAAC,CACDS,KAAK,CAAC,UAACZ,KAAK,EAAK;MAChB,MAAMA,KAAK;IACb,CAAC,CAAC;EACN,CAAC;EAAAmG,OAAA;AACH,CAAC,CAAC;AAAC,IAAAC,QAAA,GAEYjI,QAAQ;AAAAkI,OAAA,CAAAnG,OAAA,GAAAkG,QAAA"}