@dintero/checkout-web-sdk 0.2.0 → 0.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.
package/README.md CHANGED
@@ -73,8 +73,9 @@ _The checkout sdk will add a polyfill for promises if the browser does not suppo
73
73
  console.log("href", event.href);
74
74
  checkout.destroy();
75
75
  },
76
- onSessionLocked: function(event, checkout) {
76
+ onSessionLocked: function(event, checkout, callback) {
77
77
  console.log("pay_lock_id", event.pay_lock_id);
78
+ callback(); // refresh session
78
79
  },
79
80
  onSessionLockFailed: function(event, checkout) {
80
81
  console.log("session lock failed");
@@ -130,8 +131,9 @@ const checkout = await embed({
130
131
  console.log("href", event.href);
131
132
  checkout.destroy();
132
133
  },
133
- onSessionLocked: (event, checkout) => {
134
+ onSessionLocked: (event, checkout, callback) => {
134
135
  console.log("pay_lock_id", event.pay_lock_id);
136
+ callback(); // refresh session
135
137
  },
136
138
  onSessionLockFailed: (event, checkout) => {
137
139
  console.log("session lock failed");
@@ -196,6 +198,15 @@ After updating the session, call refreshSession on the checkout object:
196
198
  checkout.refreshSession();
197
199
  ```
198
200
 
201
+ or use the callback in `onSessionLocked`:
202
+
203
+ ```js
204
+ onSessionLocked: (event, checkout, callback) => {
205
+ console.log("pay_lock_id", event.pay_lock_id);
206
+ callback(); // refresh session
207
+ }
208
+ ```
209
+
199
210
  Editing and paying in the checkout is enabled again.
200
211
 
201
212
  ### Validating session before payment
@@ -156,7 +156,9 @@
156
156
  <a name='L97'></a><a href='#L97'>97</a>
157
157
  <a name='L98'></a><a href='#L98'>98</a>
158
158
  <a name='L99'></a><a href='#L99'>99</a>
159
- <a name='L100'></a><a href='#L100'>100</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
159
+ <a name='L100'></a><a href='#L100'>100</a>
160
+ <a name='L101'></a><a href='#L101'>101</a>
161
+ <a name='L102'></a><a href='#L102'>102</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
160
162
  <span class="cline-any cline-neutral">&nbsp;</span>
161
163
  <span class="cline-any cline-yes">1x</span>
162
164
  <span class="cline-any cline-yes">1x</span>
@@ -255,6 +257,8 @@
255
257
  <span class="cline-any cline-neutral">&nbsp;</span>
256
258
  <span class="cline-any cline-neutral">&nbsp;</span>
257
259
  <span class="cline-any cline-neutral">&nbsp;</span>
260
+ <span class="cline-any cline-neutral">&nbsp;</span>
261
+ <span class="cline-any cline-neutral">&nbsp;</span>
258
262
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { Session } from "./session";
259
263
  &nbsp;
260
264
  export enum CheckoutEvents {
@@ -311,6 +315,7 @@ export type SessionPaymentAuthorized = {
311
315
  export type SessionLocked = {
312
316
  type: CheckoutEvents.SessionLocked;
313
317
  pay_lock_id: string;
318
+ callback: () =&gt; void;
314
319
  };
315
320
  &nbsp;
316
321
  export type SessionLockFailed = {
@@ -333,6 +338,7 @@ export interface SessionValidationCallback {
333
338
  }
334
339
  &nbsp;
335
340
  export type WrappedValidateSession = Pick&lt;ValidateSession, "type" | "session"&gt;;
341
+ export type WrappedSessionLocked = Pick&lt;SessionLocked, "type" | "pay_lock_id"&gt;;
336
342
  &nbsp;
337
343
  export type SessionPayment = SessionPaymentAuthorized | SessionPaymentOnHold;
338
344
  &nbsp;
@@ -350,7 +356,7 @@ export type SessionEvent =
350
356
  | SessionPaymentOnHold
351
357
  | SessionPaymentAuthorized
352
358
  | SessionPaymentError
353
- | SessionLocked
359
+ | WrappedSessionLocked
354
360
  | SessionLockFailed
355
361
  | ActivePaymentProductType
356
362
  | WrappedValidateSession;
@@ -361,7 +367,7 @@ export type SessionEvent =
361
367
  <div class='footer quiet pad2 space-top1 center small'>
362
368
  Code coverage generated by
363
369
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
364
- at Mon Feb 14 2022 14:16:49 GMT+0000 (Coordinated Universal Time)
370
+ at Mon Feb 14 2022 17:02:51 GMT+0000 (Coordinated Universal Time)
365
371
  </div>
366
372
  </div>
367
373
  <script src="prettify.js"></script>
@@ -238,7 +238,7 @@ export const createIframeAsync = (
238
238
  <div class='footer quiet pad2 space-top1 center small'>
239
239
  Code coverage generated by
240
240
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
241
- at Mon Feb 14 2022 14:16:49 GMT+0000 (Coordinated Universal Time)
241
+ at Mon Feb 14 2022 17:02:51 GMT+0000 (Coordinated Universal Time)
242
242
  </div>
243
243
  </div>
244
244
  <script src="prettify.js"></script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">89.54% </span>
26
+ <span class="strong">89.74% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>137/153</span>
28
+ <span class='fraction'>140/156</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">74.36% </span>
33
+ <span class="strong">73.75% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>58/78</span>
35
+ <span class='fraction'>59/80</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">72.97% </span>
40
+ <span class="strong">73.68% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>27/37</span>
42
+ <span class='fraction'>28/38</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">88.72% </span>
47
+ <span class="strong">88.97% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>118/133</span>
49
+ <span class='fraction'>121/136</span>
50
50
  </div>
51
51
 
52
52
 
@@ -104,17 +104,17 @@
104
104
 
105
105
  <tr>
106
106
  <td class="file high" data-value="index.ts"><a href="index.ts.html">index.ts</a></td>
107
- <td data-value="94.2" class="pic high">
107
+ <td data-value="94.44" class="pic high">
108
108
  <div class="chart"><div class="cover-fill" style="width: 94%"></div><div class="cover-empty" style="width: 6%"></div></div>
109
109
  </td>
110
- <td data-value="94.2" class="pct high">94.2%</td>
111
- <td data-value="69" class="abs high">65/69</td>
112
- <td data-value="83.33" class="pct high">83.33%</td>
113
- <td data-value="36" class="abs high">30/36</td>
114
- <td data-value="78.95" class="pct medium">78.95%</td>
115
- <td data-value="19" class="abs medium">15/19</td>
116
- <td data-value="93.33" class="pct high">93.33%</td>
117
- <td data-value="60" class="abs high">56/60</td>
110
+ <td data-value="94.44" class="pct high">94.44%</td>
111
+ <td data-value="72" class="abs high">68/72</td>
112
+ <td data-value="81.58" class="pct high">81.58%</td>
113
+ <td data-value="38" class="abs high">31/38</td>
114
+ <td data-value="80" class="pct high">80%</td>
115
+ <td data-value="20" class="abs high">16/20</td>
116
+ <td data-value="93.65" class="pct high">93.65%</td>
117
+ <td data-value="63" class="abs high">59/63</td>
118
118
  </tr>
119
119
 
120
120
  <tr>
@@ -155,7 +155,7 @@
155
155
  <div class='footer quiet pad2 space-top1 center small'>
156
156
  Code coverage generated by
157
157
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
158
- at Mon Feb 14 2022 14:16:49 GMT+0000 (Coordinated Universal Time)
158
+ at Mon Feb 14 2022 17:02:51 GMT+0000 (Coordinated Universal Time)
159
159
  </div>
160
160
  </div>
161
161
  <script src="prettify.js"></script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">94.2% </span>
26
+ <span class="strong">94.44% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>65/69</span>
28
+ <span class='fraction'>68/72</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">83.33% </span>
33
+ <span class="strong">81.58% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>30/36</span>
35
+ <span class='fraction'>31/38</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">78.95% </span>
40
+ <span class="strong">80% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>15/19</span>
42
+ <span class='fraction'>16/20</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">93.33% </span>
47
+ <span class="strong">93.65% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>56/60</span>
49
+ <span class='fraction'>59/63</span>
50
50
  </div>
51
51
 
52
52
 
@@ -398,7 +398,17 @@
398
398
  <a name='L339'></a><a href='#L339'>339</a>
399
399
  <a name='L340'></a><a href='#L340'>340</a>
400
400
  <a name='L341'></a><a href='#L341'>341</a>
401
- <a name='L342'></a><a href='#L342'>342</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
401
+ <a name='L342'></a><a href='#L342'>342</a>
402
+ <a name='L343'></a><a href='#L343'>343</a>
403
+ <a name='L344'></a><a href='#L344'>344</a>
404
+ <a name='L345'></a><a href='#L345'>345</a>
405
+ <a name='L346'></a><a href='#L346'>346</a>
406
+ <a name='L347'></a><a href='#L347'>347</a>
407
+ <a name='L348'></a><a href='#L348'>348</a>
408
+ <a name='L349'></a><a href='#L349'>349</a>
409
+ <a name='L350'></a><a href='#L350'>350</a>
410
+ <a name='L351'></a><a href='#L351'>351</a>
411
+ <a name='L352'></a><a href='#L352'>352</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
402
412
  <span class="cline-any cline-neutral">&nbsp;</span>
403
413
  <span class="cline-any cline-yes">1x</span>
404
414
  <span class="cline-any cline-yes">1x</span>
@@ -499,6 +509,7 @@
499
509
  <span class="cline-any cline-neutral">&nbsp;</span>
500
510
  <span class="cline-any cline-neutral">&nbsp;</span>
501
511
  <span class="cline-any cline-neutral">&nbsp;</span>
512
+ <span class="cline-any cline-neutral">&nbsp;</span>
502
513
  <span class="cline-any cline-yes">1x</span>
503
514
  <span class="cline-any cline-yes">3x</span>
504
515
  <span class="cline-any cline-yes">3x</span>
@@ -594,7 +605,7 @@
594
605
  <span class="cline-any cline-neutral">&nbsp;</span>
595
606
  <span class="cline-any cline-yes">26x</span>
596
607
  <span class="cline-any cline-yes">3x</span>
597
- <span class="cline-any cline-yes">21x</span>
608
+ <span class="cline-any cline-yes">24x</span>
598
609
  <span class="cline-any cline-yes">3x</span>
599
610
  <span class="cline-any cline-yes">2x</span>
600
611
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -626,6 +637,15 @@
626
637
  <span class="cline-any cline-neutral">&nbsp;</span>
627
638
  <span class="cline-any cline-neutral">&nbsp;</span>
628
639
  <span class="cline-any cline-neutral">&nbsp;</span>
640
+ <span class="cline-any cline-yes">26x</span>
641
+ <span class="cline-any cline-neutral">&nbsp;</span>
642
+ <span class="cline-any cline-neutral">&nbsp;</span>
643
+ <span class="cline-any cline-neutral">&nbsp;</span>
644
+ <span class="cline-any cline-yes">1x</span>
645
+ <span class="cline-any cline-yes">1x</span>
646
+ <span class="cline-any cline-neutral">&nbsp;</span>
647
+ <span class="cline-any cline-neutral">&nbsp;</span>
648
+ <span class="cline-any cline-neutral">&nbsp;</span>
629
649
  <span class="cline-any cline-neutral">&nbsp;</span>
630
650
  <span class="cline-any cline-yes">26x</span>
631
651
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -709,7 +729,7 @@
709
729
  <span class="cline-any cline-neutral">&nbsp;</span>
710
730
  <span class="cline-any cline-yes">338x</span>
711
731
  <span class="cline-any cline-yes">338x</span>
712
- <span class="cline-any cline-yes">194x</span>
732
+ <span class="cline-any cline-yes">219x</span>
713
733
  <span class="cline-any cline-neutral">&nbsp;</span>
714
734
  <span class="cline-any cline-neutral">&nbsp;</span>
715
735
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -820,7 +840,8 @@ export interface DinteroEmbedCheckoutOptions extends DinteroCheckoutOptions {
820
840
  ) =&gt; void;
821
841
  onSessionLocked?: (
822
842
  event: SessionLocked,
823
- checkout: DinteroCheckoutInstance
843
+ checkout: DinteroCheckoutInstance,
844
+ callback: () =&gt; void,
824
845
  ) =&gt; void;
825
846
  onSessionLockFailed?: (
826
847
  event: SessionLockFailed,
@@ -966,6 +987,15 @@ export const embed = async (
966
987
  onValidateSession(event, checkout, submitValidationResult);
967
988
  }
968
989
  }
990
+ &nbsp;
991
+ const wrappedOnSessionLocked = (
992
+ event: SessionLocked,
993
+ checkout: DinteroCheckoutInstance,
994
+ ) =&gt; {
995
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (onSessionLocked) {
996
+ onSessionLocked(event, checkout, refreshSession);
997
+ }
998
+ }
969
999
  &nbsp;
970
1000
  // Create checkout object that wraps the destroy function.
971
1001
  const checkout: DinteroCheckoutInstance = {
@@ -1029,7 +1059,7 @@ export const embed = async (
1029
1059
  eventTypes: [CheckoutEvents.SessionNotFound],
1030
1060
  },
1031
1061
  {
1032
- handler: onSessionLocked as SubscriptionHandler | undefined,
1062
+ handler: wrappedOnSessionLocked as SubscriptionHandler | undefined,
1033
1063
  eventTypes: [CheckoutEvents.SessionLocked],
1034
1064
  },
1035
1065
  {
@@ -1087,7 +1117,7 @@ export const redirect = (options: DinteroCheckoutOptions) =&gt; {
1087
1117
  <div class='footer quiet pad2 space-top1 center small'>
1088
1118
  Code coverage generated by
1089
1119
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
1090
- at Mon Feb 14 2022 14:16:49 GMT+0000 (Coordinated Universal Time)
1120
+ at Mon Feb 14 2022 17:02:51 GMT+0000 (Coordinated Universal Time)
1091
1121
  </div>
1092
1122
  </div>
1093
1123
  <script src="prettify.js"></script>
@@ -265,17 +265,17 @@
265
265
  <span class="cline-any cline-neutral">&nbsp;</span>
266
266
  <span class="cline-any cline-neutral">&nbsp;</span>
267
267
  <span class="cline-any cline-yes">1x</span>
268
- <span class="cline-any cline-yes">970x</span>
268
+ <span class="cline-any cline-yes">1095x</span>
269
269
  <span class="cline-any cline-neutral">&nbsp;</span>
270
270
  <span class="cline-any cline-neutral">&nbsp;</span>
271
271
  <span class="cline-any cline-neutral">&nbsp;</span>
272
- <span class="cline-any cline-yes">194x</span>
273
- <span class="cline-any cline-yes">2447x</span>
274
- <span class="cline-any cline-yes">2447x</span>
275
- <span class="cline-any cline-yes">2447x</span>
272
+ <span class="cline-any cline-yes">219x</span>
273
+ <span class="cline-any cline-yes">2753x</span>
274
+ <span class="cline-any cline-yes">2753x</span>
275
+ <span class="cline-any cline-yes">2753x</span>
276
276
  <span class="cline-any cline-neutral">&nbsp;</span>
277
- <span class="cline-any cline-yes">2447x</span>
278
- <span class="cline-any cline-yes">2447x</span>
277
+ <span class="cline-any cline-yes">2753x</span>
278
+ <span class="cline-any cline-yes">2753x</span>
279
279
  <span class="cline-any cline-neutral">&nbsp;</span>
280
280
  <span class="cline-any cline-neutral">&nbsp;</span>
281
281
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -287,15 +287,15 @@
287
287
  <span class="cline-any cline-neutral">&nbsp;</span>
288
288
  <span class="cline-any cline-neutral">&nbsp;</span>
289
289
  <span class="cline-any cline-neutral">&nbsp;</span>
290
- <span class="cline-any cline-yes">194x</span>
290
+ <span class="cline-any cline-yes">219x</span>
291
291
  <span class="cline-any cline-neutral">&nbsp;</span>
292
292
  <span class="cline-any cline-neutral">&nbsp;</span>
293
- <span class="cline-any cline-yes">194x</span>
294
- <span class="cline-any cline-yes">21x</span>
293
+ <span class="cline-any cline-yes">219x</span>
294
+ <span class="cline-any cline-yes">24x</span>
295
295
  <span class="cline-any cline-neutral">&nbsp;</span>
296
296
  <span class="cline-any cline-neutral">&nbsp;</span>
297
297
  <span class="cline-any cline-neutral">&nbsp;</span>
298
- <span class="cline-any cline-yes">194x</span>
298
+ <span class="cline-any cline-yes">219x</span>
299
299
  <span class="cline-any cline-neutral">&nbsp;</span>
300
300
  <span class="cline-any cline-neutral">&nbsp;</span>
301
301
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -427,7 +427,7 @@ export const subscribe = (options: SubscriptionOptions): Subscription =&gt; {
427
427
  <div class='footer quiet pad2 space-top1 center small'>
428
428
  Code coverage generated by
429
429
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
430
- at Mon Feb 14 2022 14:16:49 GMT+0000 (Coordinated Universal Time)
430
+ at Mon Feb 14 2022 17:02:51 GMT+0000 (Coordinated Universal Time)
431
431
  </div>
432
432
  </div>
433
433
  <script src="prettify.js"></script>
@@ -169,7 +169,7 @@ export const getSessionUrl = (options: SessionUrlOptions): string =&gt; {
169
169
  <div class='footer quiet pad2 space-top1 center small'>
170
170
  Code coverage generated by
171
171
  <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
172
- at Mon Feb 14 2022 14:16:49 GMT+0000 (Coordinated Universal Time)
172
+ at Mon Feb 14 2022 17:02:51 GMT+0000 (Coordinated Universal Time)
173
173
  </div>
174
174
  </div>
175
175
  <script src="prettify.js"></script>
@@ -46,6 +46,7 @@ export declare type SessionPaymentAuthorized = {
46
46
  export declare type SessionLocked = {
47
47
  type: CheckoutEvents.SessionLocked;
48
48
  pay_lock_id: string;
49
+ callback: () => void;
49
50
  };
50
51
  export declare type SessionLockFailed = {
51
52
  type: CheckoutEvents.SessionLockFailed;
@@ -64,10 +65,11 @@ export interface SessionValidationCallback {
64
65
  clientValidationError?: string;
65
66
  }
66
67
  export declare type WrappedValidateSession = Pick<ValidateSession, "type" | "session">;
68
+ export declare type WrappedSessionLocked = Pick<SessionLocked, "type" | "pay_lock_id">;
67
69
  export declare type SessionPayment = SessionPaymentAuthorized | SessionPaymentOnHold;
68
70
  export declare type SessionPaymentError = {
69
71
  type: CheckoutEvents.SessionPaymentError;
70
72
  error: string;
71
73
  href: string;
72
74
  };
73
- export declare type SessionEvent = SessionNotFound | SessionLoaded | SessionUpdated | SessionCancel | SessionPaymentOnHold | SessionPaymentAuthorized | SessionPaymentError | SessionLocked | SessionLockFailed | ActivePaymentProductType | WrappedValidateSession;
75
+ export declare type SessionEvent = SessionNotFound | SessionLoaded | SessionUpdated | SessionCancel | SessionPaymentOnHold | SessionPaymentAuthorized | SessionPaymentError | WrappedSessionLocked | SessionLockFailed | ActivePaymentProductType | WrappedValidateSession;
@@ -28,7 +28,7 @@ export interface DinteroEmbedCheckoutOptions extends DinteroCheckoutOptions {
28
28
  onPaymentError?: (event: SessionPaymentError, checkout: DinteroCheckoutInstance) => void;
29
29
  onSessionCancel?: (event: SessionCancel, checkout: DinteroCheckoutInstance) => void;
30
30
  onSessionNotFound?: (event: SessionNotFound, checkout: DinteroCheckoutInstance) => void;
31
- onSessionLocked?: (event: SessionLocked, checkout: DinteroCheckoutInstance) => void;
31
+ onSessionLocked?: (event: SessionLocked, checkout: DinteroCheckoutInstance, callback: () => void) => void;
32
32
  onSessionLockFailed?: (event: SessionLockFailed, checkout: DinteroCheckoutInstance) => void;
33
33
  onActivePaymentType?: (event: ActivePaymentProductType, checkout: DinteroCheckoutInstance) => void;
34
34
  onValidateSession?: (event: ValidateSession, checkout: DinteroCheckoutInstance, callback: (result: SessionValidationCallback) => void) => void;
@@ -375,6 +375,12 @@ const embed = async options => {
375
375
  if (onValidateSession) {
376
376
  onValidateSession(event, checkout, submitValidationResult);
377
377
  }
378
+ };
379
+
380
+ const wrappedOnSessionLocked = (event, checkout) => {
381
+ if (onSessionLocked) {
382
+ onSessionLocked(event, checkout, refreshSession);
383
+ }
378
384
  }; // Create checkout object that wraps the destroy function.
379
385
 
380
386
 
@@ -413,7 +419,7 @@ const embed = async options => {
413
419
  handler: onSessionNotFound,
414
420
  eventTypes: [CheckoutEvents.SessionNotFound]
415
421
  }, {
416
- handler: onSessionLocked,
422
+ handler: wrappedOnSessionLocked,
417
423
  eventTypes: [CheckoutEvents.SessionLocked]
418
424
  }, {
419
425
  handler: onSessionLockFailed,
@@ -375,6 +375,12 @@ const embed = async options => {
375
375
  if (onValidateSession) {
376
376
  onValidateSession(event, checkout, submitValidationResult);
377
377
  }
378
+ };
379
+
380
+ const wrappedOnSessionLocked = (event, checkout) => {
381
+ if (onSessionLocked) {
382
+ onSessionLocked(event, checkout, refreshSession);
383
+ }
378
384
  }; // Create checkout object that wraps the destroy function.
379
385
 
380
386
 
@@ -413,7 +419,7 @@ const embed = async options => {
413
419
  handler: onSessionNotFound,
414
420
  eventTypes: [CheckoutEvents.SessionNotFound]
415
421
  }, {
416
- handler: onSessionLocked,
422
+ handler: wrappedOnSessionLocked,
417
423
  eventTypes: [CheckoutEvents.SessionLocked]
418
424
  }, {
419
425
  handler: onSessionLockFailed,
@@ -371,6 +371,12 @@ const embed = async options => {
371
371
  if (onValidateSession) {
372
372
  onValidateSession(event, checkout, submitValidationResult);
373
373
  }
374
+ };
375
+
376
+ const wrappedOnSessionLocked = (event, checkout) => {
377
+ if (onSessionLocked) {
378
+ onSessionLocked(event, checkout, refreshSession);
379
+ }
374
380
  }; // Create checkout object that wraps the destroy function.
375
381
 
376
382
 
@@ -409,7 +415,7 @@ const embed = async options => {
409
415
  handler: onSessionNotFound,
410
416
  eventTypes: [CheckoutEvents.SessionNotFound]
411
417
  }, {
412
- handler: onSessionLocked,
418
+ handler: wrappedOnSessionLocked,
413
419
  eventTypes: [CheckoutEvents.SessionLocked]
414
420
  }, {
415
421
  handler: onSessionLockFailed,
@@ -3,5 +3,5 @@
3
3
  v0.8.1 (c) Kyle Simpson
4
4
  MIT License: http://getify.mit-license.org
5
5
  */
6
- var t,o,i;i=function(){var e,n,t,o=Object.prototype.toString,i="undefined"!=typeof setImmediate?function(e){return setImmediate(e)}:setTimeout;try{Object.defineProperty({},"x",{}),e=function(e,n,t,o){return Object.defineProperty(e,n,{value:t,writable:!0,configurable:!1!==o})}}catch(n){e=function(e,n,t){return e[n]=t,e}}function r(e,o){t.add(e,o),n||(n=i(t.drain))}function s(e){var n,t=typeof e;return null==e||"object"!=t&&"function"!=t||(n=e.then),"function"==typeof n&&n}function a(){for(var e=0;e<this.chain.length;e++)c(this,1===this.state?this.chain[e].success:this.chain[e].failure,this.chain[e]);this.chain.length=0}function c(e,n,t){var o,i;try{!1===n?t.reject(e.msg):(o=!0===n?e.msg:n.call(void 0,e.msg))===t.promise?t.reject(TypeError("Promise-chain cycle")):(i=s(o))?i.call(o,t.resolve,t.reject):t.resolve(o)}catch(e){t.reject(e)}}function d(e){var n,t=this;if(!t.triggered){t.triggered=!0,t.def&&(t=t.def);try{(n=s(e))?r((function(){var o=new f(t);try{n.call(e,(function(){d.apply(o,arguments)}),(function(){u.apply(o,arguments)}))}catch(e){u.call(o,e)}})):(t.msg=e,t.state=1,t.chain.length>0&&r(a,t))}catch(e){u.call(new f(t),e)}}}function u(e){var n=this;n.triggered||(n.triggered=!0,n.def&&(n=n.def),n.msg=e,n.state=2,n.chain.length>0&&r(a,n))}function l(e,n,t,o){for(var i=0;i<n.length;i++)!function(i){e.resolve(n[i]).then((function(e){t(i,e)}),o)}(i)}function f(e){this.def=e,this.triggered=!1}function h(e){this.promise=e,this.state=0,this.triggered=!1,this.chain=[],this.msg=void 0}function p(e){if("function"!=typeof e)throw TypeError("Not a function");if(0!==this.__NPO__)throw TypeError("Not a promise");this.__NPO__=1;var n=new h(this);this.then=function(e,t){var o={success:"function"!=typeof e||e,failure:"function"==typeof t&&t};return o.promise=new this.constructor((function(e,n){if("function"!=typeof e||"function"!=typeof n)throw TypeError("Not a function");o.resolve=e,o.reject=n})),n.chain.push(o),0!==n.state&&r(a,n),o.promise},this.catch=function(e){return this.then(void 0,e)};try{e.call(void 0,(function(e){d.call(n,e)}),(function(e){u.call(n,e)}))}catch(e){u.call(n,e)}}t=function(){var e,t,o;function i(e,n){this.fn=e,this.self=n,this.next=void 0}return{add:function(n,r){o=new i(n,r),t?t.next=o:e=o,t=o,o=void 0},drain:function(){var o=e;for(e=t=n=void 0;o;)o.fn.call(o.self),o=o.next}}}();var y=e({},"constructor",p,!1);return p.prototype=y,e(y,"__NPO__",0,!1),e(p,"resolve",(function(e){return e&&"object"==typeof e&&1===e.__NPO__?e:new this((function(n,t){if("function"!=typeof n||"function"!=typeof t)throw TypeError("Not a function");n(e)}))})),e(p,"reject",(function(e){return new this((function(n,t){if("function"!=typeof n||"function"!=typeof t)throw TypeError("Not a function");t(e)}))})),e(p,"all",(function(e){var n=this;return"[object Array]"!=o.call(e)?n.reject(TypeError("Not an array")):0===e.length?n.resolve([]):new n((function(t,o){if("function"!=typeof t||"function"!=typeof o)throw TypeError("Not a function");var i=e.length,r=Array(i),s=0;l(n,e,(function(e,n){r[e]=n,++s===i&&t(r)}),o)}))})),e(p,"race",(function(e){var n=this;return"[object Array]"!=o.call(e)?n.reject(TypeError("Not an array")):new n((function(t,o){if("function"!=typeof t||"function"!=typeof o)throw TypeError("Not a function");l(n,e,(function(e,n){t(n)}),o)}))})),p},(o=n)[t="Promise"]=o[t]||i(),e.exports&&(e.exports=o[t])}));var t="0.0.0-development";let o,i;!function(e){e.SessionNotFound="SessionNotFound",e.SessionLoaded="SessionLoaded",e.SessionUpdated="SessionUpdated",e.SessionCancel="SessionCancel",e.SessionPaymentOnHold="SessionPaymentOnHold",e.SessionPaymentAuthorized="SessionPaymentAuthorized",e.SessionPaymentError="SessionPaymentError",e.SessionLocked="SessionLocked",e.SessionLockFailed="SessionLockFailed",e.ActivePaymentProductType="ActivePaymentProductType",e.ValidateSession="ValidateSession"}(o||(o={})),function(e){e.HeightChanged="HeightChanged",e.LanguageChanged="LanguageChanged"}(i||(i={}));const r=e=>{window.location.assign(e)},s=e=>{const{sid:n,endpoint:o,language:i,ui:r,shouldCallValidateSession:s}=e;if(!o)throw new Error("Invalid endpoint");const a=[i?`language=${i}`:"",r?`ui=${r}`:"",`sdk=${t}`,s?"client_side_validation=true":void 0].filter((e=>e)).join("&");return`${o}/v1/view/${n}${a?"?"+a:""}`},a=e=>{e.href&&r(e.href)},c=(e,n)=>{(e.height||0===e.height)&&n.iframe.setAttribute("style",`width:100%; height:${e.height}px;`)},d=(e,n)=>{e.language&&(n.language=e.language)},u=(e,n,i)=>(e,r)=>{const s=["sid","merchant_reference","transaction_id","error"].map((n=>[n,e[n]]));e.type!==o.SessionCancel||e.error||s.push(["error","cancelled"]),s.push(["language",r.language]),s.push(["sdk",t]);const a=s.filter((([e,n])=>n)).map((([e,n])=>`${e}=${n}`)).join("&");r.iframe.setAttribute("src",`${n}/embedResult/?${a}`),i(e,r)};e.embed=async e=>{const{container:n,sid:t,language:r,endpoint:l="https://checkout.dintero.com",onSession:f,onSessionCancel:h,onPayment:p,onPaymentAuthorized:y,onPaymentError:g,onSessionNotFound:m,onSessionLocked:v,onSessionLockFailed:w,onActivePaymentType:S,onValidateSession:T}=e,b=[],{iframe:P,initiate:_}=((e,n,t)=>{if(!e||!e.appendChild)throw new Error("Invalid container");const o=document.createElement("iframe");return o.setAttribute("frameborder","0"),o.setAttribute("allowTransparency","true"),o.setAttribute("style","width:100%; height:0;"),o.setAttribute("sandbox","allow-scripts allow-forms allow-same-origin allow-popups"),o.setAttribute("importance","high"),o.setAttribute("src",t),{iframe:o,initiate:async()=>new Promise(((n,t)=>{o.onload=()=>n(),o.onerror=()=>t(),e.appendChild(o)}))}})(n,0,s({sid:t,endpoint:l,language:r,ui:"inline",shouldCallValidateSession:void 0!==T})),E=e=>{((e,n,t)=>{e.contentWindow&&e.contentWindow.postMessage({type:"ValidationResult",sid:n,...t},"*")})(P,t,e)},A={destroy:()=>{P&&(b.forEach((e=>e.unsubscribe())),P.parentElement&&n.removeChild(P))},iframe:P,language:r,lockSession:()=>{((e,n)=>{e.contentWindow&&e.contentWindow.postMessage({type:"LockSession",sid:n},"*")})(P,t)},refreshSession:()=>{((e,n)=>{e.contentWindow&&e.contentWindow.postMessage({type:"RefreshSession",sid:n},"*")})(P,t)},setActivePaymentProductType:e=>{((e,n,t)=>{e.contentWindow&&e.contentWindow.postMessage({type:"SetActivePaymentProductType",sid:n,payment_product_type:t},"*")})(P,t,e)},submitValidationResult:E};return[{handler:d,eventTypes:[i.LanguageChanged]},{handler:c,eventTypes:[i.HeightChanged]},{handler:f,eventTypes:[o.SessionLoaded,o.SessionUpdated]},{eventTypes:[o.SessionPaymentOnHold],handler:p?u(0,l,p):a},{eventTypes:[o.SessionPaymentAuthorized],handler:y||p?u(0,l,y||p):a},{handler:h?u(0,l,h):a,eventTypes:[o.SessionCancel]},{handler:g?u(0,l,g):a,eventTypes:[o.SessionPaymentError]},{handler:m,eventTypes:[o.SessionNotFound]},{handler:v,eventTypes:[o.SessionLocked]},{handler:w,eventTypes:[o.SessionLockFailed]},{handler:S,eventTypes:[o.ActivePaymentProductType]},{handler:S,eventTypes:[o.ActivePaymentProductType]},{handler:(e,n)=>{T&&T(e,n,E)},eventTypes:[o.ValidateSession]}].forEach((({handler:e,eventTypes:n})=>{e&&b.push((e=>{const{sid:n,endpoint:t,handler:o,eventTypes:i,checkout:r}=e,s=e=>{const s=e.origin===t,a=e.source===r.iframe.contentWindow,c=e.data&&e.data.sid===n,d=-1!==i.indexOf(e.data&&e.data.type);s&&a&&c&&d&&(((e,n)=>{n.data.mid&&e.contentWindow&&e.contentWindow.postMessage({ack:n.data.mid},n.origin||"*")})(r.iframe,e),o(e.data,r))};return window.addEventListener("message",s,!1),{unsubscribe:()=>{window.removeEventListener("message",s,!1)}}})({sid:t,endpoint:l,handler:e,eventTypes:n,checkout:A}))})),await _(),A},e.redirect=e=>{const{sid:n,language:t,endpoint:o="https://checkout.dintero.com"}=e;r(s({sid:n,endpoint:o,language:t,shouldCallValidateSession:!1}))},Object.defineProperty(e,"__esModule",{value:!0})}));
6
+ var t,o,i;i=function(){var e,n,t,o=Object.prototype.toString,i="undefined"!=typeof setImmediate?function(e){return setImmediate(e)}:setTimeout;try{Object.defineProperty({},"x",{}),e=function(e,n,t,o){return Object.defineProperty(e,n,{value:t,writable:!0,configurable:!1!==o})}}catch(n){e=function(e,n,t){return e[n]=t,e}}function r(e,o){t.add(e,o),n||(n=i(t.drain))}function s(e){var n,t=typeof e;return null==e||"object"!=t&&"function"!=t||(n=e.then),"function"==typeof n&&n}function a(){for(var e=0;e<this.chain.length;e++)c(this,1===this.state?this.chain[e].success:this.chain[e].failure,this.chain[e]);this.chain.length=0}function c(e,n,t){var o,i;try{!1===n?t.reject(e.msg):(o=!0===n?e.msg:n.call(void 0,e.msg))===t.promise?t.reject(TypeError("Promise-chain cycle")):(i=s(o))?i.call(o,t.resolve,t.reject):t.resolve(o)}catch(e){t.reject(e)}}function d(e){var n,t=this;if(!t.triggered){t.triggered=!0,t.def&&(t=t.def);try{(n=s(e))?r((function(){var o=new f(t);try{n.call(e,(function(){d.apply(o,arguments)}),(function(){u.apply(o,arguments)}))}catch(e){u.call(o,e)}})):(t.msg=e,t.state=1,t.chain.length>0&&r(a,t))}catch(e){u.call(new f(t),e)}}}function u(e){var n=this;n.triggered||(n.triggered=!0,n.def&&(n=n.def),n.msg=e,n.state=2,n.chain.length>0&&r(a,n))}function l(e,n,t,o){for(var i=0;i<n.length;i++)!function(i){e.resolve(n[i]).then((function(e){t(i,e)}),o)}(i)}function f(e){this.def=e,this.triggered=!1}function h(e){this.promise=e,this.state=0,this.triggered=!1,this.chain=[],this.msg=void 0}function p(e){if("function"!=typeof e)throw TypeError("Not a function");if(0!==this.__NPO__)throw TypeError("Not a promise");this.__NPO__=1;var n=new h(this);this.then=function(e,t){var o={success:"function"!=typeof e||e,failure:"function"==typeof t&&t};return o.promise=new this.constructor((function(e,n){if("function"!=typeof e||"function"!=typeof n)throw TypeError("Not a function");o.resolve=e,o.reject=n})),n.chain.push(o),0!==n.state&&r(a,n),o.promise},this.catch=function(e){return this.then(void 0,e)};try{e.call(void 0,(function(e){d.call(n,e)}),(function(e){u.call(n,e)}))}catch(e){u.call(n,e)}}t=function(){var e,t,o;function i(e,n){this.fn=e,this.self=n,this.next=void 0}return{add:function(n,r){o=new i(n,r),t?t.next=o:e=o,t=o,o=void 0},drain:function(){var o=e;for(e=t=n=void 0;o;)o.fn.call(o.self),o=o.next}}}();var y=e({},"constructor",p,!1);return p.prototype=y,e(y,"__NPO__",0,!1),e(p,"resolve",(function(e){return e&&"object"==typeof e&&1===e.__NPO__?e:new this((function(n,t){if("function"!=typeof n||"function"!=typeof t)throw TypeError("Not a function");n(e)}))})),e(p,"reject",(function(e){return new this((function(n,t){if("function"!=typeof n||"function"!=typeof t)throw TypeError("Not a function");t(e)}))})),e(p,"all",(function(e){var n=this;return"[object Array]"!=o.call(e)?n.reject(TypeError("Not an array")):0===e.length?n.resolve([]):new n((function(t,o){if("function"!=typeof t||"function"!=typeof o)throw TypeError("Not a function");var i=e.length,r=Array(i),s=0;l(n,e,(function(e,n){r[e]=n,++s===i&&t(r)}),o)}))})),e(p,"race",(function(e){var n=this;return"[object Array]"!=o.call(e)?n.reject(TypeError("Not an array")):new n((function(t,o){if("function"!=typeof t||"function"!=typeof o)throw TypeError("Not a function");l(n,e,(function(e,n){t(n)}),o)}))})),p},(o=n)[t="Promise"]=o[t]||i(),e.exports&&(e.exports=o[t])}));var t="0.0.0-development";let o,i;!function(e){e.SessionNotFound="SessionNotFound",e.SessionLoaded="SessionLoaded",e.SessionUpdated="SessionUpdated",e.SessionCancel="SessionCancel",e.SessionPaymentOnHold="SessionPaymentOnHold",e.SessionPaymentAuthorized="SessionPaymentAuthorized",e.SessionPaymentError="SessionPaymentError",e.SessionLocked="SessionLocked",e.SessionLockFailed="SessionLockFailed",e.ActivePaymentProductType="ActivePaymentProductType",e.ValidateSession="ValidateSession"}(o||(o={})),function(e){e.HeightChanged="HeightChanged",e.LanguageChanged="LanguageChanged"}(i||(i={}));const r=e=>{window.location.assign(e)},s=e=>{const{sid:n,endpoint:o,language:i,ui:r,shouldCallValidateSession:s}=e;if(!o)throw new Error("Invalid endpoint");const a=[i?`language=${i}`:"",r?`ui=${r}`:"",`sdk=${t}`,s?"client_side_validation=true":void 0].filter((e=>e)).join("&");return`${o}/v1/view/${n}${a?"?"+a:""}`},a=e=>{e.href&&r(e.href)},c=(e,n)=>{(e.height||0===e.height)&&n.iframe.setAttribute("style",`width:100%; height:${e.height}px;`)},d=(e,n)=>{e.language&&(n.language=e.language)},u=(e,n,i)=>(e,r)=>{const s=["sid","merchant_reference","transaction_id","error"].map((n=>[n,e[n]]));e.type!==o.SessionCancel||e.error||s.push(["error","cancelled"]),s.push(["language",r.language]),s.push(["sdk",t]);const a=s.filter((([e,n])=>n)).map((([e,n])=>`${e}=${n}`)).join("&");r.iframe.setAttribute("src",`${n}/embedResult/?${a}`),i(e,r)};e.embed=async e=>{const{container:n,sid:t,language:r,endpoint:l="https://checkout.dintero.com",onSession:f,onSessionCancel:h,onPayment:p,onPaymentAuthorized:y,onPaymentError:g,onSessionNotFound:m,onSessionLocked:v,onSessionLockFailed:w,onActivePaymentType:S,onValidateSession:T}=e,b=[],{iframe:P,initiate:_}=((e,n,t)=>{if(!e||!e.appendChild)throw new Error("Invalid container");const o=document.createElement("iframe");return o.setAttribute("frameborder","0"),o.setAttribute("allowTransparency","true"),o.setAttribute("style","width:100%; height:0;"),o.setAttribute("sandbox","allow-scripts allow-forms allow-same-origin allow-popups"),o.setAttribute("importance","high"),o.setAttribute("src",t),{iframe:o,initiate:async()=>new Promise(((n,t)=>{o.onload=()=>n(),o.onerror=()=>t(),e.appendChild(o)}))}})(n,0,s({sid:t,endpoint:l,language:r,ui:"inline",shouldCallValidateSession:void 0!==T})),E=()=>{((e,n)=>{e.contentWindow&&e.contentWindow.postMessage({type:"RefreshSession",sid:n},"*")})(P,t)},A=e=>{((e,n,t)=>{e.contentWindow&&e.contentWindow.postMessage({type:"ValidationResult",sid:n,...t},"*")})(P,t,e)},j={destroy:()=>{P&&(b.forEach((e=>e.unsubscribe())),P.parentElement&&n.removeChild(P))},iframe:P,language:r,lockSession:()=>{((e,n)=>{e.contentWindow&&e.contentWindow.postMessage({type:"LockSession",sid:n},"*")})(P,t)},refreshSession:E,setActivePaymentProductType:e=>{((e,n,t)=>{e.contentWindow&&e.contentWindow.postMessage({type:"SetActivePaymentProductType",sid:n,payment_product_type:t},"*")})(P,t,e)},submitValidationResult:A};return[{handler:d,eventTypes:[i.LanguageChanged]},{handler:c,eventTypes:[i.HeightChanged]},{handler:f,eventTypes:[o.SessionLoaded,o.SessionUpdated]},{eventTypes:[o.SessionPaymentOnHold],handler:p?u(0,l,p):a},{eventTypes:[o.SessionPaymentAuthorized],handler:y||p?u(0,l,y||p):a},{handler:h?u(0,l,h):a,eventTypes:[o.SessionCancel]},{handler:g?u(0,l,g):a,eventTypes:[o.SessionPaymentError]},{handler:m,eventTypes:[o.SessionNotFound]},{handler:(e,n)=>{v&&v(e,n,E)},eventTypes:[o.SessionLocked]},{handler:w,eventTypes:[o.SessionLockFailed]},{handler:S,eventTypes:[o.ActivePaymentProductType]},{handler:S,eventTypes:[o.ActivePaymentProductType]},{handler:(e,n)=>{T&&T(e,n,A)},eventTypes:[o.ValidateSession]}].forEach((({handler:e,eventTypes:n})=>{e&&b.push((e=>{const{sid:n,endpoint:t,handler:o,eventTypes:i,checkout:r}=e,s=e=>{const s=e.origin===t,a=e.source===r.iframe.contentWindow,c=e.data&&e.data.sid===n,d=-1!==i.indexOf(e.data&&e.data.type);s&&a&&c&&d&&(((e,n)=>{n.data.mid&&e.contentWindow&&e.contentWindow.postMessage({ack:n.data.mid},n.origin||"*")})(r.iframe,e),o(e.data,r))};return window.addEventListener("message",s,!1),{unsubscribe:()=>{window.removeEventListener("message",s,!1)}}})({sid:t,endpoint:l,handler:e,eventTypes:n,checkout:j}))})),await _(),j},e.redirect=e=>{const{sid:n,language:t,endpoint:o="https://checkout.dintero.com"}=e;r(s({sid:n,endpoint:o,language:t,shouldCallValidateSession:!1}))},Object.defineProperty(e,"__esModule",{value:!0})}));
7
7
  //# sourceMappingURL=dintero-checkout-web-sdk.umd.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dintero-checkout-web-sdk.umd.min.js","sources":["../node_modules/native-promise-only/lib/npo.src.js","../src/checkout.ts","../src/url.ts","../src/index.ts","../src/createIframeAsync.ts","../src/subscribe.ts"],"sourcesContent":["/*! Native Promise Only\n v0.8.1 (c) Kyle Simpson\n MIT License: http://getify.mit-license.org\n*/\n\n(function UMD(name,context,definition){\n\t// special form of UMD for polyfilling across evironments\n\tcontext[name] = context[name] || definition();\n\tif (typeof module != \"undefined\" && module.exports) { module.exports = context[name]; }\n\telse if (typeof define == \"function\" && define.amd) { define(function $AMD$(){ return context[name]; }); }\n})(\"Promise\",typeof global != \"undefined\" ? global : this,function DEF(){\n\t/*jshint validthis:true */\n\t\"use strict\";\n\n\tvar builtInProp, cycle, scheduling_queue,\n\t\tToString = Object.prototype.toString,\n\t\ttimer = (typeof setImmediate != \"undefined\") ?\n\t\t\tfunction timer(fn) { return setImmediate(fn); } :\n\t\t\tsetTimeout\n\t;\n\n\t// dammit, IE8.\n\ttry {\n\t\tObject.defineProperty({},\"x\",{});\n\t\tbuiltInProp = function builtInProp(obj,name,val,config) {\n\t\t\treturn Object.defineProperty(obj,name,{\n\t\t\t\tvalue: val,\n\t\t\t\twritable: true,\n\t\t\t\tconfigurable: config !== false\n\t\t\t});\n\t\t};\n\t}\n\tcatch (err) {\n\t\tbuiltInProp = function builtInProp(obj,name,val) {\n\t\t\tobj[name] = val;\n\t\t\treturn obj;\n\t\t};\n\t}\n\n\t// Note: using a queue instead of array for efficiency\n\tscheduling_queue = (function Queue() {\n\t\tvar first, last, item;\n\n\t\tfunction Item(fn,self) {\n\t\t\tthis.fn = fn;\n\t\t\tthis.self = self;\n\t\t\tthis.next = void 0;\n\t\t}\n\n\t\treturn {\n\t\t\tadd: function add(fn,self) {\n\t\t\t\titem = new Item(fn,self);\n\t\t\t\tif (last) {\n\t\t\t\t\tlast.next = item;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tfirst = item;\n\t\t\t\t}\n\t\t\t\tlast = item;\n\t\t\t\titem = void 0;\n\t\t\t},\n\t\t\tdrain: function drain() {\n\t\t\t\tvar f = first;\n\t\t\t\tfirst = last = cycle = void 0;\n\n\t\t\t\twhile (f) {\n\t\t\t\t\tf.fn.call(f.self);\n\t\t\t\t\tf = f.next;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t})();\n\n\tfunction schedule(fn,self) {\n\t\tscheduling_queue.add(fn,self);\n\t\tif (!cycle) {\n\t\t\tcycle = timer(scheduling_queue.drain);\n\t\t}\n\t}\n\n\t// promise duck typing\n\tfunction isThenable(o) {\n\t\tvar _then, o_type = typeof o;\n\n\t\tif (o != null &&\n\t\t\t(\n\t\t\t\to_type == \"object\" || o_type == \"function\"\n\t\t\t)\n\t\t) {\n\t\t\t_then = o.then;\n\t\t}\n\t\treturn typeof _then == \"function\" ? _then : false;\n\t}\n\n\tfunction notify() {\n\t\tfor (var i=0; i<this.chain.length; i++) {\n\t\t\tnotifyIsolated(\n\t\t\t\tthis,\n\t\t\t\t(this.state === 1) ? this.chain[i].success : this.chain[i].failure,\n\t\t\t\tthis.chain[i]\n\t\t\t);\n\t\t}\n\t\tthis.chain.length = 0;\n\t}\n\n\t// NOTE: This is a separate function to isolate\n\t// the `try..catch` so that other code can be\n\t// optimized better\n\tfunction notifyIsolated(self,cb,chain) {\n\t\tvar ret, _then;\n\t\ttry {\n\t\t\tif (cb === false) {\n\t\t\t\tchain.reject(self.msg);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (cb === true) {\n\t\t\t\t\tret = self.msg;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tret = cb.call(void 0,self.msg);\n\t\t\t\t}\n\n\t\t\t\tif (ret === chain.promise) {\n\t\t\t\t\tchain.reject(TypeError(\"Promise-chain cycle\"));\n\t\t\t\t}\n\t\t\t\telse if (_then = isThenable(ret)) {\n\t\t\t\t\t_then.call(ret,chain.resolve,chain.reject);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tchain.resolve(ret);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (err) {\n\t\t\tchain.reject(err);\n\t\t}\n\t}\n\n\tfunction resolve(msg) {\n\t\tvar _then, self = this;\n\n\t\t// already triggered?\n\t\tif (self.triggered) { return; }\n\n\t\tself.triggered = true;\n\n\t\t// unwrap\n\t\tif (self.def) {\n\t\t\tself = self.def;\n\t\t}\n\n\t\ttry {\n\t\t\tif (_then = isThenable(msg)) {\n\t\t\t\tschedule(function(){\n\t\t\t\t\tvar def_wrapper = new MakeDefWrapper(self);\n\t\t\t\t\ttry {\n\t\t\t\t\t\t_then.call(msg,\n\t\t\t\t\t\t\tfunction $resolve$(){ resolve.apply(def_wrapper,arguments); },\n\t\t\t\t\t\t\tfunction $reject$(){ reject.apply(def_wrapper,arguments); }\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\treject.call(def_wrapper,err);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t\telse {\n\t\t\t\tself.msg = msg;\n\t\t\t\tself.state = 1;\n\t\t\t\tif (self.chain.length > 0) {\n\t\t\t\t\tschedule(notify,self);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (err) {\n\t\t\treject.call(new MakeDefWrapper(self),err);\n\t\t}\n\t}\n\n\tfunction reject(msg) {\n\t\tvar self = this;\n\n\t\t// already triggered?\n\t\tif (self.triggered) { return; }\n\n\t\tself.triggered = true;\n\n\t\t// unwrap\n\t\tif (self.def) {\n\t\t\tself = self.def;\n\t\t}\n\n\t\tself.msg = msg;\n\t\tself.state = 2;\n\t\tif (self.chain.length > 0) {\n\t\t\tschedule(notify,self);\n\t\t}\n\t}\n\n\tfunction iteratePromises(Constructor,arr,resolver,rejecter) {\n\t\tfor (var idx=0; idx<arr.length; idx++) {\n\t\t\t(function IIFE(idx){\n\t\t\t\tConstructor.resolve(arr[idx])\n\t\t\t\t.then(\n\t\t\t\t\tfunction $resolver$(msg){\n\t\t\t\t\t\tresolver(idx,msg);\n\t\t\t\t\t},\n\t\t\t\t\trejecter\n\t\t\t\t);\n\t\t\t})(idx);\n\t\t}\n\t}\n\n\tfunction MakeDefWrapper(self) {\n\t\tthis.def = self;\n\t\tthis.triggered = false;\n\t}\n\n\tfunction MakeDef(self) {\n\t\tthis.promise = self;\n\t\tthis.state = 0;\n\t\tthis.triggered = false;\n\t\tthis.chain = [];\n\t\tthis.msg = void 0;\n\t}\n\n\tfunction Promise(executor) {\n\t\tif (typeof executor != \"function\") {\n\t\t\tthrow TypeError(\"Not a function\");\n\t\t}\n\n\t\tif (this.__NPO__ !== 0) {\n\t\t\tthrow TypeError(\"Not a promise\");\n\t\t}\n\n\t\t// instance shadowing the inherited \"brand\"\n\t\t// to signal an already \"initialized\" promise\n\t\tthis.__NPO__ = 1;\n\n\t\tvar def = new MakeDef(this);\n\n\t\tthis[\"then\"] = function then(success,failure) {\n\t\t\tvar o = {\n\t\t\t\tsuccess: typeof success == \"function\" ? success : true,\n\t\t\t\tfailure: typeof failure == \"function\" ? failure : false\n\t\t\t};\n\t\t\t// Note: `then(..)` itself can be borrowed to be used against\n\t\t\t// a different promise constructor for making the chained promise,\n\t\t\t// by substituting a different `this` binding.\n\t\t\to.promise = new this.constructor(function extractChain(resolve,reject) {\n\t\t\t\tif (typeof resolve != \"function\" || typeof reject != \"function\") {\n\t\t\t\t\tthrow TypeError(\"Not a function\");\n\t\t\t\t}\n\n\t\t\t\to.resolve = resolve;\n\t\t\t\to.reject = reject;\n\t\t\t});\n\t\t\tdef.chain.push(o);\n\n\t\t\tif (def.state !== 0) {\n\t\t\t\tschedule(notify,def);\n\t\t\t}\n\n\t\t\treturn o.promise;\n\t\t};\n\t\tthis[\"catch\"] = function $catch$(failure) {\n\t\t\treturn this.then(void 0,failure);\n\t\t};\n\n\t\ttry {\n\t\t\texecutor.call(\n\t\t\t\tvoid 0,\n\t\t\t\tfunction publicResolve(msg){\n\t\t\t\t\tresolve.call(def,msg);\n\t\t\t\t},\n\t\t\t\tfunction publicReject(msg) {\n\t\t\t\t\treject.call(def,msg);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t\tcatch (err) {\n\t\t\treject.call(def,err);\n\t\t}\n\t}\n\n\tvar PromisePrototype = builtInProp({},\"constructor\",Promise,\n\t\t/*configurable=*/false\n\t);\n\n\t// Note: Android 4 cannot use `Object.defineProperty(..)` here\n\tPromise.prototype = PromisePrototype;\n\n\t// built-in \"brand\" to signal an \"uninitialized\" promise\n\tbuiltInProp(PromisePrototype,\"__NPO__\",0,\n\t\t/*configurable=*/false\n\t);\n\n\tbuiltInProp(Promise,\"resolve\",function Promise$resolve(msg) {\n\t\tvar Constructor = this;\n\n\t\t// spec mandated checks\n\t\t// note: best \"isPromise\" check that's practical for now\n\t\tif (msg && typeof msg == \"object\" && msg.__NPO__ === 1) {\n\t\t\treturn msg;\n\t\t}\n\n\t\treturn new Constructor(function executor(resolve,reject){\n\t\t\tif (typeof resolve != \"function\" || typeof reject != \"function\") {\n\t\t\t\tthrow TypeError(\"Not a function\");\n\t\t\t}\n\n\t\t\tresolve(msg);\n\t\t});\n\t});\n\n\tbuiltInProp(Promise,\"reject\",function Promise$reject(msg) {\n\t\treturn new this(function executor(resolve,reject){\n\t\t\tif (typeof resolve != \"function\" || typeof reject != \"function\") {\n\t\t\t\tthrow TypeError(\"Not a function\");\n\t\t\t}\n\n\t\t\treject(msg);\n\t\t});\n\t});\n\n\tbuiltInProp(Promise,\"all\",function Promise$all(arr) {\n\t\tvar Constructor = this;\n\n\t\t// spec mandated checks\n\t\tif (ToString.call(arr) != \"[object Array]\") {\n\t\t\treturn Constructor.reject(TypeError(\"Not an array\"));\n\t\t}\n\t\tif (arr.length === 0) {\n\t\t\treturn Constructor.resolve([]);\n\t\t}\n\n\t\treturn new Constructor(function executor(resolve,reject){\n\t\t\tif (typeof resolve != \"function\" || typeof reject != \"function\") {\n\t\t\t\tthrow TypeError(\"Not a function\");\n\t\t\t}\n\n\t\t\tvar len = arr.length, msgs = Array(len), count = 0;\n\n\t\t\titeratePromises(Constructor,arr,function resolver(idx,msg) {\n\t\t\t\tmsgs[idx] = msg;\n\t\t\t\tif (++count === len) {\n\t\t\t\t\tresolve(msgs);\n\t\t\t\t}\n\t\t\t},reject);\n\t\t});\n\t});\n\n\tbuiltInProp(Promise,\"race\",function Promise$race(arr) {\n\t\tvar Constructor = this;\n\n\t\t// spec mandated checks\n\t\tif (ToString.call(arr) != \"[object Array]\") {\n\t\t\treturn Constructor.reject(TypeError(\"Not an array\"));\n\t\t}\n\n\t\treturn new Constructor(function executor(resolve,reject){\n\t\t\tif (typeof resolve != \"function\" || typeof reject != \"function\") {\n\t\t\t\tthrow TypeError(\"Not a function\");\n\t\t\t}\n\n\t\t\titeratePromises(Constructor,arr,function resolver(idx,msg){\n\t\t\t\tresolve(msg);\n\t\t\t},reject);\n\t\t});\n\t});\n\n\treturn Promise;\n});\n","import { Session } from \"./session\";\n\nexport enum CheckoutEvents {\n SessionNotFound = \"SessionNotFound\",\n SessionLoaded = \"SessionLoaded\",\n SessionUpdated = \"SessionUpdated\",\n SessionCancel = \"SessionCancel\",\n SessionPaymentOnHold = \"SessionPaymentOnHold\",\n SessionPaymentAuthorized = \"SessionPaymentAuthorized\",\n SessionPaymentError = \"SessionPaymentError\",\n SessionLocked = \"SessionLocked\",\n SessionLockFailed = \"SessionLockFailed\",\n ActivePaymentProductType = \"ActivePaymentProductType\",\n ValidateSession = \"ValidateSession\",\n}\nexport enum InternalCheckoutEvents {\n HeightChanged = \"HeightChanged\",\n LanguageChanged = \"LanguageChanged\",\n}\n\nexport type SessionNotFound = {\n type: CheckoutEvents.SessionNotFound;\n};\n\nexport type SessionLoaded = {\n type: CheckoutEvents.SessionLoaded;\n session: Session;\n};\n\nexport type SessionUpdated = {\n type: CheckoutEvents.SessionUpdated;\n session: Session;\n};\n\nexport type SessionCancel = {\n type: CheckoutEvents.SessionCancel;\n href: string;\n};\n\nexport type SessionPaymentOnHold = {\n type: CheckoutEvents.SessionPaymentOnHold;\n transaction_id: string;\n merchant_reference: string;\n href: string;\n};\n\nexport type SessionPaymentAuthorized = {\n type: CheckoutEvents.SessionPaymentAuthorized;\n transaction_id: string;\n merchant_reference: string;\n href: string;\n};\n\nexport type SessionLocked = {\n type: CheckoutEvents.SessionLocked;\n pay_lock_id: string;\n};\n\nexport type SessionLockFailed = {\n type: CheckoutEvents.SessionLockFailed;\n};\nexport type ActivePaymentProductType = {\n type: CheckoutEvents.ActivePaymentProductType;\n payment_product_type: string | undefined;\n};\n\nexport type ValidateSession = {\n type: CheckoutEvents.ValidateSession;\n session: Session;\n callback: (result: SessionValidationCallback) => void;\n};\n\nexport interface SessionValidationCallback {\n success: boolean;\n clientValidationError?: string;\n}\n\nexport type WrappedValidateSession = Pick<ValidateSession, \"type\" | \"session\">;\n\nexport type SessionPayment = SessionPaymentAuthorized | SessionPaymentOnHold;\n\nexport type SessionPaymentError = {\n type: CheckoutEvents.SessionPaymentError;\n error: string;\n href: string;\n};\n\nexport type SessionEvent =\n | SessionNotFound\n | SessionLoaded\n | SessionUpdated\n | SessionCancel\n | SessionPaymentOnHold\n | SessionPaymentAuthorized\n | SessionPaymentError\n | SessionLocked\n | SessionLockFailed\n | ActivePaymentProductType\n | WrappedValidateSession;\n","import pkg from \"../package.json\";\n\n/**\n * Wraps window.location.assign()\n */\nexport const windowLocationAssign = (url: string) => {\n window.location.assign(url);\n};\n\n/**\n * Get the url for the session./yarn-error.log\n.DS_Store\n */\nexport interface SessionUrlOptions {\n sid: string;\n endpoint: string;\n language: string | undefined;\n ui?: \"fullscreen\" | \"inline\";\n shouldCallValidateSession: boolean;\n}\n\nexport const getSessionUrl = (options: SessionUrlOptions): string => {\n const { sid, endpoint, language, ui, shouldCallValidateSession } = options;\n if (!endpoint) {\n throw new Error(\"Invalid endpoint\");\n }\n\n // Compose url for view session endpoint with optional language parameter.\n let languageParam = language ? `language=${language}` : \"\";\n let uiParam = ui ? `ui=${ui}` : \"\";\n let sdk = `sdk=${pkg.version}`;\n let validate = shouldCallValidateSession ? `client_side_validation=true` : undefined;\n const params = [languageParam, uiParam, sdk, validate].filter(x => x).join(\"&\");\n return `${endpoint}/v1/view/${sid}${params ? \"?\" + params : \"\"}`;\n};\n","import \"native-promise-only\";\n\nimport pkg from \"../package.json\";\nimport {\n CheckoutEvents,\n InternalCheckoutEvents,\n SessionNotFound,\n SessionLoaded,\n SessionUpdated,\n SessionCancel,\n SessionPaymentOnHold,\n SessionPaymentAuthorized,\n SessionPaymentError,\n SessionLocked,\n SessionLockFailed,\n ActivePaymentProductType,\n ValidateSession,\n SessionValidationCallback,\n} from \"./checkout\";\nimport { getSessionUrl, windowLocationAssign } from \"./url\";\nimport { createIframeAsync } from \"./createIframeAsync\";\nimport {\n subscribe,\n SubscriptionHandler,\n Subscription,\n postSessionLock,\n postSessionRefresh,\n postActivePaymentProductType,\n postValidationResult,\n} from \"./subscribe\";\n\nexport interface DinteroCheckoutInstance {\n /**\n * Remove iframe and all event listeners.\n */\n destroy: () => void;\n iframe: HTMLIFrameElement;\n language: string;\n lockSession: () => void;\n refreshSession: () => void;\n setActivePaymentProductType: (paymentProductType: string) => void;\n submitValidationResult: (result: SessionValidationCallback) => void;\n}\n\nexport interface DinteroCheckoutOptions {\n sid: string;\n endpoint?: string;\n language?: string;\n}\n\nexport interface DinteroEmbedCheckoutOptions extends DinteroCheckoutOptions {\n container: HTMLDivElement;\n onPayment?: (\n event: SessionPaymentAuthorized | SessionPaymentOnHold,\n checkout: DinteroCheckoutInstance\n ) => void;\n /**\n * @deprecated Since version 0.0.1. Will be deleted in version 1.0.0. Use onPayment instead.\n */\n onPaymentAuthorized?: (\n event: SessionPaymentAuthorized,\n checkout: DinteroCheckoutInstance\n ) => void;\n onSession?: (\n event: SessionLoaded | SessionUpdated,\n checkout: DinteroCheckoutInstance\n ) => void;\n onPaymentError?: (\n event: SessionPaymentError,\n checkout: DinteroCheckoutInstance\n ) => void;\n onSessionCancel?: (\n event: SessionCancel,\n checkout: DinteroCheckoutInstance\n ) => void;\n onSessionNotFound?: (\n event: SessionNotFound,\n checkout: DinteroCheckoutInstance\n ) => void;\n onSessionLocked?: (\n event: SessionLocked,\n checkout: DinteroCheckoutInstance\n ) => void;\n onSessionLockFailed?: (\n event: SessionLockFailed,\n checkout: DinteroCheckoutInstance\n ) => void;\n onActivePaymentType?: (\n event: ActivePaymentProductType,\n checkout: DinteroCheckoutInstance\n ) => void;\n onValidateSession?: (\n event: ValidateSession,\n checkout: DinteroCheckoutInstance,\n callback: (result: SessionValidationCallback) => void,\n ) => void;\n}\n\n/**\n * An event handler that navigates to the href in the event.\n */\nconst followHref: SubscriptionHandler = (event: any): void => {\n if (event.href) {\n windowLocationAssign(event.href);\n }\n};\n\n/**\n * An event handler that sets height of the iframe.\n */\nconst setIframeHeight: SubscriptionHandler = (event: any, checkout): void => {\n if (event.height || event.height === 0) {\n checkout.iframe.setAttribute(\n \"style\",\n `width:100%; height:${event.height}px;`\n );\n }\n};\nconst setLanguage: SubscriptionHandler = (event: any, checkout): void => {\n if (event.language) {\n checkout.language = event.language;\n }\n};\n\nconst handleWithResult = (\n sid: string,\n endpoint: string,\n handler: SubscriptionHandler\n): SubscriptionHandler => {\n return (event: any, checkout: DinteroCheckoutInstance) => {\n const eventKeys = [\n \"sid\",\n \"merchant_reference\",\n \"transaction_id\",\n \"error\",\n ];\n const pairs = eventKeys.map((key) => [key, event[key]]);\n if (event.type === CheckoutEvents.SessionCancel && !event.error) {\n pairs.push([\"error\", \"cancelled\"]);\n }\n pairs.push([\"language\", checkout.language]);\n pairs.push([\"sdk\", pkg.version]);\n const urlQuery = pairs\n .filter(([key, value]) => value)\n .map(([key, value]) => `${key}=${value}`)\n .join(\"&\");\n checkout.iframe.setAttribute(\n \"src\",\n `${endpoint}/embedResult/?${urlQuery}`\n );\n handler(event, checkout);\n };\n};\n\n/**\n * Show a dintero payment session in an embedded iframe.\n */\nexport const embed = async (\n options: DinteroEmbedCheckoutOptions\n): Promise<DinteroCheckoutInstance> => {\n const {\n container,\n sid,\n language,\n endpoint = \"https://checkout.dintero.com\",\n onSession,\n onSessionCancel,\n onPayment,\n onPaymentAuthorized,\n onPaymentError,\n onSessionNotFound,\n onSessionLocked,\n onSessionLockFailed,\n onActivePaymentType,\n onValidateSession,\n } = options;\n const subscriptions: Subscription[] = [];\n\n // Create iframe\n const { iframe, initiate } = createIframeAsync(\n container,\n endpoint,\n getSessionUrl({\n sid,\n endpoint,\n language,\n ui: \"inline\",\n shouldCallValidateSession: onValidateSession !== undefined\n }),\n );\n\n /**\n * Function that removes the iframe and all event listeners.\n */\n const destroy = () => {\n if (iframe) {\n subscriptions.forEach((sub) => sub.unsubscribe());\n if (iframe.parentElement) {\n container.removeChild(iframe);\n }\n }\n };\n\n const lockSession = () => {\n postSessionLock(iframe, sid);\n };\n\n const refreshSession = () => {\n postSessionRefresh(iframe, sid);\n };\n\n const setActivePaymentProductType = (paymentProductType?:string) => {\n postActivePaymentProductType(iframe, sid, paymentProductType);\n };\n\n const submitValidationResult = (result: SessionValidationCallback) => {\n postValidationResult(iframe, sid, result);\n }\n\n const wrappedOnValidateSession = (\n event: ValidateSession,\n checkout: DinteroCheckoutInstance,\n ) => {\n if (onValidateSession) {\n onValidateSession(event, checkout, submitValidationResult);\n }\n }\n\n // Create checkout object that wraps the destroy function.\n const checkout: DinteroCheckoutInstance = {\n destroy,\n iframe,\n language,\n lockSession,\n refreshSession,\n setActivePaymentProductType,\n submitValidationResult,\n };\n\n // Add event handlers (or in some cases add a fallback href handler).\n [\n {\n handler: setLanguage,\n eventTypes: [InternalCheckoutEvents.LanguageChanged],\n },\n {\n handler: setIframeHeight,\n eventTypes: [InternalCheckoutEvents.HeightChanged],\n },\n {\n handler: onSession as SubscriptionHandler | undefined,\n eventTypes: [\n CheckoutEvents.SessionLoaded,\n CheckoutEvents.SessionUpdated,\n ],\n },\n {\n eventTypes: [CheckoutEvents.SessionPaymentOnHold],\n handler: onPayment\n ? handleWithResult(sid, endpoint, onPayment)\n : followHref,\n },\n {\n eventTypes: [CheckoutEvents.SessionPaymentAuthorized],\n handler:\n onPaymentAuthorized || onPayment\n ? handleWithResult(\n sid,\n endpoint,\n onPaymentAuthorized || onPayment\n )\n : followHref,\n },\n {\n handler: onSessionCancel\n ? handleWithResult(sid, endpoint, onSessionCancel)\n : followHref,\n eventTypes: [CheckoutEvents.SessionCancel],\n },\n {\n handler: onPaymentError\n ? handleWithResult(sid, endpoint, onPaymentError)\n : followHref,\n eventTypes: [CheckoutEvents.SessionPaymentError],\n },\n {\n handler: onSessionNotFound as SubscriptionHandler | undefined,\n eventTypes: [CheckoutEvents.SessionNotFound],\n },\n {\n handler: onSessionLocked as SubscriptionHandler | undefined,\n eventTypes: [CheckoutEvents.SessionLocked],\n },\n {\n handler: onSessionLockFailed as SubscriptionHandler | undefined,\n eventTypes: [CheckoutEvents.SessionLockFailed],\n },\n {\n handler: onActivePaymentType as SubscriptionHandler | undefined,\n eventTypes: [CheckoutEvents.ActivePaymentProductType],\n },\n {\n handler: onActivePaymentType as SubscriptionHandler | undefined,\n eventTypes: [CheckoutEvents.ActivePaymentProductType],\n },\n {\n handler: wrappedOnValidateSession as SubscriptionHandler | undefined,\n eventTypes: [CheckoutEvents.ValidateSession],\n },\n ].forEach(({ handler, eventTypes }) => {\n if (handler) {\n subscriptions.push(\n subscribe({\n sid,\n endpoint,\n handler,\n eventTypes,\n checkout,\n })\n );\n }\n });\n\n // Add iframe to DOM\n await initiate();\n // Return object with function to destroy the checkout.\n return checkout;\n};\n\n/**\n * Redirect the customer to a payment session in the Dintero Checkout.\n */\nexport const redirect = (options: DinteroCheckoutOptions) => {\n const {\n sid,\n language,\n endpoint = \"https://checkout.dintero.com\",\n } = options;\n // Redirect the current browser window to the checkout session url.\n windowLocationAssign(getSessionUrl({ sid, endpoint, language, shouldCallValidateSession: false }));\n};\n","/**\n * Creates an iframe and adds it to the container.\n *\n * Returns a promise that resolves to the iframe when the iframe has loaded.\n * Rejects the promise if there is a problem loading the iframe.\n */\nexport const createIframeAsync = (\n container: HTMLDivElement,\n endpoint: string,\n url: string\n): { iframe: HTMLIFrameElement; initiate: () => void } => {\n if (!container || !container.appendChild) {\n throw new Error(\"Invalid container\");\n }\n const iframe = document.createElement(\"iframe\");\n\n // No border, transparent and stretch to 100% of the container width.\n iframe.setAttribute(\"frameborder\", \"0\");\n iframe.setAttribute(\"allowTransparency\", \"true\");\n iframe.setAttribute(\"style\", \"width:100%; height:0;\");\n\n // TODO: Get this to work as expected, might be tricky with current\n // tests since they will require the csp to be \"unsafe-inline\".\n // The server needs to add the same property in the Content Security\n // Policy headers in the response for this to work. A CSP header set by\n // a meta tag in the iframe target will not be detected as a valid\n // CSP from the iframe host.\n // Content Security Policy, should be limited to \"endpoint\".\n // iframe.setAttribute(\"csp\", `default-src ${endpoint}`);\n\n // Apply extra restrictions to the content in the iframe.\n // allow popups is needed to open terms in new window\n iframe.setAttribute(\n \"sandbox\",\n \"allow-scripts allow-forms allow-same-origin allow-popups\"\n );\n\n // The download priority of the resource in the <iframe>'s src attribute.\n iframe.setAttribute(\"importance\", \"high\");\n\n // Set the iframe source to the url.\n iframe.setAttribute(\"src\", url);\n\n // Resolve or reject promise when iframe loads.\n\n // // Add iframe to the container.\n // container.appendChild(iframe);\n return {\n iframe,\n initiate: async () => {\n return new Promise<void>((resolve, reject) => {\n iframe.onload = () => resolve();\n iframe.onerror = () => reject();\n container.appendChild(iframe);\n });\n },\n };\n};\n","import {\n CheckoutEvents,\n InternalCheckoutEvents,\n SessionEvent,\n SessionValidationCallback,\n} from \"./checkout\";\nimport { DinteroCheckoutInstance } from \".\";\n\n/**\n * Unsubscribe handler from event(s).\n */\nexport type SubscriptionHandler = (\n sessionEvent: SessionEvent,\n checkout: DinteroCheckoutInstance\n) => void;\n\ninterface SubscriptionOptions {\n sid: string;\n endpoint: string;\n handler: SubscriptionHandler;\n eventTypes: (CheckoutEvents | InternalCheckoutEvents)[];\n checkout: DinteroCheckoutInstance;\n}\n\nexport type Subscription = {\n /**\n * Unsubscribe handler from event(s).\n */\n unsubscribe: () => void;\n};\n\n/**\n * Post a message acknowledgement to the checkout iframe.\n */\nconst postAck = (iframe: HTMLIFrameElement, event: MessageEvent) => {\n if (event.data.mid && iframe.contentWindow) {\n iframe.contentWindow.postMessage(\n { ack: event.data.mid },\n event.origin || \"*\"\n );\n }\n};\n\n/**\n * Post a SessionLock-event to the checkout iframe.\n */\nexport const postSessionLock = (iframe: HTMLIFrameElement, sid: string) => {\n if (iframe.contentWindow) {\n iframe.contentWindow.postMessage({ type: \"LockSession\", sid }, \"*\");\n }\n};\n\n/**\n * Post the validation result to the checkout iframe\n */\nexport const postValidationResult = (iframe: HTMLIFrameElement, sid: string, result: SessionValidationCallback) => {\n if (iframe.contentWindow) {\n iframe.contentWindow.postMessage({ type: \"ValidationResult\", sid, ...result }, \"*\");\n }\n};\n\n/**\n * Post RefreshSession-event to the checkout iframe.\n */\nexport const postSessionRefresh = (iframe: HTMLIFrameElement, sid: string) => {\n if (iframe.contentWindow) {\n iframe.contentWindow.postMessage({ type: \"RefreshSession\", sid }, \"*\");\n }\n};\n\n/**\n * Post setActivePaymentProductType-event to the checkout iframe.\n */\nexport const postActivePaymentProductType = (iframe: HTMLIFrameElement, sid: string, paymentProductType?: string) => {\n if (iframe.contentWindow) {\n iframe.contentWindow.postMessage(\n { type: \"SetActivePaymentProductType\", sid, payment_product_type:paymentProductType },\n \"*\"\n );\n }\n};\n\n/**\n * Subscribe to events from an iframe given a handler and a set\n * of event types.\n */\nexport const subscribe = (options: SubscriptionOptions): Subscription => {\n const { sid, endpoint, handler, eventTypes, checkout } = options;\n\n // Wrap event handler in a function that checks for correct origin and\n // filters on event type(s) in the event data.\n const wrappedHandler = (event: MessageEvent) => {\n const correctOrigin = event.origin === endpoint;\n const correctWindow = event.source === checkout.iframe.contentWindow;\n const correctSid = event.data && event.data.sid === sid;\n const correctMessageType =\n eventTypes.indexOf(event.data && event.data.type) !== -1;\n if (\n correctOrigin &&\n correctWindow &&\n correctSid &&\n correctMessageType\n ) {\n postAck(checkout.iframe, event);\n handler(event.data, checkout);\n }\n };\n\n // Add event listener to the iframe.\n window.addEventListener(\"message\", wrappedHandler as any, false);\n\n // Function to remove the event listener from the iframe.\n const unsubscribe = () => {\n window.removeEventListener(\"message\", wrappedHandler as any, false);\n };\n\n // Return object with unsubscribe function.\n return {\n unsubscribe,\n };\n};\n"],"names":["name","context","definition","builtInProp","cycle","scheduling_queue","ToString","Object","prototype","toString","timer","setImmediate","fn","setTimeout","defineProperty","obj","val","config","value","writable","configurable","err","schedule","self","add","drain","isThenable","o","_then","o_type","then","notify","i","this","chain","length","notifyIsolated","state","success","failure","cb","ret","reject","msg","call","promise","TypeError","resolve","triggered","def","def_wrapper","MakeDefWrapper","apply","arguments","iteratePromises","Constructor","arr","resolver","rejecter","idx","MakeDef","Promise","executor","__NPO__","constructor","push","first","last","item","Item","next","f","PromisePrototype","len","msgs","Array","count","global","module","exports","CheckoutEvents","InternalCheckoutEvents","windowLocationAssign","url","window","location","assign","getSessionUrl","options","sid","endpoint","language","ui","shouldCallValidateSession","Error","params","pkg","undefined","filter","x","join","followHref","event","href","setIframeHeight","checkout","height","iframe","setAttribute","setLanguage","handleWithResult","handler","pairs","map","key","type","SessionCancel","error","urlQuery","async","container","onSession","onSessionCancel","onPayment","onPaymentAuthorized","onPaymentError","onSessionNotFound","onSessionLocked","onSessionLockFailed","onActivePaymentType","onValidateSession","subscriptions","initiate","appendChild","document","createElement","onload","onerror","createIframeAsync","submitValidationResult","result","contentWindow","postMessage","postValidationResult","destroy","forEach","sub","unsubscribe","parentElement","removeChild","lockSession","postSessionLock","refreshSession","postSessionRefresh","setActivePaymentProductType","paymentProductType","payment_product_type","postActivePaymentProductType","eventTypes","LanguageChanged","HeightChanged","SessionLoaded","SessionUpdated","SessionPaymentOnHold","SessionPaymentAuthorized","SessionPaymentError","SessionNotFound","SessionLocked","SessionLockFailed","ActivePaymentProductType","ValidateSession","wrappedHandler","correctOrigin","origin","correctWindow","source","correctSid","data","correctMessageType","indexOf","mid","ack","postAck","addEventListener","removeEventListener","subscribe"],"mappings":"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"}
1
+ {"version":3,"file":"dintero-checkout-web-sdk.umd.min.js","sources":["../node_modules/native-promise-only/lib/npo.src.js","../src/checkout.ts","../src/url.ts","../src/index.ts","../src/createIframeAsync.ts","../src/subscribe.ts"],"sourcesContent":["/*! Native Promise Only\n v0.8.1 (c) Kyle Simpson\n MIT License: http://getify.mit-license.org\n*/\n\n(function UMD(name,context,definition){\n\t// special form of UMD for polyfilling across evironments\n\tcontext[name] = context[name] || definition();\n\tif (typeof module != \"undefined\" && module.exports) { module.exports = context[name]; }\n\telse if (typeof define == \"function\" && define.amd) { define(function $AMD$(){ return context[name]; }); }\n})(\"Promise\",typeof global != \"undefined\" ? global : this,function DEF(){\n\t/*jshint validthis:true */\n\t\"use strict\";\n\n\tvar builtInProp, cycle, scheduling_queue,\n\t\tToString = Object.prototype.toString,\n\t\ttimer = (typeof setImmediate != \"undefined\") ?\n\t\t\tfunction timer(fn) { return setImmediate(fn); } :\n\t\t\tsetTimeout\n\t;\n\n\t// dammit, IE8.\n\ttry {\n\t\tObject.defineProperty({},\"x\",{});\n\t\tbuiltInProp = function builtInProp(obj,name,val,config) {\n\t\t\treturn Object.defineProperty(obj,name,{\n\t\t\t\tvalue: val,\n\t\t\t\twritable: true,\n\t\t\t\tconfigurable: config !== false\n\t\t\t});\n\t\t};\n\t}\n\tcatch (err) {\n\t\tbuiltInProp = function builtInProp(obj,name,val) {\n\t\t\tobj[name] = val;\n\t\t\treturn obj;\n\t\t};\n\t}\n\n\t// Note: using a queue instead of array for efficiency\n\tscheduling_queue = (function Queue() {\n\t\tvar first, last, item;\n\n\t\tfunction Item(fn,self) {\n\t\t\tthis.fn = fn;\n\t\t\tthis.self = self;\n\t\t\tthis.next = void 0;\n\t\t}\n\n\t\treturn {\n\t\t\tadd: function add(fn,self) {\n\t\t\t\titem = new Item(fn,self);\n\t\t\t\tif (last) {\n\t\t\t\t\tlast.next = item;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tfirst = item;\n\t\t\t\t}\n\t\t\t\tlast = item;\n\t\t\t\titem = void 0;\n\t\t\t},\n\t\t\tdrain: function drain() {\n\t\t\t\tvar f = first;\n\t\t\t\tfirst = last = cycle = void 0;\n\n\t\t\t\twhile (f) {\n\t\t\t\t\tf.fn.call(f.self);\n\t\t\t\t\tf = f.next;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t})();\n\n\tfunction schedule(fn,self) {\n\t\tscheduling_queue.add(fn,self);\n\t\tif (!cycle) {\n\t\t\tcycle = timer(scheduling_queue.drain);\n\t\t}\n\t}\n\n\t// promise duck typing\n\tfunction isThenable(o) {\n\t\tvar _then, o_type = typeof o;\n\n\t\tif (o != null &&\n\t\t\t(\n\t\t\t\to_type == \"object\" || o_type == \"function\"\n\t\t\t)\n\t\t) {\n\t\t\t_then = o.then;\n\t\t}\n\t\treturn typeof _then == \"function\" ? _then : false;\n\t}\n\n\tfunction notify() {\n\t\tfor (var i=0; i<this.chain.length; i++) {\n\t\t\tnotifyIsolated(\n\t\t\t\tthis,\n\t\t\t\t(this.state === 1) ? this.chain[i].success : this.chain[i].failure,\n\t\t\t\tthis.chain[i]\n\t\t\t);\n\t\t}\n\t\tthis.chain.length = 0;\n\t}\n\n\t// NOTE: This is a separate function to isolate\n\t// the `try..catch` so that other code can be\n\t// optimized better\n\tfunction notifyIsolated(self,cb,chain) {\n\t\tvar ret, _then;\n\t\ttry {\n\t\t\tif (cb === false) {\n\t\t\t\tchain.reject(self.msg);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (cb === true) {\n\t\t\t\t\tret = self.msg;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tret = cb.call(void 0,self.msg);\n\t\t\t\t}\n\n\t\t\t\tif (ret === chain.promise) {\n\t\t\t\t\tchain.reject(TypeError(\"Promise-chain cycle\"));\n\t\t\t\t}\n\t\t\t\telse if (_then = isThenable(ret)) {\n\t\t\t\t\t_then.call(ret,chain.resolve,chain.reject);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tchain.resolve(ret);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (err) {\n\t\t\tchain.reject(err);\n\t\t}\n\t}\n\n\tfunction resolve(msg) {\n\t\tvar _then, self = this;\n\n\t\t// already triggered?\n\t\tif (self.triggered) { return; }\n\n\t\tself.triggered = true;\n\n\t\t// unwrap\n\t\tif (self.def) {\n\t\t\tself = self.def;\n\t\t}\n\n\t\ttry {\n\t\t\tif (_then = isThenable(msg)) {\n\t\t\t\tschedule(function(){\n\t\t\t\t\tvar def_wrapper = new MakeDefWrapper(self);\n\t\t\t\t\ttry {\n\t\t\t\t\t\t_then.call(msg,\n\t\t\t\t\t\t\tfunction $resolve$(){ resolve.apply(def_wrapper,arguments); },\n\t\t\t\t\t\t\tfunction $reject$(){ reject.apply(def_wrapper,arguments); }\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tcatch (err) {\n\t\t\t\t\t\treject.call(def_wrapper,err);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t\telse {\n\t\t\t\tself.msg = msg;\n\t\t\t\tself.state = 1;\n\t\t\t\tif (self.chain.length > 0) {\n\t\t\t\t\tschedule(notify,self);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tcatch (err) {\n\t\t\treject.call(new MakeDefWrapper(self),err);\n\t\t}\n\t}\n\n\tfunction reject(msg) {\n\t\tvar self = this;\n\n\t\t// already triggered?\n\t\tif (self.triggered) { return; }\n\n\t\tself.triggered = true;\n\n\t\t// unwrap\n\t\tif (self.def) {\n\t\t\tself = self.def;\n\t\t}\n\n\t\tself.msg = msg;\n\t\tself.state = 2;\n\t\tif (self.chain.length > 0) {\n\t\t\tschedule(notify,self);\n\t\t}\n\t}\n\n\tfunction iteratePromises(Constructor,arr,resolver,rejecter) {\n\t\tfor (var idx=0; idx<arr.length; idx++) {\n\t\t\t(function IIFE(idx){\n\t\t\t\tConstructor.resolve(arr[idx])\n\t\t\t\t.then(\n\t\t\t\t\tfunction $resolver$(msg){\n\t\t\t\t\t\tresolver(idx,msg);\n\t\t\t\t\t},\n\t\t\t\t\trejecter\n\t\t\t\t);\n\t\t\t})(idx);\n\t\t}\n\t}\n\n\tfunction MakeDefWrapper(self) {\n\t\tthis.def = self;\n\t\tthis.triggered = false;\n\t}\n\n\tfunction MakeDef(self) {\n\t\tthis.promise = self;\n\t\tthis.state = 0;\n\t\tthis.triggered = false;\n\t\tthis.chain = [];\n\t\tthis.msg = void 0;\n\t}\n\n\tfunction Promise(executor) {\n\t\tif (typeof executor != \"function\") {\n\t\t\tthrow TypeError(\"Not a function\");\n\t\t}\n\n\t\tif (this.__NPO__ !== 0) {\n\t\t\tthrow TypeError(\"Not a promise\");\n\t\t}\n\n\t\t// instance shadowing the inherited \"brand\"\n\t\t// to signal an already \"initialized\" promise\n\t\tthis.__NPO__ = 1;\n\n\t\tvar def = new MakeDef(this);\n\n\t\tthis[\"then\"] = function then(success,failure) {\n\t\t\tvar o = {\n\t\t\t\tsuccess: typeof success == \"function\" ? success : true,\n\t\t\t\tfailure: typeof failure == \"function\" ? failure : false\n\t\t\t};\n\t\t\t// Note: `then(..)` itself can be borrowed to be used against\n\t\t\t// a different promise constructor for making the chained promise,\n\t\t\t// by substituting a different `this` binding.\n\t\t\to.promise = new this.constructor(function extractChain(resolve,reject) {\n\t\t\t\tif (typeof resolve != \"function\" || typeof reject != \"function\") {\n\t\t\t\t\tthrow TypeError(\"Not a function\");\n\t\t\t\t}\n\n\t\t\t\to.resolve = resolve;\n\t\t\t\to.reject = reject;\n\t\t\t});\n\t\t\tdef.chain.push(o);\n\n\t\t\tif (def.state !== 0) {\n\t\t\t\tschedule(notify,def);\n\t\t\t}\n\n\t\t\treturn o.promise;\n\t\t};\n\t\tthis[\"catch\"] = function $catch$(failure) {\n\t\t\treturn this.then(void 0,failure);\n\t\t};\n\n\t\ttry {\n\t\t\texecutor.call(\n\t\t\t\tvoid 0,\n\t\t\t\tfunction publicResolve(msg){\n\t\t\t\t\tresolve.call(def,msg);\n\t\t\t\t},\n\t\t\t\tfunction publicReject(msg) {\n\t\t\t\t\treject.call(def,msg);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t\tcatch (err) {\n\t\t\treject.call(def,err);\n\t\t}\n\t}\n\n\tvar PromisePrototype = builtInProp({},\"constructor\",Promise,\n\t\t/*configurable=*/false\n\t);\n\n\t// Note: Android 4 cannot use `Object.defineProperty(..)` here\n\tPromise.prototype = PromisePrototype;\n\n\t// built-in \"brand\" to signal an \"uninitialized\" promise\n\tbuiltInProp(PromisePrototype,\"__NPO__\",0,\n\t\t/*configurable=*/false\n\t);\n\n\tbuiltInProp(Promise,\"resolve\",function Promise$resolve(msg) {\n\t\tvar Constructor = this;\n\n\t\t// spec mandated checks\n\t\t// note: best \"isPromise\" check that's practical for now\n\t\tif (msg && typeof msg == \"object\" && msg.__NPO__ === 1) {\n\t\t\treturn msg;\n\t\t}\n\n\t\treturn new Constructor(function executor(resolve,reject){\n\t\t\tif (typeof resolve != \"function\" || typeof reject != \"function\") {\n\t\t\t\tthrow TypeError(\"Not a function\");\n\t\t\t}\n\n\t\t\tresolve(msg);\n\t\t});\n\t});\n\n\tbuiltInProp(Promise,\"reject\",function Promise$reject(msg) {\n\t\treturn new this(function executor(resolve,reject){\n\t\t\tif (typeof resolve != \"function\" || typeof reject != \"function\") {\n\t\t\t\tthrow TypeError(\"Not a function\");\n\t\t\t}\n\n\t\t\treject(msg);\n\t\t});\n\t});\n\n\tbuiltInProp(Promise,\"all\",function Promise$all(arr) {\n\t\tvar Constructor = this;\n\n\t\t// spec mandated checks\n\t\tif (ToString.call(arr) != \"[object Array]\") {\n\t\t\treturn Constructor.reject(TypeError(\"Not an array\"));\n\t\t}\n\t\tif (arr.length === 0) {\n\t\t\treturn Constructor.resolve([]);\n\t\t}\n\n\t\treturn new Constructor(function executor(resolve,reject){\n\t\t\tif (typeof resolve != \"function\" || typeof reject != \"function\") {\n\t\t\t\tthrow TypeError(\"Not a function\");\n\t\t\t}\n\n\t\t\tvar len = arr.length, msgs = Array(len), count = 0;\n\n\t\t\titeratePromises(Constructor,arr,function resolver(idx,msg) {\n\t\t\t\tmsgs[idx] = msg;\n\t\t\t\tif (++count === len) {\n\t\t\t\t\tresolve(msgs);\n\t\t\t\t}\n\t\t\t},reject);\n\t\t});\n\t});\n\n\tbuiltInProp(Promise,\"race\",function Promise$race(arr) {\n\t\tvar Constructor = this;\n\n\t\t// spec mandated checks\n\t\tif (ToString.call(arr) != \"[object Array]\") {\n\t\t\treturn Constructor.reject(TypeError(\"Not an array\"));\n\t\t}\n\n\t\treturn new Constructor(function executor(resolve,reject){\n\t\t\tif (typeof resolve != \"function\" || typeof reject != \"function\") {\n\t\t\t\tthrow TypeError(\"Not a function\");\n\t\t\t}\n\n\t\t\titeratePromises(Constructor,arr,function resolver(idx,msg){\n\t\t\t\tresolve(msg);\n\t\t\t},reject);\n\t\t});\n\t});\n\n\treturn Promise;\n});\n","import { Session } from \"./session\";\n\nexport enum CheckoutEvents {\n SessionNotFound = \"SessionNotFound\",\n SessionLoaded = \"SessionLoaded\",\n SessionUpdated = \"SessionUpdated\",\n SessionCancel = \"SessionCancel\",\n SessionPaymentOnHold = \"SessionPaymentOnHold\",\n SessionPaymentAuthorized = \"SessionPaymentAuthorized\",\n SessionPaymentError = \"SessionPaymentError\",\n SessionLocked = \"SessionLocked\",\n SessionLockFailed = \"SessionLockFailed\",\n ActivePaymentProductType = \"ActivePaymentProductType\",\n ValidateSession = \"ValidateSession\",\n}\nexport enum InternalCheckoutEvents {\n HeightChanged = \"HeightChanged\",\n LanguageChanged = \"LanguageChanged\",\n}\n\nexport type SessionNotFound = {\n type: CheckoutEvents.SessionNotFound;\n};\n\nexport type SessionLoaded = {\n type: CheckoutEvents.SessionLoaded;\n session: Session;\n};\n\nexport type SessionUpdated = {\n type: CheckoutEvents.SessionUpdated;\n session: Session;\n};\n\nexport type SessionCancel = {\n type: CheckoutEvents.SessionCancel;\n href: string;\n};\n\nexport type SessionPaymentOnHold = {\n type: CheckoutEvents.SessionPaymentOnHold;\n transaction_id: string;\n merchant_reference: string;\n href: string;\n};\n\nexport type SessionPaymentAuthorized = {\n type: CheckoutEvents.SessionPaymentAuthorized;\n transaction_id: string;\n merchant_reference: string;\n href: string;\n};\n\nexport type SessionLocked = {\n type: CheckoutEvents.SessionLocked;\n pay_lock_id: string;\n callback: () => void;\n};\n\nexport type SessionLockFailed = {\n type: CheckoutEvents.SessionLockFailed;\n};\nexport type ActivePaymentProductType = {\n type: CheckoutEvents.ActivePaymentProductType;\n payment_product_type: string | undefined;\n};\n\nexport type ValidateSession = {\n type: CheckoutEvents.ValidateSession;\n session: Session;\n callback: (result: SessionValidationCallback) => void;\n};\n\nexport interface SessionValidationCallback {\n success: boolean;\n clientValidationError?: string;\n}\n\nexport type WrappedValidateSession = Pick<ValidateSession, \"type\" | \"session\">;\nexport type WrappedSessionLocked = Pick<SessionLocked, \"type\" | \"pay_lock_id\">;\n\nexport type SessionPayment = SessionPaymentAuthorized | SessionPaymentOnHold;\n\nexport type SessionPaymentError = {\n type: CheckoutEvents.SessionPaymentError;\n error: string;\n href: string;\n};\n\nexport type SessionEvent =\n | SessionNotFound\n | SessionLoaded\n | SessionUpdated\n | SessionCancel\n | SessionPaymentOnHold\n | SessionPaymentAuthorized\n | SessionPaymentError\n | WrappedSessionLocked\n | SessionLockFailed\n | ActivePaymentProductType\n | WrappedValidateSession;\n","import pkg from \"../package.json\";\n\n/**\n * Wraps window.location.assign()\n */\nexport const windowLocationAssign = (url: string) => {\n window.location.assign(url);\n};\n\n/**\n * Get the url for the session./yarn-error.log\n.DS_Store\n */\nexport interface SessionUrlOptions {\n sid: string;\n endpoint: string;\n language: string | undefined;\n ui?: \"fullscreen\" | \"inline\";\n shouldCallValidateSession: boolean;\n}\n\nexport const getSessionUrl = (options: SessionUrlOptions): string => {\n const { sid, endpoint, language, ui, shouldCallValidateSession } = options;\n if (!endpoint) {\n throw new Error(\"Invalid endpoint\");\n }\n\n // Compose url for view session endpoint with optional language parameter.\n let languageParam = language ? `language=${language}` : \"\";\n let uiParam = ui ? `ui=${ui}` : \"\";\n let sdk = `sdk=${pkg.version}`;\n let validate = shouldCallValidateSession ? `client_side_validation=true` : undefined;\n const params = [languageParam, uiParam, sdk, validate].filter(x => x).join(\"&\");\n return `${endpoint}/v1/view/${sid}${params ? \"?\" + params : \"\"}`;\n};\n","import \"native-promise-only\";\n\nimport pkg from \"../package.json\";\nimport {\n CheckoutEvents,\n InternalCheckoutEvents,\n SessionNotFound,\n SessionLoaded,\n SessionUpdated,\n SessionCancel,\n SessionPaymentOnHold,\n SessionPaymentAuthorized,\n SessionPaymentError,\n SessionLocked,\n SessionLockFailed,\n ActivePaymentProductType,\n ValidateSession,\n SessionValidationCallback,\n} from \"./checkout\";\nimport { getSessionUrl, windowLocationAssign } from \"./url\";\nimport { createIframeAsync } from \"./createIframeAsync\";\nimport {\n subscribe,\n SubscriptionHandler,\n Subscription,\n postSessionLock,\n postSessionRefresh,\n postActivePaymentProductType,\n postValidationResult,\n} from \"./subscribe\";\n\nexport interface DinteroCheckoutInstance {\n /**\n * Remove iframe and all event listeners.\n */\n destroy: () => void;\n iframe: HTMLIFrameElement;\n language: string;\n lockSession: () => void;\n refreshSession: () => void;\n setActivePaymentProductType: (paymentProductType: string) => void;\n submitValidationResult: (result: SessionValidationCallback) => void;\n}\n\nexport interface DinteroCheckoutOptions {\n sid: string;\n endpoint?: string;\n language?: string;\n}\n\nexport interface DinteroEmbedCheckoutOptions extends DinteroCheckoutOptions {\n container: HTMLDivElement;\n onPayment?: (\n event: SessionPaymentAuthorized | SessionPaymentOnHold,\n checkout: DinteroCheckoutInstance\n ) => void;\n /**\n * @deprecated Since version 0.0.1. Will be deleted in version 1.0.0. Use onPayment instead.\n */\n onPaymentAuthorized?: (\n event: SessionPaymentAuthorized,\n checkout: DinteroCheckoutInstance\n ) => void;\n onSession?: (\n event: SessionLoaded | SessionUpdated,\n checkout: DinteroCheckoutInstance\n ) => void;\n onPaymentError?: (\n event: SessionPaymentError,\n checkout: DinteroCheckoutInstance\n ) => void;\n onSessionCancel?: (\n event: SessionCancel,\n checkout: DinteroCheckoutInstance\n ) => void;\n onSessionNotFound?: (\n event: SessionNotFound,\n checkout: DinteroCheckoutInstance\n ) => void;\n onSessionLocked?: (\n event: SessionLocked,\n checkout: DinteroCheckoutInstance,\n callback: () => void,\n ) => void;\n onSessionLockFailed?: (\n event: SessionLockFailed,\n checkout: DinteroCheckoutInstance\n ) => void;\n onActivePaymentType?: (\n event: ActivePaymentProductType,\n checkout: DinteroCheckoutInstance\n ) => void;\n onValidateSession?: (\n event: ValidateSession,\n checkout: DinteroCheckoutInstance,\n callback: (result: SessionValidationCallback) => void,\n ) => void;\n}\n\n/**\n * An event handler that navigates to the href in the event.\n */\nconst followHref: SubscriptionHandler = (event: any): void => {\n if (event.href) {\n windowLocationAssign(event.href);\n }\n};\n\n/**\n * An event handler that sets height of the iframe.\n */\nconst setIframeHeight: SubscriptionHandler = (event: any, checkout): void => {\n if (event.height || event.height === 0) {\n checkout.iframe.setAttribute(\n \"style\",\n `width:100%; height:${event.height}px;`\n );\n }\n};\nconst setLanguage: SubscriptionHandler = (event: any, checkout): void => {\n if (event.language) {\n checkout.language = event.language;\n }\n};\n\nconst handleWithResult = (\n sid: string,\n endpoint: string,\n handler: SubscriptionHandler\n): SubscriptionHandler => {\n return (event: any, checkout: DinteroCheckoutInstance) => {\n const eventKeys = [\n \"sid\",\n \"merchant_reference\",\n \"transaction_id\",\n \"error\",\n ];\n const pairs = eventKeys.map((key) => [key, event[key]]);\n if (event.type === CheckoutEvents.SessionCancel && !event.error) {\n pairs.push([\"error\", \"cancelled\"]);\n }\n pairs.push([\"language\", checkout.language]);\n pairs.push([\"sdk\", pkg.version]);\n const urlQuery = pairs\n .filter(([key, value]) => value)\n .map(([key, value]) => `${key}=${value}`)\n .join(\"&\");\n checkout.iframe.setAttribute(\n \"src\",\n `${endpoint}/embedResult/?${urlQuery}`\n );\n handler(event, checkout);\n };\n};\n\n/**\n * Show a dintero payment session in an embedded iframe.\n */\nexport const embed = async (\n options: DinteroEmbedCheckoutOptions\n): Promise<DinteroCheckoutInstance> => {\n const {\n container,\n sid,\n language,\n endpoint = \"https://checkout.dintero.com\",\n onSession,\n onSessionCancel,\n onPayment,\n onPaymentAuthorized,\n onPaymentError,\n onSessionNotFound,\n onSessionLocked,\n onSessionLockFailed,\n onActivePaymentType,\n onValidateSession,\n } = options;\n const subscriptions: Subscription[] = [];\n\n // Create iframe\n const { iframe, initiate } = createIframeAsync(\n container,\n endpoint,\n getSessionUrl({\n sid,\n endpoint,\n language,\n ui: \"inline\",\n shouldCallValidateSession: onValidateSession !== undefined\n }),\n );\n\n /**\n * Function that removes the iframe and all event listeners.\n */\n const destroy = () => {\n if (iframe) {\n subscriptions.forEach((sub) => sub.unsubscribe());\n if (iframe.parentElement) {\n container.removeChild(iframe);\n }\n }\n };\n\n const lockSession = () => {\n postSessionLock(iframe, sid);\n };\n\n const refreshSession = () => {\n postSessionRefresh(iframe, sid);\n };\n\n const setActivePaymentProductType = (paymentProductType?:string) => {\n postActivePaymentProductType(iframe, sid, paymentProductType);\n };\n\n const submitValidationResult = (result: SessionValidationCallback) => {\n postValidationResult(iframe, sid, result);\n }\n\n const wrappedOnValidateSession = (\n event: ValidateSession,\n checkout: DinteroCheckoutInstance,\n ) => {\n if (onValidateSession) {\n onValidateSession(event, checkout, submitValidationResult);\n }\n }\n\n const wrappedOnSessionLocked = (\n event: SessionLocked,\n checkout: DinteroCheckoutInstance,\n ) => {\n if (onSessionLocked) {\n onSessionLocked(event, checkout, refreshSession);\n }\n }\n\n // Create checkout object that wraps the destroy function.\n const checkout: DinteroCheckoutInstance = {\n destroy,\n iframe,\n language,\n lockSession,\n refreshSession,\n setActivePaymentProductType,\n submitValidationResult,\n };\n\n // Add event handlers (or in some cases add a fallback href handler).\n [\n {\n handler: setLanguage,\n eventTypes: [InternalCheckoutEvents.LanguageChanged],\n },\n {\n handler: setIframeHeight,\n eventTypes: [InternalCheckoutEvents.HeightChanged],\n },\n {\n handler: onSession as SubscriptionHandler | undefined,\n eventTypes: [\n CheckoutEvents.SessionLoaded,\n CheckoutEvents.SessionUpdated,\n ],\n },\n {\n eventTypes: [CheckoutEvents.SessionPaymentOnHold],\n handler: onPayment\n ? handleWithResult(sid, endpoint, onPayment)\n : followHref,\n },\n {\n eventTypes: [CheckoutEvents.SessionPaymentAuthorized],\n handler:\n onPaymentAuthorized || onPayment\n ? handleWithResult(\n sid,\n endpoint,\n onPaymentAuthorized || onPayment\n )\n : followHref,\n },\n {\n handler: onSessionCancel\n ? handleWithResult(sid, endpoint, onSessionCancel)\n : followHref,\n eventTypes: [CheckoutEvents.SessionCancel],\n },\n {\n handler: onPaymentError\n ? handleWithResult(sid, endpoint, onPaymentError)\n : followHref,\n eventTypes: [CheckoutEvents.SessionPaymentError],\n },\n {\n handler: onSessionNotFound as SubscriptionHandler | undefined,\n eventTypes: [CheckoutEvents.SessionNotFound],\n },\n {\n handler: wrappedOnSessionLocked as SubscriptionHandler | undefined,\n eventTypes: [CheckoutEvents.SessionLocked],\n },\n {\n handler: onSessionLockFailed as SubscriptionHandler | undefined,\n eventTypes: [CheckoutEvents.SessionLockFailed],\n },\n {\n handler: onActivePaymentType as SubscriptionHandler | undefined,\n eventTypes: [CheckoutEvents.ActivePaymentProductType],\n },\n {\n handler: onActivePaymentType as SubscriptionHandler | undefined,\n eventTypes: [CheckoutEvents.ActivePaymentProductType],\n },\n {\n handler: wrappedOnValidateSession as SubscriptionHandler | undefined,\n eventTypes: [CheckoutEvents.ValidateSession],\n },\n ].forEach(({ handler, eventTypes }) => {\n if (handler) {\n subscriptions.push(\n subscribe({\n sid,\n endpoint,\n handler,\n eventTypes,\n checkout,\n })\n );\n }\n });\n\n // Add iframe to DOM\n await initiate();\n // Return object with function to destroy the checkout.\n return checkout;\n};\n\n/**\n * Redirect the customer to a payment session in the Dintero Checkout.\n */\nexport const redirect = (options: DinteroCheckoutOptions) => {\n const {\n sid,\n language,\n endpoint = \"https://checkout.dintero.com\",\n } = options;\n // Redirect the current browser window to the checkout session url.\n windowLocationAssign(getSessionUrl({ sid, endpoint, language, shouldCallValidateSession: false }));\n};\n","/**\n * Creates an iframe and adds it to the container.\n *\n * Returns a promise that resolves to the iframe when the iframe has loaded.\n * Rejects the promise if there is a problem loading the iframe.\n */\nexport const createIframeAsync = (\n container: HTMLDivElement,\n endpoint: string,\n url: string\n): { iframe: HTMLIFrameElement; initiate: () => void } => {\n if (!container || !container.appendChild) {\n throw new Error(\"Invalid container\");\n }\n const iframe = document.createElement(\"iframe\");\n\n // No border, transparent and stretch to 100% of the container width.\n iframe.setAttribute(\"frameborder\", \"0\");\n iframe.setAttribute(\"allowTransparency\", \"true\");\n iframe.setAttribute(\"style\", \"width:100%; height:0;\");\n\n // TODO: Get this to work as expected, might be tricky with current\n // tests since they will require the csp to be \"unsafe-inline\".\n // The server needs to add the same property in the Content Security\n // Policy headers in the response for this to work. A CSP header set by\n // a meta tag in the iframe target will not be detected as a valid\n // CSP from the iframe host.\n // Content Security Policy, should be limited to \"endpoint\".\n // iframe.setAttribute(\"csp\", `default-src ${endpoint}`);\n\n // Apply extra restrictions to the content in the iframe.\n // allow popups is needed to open terms in new window\n iframe.setAttribute(\n \"sandbox\",\n \"allow-scripts allow-forms allow-same-origin allow-popups\"\n );\n\n // The download priority of the resource in the <iframe>'s src attribute.\n iframe.setAttribute(\"importance\", \"high\");\n\n // Set the iframe source to the url.\n iframe.setAttribute(\"src\", url);\n\n // Resolve or reject promise when iframe loads.\n\n // // Add iframe to the container.\n // container.appendChild(iframe);\n return {\n iframe,\n initiate: async () => {\n return new Promise<void>((resolve, reject) => {\n iframe.onload = () => resolve();\n iframe.onerror = () => reject();\n container.appendChild(iframe);\n });\n },\n };\n};\n","import {\n CheckoutEvents,\n InternalCheckoutEvents,\n SessionEvent,\n SessionValidationCallback,\n} from \"./checkout\";\nimport { DinteroCheckoutInstance } from \".\";\n\n/**\n * Unsubscribe handler from event(s).\n */\nexport type SubscriptionHandler = (\n sessionEvent: SessionEvent,\n checkout: DinteroCheckoutInstance\n) => void;\n\ninterface SubscriptionOptions {\n sid: string;\n endpoint: string;\n handler: SubscriptionHandler;\n eventTypes: (CheckoutEvents | InternalCheckoutEvents)[];\n checkout: DinteroCheckoutInstance;\n}\n\nexport type Subscription = {\n /**\n * Unsubscribe handler from event(s).\n */\n unsubscribe: () => void;\n};\n\n/**\n * Post a message acknowledgement to the checkout iframe.\n */\nconst postAck = (iframe: HTMLIFrameElement, event: MessageEvent) => {\n if (event.data.mid && iframe.contentWindow) {\n iframe.contentWindow.postMessage(\n { ack: event.data.mid },\n event.origin || \"*\"\n );\n }\n};\n\n/**\n * Post a SessionLock-event to the checkout iframe.\n */\nexport const postSessionLock = (iframe: HTMLIFrameElement, sid: string) => {\n if (iframe.contentWindow) {\n iframe.contentWindow.postMessage({ type: \"LockSession\", sid }, \"*\");\n }\n};\n\n/**\n * Post the validation result to the checkout iframe\n */\nexport const postValidationResult = (iframe: HTMLIFrameElement, sid: string, result: SessionValidationCallback) => {\n if (iframe.contentWindow) {\n iframe.contentWindow.postMessage({ type: \"ValidationResult\", sid, ...result }, \"*\");\n }\n};\n\n/**\n * Post RefreshSession-event to the checkout iframe.\n */\nexport const postSessionRefresh = (iframe: HTMLIFrameElement, sid: string) => {\n if (iframe.contentWindow) {\n iframe.contentWindow.postMessage({ type: \"RefreshSession\", sid }, \"*\");\n }\n};\n\n/**\n * Post setActivePaymentProductType-event to the checkout iframe.\n */\nexport const postActivePaymentProductType = (iframe: HTMLIFrameElement, sid: string, paymentProductType?: string) => {\n if (iframe.contentWindow) {\n iframe.contentWindow.postMessage(\n { type: \"SetActivePaymentProductType\", sid, payment_product_type:paymentProductType },\n \"*\"\n );\n }\n};\n\n/**\n * Subscribe to events from an iframe given a handler and a set\n * of event types.\n */\nexport const subscribe = (options: SubscriptionOptions): Subscription => {\n const { sid, endpoint, handler, eventTypes, checkout } = options;\n\n // Wrap event handler in a function that checks for correct origin and\n // filters on event type(s) in the event data.\n const wrappedHandler = (event: MessageEvent) => {\n const correctOrigin = event.origin === endpoint;\n const correctWindow = event.source === checkout.iframe.contentWindow;\n const correctSid = event.data && event.data.sid === sid;\n const correctMessageType =\n eventTypes.indexOf(event.data && event.data.type) !== -1;\n if (\n correctOrigin &&\n correctWindow &&\n correctSid &&\n correctMessageType\n ) {\n postAck(checkout.iframe, event);\n handler(event.data, checkout);\n }\n };\n\n // Add event listener to the iframe.\n window.addEventListener(\"message\", wrappedHandler as any, false);\n\n // Function to remove the event listener from the iframe.\n const unsubscribe = () => {\n window.removeEventListener(\"message\", wrappedHandler as any, false);\n };\n\n // Return object with unsubscribe function.\n return {\n unsubscribe,\n };\n};\n"],"names":["name","context","definition","builtInProp","cycle","scheduling_queue","ToString","Object","prototype","toString","timer","setImmediate","fn","setTimeout","defineProperty","obj","val","config","value","writable","configurable","err","schedule","self","add","drain","isThenable","o","_then","o_type","then","notify","i","this","chain","length","notifyIsolated","state","success","failure","cb","ret","reject","msg","call","promise","TypeError","resolve","triggered","def","def_wrapper","MakeDefWrapper","apply","arguments","iteratePromises","Constructor","arr","resolver","rejecter","idx","MakeDef","Promise","executor","__NPO__","constructor","push","first","last","item","Item","next","f","PromisePrototype","len","msgs","Array","count","global","module","exports","CheckoutEvents","InternalCheckoutEvents","windowLocationAssign","url","window","location","assign","getSessionUrl","options","sid","endpoint","language","ui","shouldCallValidateSession","Error","params","pkg","undefined","filter","x","join","followHref","event","href","setIframeHeight","checkout","height","iframe","setAttribute","setLanguage","handleWithResult","handler","pairs","map","key","type","SessionCancel","error","urlQuery","async","container","onSession","onSessionCancel","onPayment","onPaymentAuthorized","onPaymentError","onSessionNotFound","onSessionLocked","onSessionLockFailed","onActivePaymentType","onValidateSession","subscriptions","initiate","appendChild","document","createElement","onload","onerror","createIframeAsync","refreshSession","contentWindow","postMessage","postSessionRefresh","submitValidationResult","result","postValidationResult","destroy","forEach","sub","unsubscribe","parentElement","removeChild","lockSession","postSessionLock","setActivePaymentProductType","paymentProductType","payment_product_type","postActivePaymentProductType","eventTypes","LanguageChanged","HeightChanged","SessionLoaded","SessionUpdated","SessionPaymentOnHold","SessionPaymentAuthorized","SessionPaymentError","SessionNotFound","SessionLocked","SessionLockFailed","ActivePaymentProductType","ValidateSession","wrappedHandler","correctOrigin","origin","correctWindow","source","correctSid","data","correctMessageType","indexOf","mid","ack","postAck","addEventListener","removeEventListener","subscribe"],"mappings":";;;;;AAKA,IAAcA,EAAKC,EAAQC,EAAAA,EAK+B,WAIzD,IAAIC,EAAaC,EAAOC,EACvBC,EAAWC,OAAOC,UAAUC,SAC5BC,EAAgC,oBAAhBC,aACf,SAAeC,GAAM,OAAOD,aAAaC,IACzCC,WAIF,IACCN,OAAOO,eAAe,GAAG,IAAI,IAC7BX,EAAc,SAAqBY,EAAIf,EAAKgB,EAAIC,GAC/C,OAAOV,OAAOO,eAAeC,EAAIf,EAAK,CACrCkB,MAAOF,EACPG,UAAU,EACVC,cAAyB,IAAXH,KAIjB,MAAOI,GACNlB,EAAc,SAAqBY,EAAIf,EAAKgB,GAE3C,OADAD,EAAIf,GAAQgB,EACLD,GAsCT,SAASO,EAASV,EAAGW,GACpBlB,EAAiBmB,IAAIZ,EAAGW,GACnBnB,IACJA,EAAQM,EAAML,EAAiBoB,QAKjC,SAASC,EAAWC,GACnB,IAAIC,EAAOC,SAAgBF,EAS3B,OAPS,MAALA,GAEQ,UAAVE,GAAgC,YAAVA,IAGvBD,EAAQD,EAAEG,MAEY,mBAATF,GAAsBA,EAGrC,SAASG,IACR,IAAK,IAAIC,EAAE,EAAGA,EAAEC,KAAKC,MAAMC,OAAQH,IAClCI,EACCH,KACgB,IAAfA,KAAKI,MAAeJ,KAAKC,MAAMF,GAAGM,QAAUL,KAAKC,MAAMF,GAAGO,QAC3DN,KAAKC,MAAMF,IAGbC,KAAKC,MAAMC,OAAS,EAMrB,SAASC,EAAeb,EAAKiB,EAAGN,GAC/B,IAAIO,EAAKb,EACT,KACY,IAAPY,EACHN,EAAMQ,OAAOnB,EAAKoB,MAIjBF,GADU,IAAPD,EACGjB,EAAKoB,IAGLH,EAAGI,UAAK,EAAOrB,EAAKoB,QAGfT,EAAMW,QACjBX,EAAMQ,OAAOI,UAAU,yBAEflB,EAAQF,EAAWe,IAC3Bb,EAAMgB,KAAKH,EAAIP,EAAMa,QAAQb,EAAMQ,QAGnCR,EAAMa,QAAQN,GAIjB,MAAOpB,GACNa,EAAMQ,OAAOrB,IAIf,SAAS0B,EAAQJ,GAChB,IAAIf,EAAOL,EAAOU,KAGlB,IAAIV,EAAKyB,UAAT,CAEAzB,EAAKyB,WAAY,EAGbzB,EAAK0B,MACR1B,EAAOA,EAAK0B,KAGb,KACKrB,EAAQF,EAAWiB,IACtBrB,GAAS,WACR,IAAI4B,EAAc,IAAIC,EAAe5B,GACrC,IACCK,EAAMgB,KAAKD,GACV,WAAsBI,EAAQK,MAAMF,EAAYG,cAChD,WAAqBX,EAAOU,MAAMF,EAAYG,cAGhD,MAAOhC,GACNqB,EAAOE,KAAKM,EAAY7B,QAK1BE,EAAKoB,IAAMA,EACXpB,EAAKc,MAAQ,EACTd,EAAKW,MAAMC,OAAS,GACvBb,EAASS,EAAOR,IAInB,MAAOF,GACNqB,EAAOE,KAAK,IAAIO,EAAe5B,GAAMF,KAIvC,SAASqB,EAAOC,GACf,IAAIpB,EAAOU,KAGPV,EAAKyB,YAETzB,EAAKyB,WAAY,EAGbzB,EAAK0B,MACR1B,EAAOA,EAAK0B,KAGb1B,EAAKoB,IAAMA,EACXpB,EAAKc,MAAQ,EACTd,EAAKW,MAAMC,OAAS,GACvBb,EAASS,EAAOR,IAIlB,SAAS+B,EAAgBC,EAAYC,EAAIC,EAASC,GACjD,IAAK,IAAIC,EAAI,EAAGA,EAAIH,EAAIrB,OAAQwB,KAC/B,SAAeA,GACdJ,EAAYR,QAAQS,EAAIG,IACvB7B,MACA,SAAoBa,GACnBc,EAASE,EAAIhB,KAEde,GANF,CAQGC,GAIL,SAASR,EAAe5B,GACvBU,KAAKgB,IAAM1B,EACXU,KAAKe,WAAY,EAGlB,SAASY,EAAQrC,GAChBU,KAAKY,QAAUtB,EACfU,KAAKI,MAAQ,EACbJ,KAAKe,WAAY,EACjBf,KAAKC,MAAQ,GACbD,KAAKU,SAAM,EAGZ,SAASkB,EAAQC,GAChB,GAAuB,mBAAZA,EACV,MAAMhB,UAAU,kBAGjB,GAAqB,IAAjBb,KAAK8B,QACR,MAAMjB,UAAU,iBAKjBb,KAAK8B,QAAU,EAEf,IAAId,EAAM,IAAIW,EAAQ3B,MAEtBA,KAAW,KAAI,SAAcK,EAAQC,GACpC,IAAIZ,EAAI,CACPW,QAA2B,mBAAXA,GAAwBA,EACxCC,QAA2B,mBAAXA,GAAwBA,GAmBzC,OAdAZ,EAAEkB,QAAU,IAAIZ,KAAK+B,aAAY,SAAsBjB,EAAQL,GAC9D,GAAsB,mBAAXK,GAA0C,mBAAVL,EAC1C,MAAMI,UAAU,kBAGjBnB,EAAEoB,QAAUA,EACZpB,EAAEe,OAASA,KAEZO,EAAIf,MAAM+B,KAAKtC,GAEG,IAAdsB,EAAIZ,OACPf,EAASS,EAAOkB,GAGVtB,EAAEkB,SAEVZ,KAAY,MAAI,SAAiBM,GAChC,OAAON,KAAKH,UAAK,EAAOS,IAGzB,IACCuB,EAASlB,UACR,GACA,SAAuBD,GACtBI,EAAQH,KAAKK,EAAIN,MAElB,SAAsBA,GACrBD,EAAOE,KAAKK,EAAIN,MAInB,MAAOtB,GACNqB,EAAOE,KAAKK,EAAI5B,IAjPlBhB,EAAmB,WAClB,IAAI6D,EAAOC,EAAMC,EAEjB,SAASC,EAAKzD,EAAGW,GAChBU,KAAKrB,GAAKA,EACVqB,KAAKV,KAAOA,EACZU,KAAKqC,UAAO,EAGb,MAAO,CACN9C,IAAK,SAAaZ,EAAGW,GACpB6C,EAAO,IAAIC,EAAKzD,EAAGW,GACf4C,EACHA,EAAKG,KAAOF,EAGZF,EAAQE,EAETD,EAAOC,EACPA,OAAO,GAER3C,MAAO,WACN,IAAI8C,EAAIL,EAGR,IAFAA,EAAQC,EAAO/D,OAAQ,EAEhBmE,GACNA,EAAE3D,GAAGgC,KAAK2B,EAAEhD,MACZgD,EAAIA,EAAED,OA3BS,GAqPnB,IAAIE,EAAmBrE,EAAY,GAAG,cAAc0D,GAClC,GAqFlB,OAjFAA,EAAQrD,UAAYgE,EAGpBrE,EAAYqE,EAAiB,UAAU,GACrB,GAGlBrE,EAAY0D,EAAQ,WAAU,SAAyBlB,GAKtD,OAAIA,GAAqB,iBAAPA,GAAmC,IAAhBA,EAAIoB,QACjCpB,EAGD,IARWV,MAQK,SAAkBc,EAAQL,GAChD,GAAsB,mBAAXK,GAA0C,mBAAVL,EAC1C,MAAMI,UAAU,kBAGjBC,EAAQJ,SAIVxC,EAAY0D,EAAQ,UAAS,SAAwBlB,GACpD,OAAO,IAAIV,MAAK,SAAkBc,EAAQL,GACzC,GAAsB,mBAAXK,GAA0C,mBAAVL,EAC1C,MAAMI,UAAU,kBAGjBJ,EAAOC,SAITxC,EAAY0D,EAAQ,OAAM,SAAqBL,GAC9C,IAAID,EAActB,KAGlB,MAA0B,kBAAtB3B,EAASsC,KAAKY,GACVD,EAAYb,OAAOI,UAAU,iBAElB,IAAfU,EAAIrB,OACAoB,EAAYR,QAAQ,IAGrB,IAAIQ,GAAY,SAAkBR,EAAQL,GAChD,GAAsB,mBAAXK,GAA0C,mBAAVL,EAC1C,MAAMI,UAAU,kBAGjB,IAAI2B,EAAMjB,EAAIrB,OAAQuC,EAAOC,MAAMF,GAAMG,EAAQ,EAEjDtB,EAAgBC,EAAYC,GAAI,SAAkBG,EAAIhB,GACrD+B,EAAKf,GAAOhB,IACNiC,IAAUH,GACf1B,EAAQ2B,KAERhC,SAIJvC,EAAY0D,EAAQ,QAAO,SAAsBL,GAChD,IAAID,EAActB,KAGlB,MAA0B,kBAAtB3B,EAASsC,KAAKY,GACVD,EAAYb,OAAOI,UAAU,iBAG9B,IAAIS,GAAY,SAAkBR,EAAQL,GAChD,GAAsB,mBAAXK,GAA0C,mBAAVL,EAC1C,MAAMI,UAAU,kBAGjBQ,EAAgBC,EAAYC,GAAI,SAAkBG,EAAIhB,GACrDI,EAAQJ,KACPD,SAIGmB,IA9WW5D,EAKyB4E,GAL9B7E,EAKX,WAHcC,EAAQD,IAASE,IACG4E,EAAOC,UAAWD,UAAiB7E,EAAQD,qCCNpEgF,EAaAC,YAbAD,GAAAA,oCAAAA,gCAAAA,kCAAAA,gCAAAA,8CAAAA,sDAAAA,4CAAAA,gCAAAA,wCAAAA,sDAAAA,qCAAAA,IAAAA,gBAaAC,GAAAA,gCAAAA,qCAAAA,IAAAA,OCVL,MAAMC,EAAwBC,IACjCC,OAAOC,SAASC,OAAOH,IAedI,EAAiBC,UACpBC,IAAEA,EAAFC,SAAOA,EAAPC,SAAiBA,EAAjBC,GAA2BA,EAA3BC,0BAA+BA,GAA8BL,MAC9DE,QACK,IAAII,MAAM,0BAQdC,EAAS,CAJKJ,EAAY,YAAWA,IAAa,GAC1CC,EAAM,MAAKA,IAAO,GACrB,OAAMI,IACFH,EAA6B,mCAA+BI,GACpBC,QAAOC,GAAKA,IAAGC,KAAK,WACnE,GAAEV,aAAoBD,IAAMM,EAAS,IAAMA,EAAS,MCqE1DM,EAAmCC,IACjCA,EAAMC,MACNrB,EAAqBoB,EAAMC,OAO7BC,EAAuC,CAACF,EAAYG,MAClDH,EAAMI,QAA2B,IAAjBJ,EAAMI,SACtBD,EAASE,OAAOC,aACZ,QACC,sBAAqBN,EAAMI,cAIlCG,EAAmC,CAACP,EAAYG,KAC9CH,EAAMX,WACNc,EAASd,SAAWW,EAAMX,WAI5BmB,EAAmB,CACrBrB,EACAC,EACAqB,IAEO,CAACT,EAAYG,WAOVO,EANY,CACd,MACA,qBACA,iBACA,SAEoBC,KAAKC,GAAQ,CAACA,EAAKZ,EAAMY,MAC7CZ,EAAMa,OAASnC,EAAeoC,eAAkBd,EAAMe,OACtDL,EAAM/C,KAAK,CAAC,QAAS,cAEzB+C,EAAM/C,KAAK,CAAC,WAAYwC,EAASd,WACjCqB,EAAM/C,KAAK,CAAC,MAAO+B,UACbsB,EAAWN,EACZd,QAAO,EAAEgB,EAAKhG,KAAWA,IACzB+F,KAAI,EAAEC,EAAKhG,KAAY,GAAEgG,KAAOhG,MAChCkF,KAAK,KACVK,EAASE,OAAOC,aACZ,MACC,GAAElB,kBAAyB4B,KAEhCP,EAAQT,EAAOG,YAOFc,MAAAA,UAGXC,UACFA,EADE/B,IAEFA,EAFEE,SAGFA,EAHED,SAIFA,EAAW,+BAJT+B,UAKFA,EALEC,gBAMFA,EANEC,UAOFA,EAPEC,oBAQFA,EAREC,eASFA,EATEC,kBAUFA,EAVEC,gBAWFA,EAXEC,oBAYFA,EAZEC,oBAaFA,EAbEC,kBAcFA,GACA1C,EACE2C,EAAgC,IAGhCxB,OAAEA,EAAFyB,SAAUA,GC9Ka,EAC7BZ,EACA9B,EACAP,SAEKqC,IAAcA,EAAUa,kBACnB,IAAIvC,MAAM,2BAEda,EAAS2B,SAASC,cAAc,iBAGtC5B,EAAOC,aAAa,cAAe,KACnCD,EAAOC,aAAa,oBAAqB,QACzCD,EAAOC,aAAa,QAAS,yBAa7BD,EAAOC,aACH,UACA,4DAIJD,EAAOC,aAAa,aAAc,QAGlCD,EAAOC,aAAa,MAAOzB,GAMpB,CACHwB,OAAAA,EACAyB,SAAUb,SACC,IAAI1D,SAAc,CAACd,EAASL,KAC/BiE,EAAO6B,OAAS,IAAMzF,IACtB4D,EAAO8B,QAAU,IAAM/F,IACvB8E,EAAUa,YAAY1B,QD+HL+B,CACzBlB,EACA9B,EACAH,EAAc,CACVE,IAAAA,EACAC,SAAAA,EACAC,SAAAA,EACAC,GAAI,SACJC,+BAAiDI,IAAtBiC,KAoB7BS,EAAiB,KEhJO,EAAChC,EAA2BlB,KACtDkB,EAAOiC,eACPjC,EAAOiC,cAAcC,YAAY,CAAE1B,KAAM,iBAAkB1B,IAAAA,GAAO,MF+IlEqD,CAAmBnC,EAAQlB,IAOzBsD,EAA0BC,IEjKA,EAACrC,EAA2BlB,EAAauD,KACrErC,EAAOiC,eACPjC,EAAOiC,cAAcC,YAAY,CAAE1B,KAAM,mBAAoB1B,IAAAA,KAAQuD,GAAU,MFgK/EC,CAAqBtC,EAAQlB,EAAKuD,IAsBhCvC,EAAoC,CACtCyC,QA7CY,KACRvC,IACAwB,EAAcgB,SAASC,GAAQA,EAAIC,gBAC/B1C,EAAO2C,eACP9B,EAAU+B,YAAY5C,KA0C9BA,OAAAA,EACAhB,SAAAA,EACA6D,YAvCgB,KE9JO,EAAC7C,EAA2BlB,KACnDkB,EAAOiC,eACPjC,EAAOiC,cAAcC,YAAY,CAAE1B,KAAM,cAAe1B,IAAAA,GAAO,MF6J/DgE,CAAgB9C,EAAQlB,IAuCxBkD,eAAAA,EACAe,4BAjCiCC,IE3IG,EAAChD,EAA2BlB,EAAakE,KAC7EhD,EAAOiC,eACPjC,EAAOiC,cAAcC,YACjB,CAAE1B,KAAM,8BAA+B1B,IAAAA,EAAKmE,qBAAqBD,GACjE,MFwIJE,CAA6BlD,EAAQlB,EAAKkE,IAiC1CZ,uBAAAA,UAKA,CACIhC,QAASF,EACTiD,WAAY,CAAC7E,EAAuB8E,kBAExC,CACIhD,QAASP,EACTsD,WAAY,CAAC7E,EAAuB+E,gBAExC,CACIjD,QAASU,EACTqC,WAAY,CACR9E,EAAeiF,cACfjF,EAAekF,iBAGvB,CACIJ,WAAY,CAAC9E,EAAemF,sBAC5BpD,QAASY,EACHb,EAAiBrB,EAAKC,EAAUiC,GAChCtB,GAEV,CACIyD,WAAY,CAAC9E,EAAeoF,0BAC5BrD,QACIa,GAAuBD,EACjBb,EACIrB,EACAC,EACAkC,GAAuBD,GAE3BtB,GAEd,CACIU,QAASW,EACHZ,EAAiBrB,EAAKC,EAAUgC,GAChCrB,EACNyD,WAAY,CAAC9E,EAAeoC,gBAEhC,CACIL,QAASc,EACHf,EAAiBrB,EAAKC,EAAUmC,GAChCxB,EACNyD,WAAY,CAAC9E,EAAeqF,sBAEhC,CACItD,QAASe,EACTgC,WAAY,CAAC9E,EAAesF,kBAEhC,CACIvD,QAvEuB,CAC3BT,EACAG,KAEIsB,GACAA,EAAgBzB,EAAOG,EAAUkC,IAmEjCmB,WAAY,CAAC9E,EAAeuF,gBAEhC,CACIxD,QAASiB,EACT8B,WAAY,CAAC9E,EAAewF,oBAEhC,CACIzD,QAASkB,EACT6B,WAAY,CAAC9E,EAAeyF,2BAEhC,CACI1D,QAASkB,EACT6B,WAAY,CAAC9E,EAAeyF,2BAEhC,CACI1D,QAhGyB,CAC7BT,EACAG,KAEIyB,GACAA,EAAkB5B,EAAOG,EAAUsC,IA4FnCe,WAAY,CAAC9E,EAAe0F,mBAElCvB,SAAQ,EAAGpC,QAAAA,EAAS+C,WAAAA,MACd/C,GACAoB,EAAclE,KE3OAuB,CAAAA,UAChBC,IAAEA,EAAFC,SAAOA,EAAPqB,QAAiBA,EAAjB+C,WAA0BA,EAA1BrD,SAAsCA,GAAajB,EAInDmF,EAAkBrE,UACdsE,EAAgBtE,EAAMuE,SAAWnF,EACjCoF,EAAgBxE,EAAMyE,SAAWtE,EAASE,OAAOiC,cACjDoC,EAAa1E,EAAM2E,MAAQ3E,EAAM2E,KAAKxF,MAAQA,EAC9CyF,GACqD,IAAvDpB,EAAWqB,QAAQ7E,EAAM2E,MAAQ3E,EAAM2E,KAAK9D,MAE5CyD,GACAE,GACAE,GACAE,IAnEI,EAACvE,EAA2BL,KACpCA,EAAM2E,KAAKG,KAAOzE,EAAOiC,eACzBjC,EAAOiC,cAAcC,YACjB,CAAEwC,IAAK/E,EAAM2E,KAAKG,KAClB9E,EAAMuE,QAAU,MAiEhBS,CAAQ7E,EAASE,OAAQL,GACzBS,EAAQT,EAAM2E,KAAMxE,YAK5BrB,OAAOmG,iBAAiB,UAAWZ,GAAuB,GAQnD,CACHtB,YANgB,KAChBjE,OAAOoG,oBAAoB,UAAWb,GAAuB,MFiNrDc,CAAU,CACNhG,IAAAA,EACAC,SAAAA,EACAqB,QAAAA,EACA+C,WAAAA,EACArD,SAAAA,cAOV2B,IAEC3B,cAMcjB,UACfC,IACFA,EADEE,SAEFA,EAFED,SAGFA,EAAW,gCACXF,EAEJN,EAAqBK,EAAc,CAAEE,IAAAA,EAAKC,SAAAA,EAAUC,SAAAA,EAAUE,2BAA2B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dintero/checkout-web-sdk",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "Dintero Checkout SDK for web frontends",
5
5
  "main": "dist/dintero-checkout-web-sdk.cjs.js",
6
6
  "module": "dist/dintero-checkout-web-sdk.esm.js",