@dereekb/calcom 13.4.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.
Files changed (57) hide show
  1. package/LICENSE +21 -0
  2. package/index.cjs.default.js +1 -0
  3. package/index.cjs.js +2202 -0
  4. package/index.cjs.mjs +2 -0
  5. package/index.d.ts +1 -0
  6. package/index.esm.js +2141 -0
  7. package/nestjs/index.cjs.default.js +1 -0
  8. package/nestjs/index.cjs.js +1970 -0
  9. package/nestjs/index.cjs.mjs +2 -0
  10. package/nestjs/index.d.ts +1 -0
  11. package/nestjs/index.esm.js +1938 -0
  12. package/nestjs/package.json +28 -0
  13. package/nestjs/src/index.d.ts +1 -0
  14. package/nestjs/src/lib/calcom/calcom.api.d.ts +160 -0
  15. package/nestjs/src/lib/calcom/calcom.config.d.ts +10 -0
  16. package/nestjs/src/lib/calcom/calcom.module.d.ts +18 -0
  17. package/nestjs/src/lib/calcom/index.d.ts +3 -0
  18. package/nestjs/src/lib/index.d.ts +3 -0
  19. package/nestjs/src/lib/oauth/index.d.ts +4 -0
  20. package/nestjs/src/lib/oauth/oauth.api.d.ts +25 -0
  21. package/nestjs/src/lib/oauth/oauth.config.d.ts +22 -0
  22. package/nestjs/src/lib/oauth/oauth.module.d.ts +24 -0
  23. package/nestjs/src/lib/oauth/oauth.service.d.ts +66 -0
  24. package/nestjs/src/lib/webhook/index.d.ts +7 -0
  25. package/nestjs/src/lib/webhook/webhook.calcom.config.d.ts +11 -0
  26. package/nestjs/src/lib/webhook/webhook.calcom.controller.d.ts +8 -0
  27. package/nestjs/src/lib/webhook/webhook.calcom.d.ts +16 -0
  28. package/nestjs/src/lib/webhook/webhook.calcom.module.d.ts +20 -0
  29. package/nestjs/src/lib/webhook/webhook.calcom.service.d.ts +21 -0
  30. package/nestjs/src/lib/webhook/webhook.calcom.type.d.ts +33 -0
  31. package/nestjs/src/lib/webhook/webhook.calcom.verify.d.ts +16 -0
  32. package/package.json +34 -0
  33. package/src/index.d.ts +1 -0
  34. package/src/lib/calcom/calcom.api.booking.d.ts +86 -0
  35. package/src/lib/calcom/calcom.api.calendar.d.ts +82 -0
  36. package/src/lib/calcom/calcom.api.eventtype.d.ts +85 -0
  37. package/src/lib/calcom/calcom.api.schedule.d.ts +32 -0
  38. package/src/lib/calcom/calcom.api.slot.d.ts +46 -0
  39. package/src/lib/calcom/calcom.api.user.d.ts +29 -0
  40. package/src/lib/calcom/calcom.api.webhook.d.ts +97 -0
  41. package/src/lib/calcom/calcom.config.d.ts +66 -0
  42. package/src/lib/calcom/calcom.error.api.d.ts +6 -0
  43. package/src/lib/calcom/calcom.factory.d.ts +23 -0
  44. package/src/lib/calcom/index.d.ts +10 -0
  45. package/src/lib/calcom.config.d.ts +35 -0
  46. package/src/lib/calcom.error.api.d.ts +86 -0
  47. package/src/lib/calcom.limit.d.ts +35 -0
  48. package/src/lib/calcom.type.d.ts +70 -0
  49. package/src/lib/index.d.ts +7 -0
  50. package/src/lib/oauth/index.d.ts +5 -0
  51. package/src/lib/oauth/oauth.api.d.ts +54 -0
  52. package/src/lib/oauth/oauth.config.d.ts +53 -0
  53. package/src/lib/oauth/oauth.d.ts +64 -0
  54. package/src/lib/oauth/oauth.error.api.d.ts +26 -0
  55. package/src/lib/oauth/oauth.factory.d.ts +31 -0
  56. package/src/lib/shared/calcom.api-version.d.ts +17 -0
  57. package/src/lib/shared/index.d.ts +1 -0
