{"version":3,"file":"globalpayments-3ds.min.js","sources":["../../../node_modules/tslib/tslib.es6.js","../../../node_modules/unfetch/polyfill/index.js","../../globalpayments-lib/lib/polyfills/array-foreach.js","../../../node_modules/base64-js/index.js","../../globalpayments-lib/lib/polyfills/object-freeze.js","../../globalpayments-lib/lib/polyfills/base64.js","../../globalpayments-lib/lib/polyfills/json2.js","../../globalpayments-lib/lib/polyfills/json.js","../../globalpayments-lib/lib/polyfills/object-getownpropertynames.js","../../globalpayments-lib/lib/polyfills/parentnode-prepend.js","../../../node_modules/promise-polyfill/src/index.js","../../../node_modules/promise-polyfill/src/finally.js","../../../node_modules/promise-polyfill/src/allSettled.js","../../globalpayments-lib/lib/polyfills/promise.js","../../globalpayments-lib/lib/polyfills/string-repeat.js","../src/enums.ts","../../globalpayments-lib/lib/polyfills/index.js","../src/lib/gp-error.ts","../src/lib/handle-notification-message-event.ts","../src/lib/make-request.ts","../src/lib/lightbox.ts","../src/lib/post-to-iframe.ts","../src/index.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","self.fetch||(self.fetch=function(e,n){return n=n||{},new Promise(function(t,s){var r=new XMLHttpRequest,o=[],u=[],i={},a=function(){return{ok:2==(r.status/100|0),statusText:r.statusText,status:r.status,url:r.responseURL,text:function(){return Promise.resolve(r.responseText)},json:function(){return Promise.resolve(r.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([r.response]))},clone:a,headers:{keys:function(){return o},entries:function(){return u},get:function(e){return i[e.toLowerCase()]},has:function(e){return e.toLowerCase()in i}}}};for(var c in r.open(n.method||\"get\",e,!0),r.onload=function(){r.getAllResponseHeaders().replace(/^(.*?):[^\\S\\n]*([\\s\\S]*?)$/gm,function(e,n,t){o.push(n=n.toLowerCase()),u.push([n,t]),i[n]=i[n]?i[n]+\",\"+t:t}),t(a())},r.onerror=s,r.withCredentials=\"include\"==n.credentials,n.headers)r.setRequestHeader(c,n.headers[c]);r.send(n.body||null)})});\n","\"use strict\";\nif (!Array.prototype.forEach) {\n Array.prototype.forEach = function (fn) {\n for (var i = 0; i < this.length; i++) {\n fn(this[i], i, this);\n }\n };\n}\n//# sourceMappingURL=array-foreach.js.map","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","\"use strict\";\n// ES5 15.2.3.9\n// http://es5.github.com/#x15.2.3.9\nif (!Object.freeze) {\n Object.freeze = function (object) {\n if (Object(object) !== object) {\n throw new TypeError(\"Object.freeze can only be called on Objects.\");\n }\n // this is misleading and breaks feature-detection, but\n // allows \"securable\" code to \"gracefully\" degrade to working\n // but insecure code.\n return object;\n };\n}\n// detect a Rhino bug and patch it\ntry {\n Object.freeze(function () { return undefined; });\n}\ncatch (exception) {\n Object.freeze = (function (freezeObject) {\n return function (object) {\n if (typeof object === \"function\") {\n return object;\n }\n else {\n return freezeObject(object);\n }\n };\n })(Object.freeze);\n}\n//# sourceMappingURL=object-freeze.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.base64decode = exports.base64encode = void 0;\nvar base64_js_1 = require(\"base64-js\");\nfunction base64encode(text) {\n var i;\n var len = text.length;\n var Arr = typeof Uint8Array !== \"undefined\" ? Uint8Array : Array;\n var u8array = new Arr(len);\n for (i = 0; i < len; i++) {\n u8array[i] = text.charCodeAt(i);\n }\n return base64_js_1.fromByteArray(u8array);\n}\nexports.base64encode = base64encode;\nfunction base64decode(text) {\n var u8Array = base64_js_1.toByteArray(text);\n var i;\n var len = u8Array.length;\n var bStr = \"\";\n for (i = 0; i < len; i++) {\n bStr += String.fromCharCode(u8Array[i]);\n }\n return bStr;\n}\nexports.base64decode = base64decode;\nwindow.btoa = window.btoa || base64encode;\nwindow.atob = window.atob || base64decode;\n//# sourceMappingURL=base64.js.map","\"use strict\";\n/* -----------------------------------------------------------------------------\nThis file is based on or incorporates material from the projects listed below\n(collectively, \"Third Party Code\"). Microsoft is not the original author of the\nThird Party Code. The original copyright notice and the license, under which\nMicrosoft received such Third Party Code, are set forth below. Such licenses\nand notices are provided for informational purposes only. Microsoft, not the\nthird party, licenses the Third Party Code to you under the terms of the\nApache License, Version 2.0. See License.txt in the project root for complete\nlicense information. Microsoft reserves all rights not expressly granted under\nthe Apache 2.0 License, whether by implication, estoppel or otherwise.\n----------------------------------------------------------------------------- */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JSON = void 0;\n/*\n json2.js\n 2011-10-19\n\n Public Domain.\n\n NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.\n\n See http://www.JSON.org/js.html\n\n This code should be minified before deployment.\n See http://javascript.crockford.com/jsmin.html\n\n USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO\n NOT CONTROL.\n\n This file creates a global JSON object containing two methods: stringify\n and parse.\n\n JSON.stringify(value, replacer, space)\n value any JavaScript value, usually an object or array.\n\n replacer an optional parameter that determines how object\n values are stringified for objects. It can be a\n function or an array of strings.\n\n space an optional parameter that specifies the indentation\n of nested structures. If it is omitted, the text will\n be packed without extra whitespace. If it is a number,\n it will specify the number of spaces to indent at each\n level. If it is a string (such as \"\\t\" or \" \"),\n it contains the characters used to indent at each level.\n\n This method produces a JSON text from a JavaScript value.\n\n When an object value is found, if the object contains a toJSON\n method, its toJSON method will be called and the result will be\n stringified. A toJSON method does not serialize: it returns the\n value represented by the name/value pair that should be serialized,\n or undefined if nothing should be serialized. The toJSON method\n will be passed the key associated with the value, and this will be\n bound to the value\n\n For example, this would serialize Dates as ISO strings.\n\n Date.prototype.toJSON = function (key) {\n function f(n) {\n // Format integers to have at least two digits.\n return n < 10 ? \"0\" + n : n;\n }\n\n return this.getUTCFullYear() + \"-\" +\n f(this.getUTCMonth() + 1) + \"-\" +\n f(this.getUTCDate()) + \"T\" +\n f(this.getUTCHours()) + \":\" +\n f(this.getUTCMinutes()) + \":\" +\n f(this.getUTCSeconds()) + \"Z\";\n };\n\n You can provide an optional replacer method. It will be passed the\n key and value of each member, with this bound to the containing\n object. The value that is returned from your method will be\n serialized. If your method returns undefined, then the member will\n be excluded from the serialization.\n\n If the replacer parameter is an array of strings, then it will be\n used to select the members to be serialized. It filters the results\n such that only members with keys listed in the replacer array are\n stringified.\n\n Values that do not have JSON representations, such as undefined or\n functions, will not be serialized. Such values in objects will be\n dropped; in arrays they will be replaced with null. You can use\n a replacer function to replace those with JSON values.\n JSON.stringify(undefined) returns undefined.\n\n The optional space parameter produces a stringification of the\n value that is filled with line breaks and indentation to make it\n easier to read.\n\n If the space parameter is a non-empty string, then that string will\n be used for indentation. If the space parameter is a number, then\n the indentation will be that many spaces.\n\n Example:\n\n text = JSON.stringify([\"e\", {pluribus: \"unum\"}]);\n // text is \"[\"e\",{\"pluribus\":\"unum\"}]\"\n\n text = JSON.stringify([\"e\", {pluribus: \"unum\"}], null, \"\\t\");\n // text is \"[\\n\\t\"e\",\\n\\t{\\n\\t\\t\"pluribus\": \"unum\"\\n\\t}\\n]\"\n\n text = JSON.stringify([new Date()], function (key, value) {\n return this[key] instanceof Date ?\n \"Date(\" + this[key] + \")\" : value;\n });\n // text is \"[\"Date(---current time---)\"]\"\n\n JSON.parse(text, reviver)\n This method parses a JSON text to produce an object or array.\n It can throw a SyntaxError exception.\n\n The optional reviver parameter is a function that can filter and\n transform the results. It receives each of the keys and values,\n and its return value is used instead of the original value.\n If it returns what it received, then the structure is not modified.\n If it returns undefined then the member is deleted.\n\n Example:\n\n // Parse the text. Values that look like ISO date strings will\n // be converted to Date objects.\n\n myData = JSON.parse(text, function (key, value) {\n let a;\n if (typeof value === \"string\") {\n a =\n/^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2}(?:\\.\\d*)?)Z$/.exec(value);\n if (a) {\n return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],\n +a[5], +a[6]));\n }\n }\n return value;\n });\n\n myData = JSON.parse(\"[\"Date(09/09/2001)\"]\", function (key, value) {\n let d;\n if (typeof value === \"string\" &&\n value.slice(0, 5) === \"Date(\" &&\n value.slice(-1) === \")\") {\n d = new Date(value.slice(5, -1));\n if (d) {\n return d;\n }\n }\n return value;\n });\n\n This is a reference implementation. You are free to copy, modify, or\n redistribute.\n*/\n/*jslint evil: true, regexp: true */\n/*members \"\", \"\\b\", \"\\t\", \"\\n\", \"\\f\", \"\\r\", \"\\\"\", JSON, \"\\\\\", apply,\n call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,\n getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,\n lastIndex, length, parse, prototype, push, replace, slice, stringify,\n test, toJSON, toString, valueOf\n*/\n// create a JSON object only if one does not already exist. We create the\n// methods in a closure to avoid creating global variables.\nexports.JSON = {};\n(function () {\n \"use strict\";\n function f(n) {\n // format integers to have at least two digits.\n return n < 10 ? \"0\" + n : n;\n }\n if (typeof Date.prototype.toJSON !== \"function\") {\n Date.prototype.toJSON = function (_KEY) {\n return isFinite(this.valueOf())\n ? this.getUTCFullYear() +\n \"-\" +\n f(this.getUTCMonth() + 1) +\n \"-\" +\n f(this.getUTCDate()) +\n \"T\" +\n f(this.getUTCHours()) +\n \":\" +\n f(this.getUTCMinutes()) +\n \":\" +\n f(this.getUTCSeconds()) +\n \"Z\"\n : \"\";\n };\n var strProto = String.prototype;\n var numProto = Number.prototype;\n numProto.JSON = strProto.JSON = Boolean.prototype.toJSON = function (_KEY) {\n return this.valueOf();\n };\n }\n var cx = /[\\u0000\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g;\n // tslint:disable-next-line\n var esc = /[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g;\n var gap;\n var indent;\n var meta = {\n // table of character substitutions\n \"\\b\": \"\\\\b\",\n \"\\t\": \"\\\\t\",\n \"\\n\": \"\\\\n\",\n \"\\f\": \"\\\\f\",\n \"\\r\": \"\\\\r\",\n '\"': '\\\\\"',\n \"\\\\\": \"\\\\\\\\\",\n };\n var rep;\n function quote(quoteStr) {\n // if the string contains no control characters, no quote characters, and no\n // backslash characters, then we can safely slap some quotes around it.\n // otherwise we must also replace the offending characters with safe escape\n // sequences.\n esc.lastIndex = 0;\n return esc.test(quoteStr)\n ? '\"' +\n quoteStr.replace(esc, function (a) {\n var c = meta[a];\n return typeof c === \"string\"\n ? c\n : \"\\\\u\" + (\"0000\" + a.charCodeAt(0).toString(16)).slice(-4);\n }) +\n '\"'\n : '\"' + quoteStr + '\"';\n }\n function str(key, holder) {\n // produce a string from holder[key].\n var i; // the loop counter.\n var k; // the member key.\n var v; // the member value.\n var length;\n var mind = gap;\n var partial;\n var value = holder[key];\n // if the value has a toJSON method, call it to obtain a replacement value.\n if (value &&\n typeof value === \"object\" &&\n typeof value.toJSON === \"function\") {\n value = value.toJSON(key);\n }\n // if we were called with a replacer function, then call the replacer to\n // obtain a replacement value.\n if (typeof rep === \"function\") {\n value = rep.call(holder, key, value);\n }\n // what happens next depends on the value\"s type.\n switch (typeof value) {\n case \"string\":\n return quote(value);\n case \"number\":\n // json numbers must be finite. Encode non-finite numbers as null.\n return isFinite(value) ? String(value) : \"null\";\n case \"boolean\":\n case \"null\":\n // if the value is a boolean or null, convert it to a string. Note:\n // typeof null does not produce \"null\". The case is included here in\n // the remote chance that this gets fixed someday.\n return String(value);\n // if the type is \"object\", we might be dealing with an object or an array or\n // null.\n case \"object\":\n // due to a specification blunder in ECMAScript, typeof null is \"object\",\n // so watch out for that case.\n if (!value) {\n return \"null\";\n }\n // make an array to hold the partial: string[] results of stringifying this object value.\n gap += indent;\n partial = [];\n // is the value an array?\n if (Object.prototype.toString.apply(value, []) === \"[object Array]\") {\n // the value is an array. Stringify every element. Use null as a placeholder\n // for non-JSON values.\n length = value.length;\n for (i = 0; i < length; i += 1) {\n partial[i] = str(i.toString(), value) || \"null\";\n }\n // join all of the elements together, separated with commas, and wrap them in\n // brackets.\n v =\n partial.length === 0\n ? \"[]\"\n : gap\n ? \"[\\n\" + gap + partial.join(\",\\n\" + gap) + \"\\n\" + mind + \"]\"\n : \"[\" + partial.join(\",\") + \"]\";\n gap = mind;\n return v;\n }\n // if the replacer is an array, use it to select the members to be stringified.\n if (rep && typeof rep === \"object\") {\n length = rep.length;\n for (i = 0; i < length; i += 1) {\n if (typeof rep[i] === \"string\") {\n k = rep[i];\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? \": \" : \":\") + v);\n }\n }\n }\n }\n else {\n // otherwise, iterate through all of the keys in the object.\n for (k in value) {\n if (Object.prototype.hasOwnProperty.call(value, k)) {\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? \": \" : \":\") + v);\n }\n }\n }\n }\n // join all of the member texts together, separated with commas,\n // and wrap them in braces.\n v =\n partial.length === 0\n ? \"{}\"\n : gap\n ? \"{\\n\" + gap + partial.join(\",\\n\" + gap) + \"\\n\" + mind + \"}\"\n : \"{\" + partial.join(\",\") + \"}\";\n gap = mind;\n return v;\n default:\n break;\n }\n return undefined;\n }\n // if the JSON object does not yet have a stringify method, give it one.\n if (typeof exports.JSON.stringify !== \"function\") {\n exports.JSON.stringify = function (value, replacer, space) {\n // the stringify method takes a value and an optional replacer, and an optional\n // space parameter, and returns a JSON text. The replacer can be a function\n // that can replace values, or an array of strings that will select the keys.\n // a default replacer method can be provided. Use of the space parameter can\n // produce text that is more easily readable.\n var i;\n gap = \"\";\n indent = \"\";\n // if the space parameter is a number, make an indent string containing that\n // many spaces.\n if (typeof space === \"number\") {\n for (i = 0; i < space; i += 1) {\n indent += \" \";\n }\n // if the space parameter is a string, it will be used as the indent string.\n }\n else if (typeof space === \"string\") {\n indent = space;\n }\n // if there is a replacer, it must be a function or an array.\n // otherwise, throw an error.\n rep = replacer;\n if (replacer &&\n typeof replacer !== \"function\" &&\n (typeof replacer !== \"object\" || typeof replacer.length !== \"number\")) {\n throw new Error(\"JSON.stringify\");\n }\n // make a fake root object containing our value under the key of \"\".\n // return the result of stringifying the value.\n return str(\"\", { \"\": value });\n };\n }\n // if the JSON object does not yet have a parse method, give it one.\n if (typeof exports.JSON.parse !== \"function\") {\n exports.JSON.parse = function (text, reviver) {\n // the parse method takes a text and an optional reviver function, and returns\n // a JavaScript value if the text is a valid JSON text.\n var j;\n function walk(holder, key) {\n // the walk method is used to recursively walk the resulting structure so\n // that modifications can be made.\n var k;\n var v;\n var value = holder[key];\n if (value && typeof value === \"object\") {\n for (k in value) {\n if (Object.prototype.hasOwnProperty.call(value, k)) {\n v = walk(value, k);\n value[k] = v;\n }\n }\n }\n return reviver.call(holder, key, value);\n }\n // parsing happens in four stages. In the first stage, we replace certain\n // unicode characters with escape sequences. JavaScript handles many characters\n // incorrectly, either silently deleting them, or treating them as line endings.\n text = String(text);\n cx.lastIndex = 0;\n if (cx.test(text)) {\n text = text.replace(cx, function (a) {\n return \"\\\\u\" + (\"0000\" + a.charCodeAt(0).toString(16)).slice(-4);\n });\n }\n // in the second stage, we run the text against regular expressions that look\n // for non-JSON patterns. We are especially concerned with \"()\" and \"new\"\n // because they can cause invocation, and \"=\" because it can cause mutation.\n // but just to be safe, we want to reject all unexpected forms.\n // we split the second stage into 4 regexp operations in order to work around\n // crippling inefficiencies in IE\"s and Safari\"s regexp engines. First we\n // replace the JSON backslash pairs with \"@\" (a non-JSON character). Second, we\n // replace all simple value tokens with \"]\" characters. Third, we delete all\n // open brackets that follow a colon or comma or that begin the text. Finally,\n // we look to see that the remaining characters are only whitespace or \"]\" or\n // \",\" or \":\" or \"{\" or \"}\". If that is so, then the text is safe for eval.\n if (/^[\\],:{}\\s]*$/.test(text\n .replace(/\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g, \"@\")\n .replace(/\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g, \"]\")\n .replace(/(?:^|:|,)(?:\\s*\\[)+/g, \"\"))) {\n // in the third stage we use the eval function to compile the text into a\n // javascript structure. The \"{\" operator is subject to a syntactic ambiguity\n // in JavaScript: it can begin a block or an object literal. We wrap the text\n // in parens to eliminate the ambiguity.\n // tslint:disable-next-line:function-constructor\n j = new Function(\"return (\" + text + \")\")();\n // in the optional fourth stage, we recursively walk the new structure, passing\n // each name/value pair to a reviver function for possible transformation.\n return typeof reviver === \"function\" ? walk({ \"\": j }, \"\") : j;\n }\n // if the text is not JSON parseable, then a SyntaxError is thrown.\n throw new SyntaxError(\"JSON.parse\");\n };\n }\n})();\n//# sourceMappingURL=json2.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar json2_1 = require(\"./json2\");\nwindow.JSON = window.JSON || json2_1.JSON;\n//# sourceMappingURL=json.js.map","\"use strict\";\nif (!Object.prototype.hasOwnProperty) {\n Object.prototype.hasOwnProperty = function (prop) {\n return typeof this[prop] !== \"undefined\";\n };\n}\nif (!Object.getOwnPropertyNames) {\n Object.getOwnPropertyNames = function (obj) {\n var keys = [];\n for (var key in obj) {\n if (typeof obj.hasOwnProperty !== \"undefined\" &&\n obj.hasOwnProperty(key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n}\n//# sourceMappingURL=object-getownpropertynames.js.map","\"use strict\";\n// Source: https://developer.mozilla.org/en-US/docs/Web/API/ParentNode/prepend\n(function (arr) {\n arr.forEach(function (item) {\n if (item.hasOwnProperty('prepend')) {\n return;\n }\n Object.defineProperty(item, 'prepend', {\n configurable: true,\n enumerable: true,\n writable: true,\n value: function prepend() {\n var argArr = Array.prototype.slice.call(arguments);\n var docFrag = document.createDocumentFragment();\n argArr.forEach(function (argItem) {\n var isNode = argItem instanceof Node;\n docFrag.appendChild(isNode ? argItem : document.createTextNode(String(argItem)));\n });\n this.insertBefore(docFrag, this.firstChild);\n }\n });\n });\n})([Element.prototype, Document.prototype, DocumentFragment.prototype]);\n//# sourceMappingURL=parentnode-prepend.js.map","import promiseFinally from './finally';\nimport allSettled from './allSettled';\n\n// Store setTimeout reference so promise-polyfill will be unaffected by\n// other code modifying setTimeout (like sinon.useFakeTimers())\nvar setTimeoutFunc = setTimeout;\n\nfunction isArray(x) {\n return Boolean(x && typeof x.length !== 'undefined');\n}\n\nfunction noop() {}\n\n// Polyfill for Function.prototype.bind\nfunction bind(fn, thisArg) {\n return function() {\n fn.apply(thisArg, arguments);\n };\n}\n\n/**\n * @constructor\n * @param {Function} fn\n */\nfunction Promise(fn) {\n if (!(this instanceof Promise))\n throw new TypeError('Promises must be constructed via new');\n if (typeof fn !== 'function') throw new TypeError('not a function');\n /** @type {!number} */\n this._state = 0;\n /** @type {!boolean} */\n this._handled = false;\n /** @type {Promise|undefined} */\n this._value = undefined;\n /** @type {!Array} */\n this._deferreds = [];\n\n doResolve(fn, this);\n}\n\nfunction handle(self, deferred) {\n while (self._state === 3) {\n self = self._value;\n }\n if (self._state === 0) {\n self._deferreds.push(deferred);\n return;\n }\n self._handled = true;\n Promise._immediateFn(function() {\n var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;\n if (cb === null) {\n (self._state === 1 ? resolve : reject)(deferred.promise, self._value);\n return;\n }\n var ret;\n try {\n ret = cb(self._value);\n } catch (e) {\n reject(deferred.promise, e);\n return;\n }\n resolve(deferred.promise, ret);\n });\n}\n\nfunction resolve(self, newValue) {\n try {\n // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n if (newValue === self)\n throw new TypeError('A promise cannot be resolved with itself.');\n if (\n newValue &&\n (typeof newValue === 'object' || typeof newValue === 'function')\n ) {\n var then = newValue.then;\n if (newValue instanceof Promise) {\n self._state = 3;\n self._value = newValue;\n finale(self);\n return;\n } else if (typeof then === 'function') {\n doResolve(bind(then, newValue), self);\n return;\n }\n }\n self._state = 1;\n self._value = newValue;\n finale(self);\n } catch (e) {\n reject(self, e);\n }\n}\n\nfunction reject(self, newValue) {\n self._state = 2;\n self._value = newValue;\n finale(self);\n}\n\nfunction finale(self) {\n if (self._state === 2 && self._deferreds.length === 0) {\n Promise._immediateFn(function() {\n if (!self._handled) {\n Promise._unhandledRejectionFn(self._value);\n }\n });\n }\n\n for (var i = 0, len = self._deferreds.length; i < len; i++) {\n handle(self, self._deferreds[i]);\n }\n self._deferreds = null;\n}\n\n/**\n * @constructor\n */\nfunction Handler(onFulfilled, onRejected, promise) {\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.promise = promise;\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve(fn, self) {\n var done = false;\n try {\n fn(\n function(value) {\n if (done) return;\n done = true;\n resolve(self, value);\n },\n function(reason) {\n if (done) return;\n done = true;\n reject(self, reason);\n }\n );\n } catch (ex) {\n if (done) return;\n done = true;\n reject(self, ex);\n }\n}\n\nPromise.prototype['catch'] = function(onRejected) {\n return this.then(null, onRejected);\n};\n\nPromise.prototype.then = function(onFulfilled, onRejected) {\n // @ts-ignore\n var prom = new this.constructor(noop);\n\n handle(this, new Handler(onFulfilled, onRejected, prom));\n return prom;\n};\n\nPromise.prototype['finally'] = promiseFinally;\n\nPromise.all = function(arr) {\n return new Promise(function(resolve, reject) {\n if (!isArray(arr)) {\n return reject(new TypeError('Promise.all accepts an array'));\n }\n\n var args = Array.prototype.slice.call(arr);\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n\n function res(i, val) {\n try {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n var then = val.then;\n if (typeof then === 'function') {\n then.call(\n val,\n function(val) {\n res(i, val);\n },\n reject\n );\n return;\n }\n }\n args[i] = val;\n if (--remaining === 0) {\n resolve(args);\n }\n } catch (ex) {\n reject(ex);\n }\n }\n\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n};\n\nPromise.allSettled = allSettled;\n\nPromise.resolve = function(value) {\n if (value && typeof value === 'object' && value.constructor === Promise) {\n return value;\n }\n\n return new Promise(function(resolve) {\n resolve(value);\n });\n};\n\nPromise.reject = function(value) {\n return new Promise(function(resolve, reject) {\n reject(value);\n });\n};\n\nPromise.race = function(arr) {\n return new Promise(function(resolve, reject) {\n if (!isArray(arr)) {\n return reject(new TypeError('Promise.race accepts an array'));\n }\n\n for (var i = 0, len = arr.length; i < len; i++) {\n Promise.resolve(arr[i]).then(resolve, reject);\n }\n });\n};\n\n// Use polyfill for setImmediate for performance gains\nPromise._immediateFn =\n // @ts-ignore\n (typeof setImmediate === 'function' &&\n function(fn) {\n // @ts-ignore\n setImmediate(fn);\n }) ||\n function(fn) {\n setTimeoutFunc(fn, 0);\n };\n\nPromise._unhandledRejectionFn = function _unhandledRejectionFn(err) {\n if (typeof console !== 'undefined' && console) {\n console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console\n }\n};\n\nexport default Promise;\n","/**\n * @this {Promise}\n */\nfunction finallyConstructor(callback) {\n var constructor = this.constructor;\n return this.then(\n function(value) {\n // @ts-ignore\n return constructor.resolve(callback()).then(function() {\n return value;\n });\n },\n function(reason) {\n // @ts-ignore\n return constructor.resolve(callback()).then(function() {\n // @ts-ignore\n return constructor.reject(reason);\n });\n }\n );\n}\n\nexport default finallyConstructor;\n","function allSettled(arr) {\n var P = this;\n return new P(function(resolve, reject) {\n if (!(arr && typeof arr.length !== 'undefined')) {\n return reject(\n new TypeError(\n typeof arr +\n ' ' +\n arr +\n ' is not iterable(cannot read property Symbol(Symbol.iterator))'\n )\n );\n }\n var args = Array.prototype.slice.call(arr);\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n\n function res(i, val) {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n var then = val.then;\n if (typeof then === 'function') {\n then.call(\n val,\n function(val) {\n res(i, val);\n },\n function(e) {\n args[i] = { status: 'rejected', reason: e };\n if (--remaining === 0) {\n resolve(args);\n }\n }\n );\n return;\n }\n }\n args[i] = { status: 'fulfilled', value: val };\n if (--remaining === 0) {\n resolve(args);\n }\n }\n\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n}\n\nexport default allSettled;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Promise = require(\"promise-polyfill\");\nwindow.Promise =\n window.Promise || Promise.default || Promise;\n//# sourceMappingURL=promise.js.map","\"use strict\";\nif (!String.prototype.repeat) {\n String.prototype.repeat = function (length) {\n var result = \"\";\n for (var i = 0; i < length; i++) {\n result += this;\n }\n return result;\n };\n}\n//# sourceMappingURL=string-repeat.js.map","import { IChallengeWindowOptions } from \"./interfaces\";\n\nexport enum AuthenticationSource {\n Browser = \"BROWSER\",\n MobileSDK = \"MOBILE_SDK\",\n StoredRecurring = \"STORED_RECURRING\",\n}\n\nexport enum AuthenticationRequestType {\n AddCard = \"ADD_CARD\",\n CardholderVerification = \"CARDHOLDER_VERIFICATION\",\n InstalmentTransaction = \"INSTALMENT_TRANSACTION\",\n MaintainCard = \"MAINTAIN_CARD\",\n PaymentTransaction = \"PAYMENT_TRANSACTION\",\n RecurringTransaction = \"RECURRING_TRANSACTION\",\n}\n\nexport enum ChallengeRequestIndicator {\n ChallengeMandated = \"CHALLENGE_MANDATED\",\n ChallengePreferred = \"CHALLENGE_PREFERRED\",\n NoChallengeRequested = \"NO_CHALLENGE_REQUESTED\",\n NoPreference = \"NO_PREFERENCE\",\n}\n\nexport enum ChallengeWindowSize {\n FullScreen = \"FULL_SCREEN\",\n Windowed250x400 = \"WINDOWED_250X400\",\n Windowed390x400 = \"WINDOWED_390X400\",\n Windowed500x600 = \"WINDOWED_500X600\",\n Windowed600x400 = \"WINDOWED_600X400\",\n}\n\nexport enum MessageCategory {\n NonPayment = \"NON_PAYMENT_AUTHENTICATION\",\n Payment = \"PAYMENT_AUTHENTICATION\",\n}\n\nexport enum MethodUrlCompletion {\n Unavailable = \"UNAVAILABLE\",\n No = \"NO\",\n Yes = \"YES\",\n}\n\nexport enum TransactionStatus {\n AuthenticationAttemptedButNotSuccessful = \"AUTHENTICATION_ATTEMPTED_BUT_NOT_SUCCESSFUL\",\n AuthenticationCouldNotBePerformed = \"AUTHENTICATION_COULD_NOT_BE_PERFORMED\",\n AuthenticationFailed = \"AUTHENTICATION_FAILED\",\n AuthenticationIssuerRejected = \"AUTHENTICATION_ISSUER_REJECTED\",\n AuthenticationSuccessful = \"AUTHENTICATION_SUCCESSFUL\",\n ChallengeRequired = \"CHALLENGE_REQUIRED\",\n}\n\nexport enum TransactionStatusReason {\n CardAuthenticationFailed = \"CARD_AUTHENTICATION_FAILED\",\n UnknownDevice = \"UNKNOWN_DEVICE\",\n UnsupportedDevice = \"UNSUPPORTED_DEVICE\",\n ExceedsAuthenticationFrequencyLimit = \"EXCEEDS_AUTHENTICATION_FREQUENCY_LIMIT\",\n ExpiredCard = \"EXPIRED_CARD\",\n InvalidCardNumber = \"INVALID_CARD_NUMBER\",\n InvalidTransaction = \"INVALID_TRANSACTION\",\n NoCardRecord = \"NO_CARD_RECORD\",\n SecurityFailure = \"SECURITY_FAILURE\",\n StolenCard = \"STOLEN_CARD\",\n SuspectedFraud = \"SUSPECTED_FRAUD\",\n TransactionNotPermittedToCardholder = \"TRANSACTION_NOT_PERMITTED_TO_CARDHOLDER\",\n CardholderNotEnrolledInService = \"CARDHOLDER_NOT_ENROLLED_IN_SERVICE\",\n TransactionTimedOutAtTheAcs = \"TRANSACTION_TIMED_OUT_AT_THE_ACS\",\n LowConfidence = \"LOW_CONFIDENCE\",\n MediumConfidence = \"MEDIUM_CONFIDENCE\",\n HighConfidence = \"HIGH_CONFIDENCE\",\n VeryHighConfidence = \"VERY_HIGH_CONFIDENCE\",\n ExceedsAcsMaximumChallenges = \"EXCEEDS_ACS_MAXIMUM_CHALLENGES\",\n NonPaymentTransactionNotSupported = \"NON_PAYMENT_TRANSACTION_NOT_SUPPORTED\",\n ThreeriTransactionNotSupported = \"THREERI_TRANSACTION_NOT_SUPPORTED\",\n}\n\nexport function colorDepth(value: number) {\n let result = \"\";\n switch (value) {\n case 1:\n return \"ONE_BIT\";\n case 2:\n result += \"TWO\";\n break;\n case 4:\n result += \"FOUR\";\n break;\n case 8:\n result += \"EIGHT\";\n break;\n case 15:\n result += \"FIFTEEN\";\n break;\n case 16:\n result += \"SIXTEEN\";\n break;\n case 24:\n case 30:\n result += \"TWENTY_FOUR\";\n break;\n case 32:\n result += \"THIRTY_TWO\";\n break;\n case 48:\n result += \"FORTY_EIGHT\";\n break;\n default:\n throw new Error(`Unknown color depth '${value}'`);\n }\n return `${result}_BITS`;\n}\n\nexport function dimensionsFromChallengeWindowSize(\n options: IChallengeWindowOptions,\n) {\n let height = 0;\n let width = 0;\n\n switch ((options as any).size || options.windowSize) {\n case ChallengeWindowSize.Windowed250x400:\n height = 250;\n width = 400;\n break;\n case ChallengeWindowSize.Windowed390x400:\n height = 390;\n width = 400;\n break;\n case ChallengeWindowSize.Windowed500x600:\n height = 500;\n width = 600;\n break;\n case ChallengeWindowSize.Windowed600x400:\n height = 600;\n width = 400;\n break;\n default:\n break;\n }\n return { height, width };\n}\n\nexport function messageCategoryFromAuthenticationRequestType(\n authenticationRequestType: AuthenticationRequestType,\n) {\n switch (authenticationRequestType) {\n case AuthenticationRequestType.AddCard:\n case AuthenticationRequestType.CardholderVerification:\n case AuthenticationRequestType.MaintainCard:\n return MessageCategory.NonPayment;\n case AuthenticationRequestType.InstalmentTransaction:\n case AuthenticationRequestType.PaymentTransaction:\n case AuthenticationRequestType.RecurringTransaction:\n default:\n return MessageCategory.Payment;\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nrequire(\"unfetch/polyfill\");\nrequire(\"./array-foreach\");\nrequire(\"./base64\");\nrequire(\"./json\");\nrequire(\"./object-freeze\");\nrequire(\"./object-getownpropertynames\");\nrequire(\"./parentnode-prepend\");\nrequire(\"./promise\");\nrequire(\"./string-repeat\");\n//# sourceMappingURL=index.js.map","export interface IGPErrorReason {\n code: string;\n message: string;\n}\n\nexport class GPError extends Error {\n public error = true;\n public reasons: IGPErrorReason[];\n\n constructor(reasons: IGPErrorReason[], message?: string) {\n super(message || \"Error: see `reasons` property\");\n this.reasons = reasons;\n }\n}\n","import {\n IChallengeNotificationData,\n IMethodNotificationData,\n} from \"../interfaces\";\n\nexport function handleNotificationMessageEvent(\n event: string,\n data: IChallengeNotificationData | IMethodNotificationData,\n origin?: string,\n) {\n if (window.parent !== window) {\n window.parent.postMessage(\n { data, event },\n origin || window.location.origin,\n );\n }\n}\n","import { GPError } from \"./gp-error\";\n\n// tslint:disable-next-line:no-empty-interface\nexport interface IRequestData {}\n\n// tslint:disable-next-line:no-empty-interface\nexport interface IResponseData {}\n\nexport async function makeRequest(\n endpoint: string,\n data: IRequestData,\n): Promise {\n const headers = {\n \"Content-Type\": \"application/json\",\n };\n\n try {\n const rawResponse = await fetch(endpoint, {\n body: JSON.stringify(data),\n credentials: \"omit\",\n headers: typeof Headers !== \"undefined\" ? new Headers(headers) : headers,\n method: \"POST\",\n });\n\n if (!rawResponse.ok) {\n throw new GPError(\n [\n {\n code: rawResponse.status.toString(),\n message: await rawResponse.text(),\n },\n ],\n rawResponse.statusText,\n );\n }\n\n return await rawResponse.json();\n } catch (e) {\n let reasons = [{ code: e.name, message: e.message }];\n if (e.reasons) {\n reasons = reasons.concat(e.reasons);\n }\n throw new GPError(reasons);\n }\n}\n","import {\n ChallengeWindowSize,\n dimensionsFromChallengeWindowSize,\n} from \"../enums\";\nimport { IChallengeWindowOptions } from \"../interfaces\";\n\n// most of this module is pulled from the legacy Realex Payments JavaScript library\n\nexport const isWindowsMobileOs = /Windows Phone|IEMobile/.test(\n navigator.userAgent,\n);\nexport const isAndroidOrIOs = /Android|iPad|iPhone|iPod/.test(\n navigator.userAgent,\n);\nexport const isMobileXS =\n ((window.innerWidth > 0 ? window.innerWidth : screen.width) <= 360\n ? true\n : false) ||\n ((window.innerHeight > 0 ? window.innerHeight : screen.height) <= 360\n ? true\n : false);\n\n// For IOs/Android and small screen devices always open in new tab/window\n// TODO: Confirm/implement once sandbox support is in place\nexport const isMobileNewTab =\n !isWindowsMobileOs && (isAndroidOrIOs || isMobileXS);\n\n// Display IFrame on WIndows Phone OS mobile devices\nexport const isMobileIFrame = isWindowsMobileOs || isMobileNewTab;\n\nexport const randomId = Math.random()\n .toString(16)\n .substr(2, 8);\n\nexport function createLightbox(\n iFrame: HTMLIFrameElement,\n options: IChallengeWindowOptions,\n) {\n // Create the overlay\n const overlayElement = createOverlay();\n\n // Create the spinner\n const spinner = createSpinner();\n document.body.appendChild(spinner);\n\n const { height, width } = dimensionsFromChallengeWindowSize(options);\n\n // Configure the iframe\n if (height) {\n iFrame.setAttribute(\"height\", `${height}px`);\n }\n iFrame.setAttribute(\"frameBorder\", \"0\");\n if (width) {\n iFrame.setAttribute(\"width\", `${width}px`);\n }\n iFrame.setAttribute(\"seamless\", \"seamless\");\n\n iFrame.style.zIndex = \"10001\";\n iFrame.style.position = \"absolute\";\n iFrame.style.transition = \"transform 0.5s ease-in-out\";\n iFrame.style.transform = \"scale(0.7)\";\n iFrame.style.opacity = \"0\";\n\n overlayElement.appendChild(iFrame);\n\n if (isMobileIFrame || options.windowSize === ChallengeWindowSize.FullScreen) {\n iFrame.style.top = \"0px\";\n iFrame.style.bottom = \"0px\";\n iFrame.style.left = \"0px\";\n iFrame.style.marginLeft = \"0px;\";\n iFrame.style.width = \"100%\";\n iFrame.style.height = \"100%\";\n iFrame.style.minHeight = \"100%\";\n (iFrame.style as any).WebkitTransform = \"translate3d(0,0,0)\";\n iFrame.style.transform = \"translate3d(0, 0, 0)\";\n\n const metaTag = document.createElement(\"meta\");\n metaTag.name = \"viewport\";\n metaTag.content =\n \"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0\";\n document.getElementsByTagName(\"head\")[0].appendChild(metaTag);\n } else {\n iFrame.style.top = \"40px\";\n iFrame.style.left = \"50%\";\n iFrame.style.marginLeft = `-${width / 2}px`;\n }\n\n iFrame.onload = getIFrameOnloadEventHandler(\n iFrame,\n spinner,\n overlayElement,\n options,\n );\n}\n\nfunction closeModal() {\n Array.prototype.slice.call(document\n .querySelectorAll(`[target$=\"-${randomId}\"],[id$=\"-${randomId}\"]`))\n .forEach((element) => {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n });\n}\n\nfunction createOverlay() {\n const overlay = document.createElement(\"div\");\n overlay.setAttribute(\"id\", `GlobalPayments-overlay-${randomId}`);\n overlay.style.position = \"fixed\";\n overlay.style.width = \"100%\";\n overlay.style.height = \"100%\";\n overlay.style.top = \"0\";\n overlay.style.left = \"0\";\n overlay.style.transition = \"all 0.3s ease-in-out\";\n overlay.style.zIndex = \"100\";\n\n if (isMobileIFrame) {\n overlay.style.position = \"absolute !important\";\n (overlay.style as any).WebkitOverflowScrolling = \"touch\";\n overlay.style.overflowX = \"hidden\";\n overlay.style.overflowY = \"scroll\";\n }\n\n document.body.appendChild(overlay);\n\n setTimeout(() => {\n overlay.style.background = \"rgba(0, 0, 0, 0.7)\";\n }, 1);\n\n return overlay;\n}\n\nfunction createCloseButton(options: IChallengeWindowOptions) {\n if (\n document.getElementById(`GlobalPayments-frame-close-${randomId}`) !== null\n ) {\n return;\n }\n\n const closeButton = document.createElement(\"img\");\n closeButton.id = `GlobalPayments-frame-close-${randomId}`;\n closeButton.src =\n // tslint:disable-next-line:max-line-length\n \"data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUJFRjU1MEIzMUQ3MTFFNThGQjNERjg2NEZCRjFDOTUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUJFRjU1MEMzMUQ3MTFFNThGQjNERjg2NEZCRjFDOTUiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQkVGNTUwOTMxRDcxMUU1OEZCM0RGODY0RkJGMUM5NSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQkVGNTUwQTMxRDcxMUU1OEZCM0RGODY0RkJGMUM5NSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PlHco5QAAAHpSURBVHjafFRdTsJAEF42JaTKn4glGIg++qgX4AAchHAJkiZcwnAQD8AF4NFHCaC2VgWkIQQsfl/jNJUik8Duzs/XmW9mN7Xb7VRc5vP5zWKxaK5Wq8Zmu72FqobfJG0YQ9M0+/l8/qFQKDzGY1JxENd1288vLy1s786KRZXJZCLber1Wn7MZt4PLarVnWdZ9AmQ8Hncc17UvymVdBMB/MgPQm+cFFcuy6/V6lzqDf57ntWGwYdBIVx0TfkBD6I9M35iRJgfIoAVjBLDZbA4CiJ5+9AdQi/EahibqDTkQx6fRSIHcPwA8Uy9A9Gcc47Xv+w2wzhRDYzqdVihLIbsIiCvP1NNOoX/29FQx3vgOgtt4FyRdCgPRarX4+goB9vkyAMh443cOEsIAAcjncuoI4TXWMAmCIGFhCQLAdZ8jym/cRJ+Y5nC5XCYAhINKpZLgSISZgoqh5iiLQrojAFICVwGS7tCfe5DbZzkP56XS4NVxwvTI/vXVVYIDnqmnnX70ZxzjNS8THHooK5hMpxHQIREA+tEfA9djfHR3MHkdx3Hspe9r3B+VzWaj2RESyR2mlCUE4MoGQDdxiwHURq2t94+PO9bMIYyTyDNLwMoM7g8+BfKeYGniyw2MdfSehF3Qmk1IvCc/AgwAaS86Etp38bUAAAAASUVORK5CYII=\";\n closeButton.style.transition = \"all 0.5s ease-in-out\";\n closeButton.style.opacity = \"0\";\n (closeButton.style as any).float = \"left\";\n closeButton.style.position = \"absolute\";\n closeButton.style.left = \"50%\";\n closeButton.style.zIndex = \"99999999\";\n closeButton.style.top = \"30px\";\n\n const { width } = dimensionsFromChallengeWindowSize(options);\n if (width) {\n closeButton.style.marginLeft = `${width / 2 - 8 /* half image width */}px`;\n }\n\n setTimeout(() => {\n closeButton.style.opacity = \"1\";\n }, 500);\n\n if (isMobileIFrame || options.windowSize === ChallengeWindowSize.FullScreen) {\n (closeButton.style as any).float = \"right\";\n closeButton.style.top = \"20px\";\n closeButton.style.left = \"initial\";\n closeButton.style.marginLeft = \"0px\";\n closeButton.style.right = \"20px\";\n }\n\n return closeButton;\n}\n\nfunction createSpinner() {\n const spinner = document.createElement(\"img\");\n spinner.setAttribute(\n \"src\",\n // tslint:disable-next-line:max-line-length\n \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PHN2ZyB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjAiIHdpZHRoPSIzMnB4IiBoZWlnaHQ9IjMycHgiIHZpZXdCb3g9IjAgMCAxMjggMTI4IiB4bWw6c3BhY2U9InByZXNlcnZlIj48Zz48cGF0aCBkPSJNMzguNTIgMzMuMzdMMjEuMzYgMTYuMkE2My42IDYzLjYgMCAwIDEgNTkuNS4xNnYyNC4zYTM5LjUgMzkuNSAwIDAgMC0yMC45OCA4LjkyeiIgZmlsbD0iIzAwNzBiYSIgZmlsbC1vcGFjaXR5PSIxIi8+PHBhdGggZD0iTTM4LjUyIDMzLjM3TDIxLjM2IDE2LjJBNjMuNiA2My42IDAgMCAxIDU5LjUuMTZ2MjQuM2EzOS41IDM5LjUgMCAwIDAtMjAuOTggOC45MnoiIGZpbGw9IiNjMGRjZWUiIGZpbGwtb3BhY2l0eT0iMC4yNSIgdHJhbnNmb3JtPSJyb3RhdGUoNDUgNjQgNjQpIi8+PHBhdGggZD0iTTM4LjUyIDMzLjM3TDIxLjM2IDE2LjJBNjMuNiA2My42IDAgMCAxIDU5LjUuMTZ2MjQuM2EzOS41IDM5LjUgMCAwIDAtMjAuOTggOC45MnoiIGZpbGw9IiNjMGRjZWUiIGZpbGwtb3BhY2l0eT0iMC4yNSIgdHJhbnNmb3JtPSJyb3RhdGUoOTAgNjQgNjQpIi8+PHBhdGggZD0iTTM4LjUyIDMzLjM3TDIxLjM2IDE2LjJBNjMuNiA2My42IDAgMCAxIDU5LjUuMTZ2MjQuM2EzOS41IDM5LjUgMCAwIDAtMjAuOTggOC45MnoiIGZpbGw9IiNjMGRjZWUiIGZpbGwtb3BhY2l0eT0iMC4yNSIgdHJhbnNmb3JtPSJyb3RhdGUoMTM1IDY0IDY0KSIvPjxwYXRoIGQ9Ik0zOC41MiAzMy4zN0wyMS4zNiAxNi4yQTYzLjYgNjMuNiAwIDAgMSA1OS41LjE2djI0LjNhMzkuNSAzOS41IDAgMCAwLTIwLjk4IDguOTJ6IiBmaWxsPSIjYzBkY2VlIiBmaWxsLW9wYWNpdHk9IjAuMjUiIHRyYW5zZm9ybT0icm90YXRlKDE4MCA2NCA2NCkiLz48cGF0aCBkPSJNMzguNTIgMzMuMzdMMjEuMzYgMTYuMkE2My42IDYzLjYgMCAwIDEgNTkuNS4xNnYyNC4zYTM5LjUgMzkuNSAwIDAgMC0yMC45OCA4LjkyeiIgZmlsbD0iI2MwZGNlZSIgZmlsbC1vcGFjaXR5PSIwLjI1IiB0cmFuc2Zvcm09InJvdGF0ZSgyMjUgNjQgNjQpIi8+PHBhdGggZD0iTTM4LjUyIDMzLjM3TDIxLjM2IDE2LjJBNjMuNiA2My42IDAgMCAxIDU5LjUuMTZ2MjQuM2EzOS41IDM5LjUgMCAwIDAtMjAuOTggOC45MnoiIGZpbGw9IiNjMGRjZWUiIGZpbGwtb3BhY2l0eT0iMC4yNSIgdHJhbnNmb3JtPSJyb3RhdGUoMjcwIDY0IDY0KSIvPjxwYXRoIGQ9Ik0zOC41MiAzMy4zN0wyMS4zNiAxNi4yQTYzLjYgNjMuNiAwIDAgMSA1OS41LjE2djI0LjNhMzkuNSAzOS41IDAgMCAwLTIwLjk4IDguOTJ6IiBmaWxsPSIjYzBkY2VlIiBmaWxsLW9wYWNpdHk9IjAuMjUiIHRyYW5zZm9ybT0icm90YXRlKDMxNSA2NCA2NCkiLz48YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iIHR5cGU9InJvdGF0ZSIgdmFsdWVzPSIwIDY0IDY0OzQ1IDY0IDY0OzkwIDY0IDY0OzEzNSA2NCA2NDsxODAgNjQgNjQ7MjI1IDY0IDY0OzI3MCA2NCA2NDszMTUgNjQgNjQiIGNhbGNNb2RlPSJkaXNjcmV0ZSIgZHVyPSIxMjgwbXMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIj48L2FuaW1hdGVUcmFuc2Zvcm0+PC9nPjwvc3ZnPg==\",\n );\n spinner.setAttribute(\"id\", `GlobalPayments-loader-${randomId}`);\n spinner.style.left = \"50%\";\n spinner.style.position = \"fixed\";\n spinner.style.background = \"#FFFFFF\";\n spinner.style.borderRadius = \"50%\";\n spinner.style.width = \"30px\";\n spinner.style.zIndex = \"200\";\n spinner.style.marginLeft = \"-15px\";\n spinner.style.top = \"120px\";\n return spinner;\n}\n\nfunction getIFrameOnloadEventHandler(\n iFrame: HTMLIFrameElement,\n spinner: Element,\n overlayElement: Element,\n options: IChallengeWindowOptions,\n) {\n return () => {\n iFrame.style.opacity = \"1\";\n iFrame.style.transform = \"scale(1)\";\n iFrame.style.backgroundColor = \"#ffffff\";\n\n if (spinner.parentNode) {\n spinner.parentNode.removeChild(spinner);\n }\n\n let closeButton: HTMLImageElement | undefined;\n\n closeButton = createCloseButton(options);\n if (closeButton) {\n overlayElement.appendChild(closeButton);\n closeButton.addEventListener(\n \"click\",\n () => {\n if (closeButton) {\n closeModal();\n }\n },\n true,\n );\n }\n };\n}\n","import { dimensionsFromChallengeWindowSize } from \"../enums\";\nimport {\n IChallengeWindowOptions,\n IIframeData,\n IMessageEventData,\n} from \"../interfaces\";\nimport { createLightbox, randomId } from \"./lightbox\";\n\nexport function postToIframe(\n endpoint: string,\n fields: any,\n options: IChallengeWindowOptions,\n): Promise {\n return new Promise((resolve, reject) => {\n let timeout: any;\n if (options.timeout) {\n timeout = setTimeout(() => {\n ensureIframeClosed(timeout);\n reject(new Error(\"timeout reached\"));\n }, options.timeout);\n }\n\n const iframe = document.createElement(\"iframe\");\n iframe.id = iframe.name = `GlobalPayments-3DSecure-${randomId}`;\n iframe.style.display = options.hide ? \"none\" : \"inherit\";\n\n const form = createForm(endpoint, iframe.id, fields);\n\n switch (options.displayMode) {\n case \"redirect\":\n // TODO: Add redirect support once sandbox environment respects configured\n // challengeNotificationUrl instead of hardcoded value\n ensureIframeClosed(timeout);\n reject(new Error(\"Not implemented\"));\n return;\n case \"lightbox\":\n createLightbox(iframe, options);\n break;\n case \"embedded\":\n default:\n if (!handleEmbeddedIframe(reject, { iframe, timeout }, options)) {\n // rejected\n return;\n }\n break;\n }\n\n window.addEventListener(\n \"message\",\n getWindowMessageEventHandler(resolve, {\n origin: options.origin,\n timeout,\n }),\n );\n\n document.body.appendChild(form);\n form.submit();\n });\n}\n\nfunction createForm(action: string, target: string, fields: any) {\n const form = document.createElement(\"form\");\n\n form.setAttribute(\"method\", \"POST\");\n form.setAttribute(\"action\", action);\n form.setAttribute(\"target\", target);\n\n for (const field of fields) {\n const input = document.createElement(\"input\");\n input.setAttribute(\"type\", \"hidden\");\n input.setAttribute(\"name\", field.name);\n input.setAttribute(\"value\", field.value);\n form.appendChild(input);\n }\n\n return form;\n}\n\nfunction ensureIframeClosed(timeout: number) {\n if (timeout) {\n clearTimeout(timeout);\n }\n\n try {\n Array.prototype.slice.call(document\n .querySelectorAll(`[target$=\"-${randomId}\"],[id$=\"-${randomId}\"]`))\n .forEach((element) => {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n });\n } catch (e) {\n /** */\n }\n}\n\nfunction getWindowMessageEventHandler(\n resolve: (\n data: IMessageEventData | PromiseLike,\n ) => void,\n data: IIframeData,\n) {\n return (e: MessageEvent) => {\n const origin = data.origin || window.location.origin;\n\n if (origin !== e.origin) {\n return;\n }\n\n ensureIframeClosed(data.timeout || 0);\n resolve(e.data);\n };\n}\n\nfunction handleEmbeddedIframe(\n reject: (reason: any) => void,\n data: IIframeData,\n options: IChallengeWindowOptions,\n) {\n let targetElement: Element | null | undefined;\n\n if (options.hide) {\n targetElement = document.body;\n } else if (typeof options.target === \"string\") {\n targetElement = document.querySelector(options.target);\n } else {\n targetElement = options.target;\n }\n\n if (!targetElement) {\n ensureIframeClosed(data.timeout || 0);\n reject(new Error(\"Embed target not found\"));\n return false;\n }\n\n const { height, width } = dimensionsFromChallengeWindowSize(options);\n\n if (data.iframe) {\n data.iframe.setAttribute(\"height\", height ? `${height}px` : \"100%\");\n data.iframe.setAttribute(\"width\", width ? `${width}px` : \"100%\");\n targetElement.appendChild(data.iframe);\n }\n\n return true;\n}\n","import \"globalpayments-lib/polyfills\";\n\n// re-exports\nexport * from \"./enums\";\nexport * from \"./interfaces\";\n\n// local imports\nimport {\n AuthenticationRequestType,\n AuthenticationSource,\n ChallengeRequestIndicator,\n TransactionStatus,\n colorDepth,\n messageCategoryFromAuthenticationRequestType,\n} from \"./enums\";\nimport {\n IBrowserData,\n IChallengeNotificationData,\n IChallengeWindowOptions,\n ICheckVersionRequestData,\n ICheckVersionResponseData,\n IInitiateAuthenticationRequestData,\n IInitiateAuthenticationResponseData,\n IMethodNotificationData,\n} from \"./interfaces\";\nimport { GPError } from \"./lib/gp-error\";\nimport { handleNotificationMessageEvent } from \"./lib/handle-notification-message-event\";\nimport { makeRequest } from \"./lib/make-request\";\nimport { postToIframe } from \"./lib/post-to-iframe\";\n\n/**\n * Retrieves client browser runtime data.\n */\nexport function getBrowserData(): IBrowserData {\n const now = new Date();\n return {\n colorDepth: screen && colorDepth(screen.colorDepth),\n javaEnabled: navigator && navigator.javaEnabled(),\n javascriptEnabled: true, // if this is running, js is enabled\n language: navigator && navigator.language,\n screenHeight: screen && screen.height,\n screenWidth: screen && screen.width,\n time: now,\n timezoneOffset: now.getTimezoneOffset() / 60,\n userAgent: navigator && navigator.userAgent,\n };\n}\n\n/**\n * Facilitates backend request to merchant integration to check the enrolled 3DS version for the consumer's card.\n *\n * @param endpoint Merchant integration endpoint responsible for performing the version check\n * @param data Request data to aid in version check request\n * @throws When an error occurred during the request\n */\nexport async function checkVersion(\n endpoint: string,\n data?: ICheckVersionRequestData,\n): Promise {\n data = data || {};\n\n try {\n const response = (await makeRequest(\n endpoint,\n data,\n )) as ICheckVersionResponseData;\n\n return await handle3dsVersionCheck(response, data.methodWindow);\n } catch (e) {\n let reasons = [{ code: e.name, message: e.message }];\n if (e.reasons) {\n reasons = reasons.concat(e.reasons);\n }\n throw new GPError(reasons);\n }\n}\n\n/**\n * Facilitates backend request to merchant integration to initiate 3DS 2.0 authentication workflows with the consumer.\n *\n * @param endpoint Merchant integration endpoint responsible for initiating the authentication request\n * @param data Request data to aid in initiating authentication\n * @throws When an error occurred during the request\n */\nexport async function initiateAuthentication(\n endpoint: string,\n data: IInitiateAuthenticationRequestData,\n): Promise {\n try {\n data.authenticationSource =\n data.authenticationSource || AuthenticationSource.Browser;\n data.authenticationRequestType =\n data.authenticationRequestType ||\n AuthenticationRequestType.PaymentTransaction;\n data.messageCategory =\n data.messageCategory ||\n messageCategoryFromAuthenticationRequestType(\n data.authenticationRequestType,\n );\n data.challengeRequestIndicator =\n data.challengeRequestIndicator || ChallengeRequestIndicator.NoPreference;\n // still needs ip address and accept header from server-side\n data.browserData = data.browserData || getBrowserData();\n\n const response = (await makeRequest(\n endpoint,\n data,\n )) as IInitiateAuthenticationResponseData;\n\n return await handleInitiateAuthentication(response, data.challengeWindow);\n } catch (e) {\n let reasons = [{ code: e.name, message: e.message }];\n if (e.reasons) {\n reasons = reasons.concat(e.reasons);\n }\n throw new GPError(reasons);\n }\n}\n\n/**\n * Handles response from merchant integration endpoint for the version check request. When a card is enrolled and a\n * method URL is present, a hidden iframe to the method URL will be created to handle device fingerprinting\n * requirements.\n *\n * @param data Version check data from merchant integration endpoint\n * @param options Configuration options for the method window\n * @throws When a card is not enrolled\n */\nexport async function handle3dsVersionCheck(\n data: ICheckVersionResponseData,\n options?: IChallengeWindowOptions,\n) {\n if (!data.enrolled) {\n throw new Error(\"Card not enrolled\");\n }\n\n options = options || {};\n options.hide = typeof options.hide === \"undefined\" ? true : options.hide;\n options.timeout =\n typeof options.timeout === \"undefined\" ? 30 * 1000 : options.timeout;\n\n if (data.methodUrl) {\n await postToIframe(\n data.methodUrl,\n [{ name: \"threeDSMethodData\", value: data.methodData }],\n options,\n );\n }\n\n return data;\n}\n/**\n * Handles response from merchant integration endpoint for initiating 3DS 2.0 authentication flows with consumer. If a\n * challenge is mandated, an iframe will be created for the issuer's necessary challenge URL.\n *\n * @param data Initiate authentication data from merchant integration endpoint\n * @param options Configuration options for the challenge window\n * @throws When a challenge is mandated but no challenge URL was supplied\n * @throws When an error occurred during the challenge request\n */\nexport async function handleInitiateAuthentication(\n data: IInitiateAuthenticationResponseData,\n options: IChallengeWindowOptions,\n) {\n if (data.challengeMandated || data.status === TransactionStatus.ChallengeRequired) {\n data.challenge = data.challenge || {};\n\n if (!data.challenge.requestUrl) {\n throw new Error(\"Invalid challenge state. Missing challenge URL\");\n }\n\n const response = await postToIframe(\n data.challenge.requestUrl,\n [\n { name: \"creq\", value: data.challenge.encodedChallengeRequest },\n // TODO: support session data\n ],\n options,\n );\n\n data.challenge.response = response;\n }\n\n return data;\n}\n\n/**\n * Assists with notifying the parent window of challenge status\n *\n * @param data Raw data from the challenge notification\n * @param origin Target origin for the message. Default is `window.location.origin`.\n */\nexport function handleChallengeNotification(\n data: IChallengeNotificationData,\n origin?: string,\n) {\n handleNotificationMessageEvent(\"challengeNotification\", data, origin);\n}\n\n/**\n * Assists with notifying the parent window of method status\n *\n * @param data Raw data from the method notification\n * @param origin Target origin for the message. Default is `window.location.origin`.\n */\nexport function handleMethodNotification(\n data: IMethodNotificationData,\n origin?: string,\n) {\n handleNotificationMessageEvent(\"methodNotification\", data, origin);\n}\n"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","pop","length","push","self","fetch","s","r","XMLHttpRequest","o","u","i","a","ok","status","statusText","url","responseURL","text","responseText","json","JSON","parse","blob","Blob","response","clone","headers","keys","entries","get","toLowerCase","has","c","open","method","onload","getAllResponseHeaders","replace","onerror","withCredentials","credentials","setRequestHeader","send","prototype","forEach","fn","b64","lens","getLens","validLen","placeHoldersLen","tmp","arr","Arr","_byteLength","curByte","len","revLookup","charCodeAt","uint8","extraBytes","parts","maxChunkLength","len2","encodeChunk","lookup","join","Uint8Array","code","Error","indexOf","start","end","num","output","freezeObject","base64encode","u8array","base64_js_1","fromByteArray","base64decode","u8Array","toByteArray","bStr","String","fromCharCode","defineProperty","exports","window","btoa","atob","Date","toJSON","_KEY","isFinite","valueOf","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","strProto","Number","Boolean","gap","indent","rep","cx","esc","meta","\b","\t","\n","\f","\r","\"","\\","quote","quoteStr","lastIndex","test","toString","slice","str","key","holder","k","partial","mind","stringify","replacer","space","reviver","j","Function","walk","SyntaxError","json2_1","freeze","object","exception","prop","getOwnPropertyNames","obj","Element","Document","DocumentFragment","item","configurable","enumerable","writable","argArr","arguments","docFrag","document","createDocumentFragment","argItem","isNode","Node","appendChild","createTextNode","insertBefore","firstChild","setTimeoutFunc","setTimeout","isArray","x","noop","_state","_handled","_value","undefined","_deferreds","doResolve","handle","deferred","_immediateFn","cb","onFulfilled","onRejected","ret","promise","newValue","finale","_unhandledRejectionFn","Handler","reason","ex","prom","constructor","callback","all","args","remaining","res","val","allSettled","race","setImmediate","err","console","default","repeat","AuthenticationSource","AuthenticationRequestType","ChallengeRequestIndicator","ChallengeWindowSize","MessageCategory","MethodUrlCompletion","TransactionStatus","TransactionStatusReason","colorDepth","dimensionsFromChallengeWindowSize","options","height","width","size","windowSize","Windowed250x400","Windowed390x400","Windowed500x600","Windowed600x400","messageCategoryFromAuthenticationRequestType","authenticationRequestType","AddCard","CardholderVerification","MaintainCard","NonPayment","InstalmentTransaction","PaymentTransaction","RecurringTransaction","Payment","reasons","message","_super","_this","__","create","__extends","handleNotificationMessageEvent","event","data","origin","parent","postMessage","location","makeRequest","endpoint","Content-Type","Headers","rawResponse","_c","GPError","_b","e_1","name","concat","isWindowsMobileOs","navigator","userAgent","isAndroidOrIOs","isMobileXS","innerWidth","screen","innerHeight","isMobileIFrame","randomId","Math","random","substr","createLightbox","iFrame","overlayElement","overlay","createElement","setAttribute","style","position","top","left","transition","zIndex","WebkitOverflowScrolling","overflowX","overflowY","background","createOverlay","spinner","borderRadius","marginLeft","createSpinner","_a","transform","opacity","FullScreen","bottom","minHeight","WebkitTransform","metaTag","content","getElementsByTagName","closeButton","backgroundColor","parentNode","removeChild","getElementById","id","src","float","right","createCloseButton","addEventListener","querySelectorAll","element","getIFrameOnloadEventHandler","postToIframe","fields","timeout","ensureIframeClosed","iframe","display","hide","form","action","target","fields_1","_i","field","input","createForm","displayMode","targetElement","querySelector","handleEmbeddedIframe","getWindowMessageEventHandler","submit","clearTimeout","getBrowserData","now","javaEnabled","javascriptEnabled","language","screenHeight","screenWidth","time","timezoneOffset","getTimezoneOffset","handle3dsVersionCheck","enrolled","methodUrl","methodData","handleInitiateAuthentication","challengeMandated","ChallengeRequired","challenge","requestUrl","encodedChallengeRequest","methodWindow","authenticationSource","Browser","messageCategory","challengeRequestIndicator","NoPreference","browserData","challengeWindow","e_2"],"mappings":"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"}