@dereekb/zoom 13.37.0 → 13.39.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,1948 +0,0 @@
1
- 'use strict';
2
-
3
- var common = require('@nestjs/common');
4
- var zoom = require('@dereekb/zoom');
5
- var util = require('@dereekb/util');
6
- var nestjs = require('@dereekb/nestjs');
7
- var config = require('@nestjs/config');
8
- var node_crypto = require('node:crypto');
9
-
10
- function _type_of$1(obj) {
11
- "@swc/helpers - typeof";
12
- return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
13
- }
14
- function __decorate(decorators, target, key, desc) {
15
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
16
- if ((typeof Reflect === "undefined" ? "undefined" : _type_of$1(Reflect)) === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
17
- else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
18
- return c > 3 && r && Object.defineProperty(target, key, r), r;
19
- }
20
- function __param(paramIndex, decorator) {
21
- return function(target, key) {
22
- decorator(target, key, paramIndex);
23
- };
24
- }
25
- typeof SuppressedError === "function" ? SuppressedError : function(error, suppressed, message) {
26
- var e = new Error(message);
27
- return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
28
- };
29
-
30
- function _class_call_check$8(instance, Constructor) {
31
- if (!(instance instanceof Constructor)) {
32
- throw new TypeError("Cannot call a class as a function");
33
- }
34
- }
35
- function _defineProperties$6(target, props) {
36
- for(var i = 0; i < props.length; i++){
37
- var descriptor = props[i];
38
- descriptor.enumerable = descriptor.enumerable || false;
39
- descriptor.configurable = true;
40
- if ("value" in descriptor) descriptor.writable = true;
41
- Object.defineProperty(target, descriptor.key, descriptor);
42
- }
43
- }
44
- function _create_class$6(Constructor, protoProps, staticProps) {
45
- if (staticProps) _defineProperties$6(Constructor, staticProps);
46
- return Constructor;
47
- }
48
- function _define_property$8(obj, key, value) {
49
- if (key in obj) {
50
- Object.defineProperty(obj, key, {
51
- value: value,
52
- enumerable: true,
53
- configurable: true,
54
- writable: true
55
- });
56
- } else {
57
- obj[key] = value;
58
- }
59
- return obj;
60
- }
61
- /**
62
- * Configuration for ZoomService
63
- */ var ZoomOAuthServiceConfig = /*#__PURE__*/ function() {
64
- function ZoomOAuthServiceConfig() {
65
- _class_call_check$8(this, ZoomOAuthServiceConfig);
66
- _define_property$8(this, "zoomOAuth", void 0);
67
- _define_property$8(this, "factoryConfig", void 0);
68
- }
69
- _create_class$6(ZoomOAuthServiceConfig, null, [
70
- {
71
- key: "assertValidConfig",
72
- value: function assertValidConfig(config) {
73
- var zoomOAuth = config.zoomOAuth;
74
- if (!zoomOAuth) {
75
- throw new Error('ZoomOAuthServiceConfig.zoomOAuth is required');
76
- }
77
- {
78
- if (!zoomOAuth.accountId) {
79
- throw new Error('ZoomOAuthServiceConfig.zoomOAuth.accountId is required');
80
- } else if (!zoomOAuth.clientSecret) {
81
- throw new Error('ZoomOAuthServiceConfig.zoomOAuth.clientSecret is required');
82
- } else if (!zoomOAuth.clientId) {
83
- throw new Error('ZoomOAuthServiceConfig.zoomOAuth.clientId is required');
84
- }
85
- }
86
- }
87
- }
88
- ]);
89
- return ZoomOAuthServiceConfig;
90
- }();
91
- /**
92
- * Reads a ZoomOAuthServiceConfig from the NestJS ConfigService using environment variables.
93
- *
94
- * @param configService - The NestJS ConfigService to read from.
95
- * @param prefix - Optional prefix for environment variable names.
96
- * @returns A validated ZoomOAuthServiceConfig.
97
- */ function readZoomOAuthServiceConfigFromConfigService(configService, prefix) {
98
- var prefixString = util.characterPrefixSuffixInstance({
99
- suffix: '_',
100
- suffixEmptyString: false
101
- }).prefixSuffixString(prefix !== null && prefix !== void 0 ? prefix : '');
102
- var accountIdKey = "".concat(prefixString, "ZOOM_ACCOUNT_ID");
103
- var clientIdKey = "".concat(prefixString, "ZOOM_CLIENT_ID");
104
- var clientSecretKey = "".concat(prefixString, "ZOOM_CLIENT_SECRET");
105
- var accountId = configService.getOrThrow(accountIdKey);
106
- var clientId = configService.getOrThrow(clientIdKey);
107
- var clientSecret = configService.getOrThrow(clientSecretKey);
108
- var config = {
109
- zoomOAuth: {
110
- accountId: accountId,
111
- clientId: clientId,
112
- clientSecret: clientSecret
113
- }
114
- };
115
- ZoomOAuthServiceConfig.assertValidConfig(config);
116
- return config;
117
- }
118
-
119
- function _array_like_to_array$2(arr, len) {
120
- if (len == null || len > arr.length) len = arr.length;
121
- for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
122
- return arr2;
123
- }
124
- function _array_with_holes(arr) {
125
- if (Array.isArray(arr)) return arr;
126
- }
127
- function _array_without_holes$2(arr) {
128
- if (Array.isArray(arr)) return _array_like_to_array$2(arr);
129
- }
130
- function asyncGeneratorStep$2(gen, resolve, reject, _next, _throw, key, arg) {
131
- try {
132
- var info = gen[key](arg);
133
- var value = info.value;
134
- } catch (error) {
135
- reject(error);
136
- return;
137
- }
138
- if (info.done) {
139
- resolve(value);
140
- } else {
141
- Promise.resolve(value).then(_next, _throw);
142
- }
143
- }
144
- function _async_to_generator$2(fn) {
145
- return function() {
146
- var self = this, args = arguments;
147
- return new Promise(function(resolve, reject) {
148
- var gen = fn.apply(self, args);
149
- function _next(value) {
150
- asyncGeneratorStep$2(gen, resolve, reject, _next, _throw, "next", value);
151
- }
152
- function _throw(err) {
153
- asyncGeneratorStep$2(gen, resolve, reject, _next, _throw, "throw", err);
154
- }
155
- _next(undefined);
156
- });
157
- };
158
- }
159
- function _class_call_check$7(instance, Constructor) {
160
- if (!(instance instanceof Constructor)) {
161
- throw new TypeError("Cannot call a class as a function");
162
- }
163
- }
164
- function _define_property$7(obj, key, value) {
165
- if (key in obj) {
166
- Object.defineProperty(obj, key, {
167
- value: value,
168
- enumerable: true,
169
- configurable: true,
170
- writable: true
171
- });
172
- } else {
173
- obj[key] = value;
174
- }
175
- return obj;
176
- }
177
- function _instanceof(left, right) {
178
- "@swc/helpers - instanceof";
179
- if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
180
- return !!right[Symbol.hasInstance](left);
181
- } else {
182
- return left instanceof right;
183
- }
184
- }
185
- function _iterable_to_array$2(iter) {
186
- if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
187
- }
188
- function _iterable_to_array_limit(arr, i) {
189
- var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
190
- if (_i == null) return;
191
- var _arr = [];
192
- var _n = true;
193
- var _d = false;
194
- var _s, _e;
195
- try {
196
- for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
197
- _arr.push(_s.value);
198
- if (i && _arr.length === i) break;
199
- }
200
- } catch (err) {
201
- _d = true;
202
- _e = err;
203
- } finally{
204
- try {
205
- if (!_n && _i["return"] != null) _i["return"]();
206
- } finally{
207
- if (_d) throw _e;
208
- }
209
- }
210
- return _arr;
211
- }
212
- function _non_iterable_rest() {
213
- throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
214
- }
215
- function _non_iterable_spread$2() {
216
- throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
217
- }
218
- function _object_spread$2(target) {
219
- for(var i = 1; i < arguments.length; i++){
220
- var source = arguments[i] != null ? arguments[i] : {};
221
- var ownKeys = Object.keys(source);
222
- if (typeof Object.getOwnPropertySymbols === "function") {
223
- ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
224
- return Object.getOwnPropertyDescriptor(source, sym).enumerable;
225
- }));
226
- }
227
- ownKeys.forEach(function(key) {
228
- _define_property$7(target, key, source[key]);
229
- });
230
- }
231
- return target;
232
- }
233
- function ownKeys$2(object, enumerableOnly) {
234
- var keys = Object.keys(object);
235
- if (Object.getOwnPropertySymbols) {
236
- var symbols = Object.getOwnPropertySymbols(object);
237
- keys.push.apply(keys, symbols);
238
- }
239
- return keys;
240
- }
241
- function _object_spread_props$2(target, source) {
242
- source = source != null ? source : {};
243
- if (Object.getOwnPropertyDescriptors) {
244
- Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
245
- } else {
246
- ownKeys$2(Object(source)).forEach(function(key) {
247
- Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
248
- });
249
- }
250
- return target;
251
- }
252
- function _sliced_to_array(arr, i) {
253
- return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array$2(arr, i) || _non_iterable_rest();
254
- }
255
- function _to_consumable_array$2(arr) {
256
- return _array_without_holes$2(arr) || _iterable_to_array$2(arr) || _unsupported_iterable_to_array$2(arr) || _non_iterable_spread$2();
257
- }
258
- function _type_of(obj) {
259
- "@swc/helpers - typeof";
260
- return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
261
- }
262
- function _unsupported_iterable_to_array$2(o, minLen) {
263
- if (!o) return;
264
- if (typeof o === "string") return _array_like_to_array$2(o, minLen);
265
- var n = Object.prototype.toString.call(o).slice(8, -1);
266
- if (n === "Object" && o.constructor) n = o.constructor.name;
267
- if (n === "Map" || n === "Set") return Array.from(n);
268
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$2(o, minLen);
269
- }
270
- function _ts_generator$2(thisArg, body) {
271
- var f, y, t, _ = {
272
- label: 0,
273
- sent: function() {
274
- if (t[0] & 1) throw t[1];
275
- return t[1];
276
- },
277
- trys: [],
278
- ops: []
279
- }, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype), d = Object.defineProperty;
280
- return d(g, "next", {
281
- value: verb(0)
282
- }), d(g, "throw", {
283
- value: verb(1)
284
- }), d(g, "return", {
285
- value: verb(2)
286
- }), typeof Symbol === "function" && d(g, Symbol.iterator, {
287
- value: function() {
288
- return this;
289
- }
290
- }), g;
291
- function verb(n) {
292
- return function(v) {
293
- return step([
294
- n,
295
- v
296
- ]);
297
- };
298
- }
299
- function step(op) {
300
- if (f) throw new TypeError("Generator is already executing.");
301
- while(g && (g = 0, op[0] && (_ = 0)), _)try {
302
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
303
- if (y = 0, t) op = [
304
- op[0] & 2,
305
- t.value
306
- ];
307
- switch(op[0]){
308
- case 0:
309
- case 1:
310
- t = op;
311
- break;
312
- case 4:
313
- _.label++;
314
- return {
315
- value: op[1],
316
- done: false
317
- };
318
- case 5:
319
- _.label++;
320
- y = op[1];
321
- op = [
322
- 0
323
- ];
324
- continue;
325
- case 7:
326
- op = _.ops.pop();
327
- _.trys.pop();
328
- continue;
329
- default:
330
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
331
- _ = 0;
332
- continue;
333
- }
334
- if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
335
- _.label = op[1];
336
- break;
337
- }
338
- if (op[0] === 6 && _.label < t[1]) {
339
- _.label = t[1];
340
- t = op;
341
- break;
342
- }
343
- if (t && _.label < t[2]) {
344
- _.label = t[2];
345
- _.ops.push(op);
346
- break;
347
- }
348
- if (t[2]) _.ops.pop();
349
- _.trys.pop();
350
- continue;
351
- }
352
- op = body.call(thisArg, _);
353
- } catch (e) {
354
- op = [
355
- 6,
356
- e
357
- ];
358
- y = 0;
359
- } finally{
360
- f = t = 0;
361
- }
362
- if (op[0] & 5) throw op[1];
363
- return {
364
- value: op[0] ? op[1] : void 0,
365
- done: true
366
- };
367
- }
368
- }
369
- /**
370
- * Service used for retrieving ZoomAccessTokenCache for Zoom services.
371
- */ exports.ZoomOAuthAccessTokenCacheService = function ZoomOAuthAccessTokenCacheService() {
372
- _class_call_check$7(this, ZoomOAuthAccessTokenCacheService);
373
- };
374
- exports.ZoomOAuthAccessTokenCacheService = __decorate([
375
- common.Injectable()
376
- ], exports.ZoomOAuthAccessTokenCacheService);
377
- // MARK: Merge
378
- function buildZoomReadAdapter(cache) {
379
- return {
380
- load: function load() {
381
- return _async_to_generator$2(function() {
382
- var value;
383
- return _ts_generator$2(this, function(_state) {
384
- switch(_state.label){
385
- case 0:
386
- return [
387
- 4,
388
- cache.loadCachedToken().catch(function() {
389
- return undefined;
390
- })
391
- ];
392
- case 1:
393
- value = _state.sent();
394
- return [
395
- 2,
396
- value != null && !util.isExpired(value) ? value : undefined
397
- ];
398
- }
399
- });
400
- })();
401
- },
402
- update: function update(token) {
403
- return cache.updateCachedToken(token);
404
- },
405
- clear: function clear() {
406
- return _async_to_generator$2(function() {
407
- return _ts_generator$2(this, function(_state) {
408
- return [
409
- 2
410
- ];
411
- });
412
- // ZoomAccessTokenCache does not expose a clear method.
413
- })();
414
- }
415
- };
416
- }
417
- function updateZoomCacheCapturingError(cache, accessToken) {
418
- return cache.updateCachedToken(accessToken).then(function() {
419
- return null;
420
- }).catch(function(e) {
421
- return [
422
- cache,
423
- e
424
- ];
425
- });
426
- }
427
- /**
428
- * Default error logging function for merged cache service update failures.
429
- *
430
- * @param failedUpdates - Array of failed cache update results with their errors.
431
- */ function logMergeZoomOAuthAccessTokenCacheServiceErrorFunction(failedUpdates) {
432
- console.warn("mergeZoomOAuthAccessTokenCacheServices(): failed updating ".concat(failedUpdates.length, " caches."));
433
- failedUpdates.forEach(function(param, i) {
434
- var _param = _sliced_to_array(param, 2); _param[0]; var e = _param[1];
435
- console.warn("Cache update failure ".concat(i + 1, ": - ").concat(e));
436
- });
437
- }
438
- /**
439
- * Merges the input services in order to use some as a backup source.
440
- *
441
- * If once source fails retrieval, the next will be tried.
442
- *
443
- * When updating a cached token, it will update the token across all services.
444
- *
445
- * Read fall-through is delegated to {@link mergeAsyncValueCaches} after wrapping each
446
- * underlying cache with an {@link isExpired}-aware filter, so an expired cached token
447
- * never short-circuits the lookup. Updates run across all services in parallel via
448
- * `Promise.allSettled`, mirroring the previous behavior, with optional error logging.
449
- *
450
- * @param inputServicesToMerge - Must include at least one service. Empty arrays will throw an error.
451
- * @param logError - Optional error logging configuration. Pass a function, true for default logging, or false to disable.
452
- * @returns A merged ZoomOAuthAccessTokenCacheService.
453
- * @throws {Error} When `inputServicesToMerge` is empty.
454
- */ function mergeZoomOAuthAccessTokenCacheServices(inputServicesToMerge, logError) {
455
- var allServices = _to_consumable_array$2(inputServicesToMerge);
456
- var logErrorFunction = typeof logError === 'function' ? logError : logError === false ? undefined : logMergeZoomOAuthAccessTokenCacheServiceErrorFunction;
457
- if (allServices.length === 0) {
458
- throw new Error('mergeZoomOAuthAccessTokenCacheServices() input cannot be empty.');
459
- }
460
- function mergeCachesForService(accessCachesForServices) {
461
- // Per-cache adapters with expiry filtering so reads fall through to the next tier when a cache holds an expired token.
462
- var readAdapters = accessCachesForServices.map(buildZoomReadAdapter);
463
- var merged = util.mergeAsyncValueCaches(readAdapters);
464
- return {
465
- loadCachedToken: function loadCachedToken() {
466
- return merged.load();
467
- },
468
- updateCachedToken: function updateCachedToken(accessToken) {
469
- return _async_to_generator$2(function() {
470
- var settled, failedUpdates;
471
- return _ts_generator$2(this, function(_state) {
472
- switch(_state.label){
473
- case 0:
474
- return [
475
- 4,
476
- Promise.allSettled(accessCachesForServices.map(function(cache) {
477
- return updateZoomCacheCapturingError(cache, accessToken);
478
- }))
479
- ];
480
- case 1:
481
- settled = _state.sent();
482
- if (logErrorFunction != null) {
483
- failedUpdates = util.filterMaybeArrayValues(settled.map(function(y) {
484
- return y.value;
485
- }));
486
- if (failedUpdates.length) {
487
- logErrorFunction(failedUpdates);
488
- }
489
- }
490
- return [
491
- 2
492
- ];
493
- }
494
- });
495
- })();
496
- }
497
- };
498
- }
499
- var allServiceAccessTokenCaches = allServices.map(function(service) {
500
- return service.loadZoomAccessTokenCache();
501
- });
502
- var allServicesWithCacheForRefreshToken = allServices.filter(function(service) {
503
- return service.cacheForRefreshToken != null;
504
- });
505
- var cacheForRefreshToken = allServicesWithCacheForRefreshToken.length > 0 ? function(refreshToken) {
506
- var allCaches = allServicesWithCacheForRefreshToken.map(function(x) {
507
- return x.cacheForRefreshToken(refreshToken);
508
- });
509
- return mergeCachesForService(allCaches);
510
- } : undefined;
511
- var service = {
512
- loadZoomAccessTokenCache: function loadZoomAccessTokenCache() {
513
- return mergeCachesForService(allServiceAccessTokenCaches);
514
- },
515
- cacheForRefreshToken: cacheForRefreshToken
516
- };
517
- return service;
518
- }
519
- // MARK: Memory Access Token Cache
520
- /**
521
- * Creates a ZoomOAuthAccessTokenCacheService that uses in-memory storage.
522
- *
523
- * Backed by {@link inMemoryAsyncValueCache} so all consumers share the same single token slot.
524
- *
525
- * @param existingToken - Optional initial token to seed the cache with.
526
- * @param logAccessToConsole - Whether to log token access to console.
527
- * @returns A memory-backed ZoomOAuthAccessTokenCacheService.
528
- */ function memoryZoomOAuthAccessTokenCacheService(existingToken, logAccessToConsole) {
529
- var cache = util.inMemoryAsyncValueCache(existingToken);
530
- function loadZoomAccessTokenCache() {
531
- return {
532
- loadCachedToken: function loadCachedToken() {
533
- return _async_to_generator$2(function() {
534
- var token;
535
- return _ts_generator$2(this, function(_state) {
536
- switch(_state.label){
537
- case 0:
538
- return [
539
- 4,
540
- cache.load()
541
- ];
542
- case 1:
543
- token = _state.sent();
544
- if (logAccessToConsole) {
545
- console.log('retrieving access token from memory: ', {
546
- hit: token != null,
547
- expiresAt: token === null || token === void 0 ? void 0 : token.expiresAt
548
- });
549
- }
550
- return [
551
- 2,
552
- token
553
- ];
554
- }
555
- });
556
- })();
557
- },
558
- updateCachedToken: function updateCachedToken(accessToken) {
559
- return _async_to_generator$2(function() {
560
- return _ts_generator$2(this, function(_state) {
561
- switch(_state.label){
562
- case 0:
563
- return [
564
- 4,
565
- cache.update(accessToken)
566
- ];
567
- case 1:
568
- _state.sent();
569
- if (logAccessToConsole) {
570
- console.log('updating access token in memory: ', {
571
- expiresAt: accessToken === null || accessToken === void 0 ? void 0 : accessToken.expiresAt
572
- });
573
- }
574
- return [
575
- 2
576
- ];
577
- }
578
- });
579
- })();
580
- }
581
- };
582
- }
583
- return {
584
- loadZoomAccessTokenCache: loadZoomAccessTokenCache,
585
- cacheForRefreshToken: function cacheForRefreshToken() {
586
- return loadZoomAccessTokenCache();
587
- }
588
- };
589
- }
590
- // MARK: File System Access Token Cache
591
- var DEFAULT_FILE_ZOOM_ACCOUNTS_ACCESS_TOKEN_CACHE_SERVICE_PATH = '.tmp/zoom-access-tokens.json';
592
- /**
593
- * Reviver applied to the cached file payload on load so `expiresAt` is always a `Date`
594
- * regardless of how it was serialized.
595
- *
596
- * @param raw - The raw JSON-parsed file payload.
597
- * @returns The revived ZoomAccessToken, or undefined when the payload is empty/invalid.
598
- */ function reviveZoomAccessTokenFile(raw) {
599
- var result;
600
- if (raw == null || (typeof raw === "undefined" ? "undefined" : _type_of(raw)) !== 'object') {
601
- result = undefined;
602
- } else {
603
- var wrapper = raw;
604
- var token = wrapper.token;
605
- if (token == null) {
606
- result = undefined;
607
- } else {
608
- var rawExpiresAt = token.expiresAt;
609
- var expiresAt = rawExpiresAt != null && !_instanceof(rawExpiresAt, Date) ? new Date(rawExpiresAt) : rawExpiresAt;
610
- result = _object_spread_props$2(_object_spread$2({}, token), {
611
- expiresAt: expiresAt
612
- });
613
- }
614
- }
615
- return result;
616
- }
617
- /**
618
- * Creates a ZoomOAuthAccessTokenCacheService that reads and writes the access token to the file system.
619
- *
620
- * Composes {@link createMemoizedJsonFileAsyncValueCache} (for the on-disk slot, with optional
621
- * per-process memoization) so reads after the first hit memory.
622
- *
623
- * Useful for testing.
624
- *
625
- * @param filename - Path to the token cache file.
626
- * @param useMemoryCache - Whether to also cache tokens in memory for faster access.
627
- * @returns A file-system-backed ZoomOAuthAccessTokenCacheService.
628
- */ function fileZoomOAuthAccessTokenCacheService() {
629
- var filename = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : DEFAULT_FILE_ZOOM_ACCOUNTS_ACCESS_TOKEN_CACHE_SERVICE_PATH, useMemoryCache = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true;
630
- var innerCacheInput = {
631
- filePath: filename,
632
- reviver: reviveZoomAccessTokenFile,
633
- replacer: function replacer(token) {
634
- return {
635
- token: token
636
- };
637
- }
638
- };
639
- var cache = useMemoryCache ? nestjs.createMemoizedJsonFileAsyncValueCache(innerCacheInput) : nestjs.createJsonFileAsyncValueCache(innerCacheInput);
640
- function loadZoomAccessTokenCache() {
641
- return {
642
- loadCachedToken: function loadCachedToken() {
643
- return cache.load();
644
- },
645
- updateCachedToken: function updateCachedToken(accessToken) {
646
- return _async_to_generator$2(function() {
647
- var e;
648
- return _ts_generator$2(this, function(_state) {
649
- switch(_state.label){
650
- case 0:
651
- _state.trys.push([
652
- 0,
653
- 2,
654
- ,
655
- 3
656
- ]);
657
- return [
658
- 4,
659
- cache.update(accessToken)
660
- ];
661
- case 1:
662
- _state.sent();
663
- return [
664
- 3,
665
- 3
666
- ];
667
- case 2:
668
- e = _state.sent();
669
- console.error('Failed updating access token in file: ', e);
670
- return [
671
- 3,
672
- 3
673
- ];
674
- case 3:
675
- return [
676
- 2
677
- ];
678
- }
679
- });
680
- })();
681
- }
682
- };
683
- }
684
- function readTokenFile() {
685
- return _async_to_generator$2(function() {
686
- var raw, result, token;
687
- return _ts_generator$2(this, function(_state) {
688
- switch(_state.label){
689
- case 0:
690
- return [
691
- 4,
692
- nestjs.readJsonFile(filename)
693
- ];
694
- case 1:
695
- raw = _state.sent();
696
- if (raw == null) {
697
- result = undefined;
698
- } else {
699
- token = reviveZoomAccessTokenFile(raw);
700
- result = {
701
- token: token
702
- };
703
- }
704
- return [
705
- 2,
706
- result
707
- ];
708
- }
709
- });
710
- })();
711
- }
712
- // Route the file-mutation helpers through the same `cache` instance used by
713
- // loadZoomAccessTokenCache so the memoized in-memory layer (when useMemoryCache=true) stays
714
- // consistent with disk. Direct writeJsonFile / removeFile would otherwise leave the memo
715
- // holding a stale token that no future read could refresh.
716
- function writeTokenFile(content) {
717
- return _async_to_generator$2(function() {
718
- return _ts_generator$2(this, function(_state) {
719
- switch(_state.label){
720
- case 0:
721
- if (!(content.token == null)) return [
722
- 3,
723
- 2
724
- ];
725
- return [
726
- 4,
727
- cache.clear()
728
- ];
729
- case 1:
730
- _state.sent();
731
- return [
732
- 3,
733
- 4
734
- ];
735
- case 2:
736
- return [
737
- 4,
738
- cache.update(content.token)
739
- ];
740
- case 3:
741
- _state.sent();
742
- _state.label = 4;
743
- case 4:
744
- return [
745
- 2
746
- ];
747
- }
748
- });
749
- })();
750
- }
751
- function deleteTokenFile() {
752
- return _async_to_generator$2(function() {
753
- return _ts_generator$2(this, function(_state) {
754
- switch(_state.label){
755
- case 0:
756
- return [
757
- 4,
758
- cache.clear()
759
- ];
760
- case 1:
761
- _state.sent();
762
- return [
763
- 2
764
- ];
765
- }
766
- });
767
- })();
768
- }
769
- return {
770
- loadZoomAccessTokenCache: loadZoomAccessTokenCache,
771
- readTokenFile: readTokenFile,
772
- writeTokenFile: writeTokenFile,
773
- deleteTokenFile: deleteTokenFile
774
- };
775
- }
776
-
777
- function _class_call_check$6(instance, Constructor) {
778
- if (!(instance instanceof Constructor)) {
779
- throw new TypeError("Cannot call a class as a function");
780
- }
781
- }
782
- function _defineProperties$5(target, props) {
783
- for(var i = 0; i < props.length; i++){
784
- var descriptor = props[i];
785
- descriptor.enumerable = descriptor.enumerable || false;
786
- descriptor.configurable = true;
787
- if ("value" in descriptor) descriptor.writable = true;
788
- Object.defineProperty(target, descriptor.key, descriptor);
789
- }
790
- }
791
- function _create_class$5(Constructor, protoProps, staticProps) {
792
- if (protoProps) _defineProperties$5(Constructor.prototype, protoProps);
793
- return Constructor;
794
- }
795
- function _define_property$6(obj, key, value) {
796
- if (key in obj) {
797
- Object.defineProperty(obj, key, {
798
- value: value,
799
- enumerable: true,
800
- configurable: true,
801
- writable: true
802
- });
803
- } else {
804
- obj[key] = value;
805
- }
806
- return obj;
807
- }
808
- exports.ZoomOAuthApi = /*#__PURE__*/ function() {
809
- function ZoomOAuthApi(config, cacheService) {
810
- _class_call_check$6(this, ZoomOAuthApi);
811
- var _config_zoomOAuth_accessTokenCache, _config_factoryConfig;
812
- _define_property$6(this, "config", void 0);
813
- _define_property$6(this, "cacheService", void 0);
814
- _define_property$6(this, "zoomOAuth", void 0);
815
- this.config = config;
816
- this.cacheService = cacheService;
817
- var _config_zoomOAuth = config.zoomOAuth, clientId = _config_zoomOAuth.clientId, clientSecret = _config_zoomOAuth.clientSecret, accountId = _config_zoomOAuth.accountId;
818
- var accessTokenCache = (_config_zoomOAuth_accessTokenCache = config.zoomOAuth.accessTokenCache) !== null && _config_zoomOAuth_accessTokenCache !== void 0 ? _config_zoomOAuth_accessTokenCache : cacheService.loadZoomAccessTokenCache();
819
- // the fields the OAuth context needs are named rather than spread: the spread used to come AFTER
820
- // `accessTokenCache`, so a present-but-undefined key on the service config would overwrite the
821
- // cache just resolved from the cache service
822
- this.zoomOAuth = zoom.zoomOAuthFactory((_config_factoryConfig = config.factoryConfig) !== null && _config_factoryConfig !== void 0 ? _config_factoryConfig : {})({
823
- clientId: clientId,
824
- clientSecret: clientSecret,
825
- accountId: accountId,
826
- accessTokenCache: accessTokenCache
827
- });
828
- }
829
- _create_class$5(ZoomOAuthApi, [
830
- {
831
- key: "oauthContext",
832
- get: function get() {
833
- return this.zoomOAuth.oauthContext;
834
- }
835
- },
836
- {
837
- key: "serverAccessToken",
838
- get: // MARK: Accessors
839
- function get() {
840
- return zoom.serverAccessToken(this.oauthContext);
841
- }
842
- },
843
- {
844
- key: "userAccessToken",
845
- get: function get() {
846
- return zoom.userAccessToken(this.oauthContext);
847
- }
848
- }
849
- ]);
850
- return ZoomOAuthApi;
851
- }();
852
- exports.ZoomOAuthApi = __decorate([
853
- common.Injectable(),
854
- __param(0, common.Inject(ZoomOAuthServiceConfig)),
855
- __param(1, common.Inject(exports.ZoomOAuthAccessTokenCacheService))
856
- ], exports.ZoomOAuthApi);
857
-
858
- function _array_like_to_array$1(arr, len) {
859
- if (len == null || len > arr.length) len = arr.length;
860
- for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
861
- return arr2;
862
- }
863
- function _array_without_holes$1(arr) {
864
- if (Array.isArray(arr)) return _array_like_to_array$1(arr);
865
- }
866
- function _iterable_to_array$1(iter) {
867
- if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
868
- }
869
- function _non_iterable_spread$1() {
870
- throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
871
- }
872
- function _to_consumable_array$1(arr) {
873
- return _array_without_holes$1(arr) || _iterable_to_array$1(arr) || _unsupported_iterable_to_array$1(arr) || _non_iterable_spread$1();
874
- }
875
- function _unsupported_iterable_to_array$1(o, minLen) {
876
- if (!o) return;
877
- if (typeof o === "string") return _array_like_to_array$1(o, minLen);
878
- var n = Object.prototype.toString.call(o).slice(8, -1);
879
- if (n === "Object" && o.constructor) n = o.constructor.name;
880
- if (n === "Map" || n === "Set") return Array.from(n);
881
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array$1(o, minLen);
882
- }
883
- /**
884
- * Default factory function for creating ZoomOAuthServiceConfig from ConfigService.
885
- *
886
- * @param configService - The NestJS ConfigService.
887
- * @returns A validated ZoomOAuthServiceConfig.
888
- */ function zoomOAuthServiceConfigFactory(configService) {
889
- return readZoomOAuthServiceConfigFromConfigService(configService);
890
- }
891
- /**
892
- * Convenience function used to generate ModuleMetadata for an app's ZoomOAuthModule.
893
- *
894
- * @param config - The configuration for the module metadata.
895
- * @returns Module metadata for the Zoom OAuth module.
896
- */ function appZoomOAuthModuleMetadata(config$1) {
897
- var _config_zoomOAuthServiceConfigFactory;
898
- var dependencyModule = config$1.dependencyModule, imports = config$1.imports, exports$1 = config$1.exports, providers = config$1.providers;
899
- var dependencyModuleImport = dependencyModule ? [
900
- dependencyModule
901
- ] : [];
902
- return {
903
- imports: [
904
- config.ConfigModule
905
- ].concat(_to_consumable_array$1(dependencyModuleImport), _to_consumable_array$1(imports !== null && imports !== void 0 ? imports : [])),
906
- exports: [
907
- exports.ZoomOAuthApi
908
- ].concat(_to_consumable_array$1(exports$1 !== null && exports$1 !== void 0 ? exports$1 : [])),
909
- providers: [
910
- {
911
- provide: ZoomOAuthServiceConfig,
912
- inject: [
913
- config.ConfigService
914
- ],
915
- useFactory: (_config_zoomOAuthServiceConfigFactory = config$1.zoomOAuthServiceConfigFactory) !== null && _config_zoomOAuthServiceConfigFactory !== void 0 ? _config_zoomOAuthServiceConfigFactory : zoomOAuthServiceConfigFactory
916
- },
917
- exports.ZoomOAuthApi
918
- ].concat(_to_consumable_array$1(providers !== null && providers !== void 0 ? providers : []))
919
- };
920
- }
921
-
922
- function _class_call_check$5(instance, Constructor) {
923
- if (!(instance instanceof Constructor)) {
924
- throw new TypeError("Cannot call a class as a function");
925
- }
926
- }
927
- function _defineProperties$4(target, props) {
928
- for(var i = 0; i < props.length; i++){
929
- var descriptor = props[i];
930
- descriptor.enumerable = descriptor.enumerable || false;
931
- descriptor.configurable = true;
932
- if ("value" in descriptor) descriptor.writable = true;
933
- Object.defineProperty(target, descriptor.key, descriptor);
934
- }
935
- }
936
- function _create_class$4(Constructor, protoProps, staticProps) {
937
- if (staticProps) _defineProperties$4(Constructor, staticProps);
938
- return Constructor;
939
- }
940
- function _define_property$5(obj, key, value) {
941
- if (key in obj) {
942
- Object.defineProperty(obj, key, {
943
- value: value,
944
- enumerable: true,
945
- configurable: true,
946
- writable: true
947
- });
948
- } else {
949
- obj[key] = value;
950
- }
951
- return obj;
952
- }
953
- var ZOOM_SECRET_TOKEN_ENV_VAR = 'ZOOM_SECRET_TOKEN';
954
- /**
955
- * Configuration for ZoomService
956
- */ var ZoomWebhookServiceConfig = /*#__PURE__*/ function() {
957
- function ZoomWebhookServiceConfig() {
958
- _class_call_check$5(this, ZoomWebhookServiceConfig);
959
- _define_property$5(this, "webhookConfig", void 0);
960
- }
961
- _create_class$4(ZoomWebhookServiceConfig, null, [
962
- {
963
- key: "assertValidConfig",
964
- value: function assertValidConfig(config) {
965
- if (!config.webhookConfig.zoomSecretToken) {
966
- throw new Error('No zoom secret token specified.');
967
- }
968
- }
969
- }
970
- ]);
971
- return ZoomWebhookServiceConfig;
972
- }
973
- ();
974
-
975
- // MARK: Meeting Alert
976
- var ZOOM_WEBHOOK_MEETING_ALERT_EVENT_TYPE = 'meeting.alert';
977
- // MARK: Meeting Created
978
- var ZOOM_WEBHOOK_MEETING_CREATED_EVENT_TYPE = 'meeting.created';
979
- // MARK: Meeting Updated
980
- var ZOOM_WEBHOOK_MEETING_UPDATED_EVENT_TYPE = 'meeting.updated';
981
- // MARK: Meeting Deleted
982
- var ZOOM_WEBHOOK_MEETING_DELETED_EVENT_TYPE = 'meeting.deleted';
983
- // MARK: Meeting Started
984
- var ZOOM_WEBHOOK_MEETING_STARTED_EVENT_TYPE = 'meeting.started';
985
- // MARK: Meeting Ended
986
- var ZOOM_WEBHOOK_MEETING_ENDED_EVENT_TYPE = 'meeting.ended';
987
- // MARK: Meeting Permanently Deleted
988
- var ZOOM_WEBHOOK_MEETING_PERMANENTLY_DELETED_EVENT_TYPE = 'meeting.permanently_deleted';
989
-
990
- function _define_property$4(obj, key, value) {
991
- if (key in obj) {
992
- Object.defineProperty(obj, key, {
993
- value: value,
994
- enumerable: true,
995
- configurable: true,
996
- writable: true
997
- });
998
- } else {
999
- obj[key] = value;
1000
- }
1001
- return obj;
1002
- }
1003
- function _object_spread$1(target) {
1004
- for(var i = 1; i < arguments.length; i++){
1005
- var source = arguments[i] != null ? arguments[i] : {};
1006
- var ownKeys = Object.keys(source);
1007
- if (typeof Object.getOwnPropertySymbols === "function") {
1008
- ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
1009
- return Object.getOwnPropertyDescriptor(source, sym).enumerable;
1010
- }));
1011
- }
1012
- ownKeys.forEach(function(key) {
1013
- _define_property$4(target, key, source[key]);
1014
- });
1015
- }
1016
- return target;
1017
- }
1018
- function ownKeys$1(object, enumerableOnly) {
1019
- var keys = Object.keys(object);
1020
- if (Object.getOwnPropertySymbols) {
1021
- var symbols = Object.getOwnPropertySymbols(object);
1022
- keys.push.apply(keys, symbols);
1023
- }
1024
- return keys;
1025
- }
1026
- function _object_spread_props$1(target, source) {
1027
- source = source != null ? source : {};
1028
- if (Object.getOwnPropertyDescriptors) {
1029
- Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
1030
- } else {
1031
- ownKeys$1(Object(source)).forEach(function(key) {
1032
- Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
1033
- });
1034
- }
1035
- return target;
1036
- }
1037
- /**
1038
- * Creates a ZoomWebhookEvent and treats the data as the input type.
1039
- *
1040
- * @param event
1041
- * @returns
1042
- */ function zoomWebhookEvent(event) {
1043
- return {
1044
- event: event.event,
1045
- event_ts: event.event_ts,
1046
- payload: event.payload
1047
- };
1048
- }
1049
- var zoomEventHandlerFactory = util.handlerFactory(function(x) {
1050
- return x.event;
1051
- });
1052
- var zoomEventHandlerConfigurerFactory = util.handlerConfigurerFactory({
1053
- configurerForAccessor: function configurerForAccessor(accessor) {
1054
- var fnWithKey = util.handlerMappedSetFunctionFactory(accessor, zoomWebhookEvent);
1055
- var configurer = _object_spread_props$1(_object_spread$1({}, accessor), {
1056
- // Meetings
1057
- handleMeetingCreated: fnWithKey(ZOOM_WEBHOOK_MEETING_CREATED_EVENT_TYPE),
1058
- handleMeetingUpdated: fnWithKey(ZOOM_WEBHOOK_MEETING_UPDATED_EVENT_TYPE),
1059
- handleMeetingDeleted: fnWithKey(ZOOM_WEBHOOK_MEETING_DELETED_EVENT_TYPE),
1060
- handleMeetingStarted: fnWithKey(ZOOM_WEBHOOK_MEETING_STARTED_EVENT_TYPE),
1061
- handleMeetingEnded: fnWithKey(ZOOM_WEBHOOK_MEETING_ENDED_EVENT_TYPE),
1062
- handleMeetingPermanentlyDeleted: fnWithKey(ZOOM_WEBHOOK_MEETING_PERMANENTLY_DELETED_EVENT_TYPE)
1063
- });
1064
- return configurer;
1065
- }
1066
- });
1067
-
1068
- /**
1069
- * Verifies a Zoom webhook event header.
1070
- *
1071
- * @param zoomSecretToken - The Zoom secret token.
1072
- * @returns Verifies a Zoom webhook event.
1073
- *
1074
- * @see https://developers.zoom.us/docs/api/webhooks/#verify-with-zooms-header
1075
- */ function zoomWebhookEventVerifier(zoomSecretToken) {
1076
- return function(request, _rawBody) {
1077
- var requestBodyString = String(request.body);
1078
- var message = "v0:".concat(request.headers['x-zm-request-timestamp'], ":").concat(requestBodyString);
1079
- var hashForVerify = node_crypto.createHmac('sha256', zoomSecretToken).update(message).digest('hex');
1080
- var signature = "v0=".concat(hashForVerify);
1081
- var valid = request.headers['x-zm-signature'] === signature;
1082
- var result = {
1083
- valid: valid,
1084
- event: JSON.parse(requestBodyString)
1085
- };
1086
- return result;
1087
- };
1088
- }
1089
-
1090
- var ZOOM_WEBHOOK_URL_VALIDATION_EVENT_TYPE = 'endpoint.url_validation';
1091
-
1092
- /**
1093
- * Creates a ZoomWebhookEventValidationFunction.
1094
- *
1095
- * @param zoomSecretToken - The secret token used to validate the event.
1096
- * @returns A ZoomWebhookEventValidationFunction.
1097
- */ function zoomWebhookEventValidationFunction(zoomSecretToken) {
1098
- return function(event) {
1099
- var plainToken = event.payload.plainToken;
1100
- if (!plainToken) {
1101
- throw new Error("The expected plaintoken value was not provided by the event's payload.");
1102
- }
1103
- var encryptedToken = node_crypto.createHmac('sha256', zoomSecretToken).update(plainToken).digest('hex');
1104
- var result = {
1105
- plainToken: plainToken,
1106
- encryptedToken: encryptedToken
1107
- };
1108
- return result;
1109
- };
1110
- }
1111
-
1112
- function asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, key, arg) {
1113
- try {
1114
- var info = gen[key](arg);
1115
- var value = info.value;
1116
- } catch (error) {
1117
- reject(error);
1118
- return;
1119
- }
1120
- if (info.done) {
1121
- resolve(value);
1122
- } else {
1123
- Promise.resolve(value).then(_next, _throw);
1124
- }
1125
- }
1126
- function _async_to_generator$1(fn) {
1127
- return function() {
1128
- var self = this, args = arguments;
1129
- return new Promise(function(resolve, reject) {
1130
- var gen = fn.apply(self, args);
1131
- function _next(value) {
1132
- asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, "next", value);
1133
- }
1134
- function _throw(err) {
1135
- asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, "throw", err);
1136
- }
1137
- _next(undefined);
1138
- });
1139
- };
1140
- }
1141
- function _class_call_check$4(instance, Constructor) {
1142
- if (!(instance instanceof Constructor)) {
1143
- throw new TypeError("Cannot call a class as a function");
1144
- }
1145
- }
1146
- function _defineProperties$3(target, props) {
1147
- for(var i = 0; i < props.length; i++){
1148
- var descriptor = props[i];
1149
- descriptor.enumerable = descriptor.enumerable || false;
1150
- descriptor.configurable = true;
1151
- if ("value" in descriptor) descriptor.writable = true;
1152
- Object.defineProperty(target, descriptor.key, descriptor);
1153
- }
1154
- }
1155
- function _create_class$3(Constructor, protoProps, staticProps) {
1156
- if (protoProps) _defineProperties$3(Constructor.prototype, protoProps);
1157
- return Constructor;
1158
- }
1159
- function _define_property$3(obj, key, value) {
1160
- if (key in obj) {
1161
- Object.defineProperty(obj, key, {
1162
- value: value,
1163
- enumerable: true,
1164
- configurable: true,
1165
- writable: true
1166
- });
1167
- } else {
1168
- obj[key] = value;
1169
- }
1170
- return obj;
1171
- }
1172
- function _ts_generator$1(thisArg, body) {
1173
- var f, y, t, _ = {
1174
- label: 0,
1175
- sent: function() {
1176
- if (t[0] & 1) throw t[1];
1177
- return t[1];
1178
- },
1179
- trys: [],
1180
- ops: []
1181
- }, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype), d = Object.defineProperty;
1182
- return d(g, "next", {
1183
- value: verb(0)
1184
- }), d(g, "throw", {
1185
- value: verb(1)
1186
- }), d(g, "return", {
1187
- value: verb(2)
1188
- }), typeof Symbol === "function" && d(g, Symbol.iterator, {
1189
- value: function() {
1190
- return this;
1191
- }
1192
- }), g;
1193
- function verb(n) {
1194
- return function(v) {
1195
- return step([
1196
- n,
1197
- v
1198
- ]);
1199
- };
1200
- }
1201
- function step(op) {
1202
- if (f) throw new TypeError("Generator is already executing.");
1203
- while(g && (g = 0, op[0] && (_ = 0)), _)try {
1204
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
1205
- if (y = 0, t) op = [
1206
- op[0] & 2,
1207
- t.value
1208
- ];
1209
- switch(op[0]){
1210
- case 0:
1211
- case 1:
1212
- t = op;
1213
- break;
1214
- case 4:
1215
- _.label++;
1216
- return {
1217
- value: op[1],
1218
- done: false
1219
- };
1220
- case 5:
1221
- _.label++;
1222
- y = op[1];
1223
- op = [
1224
- 0
1225
- ];
1226
- continue;
1227
- case 7:
1228
- op = _.ops.pop();
1229
- _.trys.pop();
1230
- continue;
1231
- default:
1232
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
1233
- _ = 0;
1234
- continue;
1235
- }
1236
- if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
1237
- _.label = op[1];
1238
- break;
1239
- }
1240
- if (op[0] === 6 && _.label < t[1]) {
1241
- _.label = t[1];
1242
- t = op;
1243
- break;
1244
- }
1245
- if (t && _.label < t[2]) {
1246
- _.label = t[2];
1247
- _.ops.push(op);
1248
- break;
1249
- }
1250
- if (t[2]) _.ops.pop();
1251
- _.trys.pop();
1252
- continue;
1253
- }
1254
- op = body.call(thisArg, _);
1255
- } catch (e) {
1256
- op = [
1257
- 6,
1258
- e
1259
- ];
1260
- y = 0;
1261
- } finally{
1262
- f = t = 0;
1263
- }
1264
- if (op[0] & 5) throw op[1];
1265
- return {
1266
- value: op[0] ? op[1] : void 0,
1267
- done: true
1268
- };
1269
- }
1270
- }
1271
- /**
1272
- * Service that makes system changes based on Zoom webhook events.
1273
- */ exports.ZoomWebhookService = /*#__PURE__*/ function() {
1274
- function ZoomWebhookService(config) {
1275
- _class_call_check$4(this, ZoomWebhookService);
1276
- _define_property$3(this, "logger", new common.Logger('ZoomWebhookService'));
1277
- _define_property$3(this, "_verifier", void 0);
1278
- _define_property$3(this, "_validator", void 0);
1279
- _define_property$3(this, "handler", zoomEventHandlerFactory());
1280
- _define_property$3(this, "configure", zoomEventHandlerConfigurerFactory(this.handler));
1281
- this._verifier = zoomWebhookEventVerifier(config.webhookConfig.zoomSecretToken);
1282
- this._validator = zoomWebhookEventValidationFunction(config.webhookConfig.zoomSecretToken);
1283
- }
1284
- _create_class$3(ZoomWebhookService, [
1285
- {
1286
- key: "updateForWebhook",
1287
- value: function updateForWebhook(req, rawBody) {
1288
- return _async_to_generator$1(function() {
1289
- var _this__verifier, valid, event, handled, validationEventResponse, result;
1290
- return _ts_generator$1(this, function(_state) {
1291
- switch(_state.label){
1292
- case 0:
1293
- _this__verifier = this._verifier(req, rawBody), valid = _this__verifier.valid, event = _this__verifier.event;
1294
- handled = false;
1295
- if (!!valid) return [
1296
- 3,
1297
- 1
1298
- ];
1299
- this.logger.warn('Received invalid zoom event: ', event);
1300
- return [
1301
- 3,
1302
- 4
1303
- ];
1304
- case 1:
1305
- if (!(event.event === ZOOM_WEBHOOK_URL_VALIDATION_EVENT_TYPE)) return [
1306
- 3,
1307
- 2
1308
- ];
1309
- validationEventResponse = this._validator(event);
1310
- handled = true;
1311
- return [
1312
- 3,
1313
- 4
1314
- ];
1315
- case 2:
1316
- return [
1317
- 4,
1318
- this.updateForZoomEvent(event)
1319
- ];
1320
- case 3:
1321
- handled = _state.sent();
1322
- _state.label = 4;
1323
- case 4:
1324
- result = {
1325
- valid: valid,
1326
- handled: handled,
1327
- event: event,
1328
- validationEventResponse: validationEventResponse
1329
- };
1330
- return [
1331
- 2,
1332
- result
1333
- ];
1334
- }
1335
- });
1336
- }).call(this);
1337
- }
1338
- },
1339
- {
1340
- key: "updateForZoomEvent",
1341
- value: function updateForZoomEvent(event) {
1342
- return _async_to_generator$1(function() {
1343
- var handled;
1344
- return _ts_generator$1(this, function(_state) {
1345
- switch(_state.label){
1346
- case 0:
1347
- return [
1348
- 4,
1349
- this.handler(event)
1350
- ];
1351
- case 1:
1352
- handled = _state.sent();
1353
- if (!handled) {
1354
- this.logger.warn('Received unexpected/unhandled zoom event: ', event);
1355
- }
1356
- return [
1357
- 2,
1358
- handled
1359
- ];
1360
- }
1361
- });
1362
- }).call(this);
1363
- }
1364
- }
1365
- ]);
1366
- return ZoomWebhookService;
1367
- }();
1368
- exports.ZoomWebhookService = __decorate([
1369
- common.Injectable(),
1370
- __param(0, common.Inject(ZoomWebhookServiceConfig))
1371
- ], exports.ZoomWebhookService);
1372
-
1373
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
1374
- try {
1375
- var info = gen[key](arg);
1376
- var value = info.value;
1377
- } catch (error) {
1378
- reject(error);
1379
- return;
1380
- }
1381
- if (info.done) {
1382
- resolve(value);
1383
- } else {
1384
- Promise.resolve(value).then(_next, _throw);
1385
- }
1386
- }
1387
- function _async_to_generator(fn) {
1388
- return function() {
1389
- var self = this, args = arguments;
1390
- return new Promise(function(resolve, reject) {
1391
- var gen = fn.apply(self, args);
1392
- function _next(value) {
1393
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
1394
- }
1395
- function _throw(err) {
1396
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
1397
- }
1398
- _next(undefined);
1399
- });
1400
- };
1401
- }
1402
- function _class_call_check$3(instance, Constructor) {
1403
- if (!(instance instanceof Constructor)) {
1404
- throw new TypeError("Cannot call a class as a function");
1405
- }
1406
- }
1407
- function _defineProperties$2(target, props) {
1408
- for(var i = 0; i < props.length; i++){
1409
- var descriptor = props[i];
1410
- descriptor.enumerable = descriptor.enumerable || false;
1411
- descriptor.configurable = true;
1412
- if ("value" in descriptor) descriptor.writable = true;
1413
- Object.defineProperty(target, descriptor.key, descriptor);
1414
- }
1415
- }
1416
- function _create_class$2(Constructor, protoProps, staticProps) {
1417
- if (protoProps) _defineProperties$2(Constructor.prototype, protoProps);
1418
- return Constructor;
1419
- }
1420
- function _define_property$2(obj, key, value) {
1421
- if (key in obj) {
1422
- Object.defineProperty(obj, key, {
1423
- value: value,
1424
- enumerable: true,
1425
- configurable: true,
1426
- writable: true
1427
- });
1428
- } else {
1429
- obj[key] = value;
1430
- }
1431
- return obj;
1432
- }
1433
- function _ts_generator(thisArg, body) {
1434
- var f, y, t, _ = {
1435
- label: 0,
1436
- sent: function() {
1437
- if (t[0] & 1) throw t[1];
1438
- return t[1];
1439
- },
1440
- trys: [],
1441
- ops: []
1442
- }, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype), d = Object.defineProperty;
1443
- return d(g, "next", {
1444
- value: verb(0)
1445
- }), d(g, "throw", {
1446
- value: verb(1)
1447
- }), d(g, "return", {
1448
- value: verb(2)
1449
- }), typeof Symbol === "function" && d(g, Symbol.iterator, {
1450
- value: function() {
1451
- return this;
1452
- }
1453
- }), g;
1454
- function verb(n) {
1455
- return function(v) {
1456
- return step([
1457
- n,
1458
- v
1459
- ]);
1460
- };
1461
- }
1462
- function step(op) {
1463
- if (f) throw new TypeError("Generator is already executing.");
1464
- while(g && (g = 0, op[0] && (_ = 0)), _)try {
1465
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
1466
- if (y = 0, t) op = [
1467
- op[0] & 2,
1468
- t.value
1469
- ];
1470
- switch(op[0]){
1471
- case 0:
1472
- case 1:
1473
- t = op;
1474
- break;
1475
- case 4:
1476
- _.label++;
1477
- return {
1478
- value: op[1],
1479
- done: false
1480
- };
1481
- case 5:
1482
- _.label++;
1483
- y = op[1];
1484
- op = [
1485
- 0
1486
- ];
1487
- continue;
1488
- case 7:
1489
- op = _.ops.pop();
1490
- _.trys.pop();
1491
- continue;
1492
- default:
1493
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
1494
- _ = 0;
1495
- continue;
1496
- }
1497
- if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
1498
- _.label = op[1];
1499
- break;
1500
- }
1501
- if (op[0] === 6 && _.label < t[1]) {
1502
- _.label = t[1];
1503
- t = op;
1504
- break;
1505
- }
1506
- if (t && _.label < t[2]) {
1507
- _.label = t[2];
1508
- _.ops.push(op);
1509
- break;
1510
- }
1511
- if (t[2]) _.ops.pop();
1512
- _.trys.pop();
1513
- continue;
1514
- }
1515
- op = body.call(thisArg, _);
1516
- } catch (e) {
1517
- op = [
1518
- 6,
1519
- e
1520
- ];
1521
- y = 0;
1522
- } finally{
1523
- f = t = 0;
1524
- }
1525
- if (op[0] & 5) throw op[1];
1526
- return {
1527
- value: op[0] ? op[1] : void 0,
1528
- done: true
1529
- };
1530
- }
1531
- }
1532
- exports.ZoomWebhookController = /*#__PURE__*/ function() {
1533
- function ZoomWebhookController(zoomWebhookService) {
1534
- _class_call_check$3(this, ZoomWebhookController);
1535
- _define_property$2(this, "zoomWebhookService", void 0);
1536
- this.zoomWebhookService = zoomWebhookService;
1537
- }
1538
- _create_class$2(ZoomWebhookController, [
1539
- {
1540
- key: "handleZoomWebhook",
1541
- value: function handleZoomWebhook(res, req, rawBody) {
1542
- return _async_to_generator(function() {
1543
- var _ref, valid, validationEventResponse, response;
1544
- return _ts_generator(this, function(_state) {
1545
- switch(_state.label){
1546
- case 0:
1547
- return [
1548
- 4,
1549
- this.zoomWebhookService.updateForWebhook(req, rawBody)
1550
- ];
1551
- case 1:
1552
- _ref = _state.sent(), valid = _ref.valid, validationEventResponse = _ref.validationEventResponse;
1553
- response = res.status(200); // always return a 200 status code
1554
- if (valid && validationEventResponse) {
1555
- response.json(validationEventResponse);
1556
- } else {
1557
- response.json({});
1558
- }
1559
- return [
1560
- 2
1561
- ];
1562
- }
1563
- });
1564
- }).call(this);
1565
- }
1566
- }
1567
- ]);
1568
- return ZoomWebhookController;
1569
- }();
1570
- __decorate([
1571
- common.Post(),
1572
- __param(0, common.Res()),
1573
- __param(1, common.Req()),
1574
- __param(2, nestjs.RawBody())
1575
- ], exports.ZoomWebhookController.prototype, "handleZoomWebhook", null);
1576
- exports.ZoomWebhookController = __decorate([
1577
- common.Controller('/webhook/zoom'),
1578
- __param(0, common.Inject(exports.ZoomWebhookService))
1579
- ], exports.ZoomWebhookController);
1580
-
1581
- function _class_call_check$2(instance, Constructor) {
1582
- if (!(instance instanceof Constructor)) {
1583
- throw new TypeError("Cannot call a class as a function");
1584
- }
1585
- }
1586
- /**
1587
- * Factory function that creates ZoomWebhookServiceConfig from NestJS ConfigService.
1588
- *
1589
- * @param configService - The NestJS ConfigService.
1590
- * @returns A validated ZoomWebhookServiceConfig.
1591
- */ function zoomWebhookServiceConfigFactory(configService) {
1592
- var config = {
1593
- webhookConfig: {
1594
- zoomSecretToken: configService.get(ZOOM_SECRET_TOKEN_ENV_VAR)
1595
- }
1596
- };
1597
- ZoomWebhookServiceConfig.assertValidConfig(config);
1598
- return config;
1599
- }
1600
- /**
1601
- * Configures webhooks for the service.
1602
- */ exports.ZoomWebhookModule = function ZoomWebhookModule() {
1603
- _class_call_check$2(this, ZoomWebhookModule);
1604
- };
1605
- exports.ZoomWebhookModule = __decorate([
1606
- common.Module({
1607
- imports: [
1608
- config.ConfigModule
1609
- ],
1610
- controllers: [
1611
- exports.ZoomWebhookController
1612
- ],
1613
- exports: [
1614
- exports.ZoomWebhookService
1615
- ],
1616
- providers: [
1617
- {
1618
- provide: ZoomWebhookServiceConfig,
1619
- inject: [
1620
- config.ConfigService
1621
- ],
1622
- useFactory: zoomWebhookServiceConfigFactory
1623
- },
1624
- exports.ZoomWebhookService
1625
- ]
1626
- })
1627
- ], exports.ZoomWebhookModule);
1628
-
1629
- function _class_call_check$1(instance, Constructor) {
1630
- if (!(instance instanceof Constructor)) {
1631
- throw new TypeError("Cannot call a class as a function");
1632
- }
1633
- }
1634
- function _defineProperties$1(target, props) {
1635
- for(var i = 0; i < props.length; i++){
1636
- var descriptor = props[i];
1637
- descriptor.enumerable = descriptor.enumerable || false;
1638
- descriptor.configurable = true;
1639
- if ("value" in descriptor) descriptor.writable = true;
1640
- Object.defineProperty(target, descriptor.key, descriptor);
1641
- }
1642
- }
1643
- function _create_class$1(Constructor, protoProps, staticProps) {
1644
- if (staticProps) _defineProperties$1(Constructor, staticProps);
1645
- return Constructor;
1646
- }
1647
- function _define_property$1(obj, key, value) {
1648
- if (key in obj) {
1649
- Object.defineProperty(obj, key, {
1650
- value: value,
1651
- enumerable: true,
1652
- configurable: true,
1653
- writable: true
1654
- });
1655
- } else {
1656
- obj[key] = value;
1657
- }
1658
- return obj;
1659
- }
1660
- /**
1661
- * Configuration for ZoomService
1662
- */ var ZoomServiceConfig = /*#__PURE__*/ function() {
1663
- function ZoomServiceConfig() {
1664
- _class_call_check$1(this, ZoomServiceConfig);
1665
- _define_property$1(this, "zoom", void 0);
1666
- _define_property$1(this, "factoryConfig", void 0);
1667
- }
1668
- _create_class$1(ZoomServiceConfig, null, [
1669
- {
1670
- key: "assertValidConfig",
1671
- value: function assertValidConfig(_config) {
1672
- // TODO?
1673
- }
1674
- }
1675
- ]);
1676
- return ZoomServiceConfig;
1677
- }
1678
- ();
1679
-
1680
- function _class_call_check(instance, Constructor) {
1681
- if (!(instance instanceof Constructor)) {
1682
- throw new TypeError("Cannot call a class as a function");
1683
- }
1684
- }
1685
- function _defineProperties(target, props) {
1686
- for(var i = 0; i < props.length; i++){
1687
- var descriptor = props[i];
1688
- descriptor.enumerable = descriptor.enumerable || false;
1689
- descriptor.configurable = true;
1690
- if ("value" in descriptor) descriptor.writable = true;
1691
- Object.defineProperty(target, descriptor.key, descriptor);
1692
- }
1693
- }
1694
- function _create_class(Constructor, protoProps, staticProps) {
1695
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
1696
- return Constructor;
1697
- }
1698
- function _define_property(obj, key, value) {
1699
- if (key in obj) {
1700
- Object.defineProperty(obj, key, {
1701
- value: value,
1702
- enumerable: true,
1703
- configurable: true,
1704
- writable: true
1705
- });
1706
- } else {
1707
- obj[key] = value;
1708
- }
1709
- return obj;
1710
- }
1711
- function _object_spread(target) {
1712
- for(var i = 1; i < arguments.length; i++){
1713
- var source = arguments[i] != null ? arguments[i] : {};
1714
- var ownKeys = Object.keys(source);
1715
- if (typeof Object.getOwnPropertySymbols === "function") {
1716
- ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
1717
- return Object.getOwnPropertyDescriptor(source, sym).enumerable;
1718
- }));
1719
- }
1720
- ownKeys.forEach(function(key) {
1721
- _define_property(target, key, source[key]);
1722
- });
1723
- }
1724
- return target;
1725
- }
1726
- function ownKeys(object, enumerableOnly) {
1727
- var keys = Object.keys(object);
1728
- if (Object.getOwnPropertySymbols) {
1729
- var symbols = Object.getOwnPropertySymbols(object);
1730
- keys.push.apply(keys, symbols);
1731
- }
1732
- return keys;
1733
- }
1734
- function _object_spread_props(target, source) {
1735
- source = source != null ? source : {};
1736
- if (Object.getOwnPropertyDescriptors) {
1737
- Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
1738
- } else {
1739
- ownKeys(Object(source)).forEach(function(key) {
1740
- Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
1741
- });
1742
- }
1743
- return target;
1744
- }
1745
- exports.ZoomApi = /*#__PURE__*/ function() {
1746
- function ZoomApi(config, zoomOAuthApi) {
1747
- _class_call_check(this, ZoomApi);
1748
- _define_property(this, "config", void 0);
1749
- _define_property(this, "zoomOAuthApi", void 0);
1750
- _define_property(this, "zoom", void 0);
1751
- this.config = config;
1752
- this.zoomOAuthApi = zoomOAuthApi;
1753
- this.zoom = zoom.zoomFactory(_object_spread_props(_object_spread({}, config.factoryConfig), {
1754
- oauthContext: zoomOAuthApi.oauthContext
1755
- }))(config.zoom);
1756
- }
1757
- _create_class(ZoomApi, [
1758
- {
1759
- key: "zoomContext",
1760
- get: function get() {
1761
- return this.zoom.zoomServerContext;
1762
- }
1763
- },
1764
- {
1765
- key: "zoomRateLimiter",
1766
- get: function get() {
1767
- return this.zoom.zoomServerContext.zoomRateLimiter;
1768
- }
1769
- },
1770
- {
1771
- key: "getUser",
1772
- get: // MARK: Users
1773
- function get() {
1774
- return zoom.getUser(this.zoomContext);
1775
- }
1776
- },
1777
- {
1778
- key: "listUsers",
1779
- get: function get() {
1780
- return zoom.listUsers(this.zoomContext);
1781
- }
1782
- },
1783
- {
1784
- key: "listUsersPageFactory",
1785
- get: function get() {
1786
- return zoom.listUsersPageFactory(this.zoomContext);
1787
- }
1788
- },
1789
- {
1790
- key: "listMeetingsForUser",
1791
- get: // MARK: Meetings
1792
- function get() {
1793
- return zoom.listMeetingsForUser(this.zoomContext);
1794
- }
1795
- },
1796
- {
1797
- key: "listMeetingsForUserPageFactory",
1798
- get: function get() {
1799
- return zoom.listMeetingsForUserPageFactory(this.zoomContext);
1800
- }
1801
- },
1802
- {
1803
- key: "createMeetingForUser",
1804
- get: function get() {
1805
- return zoom.createMeetingForUser(this.zoomContext);
1806
- }
1807
- },
1808
- {
1809
- key: "getMeeting",
1810
- get: function get() {
1811
- return zoom.getMeeting(this.zoomContext);
1812
- }
1813
- },
1814
- {
1815
- key: "updateMeeting",
1816
- get: function get() {
1817
- return zoom.updateMeeting(this.zoomContext);
1818
- }
1819
- },
1820
- {
1821
- key: "deleteMeeting",
1822
- get: function get() {
1823
- return zoom.deleteMeeting(this.zoomContext);
1824
- }
1825
- },
1826
- {
1827
- key: "getPastMeeting",
1828
- get: // MARK: Past Meetings
1829
- function get() {
1830
- return zoom.getPastMeeting(this.zoomContext);
1831
- }
1832
- },
1833
- {
1834
- key: "getPastMeetingParticipants",
1835
- get: function get() {
1836
- return zoom.getPastMeetingParticipants(this.zoomContext);
1837
- }
1838
- }
1839
- ]);
1840
- return ZoomApi;
1841
- }();
1842
- exports.ZoomApi = __decorate([
1843
- common.Injectable(),
1844
- __param(0, common.Inject(ZoomServiceConfig)),
1845
- __param(1, common.Inject(exports.ZoomOAuthApi))
1846
- ], exports.ZoomApi);
1847
- var ZoomApiUserContext = function ZoomApiUserContext(_refreshToken) {
1848
- _class_call_check(this, ZoomApiUserContext);
1849
- }
1850
- ;
1851
-
1852
- function _array_like_to_array(arr, len) {
1853
- if (len == null || len > arr.length) len = arr.length;
1854
- for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
1855
- return arr2;
1856
- }
1857
- function _array_without_holes(arr) {
1858
- if (Array.isArray(arr)) return _array_like_to_array(arr);
1859
- }
1860
- function _iterable_to_array(iter) {
1861
- if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
1862
- }
1863
- function _non_iterable_spread() {
1864
- throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
1865
- }
1866
- function _to_consumable_array(arr) {
1867
- return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
1868
- }
1869
- function _unsupported_iterable_to_array(o, minLen) {
1870
- if (!o) return;
1871
- if (typeof o === "string") return _array_like_to_array(o, minLen);
1872
- var n = Object.prototype.toString.call(o).slice(8, -1);
1873
- if (n === "Object" && o.constructor) n = o.constructor.name;
1874
- if (n === "Map" || n === "Set") return Array.from(n);
1875
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
1876
- }
1877
- // MARK: Provider Factories
1878
- /**
1879
- * Default factory function for creating ZoomServiceConfig from ConfigService.
1880
- *
1881
- * @param _configService - The NestJS ConfigService (unused currently)
1882
- * @returns A validated ZoomServiceConfig.
1883
- */ function zoomServiceConfigFactory(_configService) {
1884
- var config = {
1885
- zoom: {}
1886
- };
1887
- ZoomServiceConfig.assertValidConfig(config);
1888
- return config;
1889
- }
1890
- /**
1891
- * Convenience function used to generate ModuleMetadata for an app's ZoomModule.
1892
- *
1893
- * @param config - The configuration for the module metadata.
1894
- * @returns Module metadata for the Zoom module.
1895
- */ function appZoomModuleMetadata(config$1) {
1896
- var dependencyModule = config$1.dependencyModule, imports = config$1.imports, exports$1 = config$1.exports, providers = config$1.providers;
1897
- var dependencyModuleImport = dependencyModule ? [
1898
- dependencyModule
1899
- ] : [];
1900
- return {
1901
- imports: [
1902
- config.ConfigModule
1903
- ].concat(_to_consumable_array(dependencyModuleImport), _to_consumable_array(imports !== null && imports !== void 0 ? imports : [])),
1904
- exports: [
1905
- exports.ZoomApi
1906
- ].concat(_to_consumable_array(exports$1 !== null && exports$1 !== void 0 ? exports$1 : [])),
1907
- providers: [
1908
- {
1909
- provide: ZoomServiceConfig,
1910
- inject: [
1911
- config.ConfigService
1912
- ],
1913
- useFactory: zoomServiceConfigFactory
1914
- },
1915
- exports.ZoomApi
1916
- ].concat(_to_consumable_array(providers !== null && providers !== void 0 ? providers : []))
1917
- };
1918
- }
1919
-
1920
- exports.DEFAULT_FILE_ZOOM_ACCOUNTS_ACCESS_TOKEN_CACHE_SERVICE_PATH = DEFAULT_FILE_ZOOM_ACCOUNTS_ACCESS_TOKEN_CACHE_SERVICE_PATH;
1921
- exports.ZOOM_SECRET_TOKEN_ENV_VAR = ZOOM_SECRET_TOKEN_ENV_VAR;
1922
- exports.ZOOM_WEBHOOK_MEETING_ALERT_EVENT_TYPE = ZOOM_WEBHOOK_MEETING_ALERT_EVENT_TYPE;
1923
- exports.ZOOM_WEBHOOK_MEETING_CREATED_EVENT_TYPE = ZOOM_WEBHOOK_MEETING_CREATED_EVENT_TYPE;
1924
- exports.ZOOM_WEBHOOK_MEETING_DELETED_EVENT_TYPE = ZOOM_WEBHOOK_MEETING_DELETED_EVENT_TYPE;
1925
- exports.ZOOM_WEBHOOK_MEETING_ENDED_EVENT_TYPE = ZOOM_WEBHOOK_MEETING_ENDED_EVENT_TYPE;
1926
- exports.ZOOM_WEBHOOK_MEETING_PERMANENTLY_DELETED_EVENT_TYPE = ZOOM_WEBHOOK_MEETING_PERMANENTLY_DELETED_EVENT_TYPE;
1927
- exports.ZOOM_WEBHOOK_MEETING_STARTED_EVENT_TYPE = ZOOM_WEBHOOK_MEETING_STARTED_EVENT_TYPE;
1928
- exports.ZOOM_WEBHOOK_MEETING_UPDATED_EVENT_TYPE = ZOOM_WEBHOOK_MEETING_UPDATED_EVENT_TYPE;
1929
- exports.ZOOM_WEBHOOK_URL_VALIDATION_EVENT_TYPE = ZOOM_WEBHOOK_URL_VALIDATION_EVENT_TYPE;
1930
- exports.ZoomApiUserContext = ZoomApiUserContext;
1931
- exports.ZoomOAuthServiceConfig = ZoomOAuthServiceConfig;
1932
- exports.ZoomServiceConfig = ZoomServiceConfig;
1933
- exports.ZoomWebhookServiceConfig = ZoomWebhookServiceConfig;
1934
- exports.appZoomModuleMetadata = appZoomModuleMetadata;
1935
- exports.appZoomOAuthModuleMetadata = appZoomOAuthModuleMetadata;
1936
- exports.fileZoomOAuthAccessTokenCacheService = fileZoomOAuthAccessTokenCacheService;
1937
- exports.logMergeZoomOAuthAccessTokenCacheServiceErrorFunction = logMergeZoomOAuthAccessTokenCacheServiceErrorFunction;
1938
- exports.memoryZoomOAuthAccessTokenCacheService = memoryZoomOAuthAccessTokenCacheService;
1939
- exports.mergeZoomOAuthAccessTokenCacheServices = mergeZoomOAuthAccessTokenCacheServices;
1940
- exports.readZoomOAuthServiceConfigFromConfigService = readZoomOAuthServiceConfigFromConfigService;
1941
- exports.zoomEventHandlerConfigurerFactory = zoomEventHandlerConfigurerFactory;
1942
- exports.zoomEventHandlerFactory = zoomEventHandlerFactory;
1943
- exports.zoomOAuthServiceConfigFactory = zoomOAuthServiceConfigFactory;
1944
- exports.zoomServiceConfigFactory = zoomServiceConfigFactory;
1945
- exports.zoomWebhookEvent = zoomWebhookEvent;
1946
- exports.zoomWebhookEventValidationFunction = zoomWebhookEventValidationFunction;
1947
- exports.zoomWebhookEventVerifier = zoomWebhookEventVerifier;
1948
- exports.zoomWebhookServiceConfigFactory = zoomWebhookServiceConfigFactory;