@dintero/checkout-web-sdk 0.0.16 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/.github/dependabot.yml +10 -0
  2. package/.github/workflows/{blank.yml → build.yml} +6 -5
  3. package/.github/workflows/release.yml +33 -0
  4. package/.releaserc.json +11 -0
  5. package/CHANGELOG.md +7 -0
  6. package/README.md +85 -17
  7. package/coverage/{Chrome Headless 80.0.3987.0 (Mac OS 10.15.7) → Chrome Headless 99.0.4844.0 (Linux x86_64)}/html/base.css +0 -0
  8. package/coverage/{Chrome Headless 80.0.3987.0 (Mac OS 10.15.7) → Chrome Headless 99.0.4844.0 (Linux x86_64)}/html/block-navigation.js +0 -0
  9. package/coverage/{Chrome Headless 80.0.3987.0 (Mac OS 10.15.7) → Chrome Headless 99.0.4844.0 (Linux x86_64)}/html/checkout.ts.html +75 -6
  10. package/coverage/{Chrome Headless 80.0.3987.0 (Mac OS 10.15.7) → Chrome Headless 99.0.4844.0 (Linux x86_64)}/html/createIframeAsync.ts.html +15 -15
  11. package/coverage/{Chrome Headless 80.0.3987.0 (Mac OS 10.15.7) → Chrome Headless 99.0.4844.0 (Linux x86_64)}/html/favicon.png +0 -0
  12. package/coverage/{Chrome Headless 80.0.3987.0 (Mac OS 10.15.7) → Chrome Headless 99.0.4844.0 (Linux x86_64)}/html/index.html +40 -40
  13. package/coverage/{Chrome Headless 80.0.3987.0 (Mac OS 10.15.7)/html/checkout-web-sdk.ts.html → Chrome Headless 99.0.4844.0 (Linux x86_64)/html/index.ts.html } +227 -32
  14. package/coverage/{Chrome Headless 80.0.3987.0 (Mac OS 10.15.7) → Chrome Headless 99.0.4844.0 (Linux x86_64)}/html/prettify.css +0 -0
  15. package/coverage/{Chrome Headless 80.0.3987.0 (Mac OS 10.15.7) → Chrome Headless 99.0.4844.0 (Linux x86_64)}/html/prettify.js +0 -0
  16. package/coverage/{Chrome Headless 80.0.3987.0 (Mac OS 10.15.7) → Chrome Headless 99.0.4844.0 (Linux x86_64)}/html/sort-arrow-sprite.png +0 -0
  17. package/coverage/{Chrome Headless 80.0.3987.0 (Mac OS 10.15.7) → Chrome Headless 99.0.4844.0 (Linux x86_64)}/html/sorter.js +0 -0
  18. package/coverage/{Chrome Headless 80.0.3987.0 (Mac OS 10.15.7) → Chrome Headless 99.0.4844.0 (Linux x86_64)}/html/subscribe.ts.html +92 -26
  19. package/coverage/{Chrome Headless 80.0.3987.0 (Mac OS 10.15.7) → Chrome Headless 99.0.4844.0 (Linux x86_64)}/html/url.ts.html +23 -17
  20. package/dist/declarations/src/checkout.d.ts +75 -57
  21. package/dist/declarations/src/createIframeAsync.d.ts +10 -10
  22. package/dist/declarations/src/index.d.ts +43 -39
  23. package/dist/declarations/src/subscribe.d.ts +41 -33
  24. package/dist/declarations/src/url.d.ts +16 -15
  25. package/dist/dintero-checkout-web-sdk.cjs.dev.js +84 -16
  26. package/dist/dintero-checkout-web-sdk.cjs.prod.js +84 -16
  27. package/dist/dintero-checkout-web-sdk.esm.js +84 -16
  28. package/dist/dintero-checkout-web-sdk.umd.min.js +1 -1
  29. package/dist/dintero-checkout-web-sdk.umd.min.js.map +1 -1
  30. package/package.json +49 -46
  31. package/coverage/Chrome Headless 80.0.3987.0 (Mac OS 10.15.7)/html/dintero-checkout-web-sdk.ts.html +0 -908
  32. package/coverage/Chrome Headless 80.0.3987.0 (Mac OS 10.15.7)/html/index.ts.html +0 -908
  33. package/dist/declarations/package.d.ts +0 -49
