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