package/index.cjs.js ADDED
@@ -0,0 +1,2202 @@
1
+ 'use strict';
2
+
3
+ var fetch = require('@dereekb/util/fetch');
4
+ var util = require('@dereekb/util');
5
+ var makeError = require('make-error');
6
+
7
+ function _assert_this_initialized$1(self) {
8
+ if (self === void 0) {
9
+ throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
10
+ }
11
+ return self;
12
+ }
13
+ function asyncGeneratorStep$5(gen, resolve, reject, _next, _throw, key, arg) {
14
+ try {
15
+ var info = gen[key](arg);
16
+ var value = info.value;
17
+ } catch (error) {
18
+ reject(error);
19
+ return;
20
+ }
21
+ if (info.done) {
22
+ resolve(value);
23
+ } else {
24
+ Promise.resolve(value).then(_next, _throw);
25
+ }
26
+ }
27
+ function _async_to_generator$5(fn) {
28
+ return function() {
29
+ var self = this, args = arguments;
30
+ return new Promise(function(resolve, reject) {
31
+ var gen = fn.apply(self, args);
32
+ function _next(value) {
33
+ asyncGeneratorStep$5(gen, resolve, reject, _next, _throw, "next", value);
34
+ }
35
+ function _throw(err) {
36
+ asyncGeneratorStep$5(gen, resolve, reject, _next, _throw, "throw", err);
37
+ }
38
+ _next(undefined);
39
+ });
40
+ };
41
+ }
42
+ function _call_super$1(_this, derived, args) {
43
+ derived = _get_prototype_of$1(derived);
44
+ return _possible_constructor_return$1(_this, _is_native_reflect_construct$1() ? Reflect.construct(derived, args || [], _get_prototype_of$1(_this).constructor) : derived.apply(_this, args));
45
+ }
46
+ function _class_call_check$1(instance, Constructor) {
47
+ if (!(instance instanceof Constructor)) {
48
+ throw new TypeError("Cannot call a class as a function");
49
+ }
50
+ }
51
+ function _defineProperties(target, props) {
52
+ for(var i = 0; i < props.length; i++){
53
+ var descriptor = props[i];
54
+ descriptor.enumerable = descriptor.enumerable || false;
55
+ descriptor.configurable = true;
56
+ if ("value" in descriptor) descriptor.writable = true;
57
+ Object.defineProperty(target, descriptor.key, descriptor);
58
+ }
59
+ }
60
+ function _create_class(Constructor, protoProps, staticProps) {
61
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
62
+ return Constructor;
63
+ }
64
+ function _define_property$2(obj, key, value) {
65
+ if (key in obj) {
66
+ Object.defineProperty(obj, key, {
67
+ value: value,
68
+ enumerable: true,
69
+ configurable: true,
70
+ writable: true
71
+ });
72
+ } else {
73
+ obj[key] = value;
74
+ }
75
+ return obj;
76
+ }
77
+ function _get_prototype_of$1(o) {
78
+ _get_prototype_of$1 = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {
79
+ return o.__proto__ || Object.getPrototypeOf(o);
80
+ };
81
+ return _get_prototype_of$1(o);
82
+ }
83
+ function _inherits$1(subClass, superClass) {
84
+ if (typeof superClass !== "function" && superClass !== null) {
85
+ throw new TypeError("Super expression must either be null or a function");
86
+ }
87
+ subClass.prototype = Object.create(superClass && superClass.prototype, {
88
+ constructor: {
89
+ value: subClass,
90
+ writable: true,
91
+ configurable: true
92
+ }
93
+ });
94
+ if (superClass) _set_prototype_of$1(subClass, superClass);
95
+ }
96
+ function _instanceof(left, right) {
97
+ if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
98
+ return !!right[Symbol.hasInstance](left);
99
+ } else {
100
+ return left instanceof right;
101
+ }
102
+ }
103
+ function _possible_constructor_return$1(self, call) {
104
+ if (call && (_type_of$1(call) === "object" || typeof call === "function")) {
105
+ return call;
106
+ }
107
+ return _assert_this_initialized$1(self);
108
+ }
109
+ function _set_prototype_of$1(o, p) {
110
+ _set_prototype_of$1 = Object.setPrototypeOf || function setPrototypeOf(o, p) {
111
+ o.__proto__ = p;
112
+ return o;
113
+ };
114
+ return _set_prototype_of$1(o, p);
115
+ }
116
+ function _type_of$1(obj) {
117
+ "@swc/helpers - typeof";
118
+ return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
119
+ }
120
+ function _is_native_reflect_construct$1() {
121
+ try {
122
+ var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));
123
+ } catch (_) {}
124
+ return (_is_native_reflect_construct$1 = function() {
125
+ return !!result;
126
+ })();
127
+ }
128
+ function _ts_generator$5(thisArg, body) {
129
+ var f, y, t, _ = {
130
+ label: 0,
131
+ sent: function() {
132
+ if (t[0] & 1) throw t[1];
133
+ return t[1];
134
+ },
135
+ trys: [],
136
+ ops: []
137
+ }, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype), d = Object.defineProperty;
138
+ return d(g, "next", {
139
+ value: verb(0)
140
+ }), d(g, "throw", {
141
+ value: verb(1)
142
+ }), d(g, "return", {
143
+ value: verb(2)
144
+ }), typeof Symbol === "function" && d(g, Symbol.iterator, {
145
+ value: function() {
146
+ return this;
147
+ }
148
+ }), g;
149
+ function verb(n) {
150
+ return function(v) {
151
+ return step([
152
+ n,
153
+ v
154
+ ]);
155
+ };
156
+ }
157
+ function step(op) {
158
+ if (f) throw new TypeError("Generator is already executing.");
159
+ while(g && (g = 0, op[0] && (_ = 0)), _)try {
160
+ 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;
161
+ if (y = 0, t) op = [
162
+ op[0] & 2,
163
+ t.value
164
+ ];
165
+ switch(op[0]){
166
+ case 0:
167
+ case 1:
168
+ t = op;
169
+ break;
170
+ case 4:
171
+ _.label++;
172
+ return {
173
+ value: op[1],
174
+ done: false
175
+ };
176
+ case 5:
177
+ _.label++;
178
+ y = op[1];
179
+ op = [
180
+ 0
181
+ ];
182
+ continue;
183
+ case 7:
184
+ op = _.ops.pop();
185
+ _.trys.pop();
186
+ continue;
187
+ default:
188
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
189
+ _ = 0;
190
+ continue;
191
+ }
192
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
193
+ _.label = op[1];
194
+ break;
195
+ }
196
+ if (op[0] === 6 && _.label < t[1]) {
197
+ _.label = t[1];
198
+ t = op;
199
+ break;
200
+ }
201
+ if (t && _.label < t[2]) {
202
+ _.label = t[2];
203
+ _.ops.push(op);
204
+ break;
205
+ }
206
+ if (t[2]) _.ops.pop();
207
+ _.trys.pop();
208
+ continue;
209
+ }
210
+ op = body.call(thisArg, _);
211
+ } catch (e) {
212
+ op = [
213
+ 6,
214
+ e
215
+ ];
216
+ y = 0;
217
+ } finally{
218
+ f = t = 0;
219
+ }
220
+ if (op[0] & 5) throw op[1];
221
+ return {
222
+ value: op[0] ? op[1] : void 0,
223
+ done: true
224
+ };
225
+ }
226
+ }
227
+ /**
228
+ * Cal.com Server Error
229
+ */ var CalcomServerError = /*#__PURE__*/ function(BaseError) {
230
+ _inherits$1(CalcomServerError, BaseError);
231
+ function CalcomServerError(error) {
232
+ _class_call_check$1(this, CalcomServerError);
233
+ var _this;
234
+ _this = _call_super$1(this, CalcomServerError, [
235
+ error.message
236
+ ]), _define_property$2(_this, "error", void 0);
237
+ _this.error = error;
238
+ return _this;
239
+ }
240
+ _create_class(CalcomServerError, [
241
+ {
242
+ key: "code",
243
+ get: function get() {
244
+ return this.error.code;
245
+ }
246
+ }
247
+ ]);
248
+ return CalcomServerError;
249
+ }(makeError.BaseError);
250
+ /**
251
+ * Cal.com Server Error that includes the FetchResponseError
252
+ */ var CalcomServerFetchResponseError = /*#__PURE__*/ function(CalcomServerError) {
253
+ _inherits$1(CalcomServerFetchResponseError, CalcomServerError);
254
+ function CalcomServerFetchResponseError(data, responseError) {
255
+ _class_call_check$1(this, CalcomServerFetchResponseError);
256
+ var _this;
257
+ _this = _call_super$1(this, CalcomServerFetchResponseError, [
258
+ data
259
+ ]), _define_property$2(_this, "data", void 0), _define_property$2(_this, "responseError", void 0);
260
+ _this.data = data;
261
+ _this.responseError = responseError;
262
+ return _this;
263
+ }
264
+ return CalcomServerFetchResponseError;
265
+ }(CalcomServerError);
266
+ /**
267
+ * Creates a logCalcomServerErrorFunction that logs the error to console.
268
+ *
269
+ * @param calcomApiNamePrefix Prefix to use when logging. I.E. CalcomError, etc.
270
+ * @returns
271
+ */ function logCalcomServerErrorFunction(calcomApiNamePrefix) {
272
+ return function(error) {
273
+ if (_instanceof(error, CalcomServerFetchResponseError)) {
274
+ console.log("".concat(calcomApiNamePrefix, "Error(").concat(error.responseError.response.status, "): "), {
275
+ error: error,
276
+ errorData: error.data
277
+ });
278
+ } else if (_instanceof(error, CalcomServerError)) {
279
+ console.log("".concat(calcomApiNamePrefix, "Error(code:").concat(error.code, "): "), {
280
+ error: error
281
+ });
282
+ } else {
283
+ console.log("".concat(calcomApiNamePrefix, "Error(name:").concat(error.name, "): "), {
284
+ error: error
285
+ });
286
+ }
287
+ };
288
+ }
289
+ /**
290
+ * Wraps a ConfiguredFetch to support handling errors returned by fetch.
291
+ */ function handleCalcomErrorFetchFactory(parseCalcomError, defaultLogError) {
292
+ return function(fetch$1) {
293
+ var logError = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : defaultLogError;
294
+ return function(x, y) {
295
+ return _async_to_generator$5(function() {
296
+ var e, error;
297
+ return _ts_generator$5(this, function(_state) {
298
+ switch(_state.label){
299
+ case 0:
300
+ _state.trys.push([
301
+ 0,
302
+ 2,
303
+ ,
304
+ 5
305
+ ]);
306
+ return [
307
+ 4,
308
+ fetch$1(x, y)
309
+ ];
310
+ case 1:
311
+ return [
312
+ 2,
313
+ _state.sent()
314
+ ]; // await to catch thrown errors
315
+ case 2:
316
+ e = _state.sent();
317
+ if (!_instanceof(e, fetch.FetchResponseError)) return [
318
+ 3,
319
+ 4
320
+ ];
321
+ return [
322
+ 4,
323
+ parseCalcomError(e)
324
+ ];
325
+ case 3:
326
+ error = _state.sent();
327
+ if (error) {
328
+ logError(error); // log before throwing.
329
+ throw error;
330
+ }
331
+ _state.label = 4;
332
+ case 4:
333
+ throw e;
334
+ case 5:
335
+ return [
336
+ 2
337
+ ];
338
+ }
339
+ });
340
+ })();
341
+ };
342
+ };
343
+ }
344
+ // MARK: Parsed Errors
345
+ /**
346
+ * The status code that indicates too many requests have been made.
347
+ */ var CALCOM_TOO_MANY_REQUESTS_HTTP_STATUS_CODE = 429;
348
+ var CALCOM_RATE_LIMIT_LIMIT_HEADER = 'X-RateLimit-Limit';
349
+ var CALCOM_RATE_LIMIT_REMAINING_HEADER = 'X-RateLimit-Remaining';
350
+ var CALCOM_RATE_LIMIT_RESET_HEADER = 'X-RateLimit-Reset';
351
+ var DEFAULT_CALCOM_API_RATE_LIMIT = 100;
352
+ var DEFAULT_CALCOM_API_RATE_LIMIT_RESET_PERIOD = 60 * util.MS_IN_SECOND;
353
+ function calcomRateLimitHeaderDetails(headers) {
354
+ var limitHeader = headers.get(CALCOM_RATE_LIMIT_LIMIT_HEADER);
355
+ var remainingHeader = headers.get(CALCOM_RATE_LIMIT_REMAINING_HEADER);
356
+ var resetHeader = headers.get(CALCOM_RATE_LIMIT_RESET_HEADER);
357
+ var result = null;
358
+ if (limitHeader != null || remainingHeader != null || resetHeader != null) {
359
+ var limit = limitHeader ? Number(limitHeader) : undefined;
360
+ var remaining = remainingHeader ? Number(remainingHeader) : undefined;
361
+ var resetAt = resetHeader ? new Date(Number(resetHeader) * util.MS_IN_SECOND) : undefined;
362
+ result = {
363
+ limit: limit,
364
+ remaining: remaining,
365
+ resetAt: resetAt
366
+ };
367
+ }
368
+ return result;
369
+ }
370
+ var CalcomTooManyRequestsError = /*#__PURE__*/ function(CalcomServerFetchResponseError) {
371
+ _inherits$1(CalcomTooManyRequestsError, CalcomServerFetchResponseError);
372
+ function CalcomTooManyRequestsError() {
373
+ _class_call_check$1(this, CalcomTooManyRequestsError);
374
+ return _call_super$1(this, CalcomTooManyRequestsError, arguments);
375
+ }
376
+ _create_class(CalcomTooManyRequestsError, [
377
+ {
378
+ key: "headerDetails",
379
+ get: function get() {
380
+ return calcomRateLimitHeaderDetails(this.responseError.response.headers);
381
+ }
382
+ }
383
+ ]);
384
+ return CalcomTooManyRequestsError;
385
+ }(CalcomServerFetchResponseError);
386
+ /**
387
+ * Function that parses/transforms a CalcomServerErrorData into a general CalcomServerError or other known error type.
388
+ */ function parseCalcomServerErrorData(calcomServerError, responseError) {
389
+ var result;
390
+ if (responseError.response.status === CALCOM_TOO_MANY_REQUESTS_HTTP_STATUS_CODE) {
391
+ result = new CalcomTooManyRequestsError(calcomServerError, responseError);
392
+ console.warn('CalcomTooManyRequestsError', {
393
+ result: result,
394
+ responseError: responseError,
395
+ headerDetails: result.headerDetails
396
+ });
397
+ } else if (calcomServerError) {
398
+ switch(calcomServerError.code){
399
+ default:
400
+ result = new CalcomServerFetchResponseError(calcomServerError, responseError);
401
+ break;
402
+ }
403
+ }
404
+ return result;
405
+ }
406
+
407
+ function asyncGeneratorStep$4(gen, resolve, reject, _next, _throw, key, arg) {
408
+ try {
409
+ var info = gen[key](arg);
410
+ var value = info.value;
411
+ } catch (error) {
412
+ reject(error);
413
+ return;
414
+ }
415
+ if (info.done) {
416
+ resolve(value);
417
+ } else {
418
+ Promise.resolve(value).then(_next, _throw);
419
+ }
420
+ }
421
+ function _async_to_generator$4(fn) {
422
+ return function() {
423
+ var self = this, args = arguments;
424
+ return new Promise(function(resolve, reject) {
425
+ var gen = fn.apply(self, args);
426
+ function _next(value) {
427
+ asyncGeneratorStep$4(gen, resolve, reject, _next, _throw, "next", value);
428
+ }
429
+ function _throw(err) {
430
+ asyncGeneratorStep$4(gen, resolve, reject, _next, _throw, "throw", err);
431
+ }
432
+ _next(undefined);
433
+ });
434
+ };
435
+ }
436
+ function _ts_generator$4(thisArg, body) {
437
+ var f, y, t, _ = {
438
+ label: 0,
439
+ sent: function() {
440
+ if (t[0] & 1) throw t[1];
441
+ return t[1];
442
+ },
443
+ trys: [],
444
+ ops: []
445
+ }, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype), d = Object.defineProperty;
446
+ return d(g, "next", {
447
+ value: verb(0)
448
+ }), d(g, "throw", {
449
+ value: verb(1)
450
+ }), d(g, "return", {
451
+ value: verb(2)
452
+ }), typeof Symbol === "function" && d(g, Symbol.iterator, {
453
+ value: function() {
454
+ return this;
455
+ }
456
+ }), g;
457
+ function verb(n) {
458
+ return function(v) {
459
+ return step([
460
+ n,
461
+ v
462
+ ]);
463
+ };
464
+ }
465
+ function step(op) {
466
+ if (f) throw new TypeError("Generator is already executing.");
467
+ while(g && (g = 0, op[0] && (_ = 0)), _)try {
468
+ 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;
469
+ if (y = 0, t) op = [
470
+ op[0] & 2,
471
+ t.value
472
+ ];
473
+ switch(op[0]){
474
+ case 0:
475
+ case 1:
476
+ t = op;
477
+ break;
478
+ case 4:
479
+ _.label++;
480
+ return {
481
+ value: op[1],
482
+ done: false
483
+ };
484
+ case 5:
485
+ _.label++;
486
+ y = op[1];
487
+ op = [
488
+ 0
489
+ ];
490
+ continue;
491
+ case 7:
492
+ op = _.ops.pop();
493
+ _.trys.pop();
494
+ continue;
495
+ default:
496
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
497
+ _ = 0;
498
+ continue;
499
+ }
500
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
501
+ _.label = op[1];
502
+ break;
503
+ }
504
+ if (op[0] === 6 && _.label < t[1]) {
505
+ _.label = t[1];
506
+ t = op;
507
+ break;
508
+ }
509
+ if (t && _.label < t[2]) {
510
+ _.label = t[2];
511
+ _.ops.push(op);
512
+ break;
513
+ }
514
+ if (t[2]) _.ops.pop();
515
+ _.trys.pop();
516
+ continue;
517
+ }
518
+ op = body.call(thisArg, _);
519
+ } catch (e) {
520
+ op = [
521
+ 6,
522
+ e
523
+ ];
524
+ y = 0;
525
+ } finally{
526
+ f = t = 0;
527
+ }
528
+ if (op[0] & 5) throw op[1];
529
+ return {
530
+ value: op[0] ? op[1] : void 0,
531
+ done: true
532
+ };
533
+ }
534
+ }
535
+ // MARK: Parser
536
+ var logCalcomErrorToConsole = logCalcomServerErrorFunction('Calcom');
537
+ function parseCalcomApiError(responseError) {
538
+ return _async_to_generator$4(function() {
539
+ var data, result;
540
+ return _ts_generator$4(this, function(_state) {
541
+ switch(_state.label){
542
+ case 0:
543
+ return [
544
+ 4,
545
+ responseError.response.json().catch(function(_x) {
546
+ return undefined;
547
+ })
548
+ ];
549
+ case 1:
550
+ data = _state.sent();
551
+ if (data) {
552
+ result = parseCalcomApiServerErrorResponseData(data, responseError);
553
+ }
554
+ return [
555
+ 2,
556
+ result
557
+ ];
558
+ }
559
+ });
560
+ })();
561
+ }
562
+ function parseCalcomApiServerErrorResponseData(calcomServerError, responseError) {
563
+ var result;
564
+ if (calcomServerError) {
565
+ switch(calcomServerError.code){
566
+ default:
567
+ result = parseCalcomServerErrorData(calcomServerError, responseError);
568
+ break;
569
+ }
570
+ }
571
+ return result;
572
+ }
573
+ var handleCalcomErrorFetch = handleCalcomErrorFetchFactory(parseCalcomApiError, logCalcomErrorToConsole);
574
+
575
+ function _assert_this_initialized(self) {
576
+ if (self === void 0) {
577
+ throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
578
+ }
579
+ return self;
580
+ }
581
+ function asyncGeneratorStep$3(gen, resolve, reject, _next, _throw, key, arg) {
582
+ try {
583
+ var info = gen[key](arg);
584
+ var value = info.value;
585
+ } catch (error) {
586
+ reject(error);
587
+ return;
588
+ }
589
+ if (info.done) {
590
+ resolve(value);
591
+ } else {
592
+ Promise.resolve(value).then(_next, _throw);
593
+ }
594
+ }
595
+ function _async_to_generator$3(fn) {
596
+ return function() {
597
+ var self = this, args = arguments;
598
+ return new Promise(function(resolve, reject) {
599
+ var gen = fn.apply(self, args);
600
+ function _next(value) {
601
+ asyncGeneratorStep$3(gen, resolve, reject, _next, _throw, "next", value);
602
+ }
603
+ function _throw(err) {
604
+ asyncGeneratorStep$3(gen, resolve, reject, _next, _throw, "throw", err);
605
+ }
606
+ _next(undefined);
607
+ });
608
+ };
609
+ }
610
+ function _call_super(_this, derived, args) {
611
+ derived = _get_prototype_of(derived);
612
+ return _possible_constructor_return(_this, _is_native_reflect_construct() ? Reflect.construct(derived, args || [], _get_prototype_of(_this).constructor) : derived.apply(_this, args));
613
+ }
614
+ function _class_call_check(instance, Constructor) {
615
+ if (!(instance instanceof Constructor)) {
616
+ throw new TypeError("Cannot call a class as a function");
617
+ }
618
+ }
619
+ function _define_property$1(obj, key, value) {
620
+ if (key in obj) {
621
+ Object.defineProperty(obj, key, {
622
+ value: value,
623
+ enumerable: true,
624
+ configurable: true,
625
+ writable: true
626
+ });
627
+ } else {
628
+ obj[key] = value;
629
+ }
630
+ return obj;
631
+ }
632
+ function _get_prototype_of(o) {
633
+ _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {
634
+ return o.__proto__ || Object.getPrototypeOf(o);
635
+ };
636
+ return _get_prototype_of(o);
637
+ }
638
+ function _inherits(subClass, superClass) {
639
+ if (typeof superClass !== "function" && superClass !== null) {
640
+ throw new TypeError("Super expression must either be null or a function");
641
+ }
642
+ subClass.prototype = Object.create(superClass && superClass.prototype, {
643
+ constructor: {
644
+ value: subClass,
645
+ writable: true,
646
+ configurable: true
647
+ }
648
+ });
649
+ if (superClass) _set_prototype_of(subClass, superClass);
650
+ }
651
+ function _possible_constructor_return(self, call) {
652
+ if (call && (_type_of(call) === "object" || typeof call === "function")) {
653
+ return call;
654
+ }
655
+ return _assert_this_initialized(self);
656
+ }
657
+ function _set_prototype_of(o, p) {
658
+ _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {
659
+ o.__proto__ = p;
660
+ return o;
661
+ };
662
+ return _set_prototype_of(o, p);
663
+ }
664
+ function _type_of(obj) {
665
+ "@swc/helpers - typeof";
666
+ return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
667
+ }
668
+ function _is_native_reflect_construct() {
669
+ try {
670
+ var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));
671
+ } catch (_) {}
672
+ return (_is_native_reflect_construct = function() {
673
+ return !!result;
674
+ })();
675
+ }
676
+ function _ts_generator$3(thisArg, body) {
677
+ var f, y, t, _ = {
678
+ label: 0,
679
+ sent: function() {
680
+ if (t[0] & 1) throw t[1];
681
+ return t[1];
682
+ },
683
+ trys: [],
684
+ ops: []
685
+ }, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype), d = Object.defineProperty;
686
+ return d(g, "next", {
687
+ value: verb(0)
688
+ }), d(g, "throw", {
689
+ value: verb(1)
690
+ }), d(g, "return", {
691
+ value: verb(2)
692
+ }), typeof Symbol === "function" && d(g, Symbol.iterator, {
693
+ value: function() {
694
+ return this;
695
+ }
696
+ }), g;
697
+ function verb(n) {
698
+ return function(v) {
699
+ return step([
700
+ n,
701
+ v
702
+ ]);
703
+ };
704
+ }
705
+ function step(op) {
706
+ if (f) throw new TypeError("Generator is already executing.");
707
+ while(g && (g = 0, op[0] && (_ = 0)), _)try {
708
+ 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;
709
+ if (y = 0, t) op = [
710
+ op[0] & 2,
711
+ t.value
712
+ ];
713
+ switch(op[0]){
714
+ case 0:
715
+ case 1:
716
+ t = op;
717
+ break;
718
+ case 4:
719
+ _.label++;
720
+ return {
721
+ value: op[1],
722
+ done: false
723
+ };
724
+ case 5:
725
+ _.label++;
726
+ y = op[1];
727
+ op = [
728
+ 0
729
+ ];
730
+ continue;
731
+ case 7:
732
+ op = _.ops.pop();
733
+ _.trys.pop();
734
+ continue;
735
+ default:
736
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
737
+ _ = 0;
738
+ continue;
739
+ }
740
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
741
+ _.label = op[1];
742
+ break;
743
+ }
744
+ if (op[0] === 6 && _.label < t[1]) {
745
+ _.label = t[1];
746
+ t = op;
747
+ break;
748
+ }
749
+ if (t && _.label < t[2]) {
750
+ _.label = t[2];
751
+ _.ops.push(op);
752
+ break;
753
+ }
754
+ if (t[2]) _.ops.pop();
755
+ _.trys.pop();
756
+ continue;
757
+ }
758
+ op = body.call(thisArg, _);
759
+ } catch (e) {
760
+ op = [
761
+ 6,
762
+ e
763
+ ];
764
+ y = 0;
765
+ } finally{
766
+ f = t = 0;
767
+ }
768
+ if (op[0] & 5) throw op[1];
769
+ return {
770
+ value: op[0] ? op[1] : void 0,
771
+ done: true
772
+ };
773
+ }
774
+ }
775
+ /**
776
+ * Error in the following cases:
777
+ * - the refresh token string is invalid
778
+ */ var CALCOM_OAUTH_INVALID_GRANT_ERROR_CODE = 'invalid_grant';
779
+ /**
780
+ * Thrown if the call to the Cal.com API creating an access token using a refresh token fails.
781
+ */ var CalcomOAuthAccessTokenError = /*#__PURE__*/ function(FetchRequestFactoryError) {
782
+ _inherits(CalcomOAuthAccessTokenError, FetchRequestFactoryError);
783
+ function CalcomOAuthAccessTokenError(errorCode) {
784
+ _class_call_check(this, CalcomOAuthAccessTokenError);
785
+ var _this;
786
+ _this = _call_super(this, CalcomOAuthAccessTokenError, [
787
+ "CalcomOAuthAccessTokenError: ".concat(errorCode)
788
+ ]), _define_property$1(_this, "errorCode", void 0);
789
+ _this.errorCode = errorCode;
790
+ return _this;
791
+ }
792
+ return CalcomOAuthAccessTokenError;
793
+ }(fetch.FetchRequestFactoryError);
794
+ /**
795
+ * Thrown if a valid CalcomAccessToken cannot be retrieved successfully.
796
+ */ var CalcomOAuthAuthFailureError = /*#__PURE__*/ function(FetchRequestFactoryError) {
797
+ _inherits(CalcomOAuthAuthFailureError, FetchRequestFactoryError);
798
+ function CalcomOAuthAuthFailureError(reason) {
799
+ _class_call_check(this, CalcomOAuthAuthFailureError);
800
+ var _this;
801
+ _this = _call_super(this, CalcomOAuthAuthFailureError, [
802
+ "Failed to retrieve proper authentication for the API call. Reason: ".concat(reason)
803
+ ]), _define_property$1(_this, "reason", void 0);
804
+ _this.reason = reason;
805
+ return _this;
806
+ }
807
+ return CalcomOAuthAuthFailureError;
808
+ }(fetch.FetchRequestFactoryError);
809
+ var logCalcomOAuthErrorToConsole = logCalcomServerErrorFunction('CalcomOAuth');
810
+ function parseCalcomOAuthError(responseError) {
811
+ return _async_to_generator$3(function() {
812
+ var data, result;
813
+ return _ts_generator$3(this, function(_state) {
814
+ switch(_state.label){
815
+ case 0:
816
+ return [
817
+ 4,
818
+ responseError.response.json().catch(function(_x) {
819
+ return undefined;
820
+ })
821
+ ];
822
+ case 1:
823
+ data = _state.sent();
824
+ if (data) {
825
+ result = parseCalcomOAuthServerErrorResponseData(data, responseError);
826
+ }
827
+ return [
828
+ 2,
829
+ result
830
+ ];
831
+ }
832
+ });
833
+ })();
834
+ }
835
+ function parseCalcomOAuthServerErrorResponseData(calcomServerError, responseError) {
836
+ var result;
837
+ if (calcomServerError) {
838
+ var potentialErrorStringCode = calcomServerError.error;
839
+ var errorCode = potentialErrorStringCode !== null && potentialErrorStringCode !== void 0 ? potentialErrorStringCode : calcomServerError.code;
840
+ switch(errorCode){
841
+ case CALCOM_OAUTH_INVALID_GRANT_ERROR_CODE:
842
+ result = new CalcomOAuthAccessTokenError(errorCode);
843
+ break;
844
+ default:
845
+ result = parseCalcomServerErrorData(calcomServerError, responseError);
846
+ break;
847
+ }
848
+ }
849
+ return result;
850
+ }
851
+ var handleCalcomOAuthErrorFetch = handleCalcomErrorFetchFactory(parseCalcomOAuthError, logCalcomOAuthErrorToConsole);
852
+
853
+ function asyncGeneratorStep$2(gen, resolve, reject, _next, _throw, key, arg) {
854
+ try {
855
+ var info = gen[key](arg);
856
+ var value = info.value;
857
+ } catch (error) {
858
+ reject(error);
859
+ return;
860
+ }
861
+ if (info.done) {
862
+ resolve(value);
863
+ } else {
864
+ Promise.resolve(value).then(_next, _throw);
865
+ }
866
+ }
867
+ function _async_to_generator$2(fn) {
868
+ return function() {
869
+ var self = this, args = arguments;
870
+ return new Promise(function(resolve, reject) {
871
+ var gen = fn.apply(self, args);
872
+ function _next(value) {
873
+ asyncGeneratorStep$2(gen, resolve, reject, _next, _throw, "next", value);
874
+ }
875
+ function _throw(err) {
876
+ asyncGeneratorStep$2(gen, resolve, reject, _next, _throw, "throw", err);
877
+ }
878
+ _next(undefined);
879
+ });
880
+ };
881
+ }
882
+ function _ts_generator$2(thisArg, body) {
883
+ var f, y, t, _ = {
884
+ label: 0,
885
+ sent: function() {
886
+ if (t[0] & 1) throw t[1];
887
+ return t[1];
888
+ },
889
+ trys: [],
890
+ ops: []
891
+ }, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype), d = Object.defineProperty;
892
+ return d(g, "next", {
893
+ value: verb(0)
894
+ }), d(g, "throw", {
895
+ value: verb(1)
896
+ }), d(g, "return", {
897
+ value: verb(2)
898
+ }), typeof Symbol === "function" && d(g, Symbol.iterator, {
899
+ value: function() {
900
+ return this;
901
+ }
902
+ }), g;
903
+ function verb(n) {
904
+ return function(v) {
905
+ return step([
906
+ n,
907
+ v
908
+ ]);
909
+ };
910
+ }
911
+ function step(op) {
912
+ if (f) throw new TypeError("Generator is already executing.");
913
+ while(g && (g = 0, op[0] && (_ = 0)), _)try {
914
+ 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;
915
+ if (y = 0, t) op = [
916
+ op[0] & 2,
917
+ t.value
918
+ ];
919
+ switch(op[0]){
920
+ case 0:
921
+ case 1:
922
+ t = op;
923
+ break;
924
+ case 4:
925
+ _.label++;
926
+ return {
927
+ value: op[1],
928
+ done: false
929
+ };
930
+ case 5:
931
+ _.label++;
932
+ y = op[1];
933
+ op = [
934
+ 0
935
+ ];
936
+ continue;
937
+ case 7:
938
+ op = _.ops.pop();
939
+ _.trys.pop();
940
+ continue;
941
+ default:
942
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
943
+ _ = 0;
944
+ continue;
945
+ }
946
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
947
+ _.label = op[1];
948
+ break;
949
+ }
950
+ if (op[0] === 6 && _.label < t[1]) {
951
+ _.label = t[1];
952
+ t = op;
953
+ break;
954
+ }
955
+ if (t && _.label < t[2]) {
956
+ _.label = t[2];
957
+ _.ops.push(op);
958
+ break;
959
+ }
960
+ if (t[2]) _.ops.pop();
961
+ _.trys.pop();
962
+ continue;
963
+ }
964
+ op = body.call(thisArg, _);
965
+ } catch (e) {
966
+ op = [
967
+ 6,
968
+ e
969
+ ];
970
+ y = 0;
971
+ } finally{
972
+ f = t = 0;
973
+ }
974
+ if (op[0] & 5) throw op[1];
975
+ return {
976
+ value: op[0] ? op[1] : void 0,
977
+ done: true
978
+ };
979
+ }
980
+ }
981
+ /**
982
+ * Generates a new CalcomAccessTokenStringFactory.
983
+ */ function calcomAccessTokenStringFactory(calcomAccessTokenFactory) {
984
+ return function() {
985
+ return _async_to_generator$2(function() {
986
+ var token;
987
+ return _ts_generator$2(this, function(_state) {
988
+ switch(_state.label){
989
+ case 0:
990
+ return [
991
+ 4,
992
+ calcomAccessTokenFactory()
993
+ ];
994
+ case 1:
995
+ token = _state.sent();
996
+ if (!(token === null || token === void 0 ? void 0 : token.accessToken)) {
997
+ throw new CalcomOAuthAuthFailureError();
998
+ }
999
+ return [
1000
+ 2,
1001
+ token.accessToken
1002
+ ];
1003
+ }
1004
+ });
1005
+ })();
1006
+ };
1007
+ }
1008
+
1009
+ var DEFAULT_CALCOM_RATE_LIMITED_TOO_MANY_REQUESTS_LOG_FUNCTION = function DEFAULT_CALCOM_RATE_LIMITED_TOO_MANY_REQUESTS_LOG_FUNCTION(headers) {
1010
+ console.warn("calcomRateLimitedFetchHandler(): Too many requests made. The limit is ".concat(headers.limit, " requests per reset period. ResetAt is set for ").concat(headers.resetAt, "."));
1011
+ };
1012
+ function calcomRateLimitedFetchHandler(config) {
1013
+ var _ref, _ref1, _ref2;
1014
+ var onTooManyRequests = (config === null || config === void 0 ? void 0 : config.onTooManyRequests) !== false ? (_ref = config === null || config === void 0 ? void 0 : config.onTooManyRequests) !== null && _ref !== void 0 ? _ref : DEFAULT_CALCOM_RATE_LIMITED_TOO_MANY_REQUESTS_LOG_FUNCTION : undefined;
1015
+ var defaultLimit = (_ref1 = config === null || config === void 0 ? void 0 : config.maxRateLimit) !== null && _ref1 !== void 0 ? _ref1 : DEFAULT_CALCOM_API_RATE_LIMIT;
1016
+ var defaultResetPeriod = (_ref2 = config === null || config === void 0 ? void 0 : config.resetPeriod) !== null && _ref2 !== void 0 ? _ref2 : DEFAULT_CALCOM_API_RATE_LIMIT_RESET_PERIOD;
1017
+ function configForLimit(limit, resetAt) {
1018
+ return {
1019
+ limit: defaultLimit,
1020
+ startLimitAt: 10,
1021
+ cooldownRate: 1.2,
1022
+ exponentRate: 1.08,
1023
+ maxWaitTime: util.MS_IN_SECOND * 10,
1024
+ resetPeriod: defaultResetPeriod,
1025
+ resetAt: resetAt
1026
+ };
1027
+ }
1028
+ var defaultConfig = configForLimit();
1029
+ var rateLimiter = util.resetPeriodPromiseRateLimiter(defaultConfig);
1030
+ return fetch.rateLimitedFetchHandler({
1031
+ rateLimiter: rateLimiter,
1032
+ updateWithResponse: function updateWithResponse(response, fetchResponseError) {
1033
+ var hasRemainingHeader = response.headers.has(CALCOM_RATE_LIMIT_REMAINING_HEADER);
1034
+ var shouldRetry = false;
1035
+ if (hasRemainingHeader) {
1036
+ var headerDetails = calcomRateLimitHeaderDetails(response.headers);
1037
+ if (headerDetails) {
1038
+ var limit = headerDetails.limit, remaining = headerDetails.remaining, resetAt = headerDetails.resetAt;
1039
+ if (response.status === CALCOM_TOO_MANY_REQUESTS_HTTP_STATUS_CODE) {
1040
+ shouldRetry = true;
1041
+ try {
1042
+ onTooManyRequests === null || onTooManyRequests === void 0 ? void 0 : onTooManyRequests(headerDetails, response, fetchResponseError);
1043
+ } catch (_) {
1044
+ // ignore logging errors
1045
+ }
1046
+ }
1047
+ if (limit != null && resetAt != null && remaining != null) {
1048
+ if (limit !== defaultLimit) {
1049
+ var newConfig = configForLimit(limit, resetAt);
1050
+ rateLimiter.setConfig(newConfig, false);
1051
+ }
1052
+ rateLimiter.setRemainingLimit(remaining);
1053
+ rateLimiter.setNextResetAt(resetAt);
1054
+ }
1055
+ }
1056
+ } else if (response.status === CALCOM_TOO_MANY_REQUESTS_HTTP_STATUS_CODE) {
1057
+ shouldRetry = true;
1058
+ try {
1059
+ var headerDetails1 = {};
1060
+ onTooManyRequests === null || onTooManyRequests === void 0 ? void 0 : onTooManyRequests(headerDetails1, response, fetchResponseError);
1061
+ } catch (_) {
1062
+ // ignore logging errors
1063
+ }
1064
+ }
1065
+ return shouldRetry;
1066
+ }
1067
+ });
1068
+ }
1069
+
1070
+ /**
1071
+ * The Cal.com API URL.
1072
+ */ var CALCOM_API_URL = 'https://api.cal.com/v2';
1073
+
1074
+ function asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, key, arg) {
1075
+ try {
1076
+ var info = gen[key](arg);
1077
+ var value = info.value;
1078
+ } catch (error) {
1079
+ reject(error);
1080
+ return;
1081
+ }
1082
+ if (info.done) {
1083
+ resolve(value);
1084
+ } else {
1085
+ Promise.resolve(value).then(_next, _throw);
1086
+ }
1087
+ }
1088
+ function _async_to_generator$1(fn) {
1089
+ return function() {
1090
+ var self = this, args = arguments;
1091
+ return new Promise(function(resolve, reject) {
1092
+ var gen = fn.apply(self, args);
1093
+ function _next(value) {
1094
+ asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, "next", value);
1095
+ }
1096
+ function _throw(err) {
1097
+ asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, "throw", err);
1098
+ }
1099
+ _next(undefined);
1100
+ });
1101
+ };
1102
+ }
1103
+ function _ts_generator$1(thisArg, body) {
1104
+ var f, y, t, _ = {
1105
+ label: 0,
1106
+ sent: function() {
1107
+ if (t[0] & 1) throw t[1];
1108
+ return t[1];
1109
+ },
1110
+ trys: [],
1111
+ ops: []
1112
+ }, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype), d = Object.defineProperty;
1113
+ return d(g, "next", {
1114
+ value: verb(0)
1115
+ }), d(g, "throw", {
1116
+ value: verb(1)
1117
+ }), d(g, "return", {
1118
+ value: verb(2)
1119
+ }), typeof Symbol === "function" && d(g, Symbol.iterator, {
1120
+ value: function() {
1121
+ return this;
1122
+ }
1123
+ }), g;
1124
+ function verb(n) {
1125
+ return function(v) {
1126
+ return step([
1127
+ n,
1128
+ v
1129
+ ]);
1130
+ };
1131
+ }
1132
+ function step(op) {
1133
+ if (f) throw new TypeError("Generator is already executing.");
1134
+ while(g && (g = 0, op[0] && (_ = 0)), _)try {
1135
+ 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;
1136
+ if (y = 0, t) op = [
1137
+ op[0] & 2,
1138
+ t.value
1139
+ ];
1140
+ switch(op[0]){
1141
+ case 0:
1142
+ case 1:
1143
+ t = op;
1144
+ break;
1145
+ case 4:
1146
+ _.label++;
1147
+ return {
1148
+ value: op[1],
1149
+ done: false
1150
+ };
1151
+ case 5:
1152
+ _.label++;
1153
+ y = op[1];
1154
+ op = [
1155
+ 0
1156
+ ];
1157
+ continue;
1158
+ case 7:
1159
+ op = _.ops.pop();
1160
+ _.trys.pop();
1161
+ continue;
1162
+ default:
1163
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
1164
+ _ = 0;
1165
+ continue;
1166
+ }
1167
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
1168
+ _.label = op[1];
1169
+ break;
1170
+ }
1171
+ if (op[0] === 6 && _.label < t[1]) {
1172
+ _.label = t[1];
1173
+ t = op;
1174
+ break;
1175
+ }
1176
+ if (t && _.label < t[2]) {
1177
+ _.label = t[2];
1178
+ _.ops.push(op);
1179
+ break;
1180
+ }
1181
+ if (t[2]) _.ops.pop();
1182
+ _.trys.pop();
1183
+ continue;
1184
+ }
1185
+ op = body.call(thisArg, _);
1186
+ } catch (e) {
1187
+ op = [
1188
+ 6,
1189
+ e
1190
+ ];
1191
+ y = 0;
1192
+ } finally{
1193
+ f = t = 0;
1194
+ }
1195
+ if (op[0] & 5) throw op[1];
1196
+ return {
1197
+ value: op[0] ? op[1] : void 0,
1198
+ done: true
1199
+ };
1200
+ }
1201
+ }
1202
+ function calcomFactory(factoryConfig) {
1203
+ var oauthContext = factoryConfig.oauthContext;
1204
+ var serverAccessTokenStringFactory = calcomAccessTokenStringFactory(oauthContext.loadAccessToken);
1205
+ var fetchHandler = calcomRateLimitedFetchHandler(factoryConfig.rateLimiterConfig);
1206
+ var logCalcomServerErrorFunction = factoryConfig.logCalcomServerErrorFunction, _factoryConfig_fetchFactory = factoryConfig.fetchFactory, fetchFactory = _factoryConfig_fetchFactory === void 0 ? function(input) {
1207
+ return fetch.fetchApiFetchService.makeFetch({
1208
+ baseUrl: CALCOM_API_URL,
1209
+ baseRequest: function baseRequest() {
1210
+ return _async_to_generator$1(function() {
1211
+ var _tmp, _tmp1, _, _1;
1212
+ return _ts_generator$1(this, function(_state) {
1213
+ switch(_state.label){
1214
+ case 0:
1215
+ _tmp = {};
1216
+ _tmp1 = {
1217
+ 'Content-Type': 'application/json'
1218
+ };
1219
+ _1 = (_ = "Bearer ").concat;
1220
+ return [
1221
+ 4,
1222
+ input.calcomAccessTokenStringFactory()
1223
+ ];
1224
+ case 1:
1225
+ return [
1226
+ 2,
1227
+ (_tmp.headers = (_tmp1.Authorization = _1.apply(_, [
1228
+ _state.sent()
1229
+ ]), _tmp1), _tmp)
1230
+ ];
1231
+ }
1232
+ });
1233
+ })();
1234
+ },
1235
+ fetchHandler: fetchHandler,
1236
+ timeout: 20 * 1000,
1237
+ requireOkResponse: true,
1238
+ useTimeout: true // use timeout
1239
+ });
1240
+ } : _factoryConfig_fetchFactory;
1241
+ return function(config) {
1242
+ var baseFetch = fetchFactory({
1243
+ calcomAccessTokenStringFactory: serverAccessTokenStringFactory
1244
+ });
1245
+ var serverFetch = handleCalcomErrorFetch(baseFetch, logCalcomServerErrorFunction);
1246
+ var serverFetchJson = fetch.fetchJsonFunction(serverFetch, {
1247
+ handleFetchJsonParseErrorFunction: fetch.returnNullHandleFetchJsonParseErrorFunction
1248
+ });
1249
+ // MARK: Make Public Context
1250
+ var makePublicContext = function makePublicContext() {
1251
+ var publicFetch = fetch.fetchApiFetchService.makeFetch({
1252
+ baseUrl: CALCOM_API_URL,
1253
+ baseRequest: {
1254
+ headers: {
1255
+ 'Content-Type': 'application/json'
1256
+ }
1257
+ },
1258
+ fetchHandler: fetchHandler,
1259
+ timeout: 20 * 1000,
1260
+ requireOkResponse: true,
1261
+ useTimeout: true
1262
+ });
1263
+ var publicHandledFetch = handleCalcomErrorFetch(publicFetch, logCalcomServerErrorFunction);
1264
+ var publicFetchJson = fetch.fetchJsonFunction(publicHandledFetch, {
1265
+ handleFetchJsonParseErrorFunction: fetch.returnNullHandleFetchJsonParseErrorFunction
1266
+ });
1267
+ return {
1268
+ fetch: publicHandledFetch,
1269
+ fetchJson: publicFetchJson
1270
+ };
1271
+ };
1272
+ // MARK: Make User Context
1273
+ var makeUserContext = function makeUserContext(input) {
1274
+ var userAccessTokenFactory = oauthContext.makeUserAccessTokenFactory({
1275
+ refreshToken: input.refreshToken,
1276
+ userAccessTokenCache: input.accessTokenCache
1277
+ });
1278
+ var userAccessTokenStringFactory = calcomAccessTokenStringFactory(userAccessTokenFactory);
1279
+ var userBaseFetch = fetchFactory({
1280
+ calcomAccessTokenStringFactory: userAccessTokenStringFactory
1281
+ });
1282
+ var userFetch = handleCalcomErrorFetch(userBaseFetch, logCalcomServerErrorFunction);
1283
+ var userFetchJson = fetch.fetchJsonFunction(userFetch, {
1284
+ handleFetchJsonParseErrorFunction: fetch.returnNullHandleFetchJsonParseErrorFunction
1285
+ });
1286
+ var result = {
1287
+ calcomServerContext: calcomContext,
1288
+ type: 'user',
1289
+ fetch: userFetch,
1290
+ fetchJson: userFetchJson,
1291
+ userFetch: userFetch,
1292
+ userFetchJson: userFetchJson,
1293
+ calcomRateLimiter: fetchHandler._rateLimiter
1294
+ };
1295
+ return result;
1296
+ };
1297
+ var calcomContext = {
1298
+ type: 'server',
1299
+ fetch: serverFetch,
1300
+ fetchJson: serverFetchJson,
1301
+ serverFetch: serverFetch,
1302
+ serverFetchJson: serverFetchJson,
1303
+ makeUserContext: makeUserContext,
1304
+ makePublicContext: makePublicContext,
1305
+ config: config,
1306
+ calcomRateLimiter: fetchHandler._rateLimiter
1307
+ };
1308
+ var calcom = {
1309
+ calcomServerContext: calcomContext
1310
+ };
1311
+ return calcom;
1312
+ };
1313
+ }
1314
+
1315
+ function _define_property(obj, key, value) {
1316
+ if (key in obj) {
1317
+ Object.defineProperty(obj, key, {
1318
+ value: value,
1319
+ enumerable: true,
1320
+ configurable: true,
1321
+ writable: true
1322
+ });
1323
+ } else {
1324
+ obj[key] = value;
1325
+ }
1326
+ return obj;
1327
+ }
1328
+ /**
1329
+ * Cal.com API version header constants.
1330
+ *
1331
+ * Each endpoint group requires a specific cal-api-version header value.
1332
+ */ var CALCOM_API_VERSION_SCHEDULES = '2024-06-11';
1333
+ var CALCOM_API_VERSION_SLOTS = '2024-09-04';
1334
+ var CALCOM_API_VERSION_BOOKINGS = '2024-08-13';
1335
+ var CALCOM_API_VERSION_EVENT_TYPES = '2024-06-14';
1336
+ var CALCOM_API_VERSION_CALENDARS = '2024-06-11';
1337
+ var CALCOM_API_VERSION_ME = '2024-08-13';
1338
+ var CALCOM_API_VERSION_HEADER = 'cal-api-version';
1339
+ /**
1340
+ * Returns a headers object with the cal-api-version header set.
1341
+ */ function calcomApiVersionHeaders(version) {
1342
+ return _define_property({}, CALCOM_API_VERSION_HEADER, version);
1343
+ }
1344
+
1345
+ /**
1346
+ * Retrieves the profile of the currently authenticated Cal.com user.
1347
+ *
1348
+ * @see https://cal.com/docs/api-reference/v2/me
1349
+ *
1350
+ * @example
1351
+ * ```ts
1352
+ * const response = await getMe(context)();
1353
+ * console.log(response.data.email);
1354
+ * ```
1355
+ */ function getMe(context) {
1356
+ return function() {
1357
+ return context.fetchJson('/me', {
1358
+ method: 'GET',
1359
+ headers: calcomApiVersionHeaders(CALCOM_API_VERSION_ME)
1360
+ });
1361
+ };
1362
+ }
1363
+
1364
+ /**
1365
+ * Retrieves all schedules for the authenticated user, including availability rules and overrides.
1366
+ *
1367
+ * @see https://cal.com/docs/api-reference/v2/schedules/get-all-schedules
1368
+ *
1369
+ * @example
1370
+ * ```ts
1371
+ * const response = await getSchedules(context)();
1372
+ * response.data.forEach(schedule => console.log(schedule.name, schedule.timeZone));
1373
+ * ```
1374
+ */ function getSchedules(context) {
1375
+ return function() {
1376
+ return context.fetchJson('/schedules', {
1377
+ method: 'GET',
1378
+ headers: calcomApiVersionHeaders(CALCOM_API_VERSION_SCHEDULES)
1379
+ });
1380
+ };
1381
+ }
1382
+
1383
+ /**
1384
+ * Queries available booking slots for a given event type within a date range.
1385
+ * This endpoint is public and does not require authentication.
1386
+ *
1387
+ * Identify the event type by `eventTypeId`, or by `eventTypeSlug` + `username`/`teamSlug`.
1388
+ *
1389
+ * @see https://cal.com/docs/api-reference/v2/slots/get-available-time-slots-for-an-event-type
1390
+ *
1391
+ * @example
1392
+ * ```ts
1393
+ * const response = await getAvailableSlots(context)({
1394
+ * start: '2026-03-17T00:00:00.000Z',
1395
+ * end: '2026-03-24T00:00:00.000Z',
1396
+ * eventTypeId: 12345
1397
+ * });
1398
+ *
1399
+ * for (const [date, slots] of Object.entries(response.data.slots)) {
1400
+ * console.log(date, slots.map(s => s.time));
1401
+ * }
1402
+ * ```
1403
+ */ function getAvailableSlots(context) {
1404
+ return function(input) {
1405
+ var params = fetch.makeUrlSearchParams(input);
1406
+ return context.fetchJson("/slots?".concat(params), {
1407
+ method: 'GET',
1408
+ headers: calcomApiVersionHeaders(CALCOM_API_VERSION_SLOTS)
1409
+ });
1410
+ };
1411
+ }
1412
+
1413
+ /**
1414
+ * Creates a new booking for the specified event type. The `attendee` represents the person
1415
+ * booking (the client), not the host. This endpoint can be called without authentication.
1416
+ *
1417
+ * @see https://cal.com/docs/api-reference/v2/bookings/create-a-booking
1418
+ *
1419
+ * @example
1420
+ * ```ts
1421
+ * const response = await createBooking(context)({
1422
+ * start: '2026-03-20T14:00:00.000Z',
1423
+ * eventTypeId: 12345,
1424
+ * attendee: { name: 'Jane Doe', email: 'jane@example.com', timeZone: 'America/New_York' }
1425
+ * });
1426
+ * console.log(response.data.uid);
1427
+ * ```
1428
+ */ function createBooking(context) {
1429
+ return function(input) {
1430
+ return context.fetchJson('/bookings', {
1431
+ method: 'POST',
1432
+ headers: calcomApiVersionHeaders(CALCOM_API_VERSION_BOOKINGS),
1433
+ body: JSON.stringify(input)
1434
+ });
1435
+ };
1436
+ }
1437
+ /**
1438
+ * Retrieves a booking by its unique UID.
1439
+ *
1440
+ * @see https://cal.com/docs/api-reference/v2/bookings/get-a-booking
1441
+ *
1442
+ * @example
1443
+ * ```ts
1444
+ * const response = await getBooking(context)('abc-123-uid');
1445
+ * console.log(response.data.title, response.data.status);
1446
+ * ```
1447
+ */ function getBooking(context) {
1448
+ return function(uid) {
1449
+ return context.fetchJson("/bookings/".concat(uid), {
1450
+ method: 'GET',
1451
+ headers: calcomApiVersionHeaders(CALCOM_API_VERSION_BOOKINGS)
1452
+ });
1453
+ };
1454
+ }
1455
+ /**
1456
+ * Cancels a booking by its unique UID, with an optional cancellation reason.
1457
+ *
1458
+ * @see https://cal.com/docs/api-reference/v2/bookings/cancel-a-booking
1459
+ *
1460
+ * @example
1461
+ * ```ts
1462
+ * await cancelBooking(context)({ uid: 'abc-123-uid', cancellationReason: 'Schedule conflict' });
1463
+ * ```
1464
+ */ function cancelBooking(context) {
1465
+ return function(input) {
1466
+ var body = {};
1467
+ if (input.cancellationReason) {
1468
+ body['cancellationReason'] = input.cancellationReason;
1469
+ }
1470
+ return context.fetchJson("/bookings/".concat(input.uid, "/cancel"), {
1471
+ method: 'POST',
1472
+ headers: calcomApiVersionHeaders(CALCOM_API_VERSION_BOOKINGS),
1473
+ body: JSON.stringify(body)
1474
+ });
1475
+ };
1476
+ }
1477
+
1478
+ /**
1479
+ * Retrieves all event types for the authenticated user.
1480
+ *
1481
+ * @see https://cal.com/docs/api-reference/v2/event-types/get-all-event-types
1482
+ *
1483
+ * @example
1484
+ * ```ts
1485
+ * const response = await getEventTypes(context)();
1486
+ * response.data.forEach(et => console.log(et.title, et.slug, et.lengthInMinutes));
1487
+ * ```
1488
+ */ function getEventTypes(context) {
1489
+ return function() {
1490
+ return context.fetchJson('/event-types', {
1491
+ method: 'GET',
1492
+ headers: calcomApiVersionHeaders(CALCOM_API_VERSION_EVENT_TYPES)
1493
+ });
1494
+ };
1495
+ }
1496
+ /**
1497
+ * Creates a new event type for the authenticated user.
1498
+ *
1499
+ * @see https://cal.com/docs/api-reference/v2/event-types/create-an-event-type
1500
+ *
1501
+ * @example
1502
+ * ```ts
1503
+ * const response = await createEventType(context)({
1504
+ * title: 'Mentoring Session',
1505
+ * slug: 'mentoring-session',
1506
+ * lengthInMinutes: 30
1507
+ * });
1508
+ * console.log(response.data.id);
1509
+ * ```
1510
+ */ function createEventType(context) {
1511
+ return function(input) {
1512
+ return context.fetchJson('/event-types', {
1513
+ method: 'POST',
1514
+ headers: calcomApiVersionHeaders(CALCOM_API_VERSION_EVENT_TYPES),
1515
+ body: JSON.stringify(input)
1516
+ });
1517
+ };
1518
+ }
1519
+ /**
1520
+ * Updates an existing event type by ID.
1521
+ *
1522
+ * @see https://cal.com/docs/api-reference/v2/event-types/update-an-event-type
1523
+ *
1524
+ * @example
1525
+ * ```ts
1526
+ * await updateEventType(context)(12345, { title: 'Updated Session Title' });
1527
+ * ```
1528
+ */ function updateEventType(context) {
1529
+ return function(eventTypeId, input) {
1530
+ return context.fetchJson("/event-types/".concat(eventTypeId), {
1531
+ method: 'PATCH',
1532
+ headers: calcomApiVersionHeaders(CALCOM_API_VERSION_EVENT_TYPES),
1533
+ body: JSON.stringify(input)
1534
+ });
1535
+ };
1536
+ }
1537
+ /**
1538
+ * Deletes an event type by ID.
1539
+ *
1540
+ * @see https://cal.com/docs/api-reference/v2/event-types/delete-an-event-type
1541
+ *
1542
+ * @example
1543
+ * ```ts
1544
+ * await deleteEventType(context)(12345);
1545
+ * ```
1546
+ */ function deleteEventType(context) {
1547
+ return function(eventTypeId) {
1548
+ return context.fetchJson("/event-types/".concat(eventTypeId), {
1549
+ method: 'DELETE',
1550
+ headers: calcomApiVersionHeaders(CALCOM_API_VERSION_EVENT_TYPES)
1551
+ });
1552
+ };
1553
+ }
1554
+
1555
+ /**
1556
+ * Retrieves all connected calendars and the destination calendar for the authenticated user.
1557
+ *
1558
+ * @see https://cal.com/docs/api-reference/v2/calendars/get-all-calendars
1559
+ *
1560
+ * @example
1561
+ * ```ts
1562
+ * const response = await getCalendars(context)();
1563
+ * response.data.connectedCalendars.forEach(cc => console.log(cc.integration));
1564
+ * ```
1565
+ */ function getCalendars(context) {
1566
+ return function() {
1567
+ return context.fetchJson('/calendars', {
1568
+ method: 'GET',
1569
+ headers: calcomApiVersionHeaders(CALCOM_API_VERSION_CALENDARS)
1570
+ });
1571
+ };
1572
+ }
1573
+ /**
1574
+ * Retrieves busy time ranges across the user's connected calendars for a given date range.
1575
+ *
1576
+ * @see https://cal.com/docs/api-reference/v2/calendars/get-busy-times
1577
+ *
1578
+ * @example
1579
+ * ```ts
1580
+ * const response = await getBusyTimes(context)({
1581
+ * dateFrom: '2026-03-17',
1582
+ * dateTo: '2026-03-24'
1583
+ * });
1584
+ * response.data.forEach(bt => console.log(bt.start, bt.end));
1585
+ * ```
1586
+ */ function getBusyTimes(context) {
1587
+ return function(input) {
1588
+ var _input_calendarsToLoad;
1589
+ var params = fetch.makeUrlSearchParams({
1590
+ dateFrom: input.dateFrom,
1591
+ dateTo: input.dateTo,
1592
+ calendarsToLoad: (_input_calendarsToLoad = input.calendarsToLoad) === null || _input_calendarsToLoad === void 0 ? void 0 : _input_calendarsToLoad.join(',')
1593
+ });
1594
+ return context.fetchJson("/calendars/busy-times?".concat(params), {
1595
+ method: 'GET',
1596
+ headers: calcomApiVersionHeaders(CALCOM_API_VERSION_CALENDARS)
1597
+ });
1598
+ };
1599
+ }
1600
+
1601
+ /**
1602
+ * Creates a webhook subscription for the authenticated user. Webhooks notify your app
1603
+ * when specified events occur (e.g., bookings created, cancelled, rescheduled).
1604
+ *
1605
+ * @see https://cal.com/docs/api-reference/v2/webhooks/create-a-webhook
1606
+ *
1607
+ * @example
1608
+ * ```ts
1609
+ * const response = await createWebhook(context)({
1610
+ * subscriberUrl: 'https://example.com/webhook/calcom',
1611
+ * triggers: ['BOOKING_CREATED', 'BOOKING_CANCELLED'],
1612
+ * active: true
1613
+ * });
1614
+ * console.log(response.data.id);
1615
+ * ```
1616
+ */ function createWebhook(context) {
1617
+ return function(input) {
1618
+ return context.fetchJson('/webhooks', {
1619
+ method: 'POST',
1620
+ body: JSON.stringify(input)
1621
+ });
1622
+ };
1623
+ }
1624
+ /**
1625
+ * Retrieves all webhooks for the authenticated user.
1626
+ *
1627
+ * @see https://cal.com/docs/api-reference/v2/webhooks/get-all-webhooks
1628
+ *
1629
+ * @example
1630
+ * ```ts
1631
+ * const response = await getWebhooks(context)();
1632
+ * response.data.forEach(wh => console.log(wh.subscriberUrl, wh.triggers));
1633
+ * ```
1634
+ */ function getWebhooks(context) {
1635
+ return function() {
1636
+ return context.fetchJson('/webhooks', {
1637
+ method: 'GET'
1638
+ });
1639
+ };
1640
+ }
1641
+ /**
1642
+ * Retrieves a specific webhook by ID.
1643
+ *
1644
+ * @see https://cal.com/docs/api-reference/v2/webhooks/get-a-webhook
1645
+ *
1646
+ * @example
1647
+ * ```ts
1648
+ * const response = await getWebhook(context)(42);
1649
+ * console.log(response.data.subscriberUrl);
1650
+ * ```
1651
+ */ function getWebhook(context) {
1652
+ return function(webhookId) {
1653
+ return context.fetchJson("/webhooks/".concat(webhookId), {
1654
+ method: 'GET'
1655
+ });
1656
+ };
1657
+ }
1658
+ /**
1659
+ * Updates an existing webhook by ID.
1660
+ *
1661
+ * @see https://cal.com/docs/api-reference/v2/webhooks/update-a-webhook
1662
+ *
1663
+ * @example
1664
+ * ```ts
1665
+ * await updateWebhook(context)(42, { active: false });
1666
+ * ```
1667
+ */ function updateWebhook(context) {
1668
+ return function(webhookId, input) {
1669
+ return context.fetchJson("/webhooks/".concat(webhookId), {
1670
+ method: 'PATCH',
1671
+ body: JSON.stringify(input)
1672
+ });
1673
+ };
1674
+ }
1675
+ /**
1676
+ * Deletes a webhook by ID.
1677
+ *
1678
+ * @see https://cal.com/docs/api-reference/v2/webhooks/delete-a-webhook
1679
+ *
1680
+ * @example
1681
+ * ```ts
1682
+ * await deleteWebhook(context)(42);
1683
+ * ```
1684
+ */ function deleteWebhook(context) {
1685
+ return function(webhookId) {
1686
+ return context.fetchJson("/webhooks/".concat(webhookId), {
1687
+ method: 'DELETE'
1688
+ });
1689
+ };
1690
+ }
1691
+
1692
+ /**
1693
+ * Refreshes an access token using a refresh token. Cal.com rotates refresh tokens
1694
+ * on every use, so the new `refresh_token` from the response must be persisted.
1695
+ *
1696
+ * Cal.com uses JSON body (not Basic Auth) for token requests.
1697
+ *
1698
+ * @see https://cal.com/docs/api-reference/v2/oauth/refresh-an-existing-access-token
1699
+ *
1700
+ * @example
1701
+ * ```ts
1702
+ * const response = await refreshAccessToken(context)({ refreshToken: 'existing-refresh-token' });
1703
+ * console.log(response.access_token, response.refresh_token);
1704
+ * ```
1705
+ */ function refreshAccessToken(context) {
1706
+ return function(input) {
1707
+ var _ref;
1708
+ var refreshToken = (_ref = input === null || input === void 0 ? void 0 : input.refreshToken) !== null && _ref !== void 0 ? _ref : context.config.refreshToken;
1709
+ var fetchJsonInput = {
1710
+ method: 'POST',
1711
+ body: JSON.stringify({
1712
+ grant_type: 'refresh_token',
1713
+ client_id: context.config.clientId,
1714
+ client_secret: context.config.clientSecret,
1715
+ refresh_token: refreshToken
1716
+ })
1717
+ };
1718
+ return context.fetchJson('/oauth/token', fetchJsonInput);
1719
+ };
1720
+ }
1721
+ /**
1722
+ * Exchanges an OAuth authorization code for access and refresh tokens.
1723
+ * Used during the initial OAuth flow when a user authorizes your app.
1724
+ *
1725
+ * Cal.com uses JSON body (not Basic Auth) for token requests.
1726
+ *
1727
+ * @see https://cal.com/docs/api-reference/v2/oauth/exchange-an-authorization-code-for-access-tokens
1728
+ *
1729
+ * @example
1730
+ * ```ts
1731
+ * const response = await exchangeAuthorizationCode(context)({
1732
+ * code: 'auth-code-from-redirect',
1733
+ * redirectUri: 'https://example.com/callback'
1734
+ * });
1735
+ * console.log(response.access_token, response.refresh_token);
1736
+ * ```
1737
+ */ function exchangeAuthorizationCode(context) {
1738
+ return function(input) {
1739
+ var fetchJsonInput = {
1740
+ method: 'POST',
1741
+ body: JSON.stringify({
1742
+ grant_type: 'authorization_code',
1743
+ client_id: context.config.clientId,
1744
+ client_secret: context.config.clientSecret,
1745
+ code: input.code,
1746
+ redirect_uri: input.redirectUri
1747
+ })
1748
+ };
1749
+ return context.fetchJson('/oauth/token', fetchJsonInput);
1750
+ };
1751
+ }
1752
+
1753
+ /**
1754
+ * The Cal.com OAuth token endpoint URL.
1755
+ */ var CALCOM_OAUTH_TOKEN_URL = 'https://api.cal.com/v2/oauth/token';
1756
+ /**
1757
+ * The Cal.com OAuth authorize URL.
1758
+ */ var CALCOM_OAUTH_AUTHORIZE_URL = 'https://app.cal.com/auth/oauth2/authorize';
1759
+
1760
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
1761
+ try {
1762
+ var info = gen[key](arg);
1763
+ var value = info.value;
1764
+ } catch (error) {
1765
+ reject(error);
1766
+ return;
1767
+ }
1768
+ if (info.done) {
1769
+ resolve(value);
1770
+ } else {
1771
+ Promise.resolve(value).then(_next, _throw);
1772
+ }
1773
+ }
1774
+ function _async_to_generator(fn) {
1775
+ return function() {
1776
+ var self = this, args = arguments;
1777
+ return new Promise(function(resolve, reject) {
1778
+ var gen = fn.apply(self, args);
1779
+ function _next(value) {
1780
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
1781
+ }
1782
+ function _throw(err) {
1783
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
1784
+ }
1785
+ _next(undefined);
1786
+ });
1787
+ };
1788
+ }
1789
+ function _ts_generator(thisArg, body) {
1790
+ var f, y, t, _ = {
1791
+ label: 0,
1792
+ sent: function() {
1793
+ if (t[0] & 1) throw t[1];
1794
+ return t[1];
1795
+ },
1796
+ trys: [],
1797
+ ops: []
1798
+ }, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype), d = Object.defineProperty;
1799
+ return d(g, "next", {
1800
+ value: verb(0)
1801
+ }), d(g, "throw", {
1802
+ value: verb(1)
1803
+ }), d(g, "return", {
1804
+ value: verb(2)
1805
+ }), typeof Symbol === "function" && d(g, Symbol.iterator, {
1806
+ value: function() {
1807
+ return this;
1808
+ }
1809
+ }), g;
1810
+ function verb(n) {
1811
+ return function(v) {
1812
+ return step([
1813
+ n,
1814
+ v
1815
+ ]);
1816
+ };
1817
+ }
1818
+ function step(op) {
1819
+ if (f) throw new TypeError("Generator is already executing.");
1820
+ while(g && (g = 0, op[0] && (_ = 0)), _)try {
1821
+ 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;
1822
+ if (y = 0, t) op = [
1823
+ op[0] & 2,
1824
+ t.value
1825
+ ];
1826
+ switch(op[0]){
1827
+ case 0:
1828
+ case 1:
1829
+ t = op;
1830
+ break;
1831
+ case 4:
1832
+ _.label++;
1833
+ return {
1834
+ value: op[1],
1835
+ done: false
1836
+ };
1837
+ case 5:
1838
+ _.label++;
1839
+ y = op[1];
1840
+ op = [
1841
+ 0
1842
+ ];
1843
+ continue;
1844
+ case 7:
1845
+ op = _.ops.pop();
1846
+ _.trys.pop();
1847
+ continue;
1848
+ default:
1849
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
1850
+ _ = 0;
1851
+ continue;
1852
+ }
1853
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
1854
+ _.label = op[1];
1855
+ break;
1856
+ }
1857
+ if (op[0] === 6 && _.label < t[1]) {
1858
+ _.label = t[1];
1859
+ t = op;
1860
+ break;
1861
+ }
1862
+ if (t && _.label < t[2]) {
1863
+ _.label = t[2];
1864
+ _.ops.push(op);
1865
+ break;
1866
+ }
1867
+ if (t[2]) _.ops.pop();
1868
+ _.trys.pop();
1869
+ continue;
1870
+ }
1871
+ op = body.call(thisArg, _);
1872
+ } catch (e) {
1873
+ op = [
1874
+ 6,
1875
+ e
1876
+ ];
1877
+ y = 0;
1878
+ } finally{
1879
+ f = t = 0;
1880
+ }
1881
+ if (op[0] & 5) throw op[1];
1882
+ return {
1883
+ value: op[0] ? op[1] : void 0,
1884
+ done: true
1885
+ };
1886
+ }
1887
+ }
1888
+ function calcomOAuthFactory(factoryConfig) {
1889
+ var fetchHandler = calcomRateLimitedFetchHandler();
1890
+ var logCalcomServerErrorFunction = factoryConfig.logCalcomServerErrorFunction, _factoryConfig_fetchFactory = factoryConfig.fetchFactory, fetchFactory = _factoryConfig_fetchFactory === void 0 ? function(_) {
1891
+ return fetch.fetchApiFetchService.makeFetch({
1892
+ baseUrl: CALCOM_OAUTH_TOKEN_URL,
1893
+ baseRequest: {
1894
+ headers: {
1895
+ 'Content-Type': 'application/json'
1896
+ }
1897
+ },
1898
+ fetchHandler: fetchHandler,
1899
+ timeout: 20 * 1000,
1900
+ requireOkResponse: true,
1901
+ useTimeout: true // use timeout
1902
+ });
1903
+ } : _factoryConfig_fetchFactory;
1904
+ return function(config) {
1905
+ var accessTokenFromTokenResponse = function accessTokenFromTokenResponse(result) {
1906
+ var createdAt = new Date().getTime();
1907
+ var access_token = result.access_token, refresh_token = result.refresh_token, scope = result.scope, expires_in = result.expires_in;
1908
+ // Store the new refresh token for next use
1909
+ latestRefreshToken = refresh_token;
1910
+ var accessToken = {
1911
+ accessToken: access_token,
1912
+ refreshToken: refresh_token,
1913
+ expiresIn: expires_in,
1914
+ expiresAt: new Date(createdAt + expires_in * util.MS_IN_SECOND),
1915
+ scope: scope !== null && scope !== void 0 ? scope : ''
1916
+ };
1917
+ return accessToken;
1918
+ };
1919
+ var useApiKey = !!config.apiKey;
1920
+ if (!useApiKey) {
1921
+ if (!config.clientId) {
1922
+ throw new Error('CalcomOAuthConfig missing clientId. Provide clientId+clientSecret for OAuth or apiKey for API key auth.');
1923
+ } else if (!config.clientSecret) {
1924
+ throw new Error('CalcomOAuthConfig missing clientSecret.');
1925
+ }
1926
+ }
1927
+ var baseFetch = fetchFactory();
1928
+ var fetch$1 = handleCalcomOAuthErrorFetch(baseFetch, logCalcomServerErrorFunction);
1929
+ var fetchJson = fetch.fetchJsonFunction(fetch$1, {
1930
+ handleFetchJsonParseErrorFunction: fetch.returnNullHandleFetchJsonParseErrorFunction
1931
+ });
1932
+ // MARK: API Key Auth (static token, no refresh)
1933
+ if (useApiKey) {
1934
+ var apiKeyToken = {
1935
+ accessToken: config.apiKey,
1936
+ refreshToken: '',
1937
+ expiresIn: Number.MAX_SAFE_INTEGER,
1938
+ expiresAt: new Date(Date.now() + 1000 * 60 * 60 * 24 * 365 * 100),
1939
+ scope: ''
1940
+ };
1941
+ var loadAccessToken = function loadAccessToken() {
1942
+ return _async_to_generator(function() {
1943
+ return _ts_generator(this, function(_state) {
1944
+ return [
1945
+ 2,
1946
+ apiKeyToken
1947
+ ];
1948
+ });
1949
+ })();
1950
+ };
1951
+ var makeUserAccessTokenFactory = function makeUserAccessTokenFactory() {
1952
+ throw new Error('makeUserAccessTokenFactory is not available when using API key auth. Use OAuth for per-user contexts.');
1953
+ };
1954
+ var oauthContext = {
1955
+ fetch: fetch$1,
1956
+ fetchJson: fetchJson,
1957
+ loadAccessToken: loadAccessToken,
1958
+ makeUserAccessTokenFactory: makeUserAccessTokenFactory,
1959
+ config: config
1960
+ };
1961
+ return {
1962
+ oauthContext: oauthContext
1963
+ };
1964
+ }
1965
+ // MARK: OAuth Auth (refresh token flow)
1966
+ /**
1967
+ * Tracks the latest refresh token since Cal.com rotates them.
1968
+ */ var latestRefreshToken = config.refreshToken;
1969
+ var tokenRefresher = function tokenRefresher() {
1970
+ return _async_to_generator(function() {
1971
+ var accessToken;
1972
+ return _ts_generator(this, function(_state) {
1973
+ switch(_state.label){
1974
+ case 0:
1975
+ return [
1976
+ 4,
1977
+ refreshAccessToken(oauthContext1)({
1978
+ refreshToken: latestRefreshToken !== null && latestRefreshToken !== void 0 ? latestRefreshToken : undefined
1979
+ })
1980
+ ];
1981
+ case 1:
1982
+ accessToken = _state.sent();
1983
+ return [
1984
+ 2,
1985
+ accessTokenFromTokenResponse(accessToken)
1986
+ ];
1987
+ }
1988
+ });
1989
+ })();
1990
+ };
1991
+ var loadAccessToken1 = calcomOAuthAccessTokenFactory({
1992
+ tokenRefresher: tokenRefresher,
1993
+ accessTokenCache: config.accessTokenCache
1994
+ });
1995
+ // User Access Token
1996
+ var makeUserAccessTokenFactory1 = function makeUserAccessTokenFactory(input) {
1997
+ var userLatestRefreshToken = input.refreshToken;
1998
+ var userTokenRefresher = function userTokenRefresher() {
1999
+ return _async_to_generator(function() {
2000
+ var tokenResponse, token;
2001
+ return _ts_generator(this, function(_state) {
2002
+ switch(_state.label){
2003
+ case 0:
2004
+ return [
2005
+ 4,
2006
+ refreshAccessToken(oauthContext1)({
2007
+ refreshToken: userLatestRefreshToken
2008
+ })
2009
+ ];
2010
+ case 1:
2011
+ tokenResponse = _state.sent();
2012
+ token = accessTokenFromTokenResponse(tokenResponse);
2013
+ // Track the rotated refresh token for this user
2014
+ userLatestRefreshToken = token.refreshToken;
2015
+ return [
2016
+ 2,
2017
+ token
2018
+ ];
2019
+ }
2020
+ });
2021
+ })();
2022
+ };
2023
+ return calcomOAuthAccessTokenFactory({
2024
+ tokenRefresher: userTokenRefresher,
2025
+ accessTokenCache: input.userAccessTokenCache
2026
+ });
2027
+ };
2028
+ var oauthContext1 = {
2029
+ fetch: fetch$1,
2030
+ fetchJson: fetchJson,
2031
+ loadAccessToken: loadAccessToken1,
2032
+ makeUserAccessTokenFactory: makeUserAccessTokenFactory1,
2033
+ config: config
2034
+ };
2035
+ var calcomOAuth = {
2036
+ oauthContext: oauthContext1
2037
+ };
2038
+ return calcomOAuth;
2039
+ };
2040
+ }
2041
+ /**
2042
+ * Creates a CalcomAccessTokenFactory with multi-tier caching.
2043
+ */ function calcomOAuthAccessTokenFactory(config) {
2044
+ var tokenRefresher = config.tokenRefresher, accessTokenCache = config.accessTokenCache, inputTokenExpirationBuffer = config.tokenExpirationBuffer;
2045
+ var tokenExpirationBuffer = inputTokenExpirationBuffer !== null && inputTokenExpirationBuffer !== void 0 ? inputTokenExpirationBuffer : util.MS_IN_MINUTE;
2046
+ /**
2047
+ * Caches the token internally here until it expires.
2048
+ */ var currentToken = null;
2049
+ return function() {
2050
+ return _async_to_generator(function() {
2051
+ var cachedToken, isExpired, e;
2052
+ return _ts_generator(this, function(_state) {
2053
+ switch(_state.label){
2054
+ case 0:
2055
+ if (!!currentToken) return [
2056
+ 3,
2057
+ 2
2058
+ ];
2059
+ return [
2060
+ 4,
2061
+ accessTokenCache === null || accessTokenCache === void 0 ? void 0 : accessTokenCache.loadCachedToken()
2062
+ ];
2063
+ case 1:
2064
+ cachedToken = _state.sent();
2065
+ if (cachedToken) {
2066
+ currentToken = cachedToken;
2067
+ }
2068
+ _state.label = 2;
2069
+ case 2:
2070
+ // check expiration
2071
+ if (currentToken != null) {
2072
+ isExpired = new Date().getTime() + tokenExpirationBuffer >= currentToken.expiresAt.getTime();
2073
+ if (isExpired) {
2074
+ currentToken = null;
2075
+ }
2076
+ }
2077
+ if (!!currentToken) return [
2078
+ 3,
2079
+ 10
2080
+ ];
2081
+ _state.label = 3;
2082
+ case 3:
2083
+ _state.trys.push([
2084
+ 3,
2085
+ 5,
2086
+ ,
2087
+ 6
2088
+ ]);
2089
+ return [
2090
+ 4,
2091
+ tokenRefresher()
2092
+ ];
2093
+ case 4:
2094
+ currentToken = _state.sent();
2095
+ return [
2096
+ 3,
2097
+ 6
2098
+ ];
2099
+ case 5:
2100
+ e = _state.sent();
2101
+ console.error("calcomOAuthAccessTokenFactory(): Failed retrieving new token from tokenRefresher: ", e);
2102
+ throw new CalcomOAuthAuthFailureError('Token Refresh Failed');
2103
+ case 6:
2104
+ if (!currentToken) return [
2105
+ 3,
2106
+ 10
2107
+ ];
2108
+ _state.label = 7;
2109
+ case 7:
2110
+ _state.trys.push([
2111
+ 7,
2112
+ 9,
2113
+ ,
2114
+ 10
2115
+ ]);
2116
+ return [
2117
+ 4,
2118
+ accessTokenCache === null || accessTokenCache === void 0 ? void 0 : accessTokenCache.updateCachedToken(currentToken)
2119
+ ];
2120
+ case 8:
2121
+ _state.sent();
2122
+ return [
2123
+ 3,
2124
+ 10
2125
+ ];
2126
+ case 9:
2127
+ _state.sent();
2128
+ return [
2129
+ 3,
2130
+ 10
2131
+ ];
2132
+ case 10:
2133
+ return [
2134
+ 2,
2135
+ currentToken
2136
+ ];
2137
+ }
2138
+ });
2139
+ })();
2140
+ };
2141
+ }
2142
+
2143
+ exports.CALCOM_API_URL = CALCOM_API_URL;
2144
+ exports.CALCOM_API_VERSION_BOOKINGS = CALCOM_API_VERSION_BOOKINGS;
2145
+ exports.CALCOM_API_VERSION_CALENDARS = CALCOM_API_VERSION_CALENDARS;
2146
+ exports.CALCOM_API_VERSION_EVENT_TYPES = CALCOM_API_VERSION_EVENT_TYPES;
2147
+ exports.CALCOM_API_VERSION_HEADER = CALCOM_API_VERSION_HEADER;
2148
+ exports.CALCOM_API_VERSION_ME = CALCOM_API_VERSION_ME;
2149
+ exports.CALCOM_API_VERSION_SCHEDULES = CALCOM_API_VERSION_SCHEDULES;
2150
+ exports.CALCOM_API_VERSION_SLOTS = CALCOM_API_VERSION_SLOTS;
2151
+ exports.CALCOM_OAUTH_AUTHORIZE_URL = CALCOM_OAUTH_AUTHORIZE_URL;
2152
+ exports.CALCOM_OAUTH_INVALID_GRANT_ERROR_CODE = CALCOM_OAUTH_INVALID_GRANT_ERROR_CODE;
2153
+ exports.CALCOM_OAUTH_TOKEN_URL = CALCOM_OAUTH_TOKEN_URL;
2154
+ exports.CALCOM_RATE_LIMIT_LIMIT_HEADER = CALCOM_RATE_LIMIT_LIMIT_HEADER;
2155
+ exports.CALCOM_RATE_LIMIT_REMAINING_HEADER = CALCOM_RATE_LIMIT_REMAINING_HEADER;
2156
+ exports.CALCOM_RATE_LIMIT_RESET_HEADER = CALCOM_RATE_LIMIT_RESET_HEADER;
2157
+ exports.CALCOM_TOO_MANY_REQUESTS_HTTP_STATUS_CODE = CALCOM_TOO_MANY_REQUESTS_HTTP_STATUS_CODE;
2158
+ exports.CalcomOAuthAccessTokenError = CalcomOAuthAccessTokenError;
2159
+ exports.CalcomOAuthAuthFailureError = CalcomOAuthAuthFailureError;
2160
+ exports.CalcomServerError = CalcomServerError;
2161
+ exports.CalcomServerFetchResponseError = CalcomServerFetchResponseError;
2162
+ exports.CalcomTooManyRequestsError = CalcomTooManyRequestsError;
2163
+ exports.DEFAULT_CALCOM_API_RATE_LIMIT = DEFAULT_CALCOM_API_RATE_LIMIT;
2164
+ exports.DEFAULT_CALCOM_API_RATE_LIMIT_RESET_PERIOD = DEFAULT_CALCOM_API_RATE_LIMIT_RESET_PERIOD;
2165
+ exports.DEFAULT_CALCOM_RATE_LIMITED_TOO_MANY_REQUESTS_LOG_FUNCTION = DEFAULT_CALCOM_RATE_LIMITED_TOO_MANY_REQUESTS_LOG_FUNCTION;
2166
+ exports.calcomAccessTokenStringFactory = calcomAccessTokenStringFactory;
2167
+ exports.calcomApiVersionHeaders = calcomApiVersionHeaders;
2168
+ exports.calcomFactory = calcomFactory;
2169
+ exports.calcomOAuthAccessTokenFactory = calcomOAuthAccessTokenFactory;
2170
+ exports.calcomOAuthFactory = calcomOAuthFactory;
2171
+ exports.calcomRateLimitHeaderDetails = calcomRateLimitHeaderDetails;
2172
+ exports.calcomRateLimitedFetchHandler = calcomRateLimitedFetchHandler;
2173
+ exports.cancelBooking = cancelBooking;
2174
+ exports.createBooking = createBooking;
2175
+ exports.createEventType = createEventType;
2176
+ exports.createWebhook = createWebhook;
2177
+ exports.deleteEventType = deleteEventType;
2178
+ exports.deleteWebhook = deleteWebhook;
2179
+ exports.exchangeAuthorizationCode = exchangeAuthorizationCode;
2180
+ exports.getAvailableSlots = getAvailableSlots;
2181
+ exports.getBooking = getBooking;
2182
+ exports.getBusyTimes = getBusyTimes;
2183
+ exports.getCalendars = getCalendars;
2184
+ exports.getEventTypes = getEventTypes;
2185
+ exports.getMe = getMe;
2186
+ exports.getSchedules = getSchedules;
2187
+ exports.getWebhook = getWebhook;
2188
+ exports.getWebhooks = getWebhooks;
2189
+ exports.handleCalcomErrorFetch = handleCalcomErrorFetch;
2190
+ exports.handleCalcomErrorFetchFactory = handleCalcomErrorFetchFactory;
2191
+ exports.handleCalcomOAuthErrorFetch = handleCalcomOAuthErrorFetch;
2192
+ exports.logCalcomErrorToConsole = logCalcomErrorToConsole;
2193
+ exports.logCalcomOAuthErrorToConsole = logCalcomOAuthErrorToConsole;
2194
+ exports.logCalcomServerErrorFunction = logCalcomServerErrorFunction;
2195
+ exports.parseCalcomApiError = parseCalcomApiError;
2196
+ exports.parseCalcomApiServerErrorResponseData = parseCalcomApiServerErrorResponseData;
2197
+ exports.parseCalcomOAuthError = parseCalcomOAuthError;
2198
+ exports.parseCalcomOAuthServerErrorResponseData = parseCalcomOAuthServerErrorResponseData;
2199
+ exports.parseCalcomServerErrorData = parseCalcomServerErrorData;
2200
+ exports.refreshAccessToken = refreshAccessToken;
2201
+ exports.updateEventType = updateEventType;
2202
+ exports.updateWebhook = updateWebhook;