@@ -2,7 +2,7 @@ import 'native-promise-only';
2
2
 
3
3
  var pkg = {
4
4
  name: "@dintero/checkout-web-sdk",
5
- version: "0.0.16",
5
+ version: "0.3.1",
6
6
  description: "Dintero Checkout SDK for web frontends",
7
7
  main: "dist/dintero-checkout-web-sdk.cjs.js",
8
8
  module: "dist/dintero-checkout-web-sdk.esm.js",
@@ -14,12 +14,14 @@ var pkg = {
14
14
  },
15
15
  scripts: {
16
16
  build: "preconstruct build",
17
- test: "karma start"
17
+ test: "karma start",
18
+ "semantic-release": "semantic-release",
19
+ prepublishOnly: "npm run build"
18
20
  },
19
21
  "private": false,
20
22
  repository: {
21
23
  type: "git",
22
- url: "git+https://github.com/Dintero/Dintero.Checkout.Web.SDK.git"
24
+ url: "https://github.com/Dintero/Dintero.Checkout.Web.SDK.git"
23
25
  },
24
26
  homepage: "https://github.com/Dintero/Dintero.Checkout.Web.SDK#readme",
25
27
  author: "Sven Nicolai Viig <sven@dintero.com> (http://dintero.com)",
@@ -30,18 +32,19 @@ var pkg = {
30
32
  devDependencies: {
31
33
  "@babel/preset-env": "^7.14.1",
32
34
  "@babel/preset-typescript": "^7.13.0",
33
- "@preconstruct/cli": "^2.1.0",
35
+ "@preconstruct/cli": "^2.1.5",
36
+ "@semantic-release/git": "^10.0.1",
34
37
  chai: "^4.2.0",
35
- karma: "^5.1.1",
38
+ karma: "^6.3.14",
36
39
  "karma-chai": "^0.1.0",
37
40
  "karma-chrome-launcher": "^3.1.0",
38
41
  "karma-mocha": "^2.0.1",
39
42
  "karma-typescript": "^5.0.3",
40
43
  mocha: "^8.1.1",
41
44
  prettier: "^1.19.1",
42
- puppeteer: "^2.1.0",
43
- rollup: "^1.30.1",
44
- sinon: "^8.1.1",
45
+ puppeteer: "^13.3.2",
46
+ "semantic-release": "^19.0.2",
47
+ sinon: "^13.0.1",
45
48
  typescript: "^4.2.4"
46
49
  },
47
50
  dependencies: {
@@ -61,6 +64,8 @@ let CheckoutEvents;
61
64
  CheckoutEvents["SessionPaymentError"] = "SessionPaymentError";
62
65
  CheckoutEvents["SessionLocked"] = "SessionLocked";
63
66
  CheckoutEvents["SessionLockFailed"] = "SessionLockFailed";
67
+ CheckoutEvents["ActivePaymentProductType"] = "ActivePaymentProductType";
68
+ CheckoutEvents["ValidateSession"] = "ValidateSession";
64
69
  })(CheckoutEvents || (CheckoutEvents = {}));
65
70
 
66
71
  let InternalCheckoutEvents;
@@ -87,7 +92,8 @@ const getSessionUrl = options => {
87
92
  sid,
88
93
  endpoint,
89
94
  language,
90
- ui
95
+ ui,
96
+ shouldCallValidateSession
91
97
  } = options;
92
98
 
93
99
  if (!endpoint) {
@@ -98,7 +104,8 @@ const getSessionUrl = options => {
98
104
  let languageParam = language ? `language=${language}` : "";
99
105
  let uiParam = ui ? `ui=${ui}` : "";
100
106
  let sdk = `sdk=${pkg.version}`;
101
- const params = [languageParam, uiParam, sdk].filter(x => x).join("&");
107
+ let validate = shouldCallValidateSession ? `client_side_validation=true` : undefined;
108
+ const params = [languageParam, uiParam, sdk, validate].filter(x => x).join("&");
102
109
  return `${endpoint}/v1/view/${sid}${params ? "?" + params : ""}`;
103
110
  };
104
111
 
@@ -177,6 +184,19 @@ const postSessionLock = (iframe, sid) => {
177
184
  }, "*");
178
185
  }
179
186
  };
