@dereekb/nestjs 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.
@@ -5,142 +5,744 @@ import { createHmac } from 'crypto';
5
5
  import { ConfigService, ConfigModule } from '@nestjs/config';
6
6
  import { createClient } from '@typeform/api-client';
7
7
 
8
+ function _define_property$6(obj, key, value) {
9
+ if (key in obj) {
10
+ Object.defineProperty(obj, key, {
11
+ value: value,
12
+ enumerable: true,
13
+ configurable: true,
14
+ writable: true
15
+ });
16
+ } else {
17
+ obj[key] = value;
18
+ }
19
+ return obj;
20
+ }
21
+ function _object_spread$1(target) {
22
+ for(var i = 1; i < arguments.length; i++){
23
+ var source = arguments[i] != null ? arguments[i] : {};
24
+ var ownKeys = Object.keys(source);
25
+ if (typeof Object.getOwnPropertySymbols === "function") {
26
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
27
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
28
+ }));
29
+ }
30
+ ownKeys.forEach(function(key) {
31
+ _define_property$6(target, key, source[key]);
32
+ });
33
+ }
34
+ return target;
35
+ }
36
+ function ownKeys$1(object, enumerableOnly) {
37
+ var keys = Object.keys(object);
38
+ if (Object.getOwnPropertySymbols) {
39
+ var symbols = Object.getOwnPropertySymbols(object);
40
+ keys.push.apply(keys, symbols);
41
+ }
42
+ return keys;
43
+ }
44
+ function _object_spread_props$1(target, source) {
45
+ source = source != null ? source : {};
46
+ if (Object.getOwnPropertyDescriptors) {
47
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
48
+ } else {
49
+ ownKeys$1(Object(source)).forEach(function(key) {
50
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
51
+ });
52
+ }
53
+ return target;
54
+ }
8
55
  /**
9
56
  * Creates a TypeformWebhookEvent and treats the data as the input type.
10
57
  *
11
58
  * @param event
12
59
  * @returns
13
- */
14
- function typeFormWebhookEvent(event) {
60
+ */ function typeFormWebhookEvent(event) {
15
61
  return event;
16
62
  }
17
- const typeformEventHandlerFactory = handlerFactory((x) => x.event_type);
18
- const typeformEventHandlerConfigurerFactory = handlerConfigurerFactory({
19
- configurerForAccessor: (accessor) => {
63
+ var typeformEventHandlerFactory = handlerFactory(function(x) {
64
+ return x.event_type;
65
+ });
66
+ var typeformEventHandlerConfigurerFactory = handlerConfigurerFactory({
67
+ configurerForAccessor: function configurerForAccessor(accessor) {
20
68
  // eslint-disable-next-line
21
- const fnWithKey = handlerMappedSetFunctionFactory(accessor, typeFormWebhookEvent);
22
- const configurer = {
23
- ...accessor,
69
+ var fnWithKey = handlerMappedSetFunctionFactory(accessor, typeFormWebhookEvent);
70
+ var configurer = _object_spread_props$1(_object_spread$1({}, accessor), {
24
71
  handleFormResponse: fnWithKey('form_response')
25
- };
72
+ });
26
73
  return configurer;
27
74
  }
28
75
  });
29
76
 
30
- const TYPEFORM_WEBHOOK_SECRET_TOKEN_ENV_VAR = 'TYPEFORM_WEBHOOK_SECRET_TOKEN';
77
+ function _class_call_check$6(instance, Constructor) {
78
+ if (!(instance instanceof Constructor)) {
79
+ throw new TypeError("Cannot call a class as a function");
80
+ }
81
+ }
82
+ function _defineProperties$3(target, props) {
83
+ for(var i = 0; i < props.length; i++){
84
+ var descriptor = props[i];
85
+ descriptor.enumerable = descriptor.enumerable || false;
86
+ descriptor.configurable = true;
87
+ if ("value" in descriptor) descriptor.writable = true;
88
+ Object.defineProperty(target, descriptor.key, descriptor);
89
+ }
90
+ }
91
+ function _create_class$3(Constructor, protoProps, staticProps) {
92
+ if (staticProps) _defineProperties$3(Constructor, staticProps);
93
+ return Constructor;
94
+ }
95
+ function _define_property$5(obj, key, value) {
96
+ if (key in obj) {
97
+ Object.defineProperty(obj, key, {
98
+ value: value,
99
+ enumerable: true,
100
+ configurable: true,
101
+ writable: true
102
+ });
103
+ } else {
104
+ obj[key] = value;
105
+ }
106
+ return obj;
107
+ }
108
+ var TYPEFORM_WEBHOOK_SECRET_TOKEN_ENV_VAR = 'TYPEFORM_WEBHOOK_SECRET_TOKEN';
31
109
  /**
32
110
  * Configuration for TypeformService
33
- */
34
- class TypeformWebhookServiceConfig {
35
- typeformWebhook;
36
- static assertValidConfig(config) {
37
- if (!config.typeformWebhook.secretToken) {
38
- throw new Error('No Typeform webhook secret specified.');
39
- }
111
+ */ var TypeformWebhookServiceConfig = /*#__PURE__*/ function() {
112
+ function TypeformWebhookServiceConfig() {
113
+ _class_call_check$6(this, TypeformWebhookServiceConfig);
114
+ _define_property$5(this, "typeformWebhook", void 0);
40
115
  }
41
- }
116
+ _create_class$3(TypeformWebhookServiceConfig, null, [
117
+ {
118
+ key: "assertValidConfig",
119
+ value: function assertValidConfig(config) {
120
+ if (!config.typeformWebhook.secretToken) {
121
+ throw new Error('No Typeform webhook secret specified.');
122
+ }
123
+ }
124
+ }
125
+ ]);
126
+ return TypeformWebhookServiceConfig;
127
+ }
128
+ ();
42
129
 
43
- /******************************************************************************
44
- Copyright (c) Microsoft Corporation.
45
-
46
- Permission to use, copy, modify, and/or distribute this software for any
47
- purpose with or without fee is hereby granted.
48
-
49
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
50
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
51
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
52
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
53
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
54
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
55
- PERFORMANCE OF THIS SOFTWARE.
56
- ***************************************************************************** */
57
- /* global Reflect, Promise, SuppressedError, Symbol, Iterator */
58
-
59
-
60
- function __decorate(decorators, target, key, desc) {
61
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
62
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
63
- 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;
64
- return c > 3 && r && Object.defineProperty(target, key, r), r;
65
- }
66
-
67
- function __param(paramIndex, decorator) {
68
- return function (target, key) { decorator(target, key, paramIndex); }
69
- }
70
-
71
- typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
72
- var e = new Error(message);
73
- return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
130
+ function _type_of(obj) {
131
+ "@swc/helpers - typeof";
132
+ return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
133
+ }
134
+ function __decorate(decorators, target, key, desc) {
135
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
136
+ if ((typeof Reflect === "undefined" ? "undefined" : _type_of(Reflect)) === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
137
+ 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;
138
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
139
+ }
140
+ function __param(paramIndex, decorator) {
141
+ return function(target, key) {
142
+ decorator(target, key, paramIndex);
143
+ };
144
+ }
145
+ typeof SuppressedError === "function" ? SuppressedError : function(error, suppressed, message) {
146
+ var e = new Error(message);
147
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
74
148
  };
75
149
 
150
+ function asyncGeneratorStep$2(gen, resolve, reject, _next, _throw, key, arg) {
151
+ try {
152
+ var info = gen[key](arg);
153
+ var value = info.value;
154
+ } catch (error) {
155
+ reject(error);
156
+ return;
157
+ }
158
+ if (info.done) {
159
+ resolve(value);
160
+ } else {
161
+ Promise.resolve(value).then(_next, _throw);
162
+ }
163
+ }
164
+ function _async_to_generator$2(fn) {
165
+ return function() {
166
+ var self = this, args = arguments;
167
+ return new Promise(function(resolve, reject) {
168
+ var gen = fn.apply(self, args);
169
+ function _next(value) {
170
+ asyncGeneratorStep$2(gen, resolve, reject, _next, _throw, "next", value);
171
+ }
172
+ function _throw(err) {
173
+ asyncGeneratorStep$2(gen, resolve, reject, _next, _throw, "throw", err);
174
+ }
175
+ _next(undefined);
176
+ });
177
+ };
178
+ }
179
+ function _ts_generator$2(thisArg, body) {
180
+ var f, y, t, _ = {
181
+ label: 0,
182
+ sent: function() {
183
+ if (t[0] & 1) throw t[1];
184
+ return t[1];
185
+ },
186
+ trys: [],
187
+ ops: []
188
+ }, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype), d = Object.defineProperty;
189
+ return d(g, "next", {
190
+ value: verb(0)
191
+ }), d(g, "throw", {
192
+ value: verb(1)
193
+ }), d(g, "return", {
194
+ value: verb(2)
195
+ }), typeof Symbol === "function" && d(g, Symbol.iterator, {
196
+ value: function() {
197
+ return this;
198
+ }
199
+ }), g;
200
+ function verb(n) {
201
+ return function(v) {
202
+ return step([
203
+ n,
204
+ v
205
+ ]);
206
+ };
207
+ }
208
+ function step(op) {
209
+ if (f) throw new TypeError("Generator is already executing.");
210
+ while(g && (g = 0, op[0] && (_ = 0)), _)try {
211
+ 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;
212
+ if (y = 0, t) op = [
213
+ op[0] & 2,
214
+ t.value
215
+ ];
216
+ switch(op[0]){
217
+ case 0:
218
+ case 1:
219
+ t = op;
220
+ break;
221
+ case 4:
222
+ _.label++;
223
+ return {
224
+ value: op[1],
225
+ done: false
226
+ };
227
+ case 5:
228
+ _.label++;
229
+ y = op[1];
230
+ op = [
231
+ 0
232
+ ];
233
+ continue;
234
+ case 7:
235
+ op = _.ops.pop();
236
+ _.trys.pop();
237
+ continue;
238
+ default:
239
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
240
+ _ = 0;
241
+ continue;
242
+ }
243
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
244
+ _.label = op[1];
245
+ break;
246
+ }
247
+ if (op[0] === 6 && _.label < t[1]) {
248
+ _.label = t[1];
249
+ t = op;
250
+ break;
251
+ }
252
+ if (t && _.label < t[2]) {
253
+ _.label = t[2];
254
+ _.ops.push(op);
255
+ break;
256
+ }
257
+ if (t[2]) _.ops.pop();
258
+ _.trys.pop();
259
+ continue;
260
+ }
261
+ op = body.call(thisArg, _);
262
+ } catch (e) {
263
+ op = [
264
+ 6,
265
+ e
266
+ ];
267
+ y = 0;
268
+ } finally{
269
+ f = t = 0;
270
+ }
271
+ if (op[0] & 5) throw op[1];
272
+ return {
273
+ value: op[0] ? op[1] : void 0,
274
+ done: true
275
+ };
276
+ }
277
+ }
76
278
  /**
77
279
  * Verifies a Typeform webhook event header.
78
280
  *
79
281
  * @param vapiSecretTokenGetter The Typeform secret token. The Vapi client allows for using an AsyncGetterOrValue type, so the verifier supports that as well.
80
282
  * @returns A function that verifies a Typeform webhook event.
81
- */
82
- function typeFormWebhookEventVerifier(config) {
83
- const { secret } = config;
84
- return async (request, rawBody) => {
85
- const requestBodyString = String(request.body);
86
- const headers = request.headers;
87
- const vapiSignature = headers['typeform-signature'];
88
- const hashForVerify = createHmac('sha256', secret).update(requestBodyString).digest('base64');
89
- const signature = `sha256=${hashForVerify}`;
90
- const valid = vapiSignature === signature;
91
- const event = JSON.parse(requestBodyString);
92
- const result = {
93
- valid,
94
- event
95
- };
96
- return result;
283
+ */ function typeFormWebhookEventVerifier(config) {
284
+ var secret = config.secret;
285
+ return function(request, rawBody) {
286
+ return _async_to_generator$2(function() {
287
+ var requestBodyString, headers, vapiSignature, hashForVerify, signature, valid, event, result;
288
+ return _ts_generator$2(this, function(_state) {
289
+ requestBodyString = String(request.body);
290
+ headers = request.headers;
291
+ vapiSignature = headers['typeform-signature'];
292
+ hashForVerify = createHmac('sha256', secret).update(requestBodyString).digest('base64');
293
+ signature = "sha256=".concat(hashForVerify);
294
+ valid = vapiSignature === signature;
295
+ event = JSON.parse(requestBodyString);
296
+ result = {
297
+ valid: valid,
298
+ event: event
299
+ };
300
+ return [
301
+ 2,
302
+ result
303
+ ];
304
+ });
305
+ })();
97
306
  };
98
307
  }
99
308
 
309
+ function asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, key, arg) {
310
+ try {
311
+ var info = gen[key](arg);
312
+ var value = info.value;
313
+ } catch (error) {
314
+ reject(error);
315
+ return;
316
+ }
317
+ if (info.done) {
318
+ resolve(value);
319
+ } else {
320
+ Promise.resolve(value).then(_next, _throw);
321
+ }
322
+ }
323
+ function _async_to_generator$1(fn) {
324
+ return function() {
325
+ var self = this, args = arguments;
326
+ return new Promise(function(resolve, reject) {
327
+ var gen = fn.apply(self, args);
328
+ function _next(value) {
329
+ asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, "next", value);
330
+ }
331
+ function _throw(err) {
332
+ asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, "throw", err);
333
+ }
334
+ _next(undefined);
335
+ });
336
+ };
337
+ }
338
+ function _class_call_check$5(instance, Constructor) {
339
+ if (!(instance instanceof Constructor)) {
340
+ throw new TypeError("Cannot call a class as a function");
341
+ }
342
+ }
343
+ function _defineProperties$2(target, props) {
344
+ for(var i = 0; i < props.length; i++){
345
+ var descriptor = props[i];
346
+ descriptor.enumerable = descriptor.enumerable || false;
347
+ descriptor.configurable = true;
348
+ if ("value" in descriptor) descriptor.writable = true;
349
+ Object.defineProperty(target, descriptor.key, descriptor);
350
+ }
351
+ }
352
+ function _create_class$2(Constructor, protoProps, staticProps) {
353
+ if (protoProps) _defineProperties$2(Constructor.prototype, protoProps);
354
+ return Constructor;
355
+ }
356
+ function _define_property$4(obj, key, value) {
357
+ if (key in obj) {
358
+ Object.defineProperty(obj, key, {
359
+ value: value,
360
+ enumerable: true,
361
+ configurable: true,
362
+ writable: true
363
+ });
364
+ } else {
365
+ obj[key] = value;
366
+ }
367
+ return obj;
368
+ }
369
+ function _ts_generator$1(thisArg, body) {
370
+ var f, y, t, _ = {
371
+ label: 0,
372
+ sent: function() {
373
+ if (t[0] & 1) throw t[1];
374
+ return t[1];
375
+ },
376
+ trys: [],
377
+ ops: []
378
+ }, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype), d = Object.defineProperty;
379
+ return d(g, "next", {
380
+ value: verb(0)
381
+ }), d(g, "throw", {
382
+ value: verb(1)
383
+ }), d(g, "return", {
384
+ value: verb(2)
385
+ }), typeof Symbol === "function" && d(g, Symbol.iterator, {
386
+ value: function() {
387
+ return this;
388
+ }
389
+ }), g;
390
+ function verb(n) {
391
+ return function(v) {
392
+ return step([
393
+ n,
394
+ v
395
+ ]);
396
+ };
397
+ }
398
+ function step(op) {
399
+ if (f) throw new TypeError("Generator is already executing.");
400
+ while(g && (g = 0, op[0] && (_ = 0)), _)try {
401
+ 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;
402
+ if (y = 0, t) op = [
403
+ op[0] & 2,
404
+ t.value
405
+ ];
406
+ switch(op[0]){
407
+ case 0:
408
+ case 1:
409
+ t = op;
410
+ break;
411
+ case 4:
412
+ _.label++;
413
+ return {
414
+ value: op[1],
415
+ done: false
416
+ };
417
+ case 5:
418
+ _.label++;
419
+ y = op[1];
420
+ op = [
421
+ 0
422
+ ];
423
+ continue;
424
+ case 7:
425
+ op = _.ops.pop();
426
+ _.trys.pop();
427
+ continue;
428
+ default:
429
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
430
+ _ = 0;
431
+ continue;
432
+ }
433
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
434
+ _.label = op[1];
435
+ break;
436
+ }
437
+ if (op[0] === 6 && _.label < t[1]) {
438
+ _.label = t[1];
439
+ t = op;
440
+ break;
441
+ }
442
+ if (t && _.label < t[2]) {
443
+ _.label = t[2];
444
+ _.ops.push(op);
445
+ break;
446
+ }
447
+ if (t[2]) _.ops.pop();
448
+ _.trys.pop();
449
+ continue;
450
+ }
451
+ op = body.call(thisArg, _);
452
+ } catch (e) {
453
+ op = [
454
+ 6,
455
+ e
456
+ ];
457
+ y = 0;
458
+ } finally{
459
+ f = t = 0;
460
+ }
461
+ if (op[0] & 5) throw op[1];
462
+ return {
463
+ value: op[0] ? op[1] : void 0,
464
+ done: true
465
+ };
466
+ }
467
+ }
100
468
  /**
101
469
  * Service that makes system changes based on Typeform webhook events.
102
- */
103
- let TypeformWebhookService = class TypeformWebhookService {
104
- logger = new Logger('TypeformWebhookService');
105
- _verifier;
106
- handler = typeformEventHandlerFactory();
107
- configure = typeformEventHandlerConfigurerFactory(this.handler);
108
- constructor(typeFormWebhookServiceConfig) {
109
- const { secretToken: webhookSecret } = typeFormWebhookServiceConfig.typeformWebhook;
470
+ */ var TypeformWebhookService = /*#__PURE__*/ function() {
471
+ function TypeformWebhookService(typeFormWebhookServiceConfig) {
472
+ _class_call_check$5(this, TypeformWebhookService);
473
+ _define_property$4(this, "logger", new Logger('TypeformWebhookService'));
474
+ _define_property$4(this, "_verifier", void 0);
475
+ _define_property$4(this, "handler", typeformEventHandlerFactory());
476
+ _define_property$4(this, "configure", typeformEventHandlerConfigurerFactory(this.handler));
477
+ var _typeFormWebhookServiceConfig_typeformWebhook = typeFormWebhookServiceConfig.typeformWebhook, webhookSecret = _typeFormWebhookServiceConfig_typeformWebhook.secretToken;
110
478
  this._verifier = typeFormWebhookEventVerifier({
111
479
  secret: webhookSecret
112
480
  });
113
481
  }
114
- async updateForWebhook(req, rawBody) {
115
- const result = await this._verifier(req, rawBody);
116
- if (!result.valid) {
117
- this.logger.warn('Received invalid Typeform event.', req);
118
- }
119
- else {
120
- await this.updateForTypeformEvent(result.event);
121
- }
122
- }
123
- async updateForTypeformEvent(event) {
124
- const result = await this.handler(event);
125
- if (!result) {
126
- this.logger.warn('Received unexpected/unhandled Typeform event.', event);
482
+ _create_class$2(TypeformWebhookService, [
483
+ {
484
+ key: "updateForWebhook",
485
+ value: function updateForWebhook(req, rawBody) {
486
+ return _async_to_generator$1(function() {
487
+ var result;
488
+ return _ts_generator$1(this, function(_state) {
489
+ switch(_state.label){
490
+ case 0:
491
+ return [
492
+ 4,
493
+ this._verifier(req, rawBody)
494
+ ];
495
+ case 1:
496
+ result = _state.sent();
497
+ if (!!result.valid) return [
498
+ 3,
499
+ 2
500
+ ];
501
+ this.logger.warn('Received invalid Typeform event.', req);
502
+ return [
503
+ 3,
504
+ 4
505
+ ];
506
+ case 2:
507
+ return [
508
+ 4,
509
+ this.updateForTypeformEvent(result.event)
510
+ ];
511
+ case 3:
512
+ _state.sent();
513
+ _state.label = 4;
514
+ case 4:
515
+ return [
516
+ 2
517
+ ];
518
+ }
519
+ });
520
+ }).call(this);
521
+ }
522
+ },
523
+ {
524
+ key: "updateForTypeformEvent",
525
+ value: function updateForTypeformEvent(event) {
526
+ return _async_to_generator$1(function() {
527
+ var result;
528
+ return _ts_generator$1(this, function(_state) {
529
+ switch(_state.label){
530
+ case 0:
531
+ return [
532
+ 4,
533
+ this.handler(event)
534
+ ];
535
+ case 1:
536
+ result = _state.sent();
537
+ if (!result) {
538
+ this.logger.warn('Received unexpected/unhandled Typeform event.', event);
539
+ }
540
+ return [
541
+ 2
542
+ ];
543
+ }
544
+ });
545
+ }).call(this);
546
+ }
127
547
  }
128
- }
129
- };
548
+ ]);
549
+ return TypeformWebhookService;
550
+ }();
130
551
  TypeformWebhookService = __decorate([
131
552
  Injectable(),
132
553
  __param(0, Inject(TypeformWebhookServiceConfig))
133
554
  ], TypeformWebhookService);
134
555
 
135
- let TypeformWebhookController = class TypeformWebhookController {
136
- _typeformWebhookService;
137
- constructor(typeformWebhookService) {
138
- this._typeformWebhookService = typeformWebhookService;
556
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
557
+ try {
558
+ var info = gen[key](arg);
559
+ var value = info.value;
560
+ } catch (error) {
561
+ reject(error);
562
+ return;
139
563
  }
140
- async handleTypeformWebhook(req, rawBody) {
141
- await this._typeformWebhookService.updateForWebhook(req, rawBody);
564
+ if (info.done) {
565
+ resolve(value);
566
+ } else {
567
+ Promise.resolve(value).then(_next, _throw);
142
568
  }
143
- };
569
+ }
570
+ function _async_to_generator(fn) {
571
+ return function() {
572
+ var self = this, args = arguments;
573
+ return new Promise(function(resolve, reject) {
574
+ var gen = fn.apply(self, args);
575
+ function _next(value) {
576
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
577
+ }
578
+ function _throw(err) {
579
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
580
+ }
581
+ _next(undefined);
582
+ });
583
+ };
584
+ }
585
+ function _class_call_check$4(instance, Constructor) {
586
+ if (!(instance instanceof Constructor)) {
587
+ throw new TypeError("Cannot call a class as a function");
588
+ }
589
+ }
590
+ function _defineProperties$1(target, props) {
591
+ for(var i = 0; i < props.length; i++){
592
+ var descriptor = props[i];
593
+ descriptor.enumerable = descriptor.enumerable || false;
594
+ descriptor.configurable = true;
595
+ if ("value" in descriptor) descriptor.writable = true;
596
+ Object.defineProperty(target, descriptor.key, descriptor);
597
+ }
598
+ }
599
+ function _create_class$1(Constructor, protoProps, staticProps) {
600
+ if (protoProps) _defineProperties$1(Constructor.prototype, protoProps);
601
+ return Constructor;
602
+ }
603
+ function _define_property$3(obj, key, value) {
604
+ if (key in obj) {
605
+ Object.defineProperty(obj, key, {
606
+ value: value,
607
+ enumerable: true,
608
+ configurable: true,
609
+ writable: true
610
+ });
611
+ } else {
612
+ obj[key] = value;
613
+ }
614
+ return obj;
615
+ }
616
+ function _ts_generator(thisArg, body) {
617
+ var f, y, t, _ = {
618
+ label: 0,
619
+ sent: function() {
620
+ if (t[0] & 1) throw t[1];
621
+ return t[1];
622
+ },
623
+ trys: [],
624
+ ops: []
625
+ }, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype), d = Object.defineProperty;
626
+ return d(g, "next", {
627
+ value: verb(0)
628
+ }), d(g, "throw", {
629
+ value: verb(1)
630
+ }), d(g, "return", {
631
+ value: verb(2)
632
+ }), typeof Symbol === "function" && d(g, Symbol.iterator, {
633
+ value: function() {
634
+ return this;
635
+ }
636
+ }), g;
637
+ function verb(n) {
638
+ return function(v) {
639
+ return step([
640
+ n,
641
+ v
642
+ ]);
643
+ };
644
+ }
645
+ function step(op) {
646
+ if (f) throw new TypeError("Generator is already executing.");
647
+ while(g && (g = 0, op[0] && (_ = 0)), _)try {
648
+ 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;
649
+ if (y = 0, t) op = [
650
+ op[0] & 2,
651
+ t.value
652
+ ];
653
+ switch(op[0]){
654
+ case 0:
655
+ case 1:
656
+ t = op;
657
+ break;
658
+ case 4:
659
+ _.label++;
660
+ return {
661
+ value: op[1],
662
+ done: false
663
+ };
664
+ case 5:
665
+ _.label++;
666
+ y = op[1];
667
+ op = [
668
+ 0
669
+ ];
670
+ continue;
671
+ case 7:
672
+ op = _.ops.pop();
673
+ _.trys.pop();
674
+ continue;
675
+ default:
676
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
677
+ _ = 0;
678
+ continue;
679
+ }
680
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
681
+ _.label = op[1];
682
+ break;
683
+ }
684
+ if (op[0] === 6 && _.label < t[1]) {
685
+ _.label = t[1];
686
+ t = op;
687
+ break;
688
+ }
689
+ if (t && _.label < t[2]) {
690
+ _.label = t[2];
691
+ _.ops.push(op);
692
+ break;
693
+ }
694
+ if (t[2]) _.ops.pop();
695
+ _.trys.pop();
696
+ continue;
697
+ }
698
+ op = body.call(thisArg, _);
699
+ } catch (e) {
700
+ op = [
701
+ 6,
702
+ e
703
+ ];
704
+ y = 0;
705
+ } finally{
706
+ f = t = 0;
707
+ }
708
+ if (op[0] & 5) throw op[1];
709
+ return {
710
+ value: op[0] ? op[1] : void 0,
711
+ done: true
712
+ };
713
+ }
714
+ }
715
+ var TypeformWebhookController = /*#__PURE__*/ function() {
716
+ function TypeformWebhookController(typeformWebhookService) {
717
+ _class_call_check$4(this, TypeformWebhookController);
718
+ _define_property$3(this, "_typeformWebhookService", void 0);
719
+ this._typeformWebhookService = typeformWebhookService;
720
+ }
721
+ _create_class$1(TypeformWebhookController, [
722
+ {
723
+ key: "handleTypeformWebhook",
724
+ value: function handleTypeformWebhook(req, rawBody) {
725
+ return _async_to_generator(function() {
726
+ return _ts_generator(this, function(_state) {
727
+ switch(_state.label){
728
+ case 0:
729
+ return [
730
+ 4,
731
+ this._typeformWebhookService.updateForWebhook(req, rawBody)
732
+ ];
733
+ case 1:
734
+ _state.sent();
735
+ return [
736
+ 2
737
+ ];
738
+ }
739
+ });
740
+ }).call(this);
741
+ }
742
+ }
743
+ ]);
744
+ return TypeformWebhookController;
745
+ }();
144
746
  __decorate([
145
747
  Post(),
146
748
  __param(0, Req()),
@@ -151,8 +753,13 @@ TypeformWebhookController = __decorate([
151
753
  __param(0, Inject(TypeformWebhookService))
152
754
  ], TypeformWebhookController);
153
755
 
756
+ function _class_call_check$3(instance, Constructor) {
757
+ if (!(instance instanceof Constructor)) {
758
+ throw new TypeError("Cannot call a class as a function");
759
+ }
760
+ }
154
761
  function typeFormWebhookServiceConfigFactory(configService) {
155
- const config = {
762
+ var config = {
156
763
  typeformWebhook: {
157
764
  secretToken: configService.get(TYPEFORM_WEBHOOK_SECRET_TOKEN_ENV_VAR)
158
765
  }
@@ -160,21 +767,30 @@ function typeFormWebhookServiceConfigFactory(configService) {
160
767
  TypeformWebhookServiceConfig.assertValidConfig(config);
161
768
  return config;
162
769
  }
163
- let TypeformWebhookModule = class TypeformWebhookModule {
770
+ var TypeformWebhookModule = function TypeformWebhookModule() {
771
+ _class_call_check$3(this, TypeformWebhookModule);
164
772
  };
165
773
  TypeformWebhookModule = __decorate([
166
774
  Module({
167
- imports: [ConfigModule],
168
- controllers: [TypeformWebhookController],
775
+ imports: [
776
+ ConfigModule
777
+ ],
778
+ controllers: [
779
+ TypeformWebhookController
780
+ ],
169
781
  providers: [
170
782
  {
171
783
  provide: TypeformWebhookServiceConfig,
172
- inject: [ConfigService],
784
+ inject: [
785
+ ConfigService
786
+ ],
173
787
  useFactory: typeFormWebhookServiceConfigFactory
174
788
  },
175
789
  TypeformWebhookService
176
790
  ],
177
- exports: [TypeformWebhookService]
791
+ exports: [
792
+ TypeformWebhookService
793
+ ]
178
794
  })
179
795
  ], TypeformWebhookModule);
180
796
 
@@ -184,77 +800,149 @@ function findTypeformTemplateRefsInString(input) {
184
800
  *
185
801
  * {{field:8f7adc1e-c3b8-44bd-b00c-1b6c8de65797}}
186
802
  * {{field:01H7G3DCZ1FZV4KYZGM755MXZZ}}
187
- */
188
- const regex = /\{\{\s*(field)\s*:\s*([A-Za-z0-9-]+)\s*\}\}/g;
189
- const matches = input.matchAll(regex);
190
- const result = [];
191
- for (const regexMatch of matches) {
192
- const match = regexMatch[0]; // {{field:8f7adc1e-c3b8-44bd-b00c-1b6c8de65797}}
193
- const type = regexMatch[1]; // field
194
- const ref = regexMatch[2]; // 8f7adc1e-c3b8-44bd-b00c-1b6c8de65797
195
- result.push({
196
- type,
197
- match,
198
- ref
199
- });
803
+ */ var regex = /\{\{\s*(field)\s*:\s*([A-Za-z0-9-]+)\s*\}\}/g;
804
+ var matches = input.matchAll(regex);
805
+ var result = [];
806
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
807
+ try {
808
+ for(var _iterator = matches[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
809
+ var regexMatch = _step.value;
810
+ var match = regexMatch[0]; // {{field:8f7adc1e-c3b8-44bd-b00c-1b6c8de65797}}
811
+ var type = regexMatch[1]; // field
812
+ var ref = regexMatch[2]; // 8f7adc1e-c3b8-44bd-b00c-1b6c8de65797
813
+ result.push({
814
+ type: type,
815
+ match: match,
816
+ ref: ref
817
+ });
818
+ }
819
+ } catch (err) {
820
+ _didIteratorError = true;
821
+ _iteratorError = err;
822
+ } finally{
823
+ try {
824
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
825
+ _iterator.return();
826
+ }
827
+ } finally{
828
+ if (_didIteratorError) {
829
+ throw _iteratorError;
830
+ }
831
+ }
200
832
  }
201
833
  return result;
202
834
  }
203
835
 
836
+ function _define_property$2(obj, key, value) {
837
+ if (key in obj) {
838
+ Object.defineProperty(obj, key, {
839
+ value: value,
840
+ enumerable: true,
841
+ configurable: true,
842
+ writable: true
843
+ });
844
+ } else {
845
+ obj[key] = value;
846
+ }
847
+ return obj;
848
+ }
849
+ function _object_spread(target) {
850
+ for(var i = 1; i < arguments.length; i++){
851
+ var source = arguments[i] != null ? arguments[i] : {};
852
+ var ownKeys = Object.keys(source);
853
+ if (typeof Object.getOwnPropertySymbols === "function") {
854
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
855
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
856
+ }));
857
+ }
858
+ ownKeys.forEach(function(key) {
859
+ _define_property$2(target, key, source[key]);
860
+ });
861
+ }
862
+ return target;
863
+ }
864
+ function ownKeys(object, enumerableOnly) {
865
+ var keys = Object.keys(object);
866
+ if (Object.getOwnPropertySymbols) {
867
+ var symbols = Object.getOwnPropertySymbols(object);
868
+ keys.push.apply(keys, symbols);
869
+ }
870
+ return keys;
871
+ }
872
+ function _object_spread_props(target, source) {
873
+ source = source != null ? source : {};
874
+ if (Object.getOwnPropertyDescriptors) {
875
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
876
+ } else {
877
+ ownKeys(Object(source)).forEach(function(key) {
878
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
879
+ });
880
+ }
881
+ return target;
882
+ }
204
883
  /**
205
884
  * Creates an ExpandedTypeformWebhookFormResponse from a TypeformWebhookFormResponse.
206
- */
207
- function expandTypeformWebhookFormResponse(formResponse) {
208
- const { answers, definition } = formResponse;
209
- const { fields = [] } = definition;
210
- const questionFieldMap = new Map(filterMaybeArrayValues(fields.map((x) => (x.id ? [x.id, x] : null))));
211
- const answerValuePairs = answers.map((answer) => makeTypeformFormResponseAnswerValuePair(answer));
212
- const answerValueFieldRefMap = new Map(filterMaybeArrayValues(answerValuePairs.map((x) => (x.answer.field.ref ? [x.answer.field.ref, x] : null))));
885
+ */ function expandTypeformWebhookFormResponse(formResponse) {
886
+ var answers = formResponse.answers, definition = formResponse.definition;
887
+ var _definition_fields = definition.fields, fields = _definition_fields === void 0 ? [] : _definition_fields;
888
+ var questionFieldMap = new Map(filterMaybeArrayValues(fields.map(function(x) {
889
+ return x.id ? [
890
+ x.id,
891
+ x
892
+ ] : null;
893
+ })));
894
+ var answerValuePairs = answers.map(function(answer) {
895
+ return makeTypeformFormResponseAnswerValuePair(answer);
896
+ });
897
+ var answerValueFieldRefMap = new Map(filterMaybeArrayValues(answerValuePairs.map(function(x) {
898
+ return x.answer.field.ref ? [
899
+ x.answer.field.ref,
900
+ x
901
+ ] : null;
902
+ })));
213
903
  function expandQuestionTitle(title) {
214
- let result = title;
215
- let hadReferenceInTitle = false;
904
+ var result = title;
905
+ var hadReferenceInTitle = false;
216
906
  if (result) {
217
- const refsInTitle = findTypeformTemplateRefsInString(result);
907
+ var refsInTitle = findTypeformTemplateRefsInString(result);
218
908
  if (refsInTitle.length > 0) {
219
909
  hadReferenceInTitle = true;
220
- refsInTitle.forEach((refInTitle) => {
221
- const { match, ref } = refInTitle;
222
- const fullMatch = match;
223
- const answer = answerValueFieldRefMap.get(ref);
224
- const answerValue = answer?.valueString;
225
- const replacedTitle = result.replaceAll(fullMatch, answerValue || '');
910
+ refsInTitle.forEach(function(refInTitle) {
911
+ var match = refInTitle.match, ref = refInTitle.ref;
912
+ var fullMatch = match;
913
+ var answer = answerValueFieldRefMap.get(ref);
914
+ var answerValue = answer === null || answer === void 0 ? void 0 : answer.valueString;
915
+ var replacedTitle = result.replaceAll(fullMatch, answerValue || '');
226
916
  result = replacedTitle;
227
917
  });
228
918
  }
229
919
  }
230
920
  return {
231
921
  questionTitle: result,
232
- hadReferenceInTitle
922
+ hadReferenceInTitle: hadReferenceInTitle
233
923
  };
234
924
  }
235
- const pairs = answerValuePairs.map((answerValue) => {
236
- const definitionField = questionFieldMap.get(answerValue.answer.field.id);
237
- const { questionTitle, hadReferenceInTitle } = expandQuestionTitle(definitionField?.title);
238
- const result = {
239
- ...answerValue,
240
- definitionField,
241
- questionTitle,
242
- hadReferenceInTitle
243
- };
925
+ var pairs = answerValuePairs.map(function(answerValue) {
926
+ var definitionField = questionFieldMap.get(answerValue.answer.field.id);
927
+ var _expandQuestionTitle = expandQuestionTitle(definitionField === null || definitionField === void 0 ? void 0 : definitionField.title), questionTitle = _expandQuestionTitle.questionTitle, hadReferenceInTitle = _expandQuestionTitle.hadReferenceInTitle;
928
+ var result = _object_spread_props(_object_spread({}, answerValue), {
929
+ definitionField: definitionField,
930
+ questionTitle: questionTitle,
931
+ hadReferenceInTitle: hadReferenceInTitle
932
+ });
244
933
  return result;
245
934
  });
246
935
  return {
247
- formResponse,
248
- pairs
936
+ formResponse: formResponse,
937
+ pairs: pairs
249
938
  };
250
939
  }
251
940
  /**
252
941
  * Creates a TypeformFormQuestionAnswerPair from a TypeformFormResponseAnswer.
253
- */
254
- function makeTypeformFormResponseAnswerValuePair(answer) {
255
- let value;
256
- let valueString;
257
- switch (answer.type) {
942
+ */ function makeTypeformFormResponseAnswerValuePair(answer) {
943
+ var value;
944
+ var valueString;
945
+ switch(answer.type){
258
946
  case 'number':
259
947
  value = answer.number;
260
948
  valueString = answer.number.toString();
@@ -300,70 +988,139 @@ function makeTypeformFormResponseAnswerValuePair(answer) {
300
988
  valueString = answer.file_url;
301
989
  break;
302
990
  }
303
- const result = {
304
- answer,
305
- value,
306
- valueString
991
+ var result = {
992
+ answer: answer,
993
+ value: value,
994
+ valueString: valueString
307
995
  };
308
996
  return result;
309
997
  }
310
998
 
999
+ function _class_call_check$2(instance, Constructor) {
1000
+ if (!(instance instanceof Constructor)) {
1001
+ throw new TypeError("Cannot call a class as a function");
1002
+ }
1003
+ }
1004
+ function _defineProperties(target, props) {
1005
+ for(var i = 0; i < props.length; i++){
1006
+ var descriptor = props[i];
1007
+ descriptor.enumerable = descriptor.enumerable || false;
1008
+ descriptor.configurable = true;
1009
+ if ("value" in descriptor) descriptor.writable = true;
1010
+ Object.defineProperty(target, descriptor.key, descriptor);
1011
+ }
1012
+ }
1013
+ function _create_class(Constructor, protoProps, staticProps) {
1014
+ if (staticProps) _defineProperties(Constructor, staticProps);
1015
+ return Constructor;
1016
+ }
1017
+ function _define_property$1(obj, key, value) {
1018
+ if (key in obj) {
1019
+ Object.defineProperty(obj, key, {
1020
+ value: value,
1021
+ enumerable: true,
1022
+ configurable: true,
1023
+ writable: true
1024
+ });
1025
+ } else {
1026
+ obj[key] = value;
1027
+ }
1028
+ return obj;
1029
+ }
311
1030
  /**
312
1031
  * Default environment variable for the Typeform API key.
313
- */
314
- const TYPEFORM_SECRET_TOKEN_ENV_VAR = 'TYPEFORM_SECRET_TOKEN';
315
- const TYPEFORM_BASE_URL_ENV_VAR = 'TYPEFORM_BASE_URL';
1032
+ */ var TYPEFORM_SECRET_TOKEN_ENV_VAR = 'TYPEFORM_SECRET_TOKEN';
1033
+ var TYPEFORM_BASE_URL_ENV_VAR = 'TYPEFORM_BASE_URL';
316
1034
  /**
317
1035
  * Configuration for TypeformService
318
- */
319
- class TypeformServiceConfig {
320
- typeform;
321
- static assertValidConfig(config) {
322
- if (!config.typeform.config.token) {
323
- throw new Error('No Typeform token specified.');
1036
+ */ var TypeformServiceConfig = /*#__PURE__*/ function() {
1037
+ function TypeformServiceConfig() {
1038
+ _class_call_check$2(this, TypeformServiceConfig);
1039
+ _define_property$1(this, "typeform", void 0);
1040
+ }
1041
+ _create_class(TypeformServiceConfig, null, [
1042
+ {
1043
+ key: "assertValidConfig",
1044
+ value: function assertValidConfig(config) {
1045
+ if (!config.typeform.config.token) {
1046
+ throw new Error('No Typeform token specified.');
1047
+ }
1048
+ }
324
1049
  }
1050
+ ]);
1051
+ return TypeformServiceConfig;
1052
+ }
1053
+ ();
1054
+
1055
+ function _class_call_check$1(instance, Constructor) {
1056
+ if (!(instance instanceof Constructor)) {
1057
+ throw new TypeError("Cannot call a class as a function");
325
1058
  }
326
1059
  }
327
-
328
- let TypeformApi = class TypeformApi {
329
- config;
330
- client;
331
- constructor(config) {
332
- this.config = config;
333
- this.client = createClient(config.typeform.config);
1060
+ function _define_property(obj, key, value) {
1061
+ if (key in obj) {
1062
+ Object.defineProperty(obj, key, {
1063
+ value: value,
1064
+ enumerable: true,
1065
+ configurable: true,
1066
+ writable: true
1067
+ });
1068
+ } else {
1069
+ obj[key] = value;
334
1070
  }
1071
+ return obj;
1072
+ }
1073
+ var TypeformApi = function TypeformApi(config) {
1074
+ _class_call_check$1(this, TypeformApi);
1075
+ _define_property(this, "config", void 0);
1076
+ _define_property(this, "client", void 0);
1077
+ this.config = config;
1078
+ this.client = createClient(config.typeform.config);
335
1079
  };
336
1080
  TypeformApi = __decorate([
337
1081
  Injectable(),
338
1082
  __param(0, Inject(TypeformServiceConfig))
339
1083
  ], TypeformApi);
340
1084
 
1085
+ function _class_call_check(instance, Constructor) {
1086
+ if (!(instance instanceof Constructor)) {
1087
+ throw new TypeError("Cannot call a class as a function");
1088
+ }
1089
+ }
341
1090
  function typeFormServiceConfigFactory(configService) {
342
- const config = {
1091
+ var _configService_get;
1092
+ var config = {
343
1093
  typeform: {
344
1094
  config: {
345
1095
  token: configService.get(TYPEFORM_SECRET_TOKEN_ENV_VAR),
346
- baseURL: configService.get(TYPEFORM_BASE_URL_ENV_VAR) ?? undefined
1096
+ baseURL: (_configService_get = configService.get(TYPEFORM_BASE_URL_ENV_VAR)) !== null && _configService_get !== void 0 ? _configService_get : undefined
347
1097
  }
348
1098
  }
349
1099
  };
350
1100
  TypeformServiceConfig.assertValidConfig(config);
351
1101
  return config;
352
1102
  }
353
- let TypeformModule = class TypeformModule {
1103
+ var TypeformModule = function TypeformModule() {
1104
+ _class_call_check(this, TypeformModule);
354
1105
  };
355
1106
  TypeformModule = __decorate([
356
1107
  Module({
357
- imports: [ConfigModule],
1108
+ imports: [
1109
+ ConfigModule
1110
+ ],
358
1111
  providers: [
359
1112
  {
360
1113
  provide: TypeformServiceConfig,
361
- inject: [ConfigService],
1114
+ inject: [
1115
+ ConfigService
1116
+ ],
362
1117
  useFactory: typeFormServiceConfigFactory
363
1118
  },
364
1119
  TypeformApi
365
1120
  ],
366
- exports: [TypeformApi]
1121
+ exports: [
1122
+ TypeformApi
1123
+ ]
367
1124
  })
368
1125
  ], TypeformModule);
369
1126