187
+ /**
188
+ * Post the validation result to the checkout iframe
189
+ */
190
+
191
+ const postValidationResult = (iframe, sid, result) => {
192
+ if (iframe.contentWindow) {
193
+ iframe.contentWindow.postMessage({
194
+ type: "ValidationResult",
195
+ sid,
196
+ ...result
197
+ }, "*");
198
+ }
199
+ };
180
200
  /**
181
201
  * Post RefreshSession-event to the checkout iframe.
182
202
  */
@@ -189,6 +209,19 @@ const postSessionRefresh = (iframe, sid) => {
189
209
  }, "*");
190
210
  }
191
211
  };
212
+ /**
213
+ * Post setActivePaymentProductType-event to the checkout iframe.
214
+ */
215
+
216
+ const postActivePaymentProductType = (iframe, sid, paymentProductType) => {
217
+ if (iframe.contentWindow) {
218
+ iframe.contentWindow.postMessage({
219
+ type: "SetActivePaymentProductType",
220
+ sid,
221
+ payment_product_type: paymentProductType
222
+ }, "*");
223
+ }
224
+ };
192
225
  /**
193
226
  * Subscribe to events from an iframe given a handler and a set
194
227
  * of event types.
@@ -288,18 +321,21 @@ const embed = async options => {
288
321
  onPaymentError,
289
322
  onSessionNotFound,
290
323
  onSessionLocked,
291
- onSessionLockFailed
324
+ onSessionLockFailed,
325
+ onActivePaymentType,
326
+ onValidateSession
292
327
  } = options;
293
328
  const subscriptions = []; // Create iframe
294
329
 
295
330
  const {
296
331
  iframe,
297
332
  initiate
298
- } = await createIframeAsync(container, endpoint, getSessionUrl({
333
+ } = createIframeAsync(container, endpoint, getSessionUrl({
299
334
  sid,
300
335
  endpoint,
301
336
  language,
302
- ui: "inline"
337
+ ui: "inline",
338
+ shouldCallValidateSession: onValidateSession !== undefined
303
339
  }));
304
340
  /**
305
341
  * Function that removes the iframe and all event listeners.
@@ -321,6 +357,26 @@ const embed = async options => {
321
357
 
322
358
  const refreshSession = () => {
323
359
  postSessionRefresh(iframe, sid);
360
+ };
361
+
362
+ const setActivePaymentProductType = paymentProductType => {
363
+ postActivePaymentProductType(iframe, sid, paymentProductType);
364
+ };
365
+
366
+ const submitValidationResult = result => {
367
+ postValidationResult(iframe, sid, result);
368
+ };
369
+
370
+ const wrappedOnValidateSession = (event, checkout) => {
371
+ if (onValidateSession) {
372
+ onValidateSession(event, checkout, submitValidationResult);
373
+ }
374
+ };
375
+
376
+ const wrappedOnSessionLocked = (event, checkout) => {
377
+ if (onSessionLocked) {
378
+ onSessionLocked(event, checkout, refreshSession);
379
+ }
324
380
  }; // Create checkout object that wraps the destroy function.
325
381
 
326
382
 
@@ -329,7 +385,9 @@ const embed = async options => {
329
385
  iframe,
330
386
  language,
331
387
  lockSession,
332
- refreshSession
388
+ refreshSession,
389
+ setActivePaymentProductType,
390
+ submitValidationResult
333
391
  }; // Add event handlers (or in some cases add a fallback href handler).
334
392
 
335
393
  [{
@@ -357,11 +415,20 @@ const embed = async options => {
357
415
  handler: onSessionNotFound,
358
416
  eventTypes: [CheckoutEvents.SessionNotFound]
359
417
  }, {
360
- handler: onSessionLocked,
418
+ handler: wrappedOnSessionLocked,
361
419
  eventTypes: [CheckoutEvents.SessionLocked]
362
420
  }, {
363
421
  handler: onSessionLockFailed,
364
422
  eventTypes: [CheckoutEvents.SessionLockFailed]
423
+ }, {
424
+ handler: onActivePaymentType,
425
+ eventTypes: [CheckoutEvents.ActivePaymentProductType]
426
+ }, {
427
+ handler: onActivePaymentType,
428
+ eventTypes: [CheckoutEvents.ActivePaymentProductType]
429
+ }, {
430
+ handler: wrappedOnValidateSession,
431
+ eventTypes: [CheckoutEvents.ValidateSession]
365
432
  }].forEach(({
366
433
  handler,
367
434
  eventTypes
@@ -395,7 +462,8 @@ const redirect = options => {
395
462
  windowLocationAssign(getSessionUrl({
396
463
  sid,
397
464
  endpoint,
398
- language
465
+ language,
466
+ shouldCallValidateSession: false
399
467
  }));
400
468
  };
401
469
 
@@ -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 l(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 l(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 f(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 l(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;f(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");f(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.16";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"}(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}=e;if(!o)throw new Error("Invalid endpoint");const s=[i?`language=${i}`:"",r?`ui=${r}`:"",`sdk=${t}`].filter((e=>e)).join("&");return`${o}/v1/view/${n}${s?"?"+s:""}`},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:f="https://checkout.dintero.com",onSession:l,onSessionCancel:h,onPayment:p,onPaymentAuthorized:y,onPaymentError:g,onSessionNotFound:m,onSessionLocked:v,onSessionLockFailed:w}=e,S=[],{iframe:b,initiate:T}=await((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:f,language:r,ui:"inline"})),E={destroy:()=>{b&&(S.forEach((e=>e.unsubscribe())),b.parentElement&&n.removeChild(b))},iframe:b,language:r,lockSession:()=>{((e,n)=>{e.contentWindow&&e.contentWindow.postMessage({type:"LockSession",sid:n},"*")})(b,t)},refreshSession:()=>{((e,n)=>{e.contentWindow&&e.contentWindow.postMessage({type:"RefreshSession",sid:n},"*")})(b,t)}};return[{handler:d,eventTypes:[i.LanguageChanged]},{handler:c,eventTypes:[i.HeightChanged]},{handler:l,eventTypes:[o.SessionLoaded,o.SessionUpdated]},{eventTypes:[o.SessionPaymentOnHold],handler:p?u(0,f,p):a},{eventTypes:[o.SessionPaymentAuthorized],handler:y||p?u(0,f,y||p):a},{handler:h?u(0,f,h):a,eventTypes:[o.SessionCancel]},{handler:g?u(0,f,g):a,eventTypes:[o.SessionPaymentError]},{handler:m,eventTypes:[o.SessionNotFound]},{handler:v,eventTypes:[o.SessionLocked]},{handler:w,eventTypes:[o.SessionLockFailed]}].forEach((({handler:e,eventTypes:n})=>{e&&S.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:f,handler:e,eventTypes:n,checkout:E}))})),await T(),E},e.redirect=e=>{const{sid:n,language:t,endpoint:o="https://checkout.dintero.com"}=e;r(s({sid:n,endpoint:o,language:t}))},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.3.1";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}\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};\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","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}\n\nexport const getSessionUrl = (options: SessionUrlOptions): string => {\n const { sid, endpoint, language, ui } = 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 const params = [languageParam, uiParam, sdk].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} from \"./checkout\";\nimport { getSessionUrl, windowLocationAssign } from \"./url\";\nimport { createIframeAsync } from \"./createIframeAsync\";\nimport {subscribe, SubscriptionHandler, Subscription, postSessionLock, postSessionRefresh} 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}\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}\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 } = options;\n const subscriptions: Subscription[] = [];\n\n // Create iframe\n const { iframe, initiate } = await createIframeAsync(\n container,\n endpoint,\n getSessionUrl({ sid, endpoint, language, ui: \"inline\" })\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\n // Create checkout object that wraps the destroy function.\n const checkout: DinteroCheckoutInstance = {\n destroy,\n iframe,\n language,\n lockSession,\n refreshSession\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: onPaymentAuthorized || onPayment\n ? handleWithResult(sid, endpoint, onPaymentAuthorized || onPayment)\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 ].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 }));\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} 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 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 * 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","Error","params","pkg","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","subscriptions","initiate","appendChild","document","createElement","onload","onerror","createIframeAsync","destroy","forEach","sub","unsubscribe","parentElement","removeChild","lockSession","contentWindow","postMessage","postSessionLock","refreshSession","postSessionRefresh","eventTypes","LanguageChanged","HeightChanged","SessionLoaded","SessionUpdated","SessionPaymentOnHold","SessionPaymentAuthorized","SessionPaymentError","SessionNotFound","SessionLocked","SessionLockFailed","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,0BCNpEgF,EAWAC,YAXAD,GAAAA,oCAAAA,gCAAAA,kCAAAA,gCAAAA,8CAAAA,sDAAAA,4CAAAA,gCAAAA,yCAAAA,IAAAA,gBAWAC,GAAAA,gCAAAA,qCAAAA,IAAAA,OCRL,MAAMC,EAAwBC,IACjCC,OAAOC,SAASC,OAAOH,IAcdI,EAAiBC,UACpBC,IAAEA,EAAFC,SAAOA,EAAPC,SAAiBA,EAAjBC,GAA2BA,GAAOJ,MACnCE,QACK,IAAIG,MAAM,0BAOdC,EAAS,CAHKH,EAAY,YAAWA,IAAa,GAC1CC,EAAM,MAAKA,IAAO,GACrB,OAAMG,KAC4BC,QAAOC,GAAKA,IAAGC,KAAK,WACzD,GAAER,aAAoBD,IAAMK,EAAS,IAAMA,EAAS,MCgD1DK,EAAmCC,IACjCA,EAAMC,MACNnB,EAAqBkB,EAAMC,OAO7BC,EAAuC,CAACF,EAAYG,MAClDH,EAAMI,QAA2B,IAAjBJ,EAAMI,SACtBD,EAASE,OAAOC,aACZ,QACC,sBAAqBN,EAAMI,cAIlCG,EAAmC,CAACP,EAAYG,KAC9CH,EAAMT,WACNY,EAASZ,SAAWS,EAAMT,WAI5BiB,EAAmB,CACrBnB,EACAC,EACAmB,IAEO,CAACT,EAAYG,WAOVO,EANY,CACd,MACA,qBACA,iBACA,SAEoBC,KAAIC,GAAO,CAACA,EAAKZ,EAAMY,MAC3CZ,EAAMa,OAASjC,EAAekC,eAAkBd,EAAMe,OACtDL,EAAM7C,KAAK,CAAC,QAAS,cAEzB6C,EAAM7C,KAAK,CAAC,WAAYsC,EAASZ,WACjCmB,EAAM7C,KAAK,CAAC,MAAO8B,UACbqB,EAAWN,EACZd,QAAO,EAAEgB,EAAK9F,KAAWA,IACzB6F,KAAI,EAAEC,EAAK9F,KAAY,GAAE8F,KAAO9F,MAChCgF,KAAK,KACVK,EAASE,OAAOC,aACZ,MACC,GAAEhB,kBAAyB0B,KAEhCP,EAAQT,EAAOG,YAOFc,MAAAA,UAGXC,UACFA,EADE7B,IAEFA,EAFEE,SAGFA,EAHED,SAIFA,EAAW,+BAJT6B,UAKFA,EALEC,gBAMFA,EANEC,UAOFA,EAPEC,oBAQFA,EAREC,eASFA,EATEC,kBAUFA,EAVEC,gBAWFA,EAXEC,oBAYFA,GACAtC,EACEuC,EAAgC,IAGhCtB,OAAEA,EAAFuB,SAAUA,QCrJa,EAC7BV,EACA5B,EACAP,SAEKmC,IAAcA,EAAUW,kBACnB,IAAIpC,MAAM,2BAEdY,EAASyB,SAASC,cAAc,iBAGtC1B,EAAOC,aAAa,cAAe,KACnCD,EAAOC,aAAa,oBAAqB,QACzCD,EAAOC,aAAa,QAAS,yBAa7BD,EAAOC,aACH,UACA,4DAIJD,EAAOC,aAAa,aAAc,QAGlCD,EAAOC,aAAa,MAAOvB,GAMpB,CACHsB,OAAAA,EACAuB,SAAUX,SACC,IAAIxD,SAAc,CAACd,EAASL,KAC/B+D,EAAO2B,OAAS,IAAMrF,IACtB0D,EAAO4B,QAAU,IAAM3F,IACvB4E,EAAUW,YAAYxB,QDsGC6B,CAC/BhB,EACA5B,EACAH,EAAc,CAAEE,IAAAA,EAAKC,SAAAA,EAAUC,SAAAA,EAAUC,GAAI,YAyB3CW,EAAoC,CACtCgC,QApBY,KACR9B,IACAsB,EAAcS,SAAQC,GAAOA,EAAIC,gBAC7BjC,EAAOkC,eACPrB,EAAUsB,YAAYnC,KAiB9BA,OAAAA,EACAd,SAAAA,EACAkD,YAdgB,KEhIO,EAACpC,EAA2BhB,KACnDgB,EAAOqC,eACPrC,EAAOqC,cAAcC,YAAY,CAAE9B,KAAM,cAAexB,IAAAA,GAAO,MF+H/DuD,CAAgBvC,EAAQhB,IAcxBwD,eAXmB,KE3HO,EAACxC,EAA2BhB,KACtDgB,EAAOqC,eACPrC,EAAOqC,cAAcC,YAAY,CAAE9B,KAAM,iBAAkBxB,IAAAA,GAAO,MF0HlEyD,CAAmBzC,EAAQhB,YAe3B,CACIoB,QAASF,EACTwC,WAAY,CAAClE,EAAuBmE,kBAExC,CACIvC,QAASP,EACT6C,WAAY,CAAClE,EAAuBoE,gBAExC,CACIxC,QAASU,EACT4B,WAAY,CACRnE,EAAesE,cACftE,EAAeuE,iBAGvB,CACIJ,WAAY,CAACnE,EAAewE,sBAC5B3C,QAASY,EACHb,EAAiBnB,EAAKC,EAAU+B,GAChCtB,GAEV,CACIgD,WAAY,CAACnE,EAAeyE,0BAC5B5C,QAASa,GAAuBD,EAC1Bb,EAAiBnB,EAAKC,EAAUgC,GAAuBD,GACvDtB,GAEV,CACIU,QAASW,EACHZ,EAAiBnB,EAAKC,EAAU8B,GAChCrB,EACNgD,WAAY,CAACnE,EAAekC,gBAEhC,CACIL,QAASc,EACHf,EAAiBnB,EAAKC,EAAUiC,GAChCxB,EACNgD,WAAY,CAACnE,EAAe0E,sBAEhC,CACI7C,QAASe,EACTuB,WAAY,CAACnE,EAAe2E,kBAEhC,CACI9C,QAASgB,EACTsB,WAAY,CAACnE,EAAe4E,gBAEhC,CACI/C,QAASiB,EACTqB,WAAY,CAACnE,EAAe6E,qBAElCrB,SAAQ,EAAG3B,QAAAA,EAASsC,WAAAA,MACdtC,GACAkB,EAAc9D,KEtLAuB,CAAAA,UAChBC,IAAEA,EAAFC,SAAOA,EAAPmB,QAAiBA,EAAjBsC,WAA0BA,EAA1B5C,SAAsCA,GAAaf,EAInDsE,EAAkB1D,UACd2D,EAAgB3D,EAAM4D,SAAWtE,EACjCuE,EAAgB7D,EAAM8D,SAAW3D,EAASE,OAAOqC,cACjDqB,EAAa/D,EAAMgE,MAAQhE,EAAMgE,KAAK3E,MAAQA,EAC9C4E,GACqD,IAAvDlB,EAAWmB,QAAQlE,EAAMgE,MAAQhE,EAAMgE,KAAKnD,MAE5C8C,GACAE,GACAE,GACAE,IA9CI,EAAC5D,EAA2BL,KACpCA,EAAMgE,KAAKG,KAAO9D,EAAOqC,eACzBrC,EAAOqC,cAAcC,YACjB,CAAEyB,IAAKpE,EAAMgE,KAAKG,KAClBnE,EAAM4D,QAAU,MA4ChBS,CAAQlE,EAASE,OAAQL,GACzBS,EAAQT,EAAMgE,KAAM7D,YAK5BnB,OAAOsF,iBAAiB,UAAWZ,GAAuB,GAQnD,CACHpB,YANgB,KAChBtD,OAAOuF,oBAAoB,UAAWb,GAAuB,MF4JrDc,CAAU,CACNnF,IAAAA,EACAC,SAAAA,EACAmB,QAAAA,EACAsC,WAAAA,EACA5C,SAAAA,cAOVyB,IAECzB,cAMcf,UACfC,IACFA,EADEE,SAEFA,EAFED,SAGFA,EAAW,gCACXF,EAEJN,EAAqBK,EAAc,CAAEE,IAAAA,EAAKC,SAAAA,EAAUC,SAAAA"}
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,yBCNpEgF,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,48 +1,51 @@
1
1
  {
2
- "name": "@dintero/checkout-web-sdk",
3
- "version": "0.0.16",
4
- "description": "Dintero Checkout SDK for web frontends",
5
- "main": "dist/dintero-checkout-web-sdk.cjs.js",
6
- "module": "dist/dintero-checkout-web-sdk.esm.js",
7
- "umd:main": "dist/dintero-checkout-web-sdk.umd.min.js",
8
- "unpkg": "dist/dintero-checkout-web-sdk.umd.min.js",
9
- "types": "dist/dintero-checkout-web-sdk.cjs.d.ts",
10
- "preconstruct": {
11
- "umdName": "dintero"
12
- },
13
- "scripts": {
14
- "build": "preconstruct build",
15
- "test": "karma start"
16
- },
17
- "private": false,
18
- "repository": {
19
- "type": "git",
20
- "url": "git+https://github.com/Dintero/Dintero.Checkout.Web.SDK.git"
21
- },
22
- "homepage": "https://github.com/Dintero/Dintero.Checkout.Web.SDK#readme",
23
- "author": "Sven Nicolai Viig <sven@dintero.com> (http://dintero.com)",
24
- "license": "MIT",
25
- "bugs": {
26
- "url": "https://github.com/Dintero/Dintero.Checkout.Web.SDK/issues"
27
- },
28
- "devDependencies": {
29
- "@babel/preset-env": "^7.14.1",
30
- "@babel/preset-typescript": "^7.13.0",
31
- "@preconstruct/cli": "^2.1.0",
32
- "chai": "^4.2.0",
33
- "karma": "^5.1.1",
34
- "karma-chai": "^0.1.0",
35
- "karma-chrome-launcher": "^3.1.0",
36
- "karma-mocha": "^2.0.1",
37
- "karma-typescript": "^5.0.3",
38
- "mocha": "^8.1.1",
39
- "prettier": "^1.19.1",
40
- "puppeteer": "^2.1.0",
41
- "rollup": "^1.30.1",
42
- "sinon": "^8.1.1",
43
- "typescript": "^4.2.4"
44
- },
45
- "dependencies": {
46
- "native-promise-only": "^0.8.1"
47
- }
2
+ "name": "@dintero/checkout-web-sdk",
3
+ "version": "0.3.1",
4
+ "description": "Dintero Checkout SDK for web frontends",
5
+ "main": "dist/dintero-checkout-web-sdk.cjs.js",
6
+ "module": "dist/dintero-checkout-web-sdk.esm.js",
7
+ "umd:main": "dist/dintero-checkout-web-sdk.umd.min.js",
8
+ "unpkg": "dist/dintero-checkout-web-sdk.umd.min.js",
9
+ "types": "dist/dintero-checkout-web-sdk.cjs.d.ts",
10
+ "preconstruct": {
11
+ "umdName": "dintero"
12
+ },
13
+ "scripts": {
14
+ "build": "preconstruct build",
15
+ "test": "karma start",
16
+ "semantic-release": "semantic-release",
17
+ "prepublishOnly": "npm run build"
18
+ },
19
+ "private": false,
20
+ "repository": {
21
+ "type": "git",
22
+ "url": "https://github.com/Dintero/Dintero.Checkout.Web.SDK.git"
23
+ },
24
+ "homepage": "https://github.com/Dintero/Dintero.Checkout.Web.SDK#readme",
25
+ "author": "Sven Nicolai Viig <sven@dintero.com> (http://dintero.com)",
26
+ "license": "MIT",
27
+ "bugs": {
28
+ "url": "https://github.com/Dintero/Dintero.Checkout.Web.SDK/issues"
29
+ },
30
+ "devDependencies": {
31
+ "@babel/preset-env": "^7.14.1",
32
+ "@babel/preset-typescript": "^7.13.0",
33
+ "@preconstruct/cli": "^2.1.5",
34
+ "@semantic-release/git": "^10.0.1",
35
+ "chai": "^4.2.0",
36
+ "karma": "^6.3.14",
37
+ "karma-chai": "^0.1.0",
38
+ "karma-chrome-launcher": "^3.1.0",
39
+ "karma-mocha": "^2.0.1",
40
+ "karma-typescript": "^5.0.3",
41
+ "mocha": "^8.1.1",
42
+ "prettier": "^1.19.1",
43
+ "puppeteer": "^13.3.2",
44
+ "semantic-release": "^19.0.2",
45
+ "sinon": "^13.0.1",
46
+ "typescript": "^4.2.4"
47
+ },
48
+ "dependencies": {
49
+ "native-promise-only": "^0.8.1"
50
+ }
48
51
  }