{"version":3,"file":"globalpayments.js","sources":["../node_modules/unfetch/dist/unfetch.es.js","../node_modules/unfetch/polyfill.js","../src/lib/array-foreach-polyfill.ts","../node_modules/base64-js/index.js","../src/lib/base64-polyfill.ts","../src/lib/json.ts","../src/lib/json-polyfill.ts","../src/lib/object-freeze-polyfill.ts","../src/lib/object-getownpropertynames-polyfill.ts","../node_modules/promise-polyfill/lib/index.js","../src/lib/promise-polyfill.ts","../src/lib/string-repeat-polyfill.ts","../src/internal/lib/add-sandbox-alert.ts","../src/internal/lib/options.ts","../src/internal/gateways/genius/action-normalize-response.ts","../node_modules/tslib/tslib.es6.js","../src/internal/gateways/genius/action-tokenize.ts","../src/internal/gateways/genius/action-validate-data.ts","../src/internal/gateways/genius/index.ts","../src/internal/gateways/globalpayments/action-normalize-response.ts","../src/internal/lib/loaded-frames.ts","../src/internal/lib/post-message.ts","../src/internal/gateways/globalpayments/action-setup.ts","../src/internal/lib/payment-field-id.ts","../src/lib/generate-guid.ts","../src/internal/gateways/globalpayments/action-onload.ts","../src/internal/gateways/globalpayments/action-tokenize.ts","../src/internal/gateways/globalpayments/action-validate-data.ts","../src/internal/gateways/globalpayments/index.ts","../src/internal/gateways/heartland/action-normalize-response.ts","../src/internal/gateways/heartland/action-tokenize.ts","../src/internal/gateways/heartland/action-validate-data.ts","../src/internal/gateways/heartland/index.ts","../src/internal/gateways/openedge/action-normalize-response.ts","../src/internal/gateways/openedge/action-tokenize.ts","../src/internal/gateways/openedge/action-validate-data.ts","../src/lib/event-emitter.ts","../src/internal/lib/build-tokenization-url.ts","../src/internal/lib/card-types.ts","../src/internal/requests/tokenize.ts","../src/internal/index.ts","../src/lib/version.ts","../src/internal/gateways/openedge/get-asset-base-url.ts","../src/internal/gateways/openedge/index.ts","../src/internal/gateways/transit/action-normalize-response.ts","../src/internal/gateways/transit/action-tokenize.ts","../src/internal/gateways/transit/action-validate-data.ts","../src/internal/gateways/transit/index.ts","../src/internal/gateways/index.ts","../src/internal/lib/get-gateway.ts","../src/internal/lib/object-assign.ts","../src/internal/lib/styles.ts","../src/internal/lib/asset-base-url.ts","../src/internal/lib/styles/default.ts","../src/internal/lib/styles/simple.ts","../src/internal/formatters/card-number.ts","../src/internal/formatters/expiration.ts","../src/internal/validators/card-number.ts","../src/internal/validators/cvv.ts","../src/internal/validators/expiration.ts","../src/internal/lib/ev.ts","../src/internal/lib/events.ts","../src/internal/lib/card.ts","../src/ui/iframe-field/action-accumulate-data-and-tokenize.ts","../src/ui/iframe-field/action-card-track-button-click.ts","../src/ui/iframe-field/action-payment-request-complete.ts","../src/ui/iframe-field/action-payment-request-start.ts","../src/ui/iframe-field/action-request-data.ts","../src/ui/iframe-field/action-set-card-type.ts","../src/ui/iframe-field/action-set-focus.ts","../src/internal/lib/encode-entities.ts","../src/ui/iframe-field/action-set-label.ts","../src/ui/iframe-field/action-set-placeholder.ts","../src/ui/iframe-field/action-set-text.ts","../src/ui/iframe-field/action-set-value.ts","../src/ui/iframe-field/index.ts","../src/ui/form/index.ts","../src/credit-card/index.ts","../src/echeck/index.ts","../src/gift-and-loyalty/index.ts","../src/payment-request/complete.ts","../src/payment-request/defaults.ts","../src/payment-request/setup.ts","../src/tools/configure.ts","../src/ui/index.ts","../src/index.ts"],"sourcesContent":["var index = typeof fetch=='function' ? fetch.bind() : function(url, options) {\n\toptions = options || {};\n\treturn new Promise( function (resolve, reject) {\n\t\tvar request = new XMLHttpRequest();\n\n\t\trequest.open(options.method || 'get', url, true);\n\n\t\tfor (var i in options.headers) {\n\t\t\trequest.setRequestHeader(i, options.headers[i]);\n\t\t}\n\n\t\trequest.withCredentials = options.credentials=='include';\n\n\t\trequest.onload = function () {\n\t\t\tresolve(response());\n\t\t};\n\n\t\trequest.onerror = reject;\n\n\t\trequest.send(options.body || null);\n\n\t\tfunction response() {\n\t\t\tvar keys = [],\n\t\t\t\tall = [],\n\t\t\t\theaders = {},\n\t\t\t\theader;\n\n\t\t\trequest.getAllResponseHeaders().replace(/^(.*?):[^\\S\\n]*([\\s\\S]*?)$/gm, function (m, key, value) {\n\t\t\t\tkeys.push(key = key.toLowerCase());\n\t\t\t\tall.push([key, value]);\n\t\t\t\theader = headers[key];\n\t\t\t\theaders[key] = header ? (header + \",\" + value) : value;\n\t\t\t});\n\n\t\t\treturn {\n\t\t\t\tok: (request.status/100|0) == 2,\t\t// 200-299\n\t\t\t\tstatus: request.status,\n\t\t\t\tstatusText: request.statusText,\n\t\t\t\turl: request.responseURL,\n\t\t\t\tclone: response,\n\t\t\t\ttext: function () { return Promise.resolve(request.responseText); },\n\t\t\t\tjson: function () { return Promise.resolve(request.responseText).then(JSON.parse); },\n\t\t\t\tblob: function () { return Promise.resolve(new Blob([request.response])); },\n\t\t\t\theaders: {\n\t\t\t\t\tkeys: function () { return keys; },\n\t\t\t\t\tentries: function () { return all; },\n\t\t\t\t\tget: function (n) { return headers[n.toLowerCase()]; },\n\t\t\t\t\thas: function (n) { return n.toLowerCase() in headers; }\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t});\n};\n\nexport default index;\n//# sourceMappingURL=unfetch.es.js.map\n","if (!window.fetch) window.fetch = require('.').default || require('.');\n","if (!Array.prototype.forEach) {\n Array.prototype.forEach = function(\n fn: (value: any, index: number, arr: any[]) => void,\n ) {\n for (let i = 0; i < this.length; i++) {\n fn(this[i], i, this);\n }\n };\n}\n","'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 for (var 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(\n uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)\n ))\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","import { fromByteArray, toByteArray } from \"base64-js\";\n\nexport function base64encode(text: string): string {\n let i: number;\n const len = text.length;\n const Arr: any = typeof Uint8Array !== \"undefined\" ? Uint8Array : Array;\n const u8array = new Arr(len);\n\n for (i = 0; i < len; i++) {\n u8array[i] = text.charCodeAt(i);\n }\n\n return fromByteArray(u8array);\n}\n\nexport function base64decode(text: string): string {\n const u8Array = toByteArray(text);\n let i: number;\n const len = u8Array.length;\n let bStr = \"\";\n\n for (i = 0; i < len; i++) {\n bStr += String.fromCharCode(u8Array[i]);\n }\n\n return bStr;\n}\n\nwindow.btoa = window.btoa || base64encode;\nwindow.atob = window.atob || base64decode;\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----------------------------------------------------------------------------- */\n\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\n/*jslint evil: true, regexp: true */\n\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\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.\n\nexport let JSON: any = {};\n\n(() => {\n \"use strict\";\n\n function f(n: number) {\n // format integers to have at least two digits.\n return n < 10 ? \"0\" + n : n;\n }\n\n if (typeof Date.prototype.toJSON !== \"function\") {\n Date.prototype.toJSON = function(_KEY?: any) {\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\n const strProto: any = String.prototype;\n const numProto: any = Number.prototype;\n numProto.JSON = strProto.JSON = (Boolean.prototype as any).toJSON = function(\n _KEY?: any,\n ) { return this.valueOf(); };\n }\n\n const cx = /[\\u0000\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g;\n // tslint:disable-next-line\n const esc = /[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g;\n let gap: string;\n let indent: string;\n const 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 let rep: string[] | (() => void);\n\n function quote(quoteStr: string) {\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\n esc.lastIndex = 0;\n return esc.test(quoteStr)\n ? '\"' +\n quoteStr.replace(esc, (a: string) => {\n const c = (meta as any)[a];\n return typeof c === \"string\"\n ? c\n : \"\\\\u\" + (\"0000\" + a.charCodeAt(0).toString(16)).slice(-4);\n }) +\n '\"'\n : '\"' + quoteStr + '\"';\n }\n\n function str(key: string, holder: any): string | undefined {\n // produce a string from holder[key].\n\n let i: number; // the loop counter.\n let k: string; // the member key.\n let v: any; // the member value.\n let length: number;\n const mind = gap;\n let partial: string[];\n let value = holder[key];\n\n // if the value has a toJSON method, call it to obtain a replacement value.\n\n if (\n value &&\n typeof value === \"object\" &&\n typeof value.toJSON === \"function\"\n ) {\n value = value.toJSON(key);\n }\n\n // if we were called with a replacer function, then call the replacer to\n // obtain a replacement value.\n\n if (typeof rep === \"function\") {\n value = (rep as (key: string | number, value: any) => void).call(holder, key, value);\n }\n\n // what happens next depends on the value\"s type.\n\n switch (typeof value as any) {\n case \"string\":\n return quote(value);\n\n case \"number\":\n // json numbers must be finite. Encode non-finite numbers as null.\n\n return isFinite(value) ? String(value) : \"null\";\n\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\n return String(value);\n\n // if the type is \"object\", we might be dealing with an object or an array or\n // null.\n\n case \"object\":\n // due to a specification blunder in ECMAScript, typeof null is \"object\",\n // so watch out for that case.\n\n if (!value) {\n return \"null\";\n }\n\n // make an array to hold the partial: string[] results of stringifying this object value.\n\n gap += indent;\n partial = [];\n\n // is the value an array?\n\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\n length = value.length;\n for (i = 0; i < length; i += 1) {\n partial[i] = str(i.toString(), value) || \"null\";\n }\n\n // join all of the elements together, separated with commas, and wrap them in\n // brackets.\n\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\n // if the replacer is an array, use it to select the members to be stringified.\n\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 } else {\n // otherwise, iterate through all of the keys in the object.\n\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\n // join all of the member texts together, separated with commas,\n // and wrap them in braces.\n\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\n return undefined;\n }\n\n // if the JSON object does not yet have a stringify method, give it one.\n\n if (typeof JSON.stringify !== \"function\") {\n JSON.stringify = (\n value: any,\n replacer: string[] | (() => void),\n space: number | string,\n ) => {\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\n let i: number;\n gap = \"\";\n indent = \"\";\n\n // if the space parameter is a number, make an indent string containing that\n // many spaces.\n\n if (typeof space === \"number\") {\n for (i = 0; i < space; i += 1) {\n indent += \" \";\n }\n\n // if the space parameter is a string, it will be used as the indent string.\n } else if (typeof space === \"string\") {\n indent = space;\n }\n\n // if there is a replacer, it must be a function or an array.\n // otherwise, throw an error.\n\n rep = replacer;\n if (\n replacer &&\n typeof replacer !== \"function\" &&\n (typeof replacer !== \"object\" || typeof replacer.length !== \"number\")\n ) {\n throw new Error(\"JSON.stringify\");\n }\n\n // make a fake root object containing our value under the key of \"\".\n // return the result of stringifying the value.\n\n return str(\"\", { \"\": value });\n };\n }\n\n // if the JSON object does not yet have a parse method, give it one.\n\n if (typeof JSON.parse !== \"function\") {\n JSON.parse = (text: string, reviver: ((key: string | number, value: any) => object)) => {\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\n let j: number;\n\n function walk(holder: any, key: string | number): {} {\n // the walk method is used to recursively walk the resulting structure so\n // that modifications can be made.\n\n let k: string;\n let v: any;\n const value: any = 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\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\n text = String(text);\n cx.lastIndex = 0;\n if (cx.test(text)) {\n text = text.replace(cx, (a) => {\n return \"\\\\u\" + (\"0000\" + a.charCodeAt(0).toString(16)).slice(-4);\n });\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\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\n if (\n /^[\\],:{}\\s]*$/.test(\n text\n .replace(/\\\\(?:[\"\\\\\\/bfnrt]|u[0-9a-fA-F]{4})/g, \"@\")\n .replace(\n /\"[^\"\\\\\\n\\r]*\"|true|false|null|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g,\n \"]\",\n )\n .replace(/(?:^|:|,)(?:\\s*\\[)+/g, \"\"),\n )\n ) {\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\n // tslint:disable-next-line:function-constructor\n j = new Function(\"return (\" + text + \")\")();\n\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\n return typeof reviver === \"function\" ? walk({ \"\": j }, \"\") : j;\n }\n\n // if the text is not JSON parseable, then a SyntaxError is thrown.\n\n throw new SyntaxError(\"JSON.parse\");\n };\n }\n})();\n","import { JSON } from \"./json\";\n\n(window as any).JSON = (window as any).JSON || JSON;\n","// ES5 15.2.3.9\n// http://es5.github.com/#x15.2.3.9\nif (!Object.freeze) {\n Object.freeze = (object: any) => {\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\n// detect a Rhino bug and patch it\ntry {\n Object.freeze(() => undefined);\n} catch (exception) {\n Object.freeze = ((freezeObject) => {\n return (object: any) => {\n if (typeof object === \"function\") {\n return object;\n } else {\n return freezeObject(object);\n }\n };\n })(Object.freeze);\n}\n","if (!Object.prototype.hasOwnProperty) {\n Object.prototype.hasOwnProperty = function(prop: string) {\n return typeof (this as any)[prop] !== \"undefined\";\n };\n}\n\nif (!Object.getOwnPropertyNames) {\n Object.getOwnPropertyNames = (obj) => {\n const keys = [];\n for (const key in obj) {\n if (\n typeof obj.hasOwnProperty !== \"undefined\" &&\n obj.hasOwnProperty(key)\n ) {\n keys.push(key);\n }\n }\n return keys;\n };\n}\n","'use strict';\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 noop() {}\n\n// Polyfill for Function.prototype.bind\nfunction bind(fn, thisArg) {\n return function() {\n fn.apply(thisArg, arguments);\n };\n}\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 this._state = 0;\n this._handled = false;\n this._value = undefined;\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\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 var prom = new this.constructor(noop);\n\n handle(this, new Handler(onFulfilled, onRejected, prom));\n return prom;\n};\n\nPromise.prototype['finally'] = function(callback) {\n var constructor = this.constructor;\n return this.then(\n function(value) {\n return constructor.resolve(callback()).then(function() {\n return value;\n });\n },\n function(reason) {\n return constructor.resolve(callback()).then(function() {\n return constructor.reject(reason);\n });\n }\n );\n};\n\nPromise.all = function(arr) {\n return new Promise(function(resolve, reject) {\n if (!arr || typeof arr.length === 'undefined')\n throw new TypeError('Promise.all accepts an array');\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.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(values) {\n return new Promise(function(resolve, reject) {\n for (var i = 0, len = values.length; i < len; i++) {\n values[i].then(resolve, reject);\n }\n });\n};\n\n// Use polyfill for setImmediate for performance gains\nPromise._immediateFn =\n (typeof setImmediate === 'function' &&\n function(fn) {\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\nmodule.exports = Promise;\n","import Promise from \"promise-polyfill\";\n\n(window as any).Promise = (window as any).Promise || Promise;\n","if (!String.prototype.repeat) {\n String.prototype.repeat = function(length: number) {\n let result = \"\";\n\n for (let i = 0; i < length; i++) {\n result += this;\n }\n\n return result;\n };\n}\n","/**\n * Adds an alert letting the user know they're in sandbox mode\n *\n * @param target\n *\n */\nexport function addSandboxAlert(\n target: string | HTMLElement,\n insertBefore?: Node,\n) {\n const el = document.createElement(\"div\");\n const text = document.createTextNode(\n \"This page is currently in sandbox/test mode. Do not use real/active card numbers.\",\n );\n el.appendChild(text);\n el.className = \"sandbox-warning\";\n el.style.display = \"block\";\n el.style.width = \"100%\";\n el.style.marginBottom = \"5px\";\n el.style.color = \"#fff\";\n el.style.backgroundColor = \"#770000\";\n el.style.padding = \"8px 5px\";\n el.style.fontFamily = \"Verdana\";\n el.style.fontWeight = \"100\";\n el.style.fontSize = \"12px\";\n el.style.textAlign = \"center\";\n el.style.boxSizing = \"border-box\";\n\n if (typeof target === \"string\") {\n const element = document.querySelector(target) as HTMLElement;\n\n if (!element) {\n throw new Error(\"Credit card form target does not exist\");\n }\n\n target = element;\n }\n\n if (!target) {\n return;\n }\n\n if (insertBefore) {\n target.insertBefore(el, insertBefore);\n } else {\n target.insertBefore(el, target.firstChild);\n }\n}\n","import { IConfiguration } from \"../../tools/configure\";\nexport const options: IConfiguration = {};\n","import { IDictionary } from \"../../lib/util\";\n\nexport default (data: IDictionary) => {\n if (data.error && data.reasons) {\n return {\n error: data.error,\n reasons: data.reasons,\n };\n }\n\n // TODO: parse these properly\n if (data.errors) {\n const reasons = [];\n\n for (const i in data.errors) {\n if (!data.errors.hasOwnProperty(i)) {\n continue;\n }\n\n const reason = data.errors[i];\n const serverErrorType = reason.code === \"SERVER_REQUIRED\" ? \"missing\" : \"invalid\";\n let code = \"ERROR\";\n let message = `An unknown error has occurred. Details: ${reason.error_Code} - ${reason.reason}`;\n\n if (reason.reason === \"cardnumber\") {\n code = \"INVALID_CARD_NUMBER\";\n message = `The card number is ${serverErrorType}`;\n } else if (reason.reason === \"expirationdate\") {\n code = \"INVALID_CARD_EXPIRATION\";\n message = `The card expiration date is ${serverErrorType}`;\n } else if (reason.reason === \"cvv\") {\n code = \"INVALID_CARD_SECURITY_CODE\";\n message = `The card security code is ${serverErrorType}`;\n }\n\n reasons.push({\n code,\n message,\n });\n }\n\n return {\n error: true,\n reasons,\n };\n }\n\n const response: any = {\n paymentReference: data.token,\n };\n\n return response;\n};\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\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++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\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 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) : new P(function (resolve) { resolve(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 __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n 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}\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 __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","import { IDictionary } from \"../../lib/util\";\n\nexport default async (url: string, data: IDictionary) => {\n const request: any = {\n merchantApiKey: data.webApiKey,\n };\n\n if (data[\"card-number\"]) {\n request.cardnumber = data[\"card-number\"].replace(/\\s/g, \"\");\n }\n\n if (data[\"card-cvv\"]) {\n request.cvv = data[\"card-cvv\"];\n }\n\n if (\n data[\"card-expiration\"] &&\n data[\"card-expiration\"].indexOf(\" / \") !== -1\n ) {\n const exp = data[\"card-expiration\"].split(\" / \");\n request.expirationmonth = exp[0] || \"\";\n request.expirationyear = (exp[1] || \"\").substr(2, 2);\n }\n\n if (data[\"card-holder-name\"]) {\n request.cardholder = data[\"card-holder-name\"];\n }\n\n try {\n const headers = {\n \"Content-Type\": \"application/json\",\n };\n const resp = await fetch(url, {\n body: JSON.stringify(request),\n credentials: \"omit\",\n headers: typeof Headers !== \"undefined\" ? new Headers(headers) : headers,\n method: \"POST\",\n });\n return resp.json();\n } catch (e) {\n return {\n error: true,\n reasons: [{ code: e.name, message: e.message }],\n };\n }\n};\n","import { IErrorReason } from \"..\";\nimport { IDictionary } from \"../../lib/util\";\n\nexport default (data: IDictionary) => {\n const errors: IErrorReason[] = [];\n\n if (!data[\"card-number\"]) {\n errors.push({\n code: \"INVALID_CARD_NUMBER\",\n message: \"The card number is invalid.\",\n });\n }\n\n if (!data[\"card-cvv\"]) {\n errors.push({\n code: \"INVALID_CARD_SECURITY_CODE\",\n message: \"The card security code is invalid.\",\n });\n }\n\n if (!data[\"card-expiration\"]) {\n errors.push({\n code: \"INVALID_CARD_EXPIRATION\",\n message: \"The card expiration is invalid.\",\n });\n }\n\n return errors;\n};\n","import { IActions } from \"..\";\nimport { options } from \"../../lib/options\";\n\nimport actionNormalizeResponse from \"./action-normalize-response\";\nimport actionTokenize from \"./action-tokenize\";\nimport actionValidateData from \"./action-validate-data\";\n\nexport const supports = {\n apm: {\n androidPay: false,\n applePay: false,\n },\n consumerAuthentication: false,\n eCheck: false,\n gift: false,\n tokenization: {\n cardNotPresent: true,\n cardPresent: false,\n eCheck: false,\n gift: false,\n },\n};\n\nconst domains = {\n // Genius Checkout has an automatic sandbox feature for developer / partner accounts\n production: \"https://ecommerce.merchantware.net\",\n sandbox: \"https://ecommerce.merchantware.net\",\n};\n\nexport const urls = {\n tokenization: (prod: boolean) =>\n `${prod ? domains.production : domains.sandbox}/v1/api/tokens`,\n};\n\nexport const actions: IActions = {\n normalizeResponse: actionNormalizeResponse,\n tokenize: actionTokenize,\n validateData: actionValidateData,\n};\n\nexport const requiredSettings = [\"webApiKey\"];\n\nexport const getEnv = () => {\n return options.env || \"production\";\n};\n","import { IDictionary } from \"../../lib/util\";\n\nexport default (data: IDictionary) => {\n if (data.error && data.reasons) {\n return {\n error: data.error,\n reasons: data.reasons,\n };\n }\n\n if (data.action) {\n const reasons = [];\n\n switch (data.action) {\n case \"action-error\":\n reasons.push({\n code: \"INVALID_REQUEST\",\n message: data.payload,\n });\n break;\n case \"hpp-api-timeout-error\":\n reasons.push({\n code: \"API_ERROR\",\n message: data.payload,\n });\n break;\n default:\n for (const i in data.payload) {\n if (!data.payload.hasOwnProperty(i)) {\n continue;\n }\n\n const reason = data.payload[i];\n let code = \"\";\n\n switch (reason.errorCode) {\n case \"INVALID_CARDNUMBER\":\n code = \"INVALID_CARD_NUMBER\";\n break;\n case \"INVALID_EXPIRY_DATE\":\n code = \"INVALID_CARD_EXPIRATION\";\n break;\n case \"INVALID_SECURITY_CODE\":\n code = \"INVALID_CARD_SECURITY_CODE\";\n break;\n case \"INVALID_CARDHOLDER_NAME\":\n code = \"INVALID_CARD_HOLDER_NAME\";\n break;\n default:\n break;\n }\n\n reasons.push({\n code,\n message: reason.errorMessage,\n });\n }\n break;\n }\n\n return {\n error: true,\n reasons,\n };\n }\n\n return {\n customerReference: atob(data.SAVED_PAYER_REF),\n details: {\n cardholderName: atob(data.SAVED_PMT_NAME),\n orderId: atob(data.ORDER_ID),\n },\n paymentReference: atob(data.SAVED_PMT_REF),\n requestId: atob(data.PASREF),\n };\n};\n","import { IFrameCollection } from \"../../ui\";\nexport const loadedFrames: IFrameCollection = {};\n","import { loadedFrames } from \"./loaded-frames\";\n\nexport default class PostMessage {\n public post(data: any, target: string) {\n data.source = data.source || {};\n data.source.name = window.name || \"parent\";\n\n if (!loadedFrames) {\n return;\n }\n\n const frame = loadedFrames[target];\n\n if (!frame) {\n return;\n }\n\n let targetNode = frame.frame;\n const targetUrl = frame.url;\n\n try {\n if (typeof frame.targetNode !== \"undefined\") {\n targetNode = frame.targetNode;\n }\n } catch (e) {\n /* */\n }\n\n const win =\n target === \"parent\" ? parent : targetNode.contentWindow || targetNode;\n\n if (typeof (win as any).postMessage === \"undefined\") {\n return;\n }\n\n (win as any).postMessage(JSON.stringify(data), targetUrl);\n }\n\n public receive(callback?: (data: any) => void) {\n return new Promise((resolve) => {\n const cb = (m: MessageEvent) => {\n try {\n const d = JSON.parse(m.data);\n if (callback) {\n callback.call(callback, d);\n } else {\n resolve(d);\n }\n } catch (e) {\n /* */\n }\n };\n\n if (window.addEventListener) {\n window.addEventListener(\"message\", cb, false);\n } else {\n (window as any).attachEvent(\"onmessage\", cb);\n }\n });\n }\n}\n\nexport const postMessage = new PostMessage();\n","import { options } from \"../../lib/options\";\nimport { postMessage as pm } from \"../../lib/post-message\";\n\nlet setup = false;\n\nexport default async () => {\n if (setup) {\n return;\n }\n\n setup = true;\n\n // keep `pm.receive` call in callback version to ensure we receive the\n // hash request\n pm.receive(async (data: any) => {\n if (data.type === \"gateway:globalpayments:hash\" && options.hash) {\n const hashed = await options.hash(data.data);\n pm.post(\n {\n data: hashed,\n id: data.id,\n type: \"gateway:globalpayments:hash-result\",\n },\n data.id,\n );\n }\n });\n};\n","export default \"secure-payment-field\";\n","export default () => {\n const S4 = () => {\n // tslint:disable-next-line:no-bitwise\n return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);\n };\n return `${S4()}${S4()}-${S4()}-${S4()}-${S4()}-${S4()}${S4()}${S4()})`;\n};\n","import paymentFieldId from \"../../../internal/lib/payment-field-id\";\nimport generateGuid from \"../../../lib/generate-guid\";\nimport { options } from \"../../lib/options\";\nimport { postMessage as pm } from \"../../lib/post-message\";\nimport { IDictionary } from \"../../lib/util\";\n\nexport default (url: string) => {\n // build request\n const orderId = btoa(generateGuid()).substring(0, 22);\n const date = new Date();\n const month = date.getUTCMonth() + 1;\n const day = date.getUTCDate();\n const hours = date.getUTCHours();\n const mins = date.getUTCMinutes();\n const secs = date.getUTCSeconds();\n const timestamp =\n date.getUTCFullYear().toString() +\n (month < 10 ? \"0\" + month.toString() : month.toString()).toString() +\n (day < 10 ? \"0\" + day.toString() : day.toString()) +\n (hours < 10 ? \"0\" + hours.toString() : hours.toString()) +\n (mins < 10 ? \"0\" + mins.toString() : mins.toString()) +\n (secs < 10 ? \"0\" + secs.toString() : secs.toString());\n const href = window.location.protocol + \"//\" + window.location.host;\n\n const data = {\n ACCOUNT: options.account || \"\", // config\n AUTO_SETTLE_FLAG: \"0\",\n CARD_STORAGE_ENABLE: \"1\",\n CURRENCY: \"EUR\",\n HPP_LISTENER_URL: href, // auto\n HPP_POST_DIMENSIONS: href, // auto\n HPP_POST_RESPONSE: href, // auto\n HPP_VERSION: \"2\",\n MERCHANT_ID: options.merchantId || \"\", // config\n MERCHANT_RESPONSE_URL: href, // auto?\n ORDER_ID: orderId, // auto\n PAYER_EXIST: (options.customerExists === true && \"1\") || \"0\", // opt config\n TIMESTAMP: timestamp, // auto\n VALIDATE_CARD_ONLY: (options.validateOnly === false && \"0\") || \"1\", // opt config\n };\n\n if (options.customerExists) {\n (data as any).PAYER_REF = options.customerReference; // opt config\n }\n\n return getHashResult(data)\n .then((request: any) => {\n submitHppRequest(url, request);\n return getHppReadyState(orderId);\n })\n .then(() => orderId);\n};\n\nconst createIframe = (orderId: string) => {\n const frame = document.createElement(\"iframe\");\n frame.setAttribute(\"name\", `global-payments-rxp-${orderId}`);\n frame.setAttribute(\"id\", `global-payments-rxp-${orderId}`);\n frame.setAttribute(\"height\", \"0\");\n frame.setAttribute(\"width\", \"0\");\n frame.style.display = \"none\";\n frame.style.opacity = \"0\";\n return frame;\n};\n\nconst getHashResult = (data: IDictionary) => {\n const field = document.getElementById(paymentFieldId);\n\n if (!field) {\n return Promise.reject({\n error: true,\n reasons: [{ code: \"ERROR\", message: \"Missing field\" }],\n });\n }\n\n pm.post(\n {\n data,\n id: field.getAttribute(\"data-id\"),\n type: \"gateway:globalpayments:hash\",\n },\n \"parent\",\n );\n\n // keep `pm.receive` call in callback version to ensure we receive the\n // hash request\n return new Promise((resolve) => {\n pm.receive((d: any) => {\n if (d.type === \"gateway:globalpayments:hash-result\") {\n resolve(d.data);\n }\n });\n });\n};\n\nconst submitHppRequest = (url: string, request: any) => {\n const iframe = createIframe(request.ORDER_ID);\n\n const form = document.createElement(\"form\");\n\n form.method = \"POST\";\n form.action = url;\n\n for (const prop in request) {\n if (Object.prototype.hasOwnProperty.call(request, prop)) {\n const el = document.createElement(\"input\");\n el.type = \"hidden\";\n el.name = prop;\n el.value = request[prop];\n form.appendChild(el);\n }\n }\n\n // add to dom + submit\n document.body.appendChild(iframe);\n\n if (!iframe.contentWindow) {\n throw new Error(\"Source iframe loaded incorrectly\");\n }\n\n if (typeof iframe.contentWindow.document.body !== \"undefined\") {\n iframe.contentWindow.document.body.appendChild(form);\n } else {\n iframe.contentWindow.document.appendChild(form);\n }\n\n form.submit();\n};\n\nconst getHppReadyState = (orderId: string) => {\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n reject({\n error: true,\n reasons: [{ code: \"TIMEOUT\", message: \"HPP setup timeout\" }],\n });\n }, 30000);\n\n pm.receive((message) => {\n clearTimeout(timeout);\n const action = message.action || \"\";\n\n if (action === \"hpp-listener-loaded\") {\n if (message.payload) {\n resolve(orderId);\n } else {\n reject({\n error: true,\n reasons: [{ code: \"ERROR\", message: \"HPP setup failure\" }],\n });\n }\n }\n });\n });\n};\n","import { postMessage as pm } from \"../../lib/post-message\";\nimport { IDictionary } from \"../../lib/util\";\n\nimport actionOnload from \"./action-onload\";\n\nexport default async (url: string, data: IDictionary) => {\n let orderId: string;\n try {\n orderId = await actionOnload(url);\n } catch (e) {\n return Promise.reject(e);\n }\n\n const iframe = document.getElementById(\n `global-payments-rxp-${orderId}`,\n ) as HTMLIFrameElement;\n\n if (!iframe) {\n return Promise.reject(\"Source iframe missing\");\n }\n\n const win = iframe.contentWindow;\n\n if (!win) {\n return Promise.reject(\"Source iframe loaded incorrectly\");\n }\n\n let month = \"\";\n let year = \"\";\n if (\n data[\"card-expiration\"] &&\n data[\"card-expiration\"].indexOf(\" / \") !== -1\n ) {\n const exp = data[\"card-expiration\"].split(\" / \");\n month = exp[0] || \"\";\n year = (exp[1] || \"\").substr(2, 2);\n }\n\n const request = {\n action: \"populate-form-fields\", // string\n payload: {\n pas_cccvc: data[\"card-cvv\"],\n pas_ccmonth: month,\n pas_ccname: data[\"card-holder-name\"],\n pas_ccnum: data[\"card-number\"].replace(/\\s/g, \"\"),\n pas_ccyear: year,\n },\n };\n\n // todo: fix postMessage origin\n win.postMessage(JSON.stringify(request), \"*\");\n\n // keep `pm.receive` call in callback version to ensure we receive the\n // hash request\n return new Promise((resolve) => {\n pm.receive((payload: any) => {\n if (\n typeof payload.action !== \"undefined\" ||\n (typeof payload.SHA1HASH !== \"undefined\" &&\n payload.ORDER_ID === btoa(orderId))\n ) {\n resolve(payload);\n }\n });\n });\n};\n","import { IErrorReason } from \"../\";\nimport { IDictionary } from \"../../lib/util\";\n\nexport default (data: IDictionary) => {\n const errors: IErrorReason[] = [];\n\n if (!data[\"card-number\"]) {\n errors.push({\n code: \"INVALID_CARD_NUMBER\",\n message: \"The card number is invalid.\",\n });\n }\n\n if (!data[\"card-cvv\"]) {\n errors.push({\n code: \"INVALID_CARD_SECURITY_CODE\",\n message: \"The card security code is invalid.\",\n });\n }\n\n if (!data[\"card-expiration\"]) {\n errors.push({\n code: \"INVALID_CARD_EXPIRATION\",\n message: \"The card expiration is invalid.\",\n });\n }\n\n if (!data[\"card-holder-name\"]) {\n errors.push({\n code: \"INVALID_CARD_HOLDER_NAME\",\n message: \"The card holder name is invalid.\",\n });\n }\n\n return errors;\n};\n","import { IActions } from \"..\";\nimport { options } from \"../../lib/options\";\n\nimport actionNormalizeResponse from \"./action-normalize-response\";\nimport actionSetup from \"./action-setup\";\nimport actionTokenize from \"./action-tokenize\";\nimport actionValidateData from \"./action-validate-data\";\n\nexport const supports = {\n apm: {\n androidPay: true,\n applePay: true,\n },\n consumerAuthentication: true,\n eCheck: false,\n gift: false,\n tokenization: {\n cardNotPresent: true,\n cardPresent: false,\n eCheck: false,\n gift: false,\n },\n};\n\nconst domains = {\n production: \"https://pay.realexpayments.com\",\n sandbox: \"https://pay.sandbox.realexpayments.com\",\n};\n\nexport const urls = {\n tokenization: (prod: boolean) =>\n `${prod ? domains.production : domains.sandbox}/pay`,\n};\n\nexport const getEnv = () => {\n const def = \"production\";\n\n return options.env || def;\n};\n\nexport const actions: IActions = {\n normalizeResponse: actionNormalizeResponse,\n setup: actionSetup,\n tokenize: actionTokenize,\n validateData: actionValidateData,\n};\n\nexport const requiredSettings = [\n \"merchantId\",\n \"account\",\n // \"hash\",\n \"env\",\n];\n","import { IDictionary } from \"../../lib/util\";\n\nexport default (data: IDictionary) => {\n if (data.error && data.reasons) {\n return {\n error: data.error,\n reasons: data.reasons,\n };\n }\n\n if (data.error) {\n const reasons = [];\n\n switch (data.error.param) {\n case \"card.number\":\n reasons.push({\n code: \"INVALID_CARD_NUMBER\",\n message: data.error.message,\n });\n break;\n default:\n break;\n }\n\n return {\n error: true,\n reasons,\n };\n }\n\n const response: any = {\n paymentReference: data.token_value,\n };\n if (data.card && data.card.number) {\n response.details = {\n cardNumber: data.card.number,\n };\n }\n return response;\n};\n","import { IDictionary } from \"../../lib/util\";\n\nexport default async (url: string, data: IDictionary) => {\n const request: any = {\n object: \"token\",\n token_type: \"supt\",\n };\n\n if (data[\"card-number\"]) {\n request.card = request.card || {};\n request.card.number = data[\"card-number\"].replace(/\\s/g, \"\");\n }\n\n if (data[\"card-cvv\"]) {\n request.card = request.card || {};\n request.card.cvc = data[\"card-cvv\"];\n }\n\n if (\n data[\"card-expiration\"] &&\n data[\"card-expiration\"].indexOf(\" / \") !== -1\n ) {\n const exp = data[\"card-expiration\"].split(\" / \");\n request.card = request.card || {};\n request.card.exp_month = exp[0] || \"\";\n request.card.exp_year = exp[1] || \"\";\n }\n\n // TODO: Properly accept encrypted track data\n if (data[\"card-track\"]) {\n request.card = request.card || {};\n request.card.track_method = \"swipe\";\n request.card.track = data[\"card-track\"];\n }\n\n if (data[\"account-number\"]) {\n request.ach = request.ach || {};\n request.ach.account_number = data[\"account-number\"];\n }\n\n if (data[\"routing-number\"]) {\n request.ach = request.ach || {};\n request.ach.routing_number = data[\"routing-number\"];\n }\n\n try {\n const headers = {\n \"Content-Type\": \"application/json\",\n };\n const resp = await fetch(url, {\n body: JSON.stringify(request),\n credentials: \"omit\",\n headers: typeof Headers !== \"undefined\" ? new Headers(headers) : headers,\n method: \"POST\",\n });\n return resp.json();\n } catch (e) {\n return {\n error: true,\n reasons: [{ code: e.name, message: e.message }],\n };\n }\n};\n","import { IErrorReason } from \"../\";\nimport { IDictionary } from \"../../lib/util\";\n\nexport default (data: IDictionary) => {\n const errors: IErrorReason[] = [];\n\n if (!data[\"card-number\"] && !data[\"card-track\"] && !data[\"account-number\"]) {\n if (!data[\"card-number\"]) {\n errors.push({\n code: \"INVALID_CARD_NUMBER\",\n message: \"The card number is invalid.\",\n });\n } else if (!data[\"account-number\"]) {\n errors.push({\n code: \"INVALID_ACCOUNT_NUMBER\",\n message: \"The account number is invalid\",\n });\n }\n }\n\n if (data[\"account-number\"] && !data[\"routing-number\"]) {\n errors.push({\n code: \"INVALID_ROUTING_NUMBER\",\n message: \"The routing number is invalid\",\n });\n }\n\n return errors;\n};\n","import { IActions } from \"..\";\nimport { options } from \"../../lib/options\";\n\nimport actionNormalizeResponse from \"./action-normalize-response\";\nimport actionTokenize from \"./action-tokenize\";\nimport actionValidateData from \"./action-validate-data\";\n\nexport const supports = {\n apm: {\n androidPay: false,\n applePay: true,\n },\n consumerAuthentication: true,\n eCheck: true,\n gift: true,\n tokenization: {\n cardNotPresent: true,\n cardPresent: true,\n eCheck: true,\n gift: true,\n },\n};\n\nconst domains = {\n production: \"https://api.heartlandportico.com\",\n sandbox: \"https://cert.api2.heartlandportico.com\",\n};\n\nexport const urls = {\n tokenization: (prod: boolean) =>\n prod\n ? `${domains.production}/SecureSubmit.v1/api/token`\n : `${domains.sandbox}/Hps.Exchange.PosGateway.Hpf.v1/api/token`,\n};\n\nexport const actions: IActions = {\n normalizeResponse: actionNormalizeResponse,\n tokenize: actionTokenize,\n validateData: actionValidateData,\n};\n\nexport const requiredSettings = [\"publicApiKey\"];\n\nexport const getEnv = () => {\n const key: string = options.publicApiKey || \"\";\n const def = \"production\";\n\n if (!key) {\n return def;\n }\n\n const parts = key.split(\"_\");\n\n if (!parts[1]) {\n return def;\n }\n\n switch (parts[1]) {\n case \"cert\":\n return \"sandbox\";\n case \"prod\":\n default:\n return def;\n }\n};\n","export default (data: any) => {\n return data;\n};\n","import getGateway from \"../../lib/get-gateway\";\nimport { options } from \"../../lib/options\";\nimport { IDictionary } from \"../../lib/util\";\n\nexport default async (url: string, data: IDictionary) => {\n const request: any = {};\n\n if (data[\"card-number\"]) {\n request.card = request.card || {};\n request.card.card_number = data[\"card-number\"].replace(/\\s+/g, \"\");\n }\n\n if (data[\"card-cvv\"]) {\n request.card = request.card || {};\n request.card.card_security_code = data[\"card-cvv\"];\n }\n\n if (\n data[\"card-expiration\"] &&\n data[\"card-expiration\"].indexOf(\" / \") !== -1\n ) {\n const exp = data[\"card-expiration\"].split(\" / \");\n request.card = request.card || {};\n request.card.expiry_month = exp[0] || \"\";\n request.card.expiry_year = exp[1].slice(-2) || \"\";\n }\n\n // TODO: Properly accept encrypted track data\n if (data[\"card-track\"]) {\n request.card = request.card || {};\n request.card.track_method = \"swipe\";\n request.card.track = data[\"card-track\"];\n }\n\n if (data[\"account-number\"]) {\n request.ach = request.ach || {};\n request.ach.account_number = data[\"account-number\"];\n }\n\n if (data[\"routing-number\"]) {\n request.ach = request.ach || {};\n request.ach.routing_number = data[\"routing-number\"];\n }\n\n try {\n // @ts-ignore\n let environment = getGateway().getEnv(options);\n environment = environment !== \"local\" ? environment : \"dev\";\n const headers = {\n \"Content-Type\": \"application/json\",\n \"X-GP-Api-Key\": options[\"X-GP-Api-Key\"],\n \"X-GP-Environment\": `${environment}`,\n /* tslint:disable:no-bitwise */\n \"X-GP-Request-Id\": \"PFC-\" + \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/gu, (character) => {\n const random = Math.floor(Math.random() * 16);\n const value = character === \"x\" ? random : (random & 0x3 | 0x8);\n return value.toString(16);\n }),\n /* tslint:enable:no-bitwise */\n \"X-GP-Version\": \"2019-08-22\",\n };\n const resp = await fetch(url, {\n body: JSON.stringify(request),\n credentials: \"omit\",\n headers: typeof Headers !== \"undefined\" ? new Headers(headers) : headers,\n method: \"POST\",\n });\n return resp.json();\n } catch (e) {\n return {\n error: true,\n reasons: [{ code: e.name, message: e.message }],\n };\n }\n};\n","import { IErrorReason } from \"../\";\nimport { IDictionary } from \"../../lib/util\";\n\nexport default (data: IDictionary) => {\n const errors: IErrorReason[] = [];\n const cardNumber = data[\"card-number\"].replace(/\\s+/g, \"\");\n\n // The error message here is irrelevant - actual 'invalid_input' error is generated in tokenize.ts.\n // For type compatibility reason, this code is preserved here.\n // if (!data[\"card-number\"] && !data[\"card-track\"] && !data[\"account-number\"]) {\n if (cardNumber.length < 13 || cardNumber.length > 19) {\n errors.push({\n code: \"invalid_input\",\n // @ts-ignore\n detail: [{\n data_path: \"/card/card_number\",\n description: \"Invalid data\",\n }],\n message: \"Invalid input data.\",\n });\n }\n\n return errors;\n};\n","/// see https://gist.github.com/mudge/5830382\n\n/* Polyfill indexOf. */\nlet indexOf: (haystack: any[], needle: any) => number;\n\nif (typeof Array.prototype.indexOf === \"function\") {\n indexOf = (haystack, needle) => haystack.indexOf(needle);\n} else {\n indexOf = (haystack, needle) => {\n const length = haystack.length;\n let i = 0;\n let idx = -1;\n let found = false;\n\n while (i < length && !found) {\n if (haystack[i] === needle) {\n idx = i;\n found = true;\n }\n\n i++;\n }\n\n return idx;\n };\n}\n\nexport interface IEventCollection {\n [key: string]: IEventListener[];\n}\nexport type IEventListener = () => void;\n\nexport default class EventEmitter {\n public events: IEventCollection;\n\n constructor() {\n this.events = {};\n }\n\n public on(event: string, listener: IEventListener) {\n if (typeof this.events[event] !== \"object\") {\n this.events[event] = [];\n }\n\n this.events[event].push(listener);\n }\n\n public off(event: string, listener: IEventListener) {\n let idx;\n\n if (typeof this.events[event] === \"object\") {\n idx = indexOf(this.events[event], listener);\n\n if (idx > -1) {\n this.events[event].splice(idx, 1);\n }\n }\n }\n\n public emit(event: string, ...args: any[]) {\n let i: number;\n let listeners: IEventListener[];\n let length: number;\n\n if (typeof this.events[event] === \"object\") {\n listeners = this.events[event].slice();\n length = listeners.length;\n\n for (i = 0; i < length; i++) {\n listeners[i].apply(this, (args as []));\n }\n }\n }\n\n public once(event: string, listener: IEventListener) {\n const that = this;\n // tslint:disable-next-line:only-arrow-functions\n this.on(event, function g() {\n that.off(event, g);\n listener.apply(that, (arguments as any));\n });\n }\n}\n","import getGateway from \"./get-gateway\";\nimport { options } from \"./options\";\nimport { IDictionary } from \"./util\";\n\nexport default (queryString?: IDictionary): string => {\n const gateway = getGateway();\n\n if (!gateway) {\n return \"\";\n }\n\n const base = gateway.urls.tokenization(\n gateway.getEnv(options) === \"production\",\n );\n\n if (!queryString) {\n return base;\n }\n\n let query = \"?\";\n\n for (const param in queryString) {\n if (queryString.hasOwnProperty(param) && queryString[param]) {\n query += param + \"=\" + encodeURIComponent(queryString[param]) + \"&\";\n }\n }\n\n return base + query;\n};\n","export interface ICardType {\n code: string;\n regex: RegExp;\n format: RegExp;\n length: number;\n}\n\n/**\n * typeByNumber\n *\n * Helper function to grab the ICardType for a given card number.\n *\n * @param cardNumber - The card number\n */\nexport function typeByNumber(cardNumber: string): ICardType | undefined {\n let cardType;\n\n if (!cardNumber) {\n return undefined;\n }\n if (cardNumber.replace(/^\\s+|\\s+$/gm, \"\").length < 4) {\n return undefined;\n }\n\n for (const i in cardTypes) {\n if (!cardTypes.hasOwnProperty(i)) {\n continue;\n }\n\n cardType = cardTypes[i];\n if (cardType && cardType.regex && cardType.regex.test(cardNumber)) {\n break;\n }\n }\n\n return cardType;\n}\n\n/**\n * typeByTrack\n *\n * @param data - track data\n * @param isEncrypted - (default: false)\n * @param trackNumber\n */\nexport function typeByTrack(\n data: string,\n isEncrypted = false,\n trackNumber?: string,\n) {\n let cardNumber = \"\";\n\n if (isEncrypted && trackNumber && trackNumber === \"02\") {\n cardNumber = data.split(\"=\")[0];\n } else {\n let temp = data.split(\"%\");\n if (temp[1]) {\n temp = temp[1].split(\"^\");\n if (temp[0]) {\n cardNumber = temp[0].toString().substr(1);\n }\n }\n }\n\n return typeByNumber(cardNumber);\n}\n\n/**\n * luhnCheck\n *\n * Runs a mod 10 check on a given card number.\n *\n * @param cardNumber - The card number\n */\nexport function luhnCheck(cardNumber: string): boolean {\n let odd = true;\n let i = 0;\n let sum = 0;\n let digit: number;\n\n if (!cardNumber) {\n return false;\n }\n\n const digits = cardNumber.split(\"\").reverse();\n const length = digits.length;\n\n for (i; i < length; i++) {\n digit = parseInt(digits[i], 10);\n odd = !odd;\n if (odd) {\n digit *= 2;\n }\n if (digit > 9) {\n digit -= 9;\n }\n sum += digit;\n }\n\n return sum % 10 === 0;\n}\n\nconst cardTypes: ICardType[] = [\n {\n code: \"visa\",\n format: /(\\d{1,4})/g,\n length: 16,\n regex: /^4/,\n },\n {\n code: \"mastercard\",\n format: /(\\d{1,4})/g,\n length: 16,\n regex: /^(5[1-5]|2[2-7])/,\n },\n {\n code: \"amex\",\n format: /(\\d{1,4})(\\d{1,6})?(\\d{1,5})?/,\n length: 15,\n regex: /^3[47]/,\n },\n {\n code: \"diners\",\n format: /(\\d{1,4})(\\d{1,6})?(\\d{1,4})?/,\n length: 14,\n regex: /^3[0689]/,\n },\n {\n code: \"discover\",\n format: /(\\d{1,4})/g,\n length: 16,\n regex: /^6([045]|22)/,\n },\n {\n code: \"jcb\",\n format: /(\\d{1,4})/g,\n length: 16,\n regex: /^35/,\n },\n {\n code: \"unknown\",\n format: /(\\d{1,4})/g,\n length: 19,\n regex: /^[0-9]/,\n },\n];\n\nexport default cardTypes;\n","import { IError, ISuccess } from \"../gateways\";\nimport buildUrl from \"../lib/build-tokenization-url\";\nimport { typeByNumber, typeByTrack } from \"../lib/card-types\";\nimport getGateway from \"../lib/get-gateway\";\nimport { options } from \"../lib/options\";\nimport { IDictionary } from \"../lib/util\";\n\nexport default (data: IDictionary) => {\n const gateway = getGateway();\n\n if (!gateway) {\n return Promise.reject({\n error: true,\n reasons: [\n { code: \"INVALID_CONFIGURATION\", message: \"no gateway available\" },\n ],\n });\n }\n\n const errors = gateway.actions.validateData(data);\n\n if (errors.length > 0) {\n return Promise.reject({ error: true, reasons: errors });\n }\n\n if (options.webApiKey) {\n data.webApiKey = options.webApiKey;\n }\n\n return new Promise((resolve, reject) => {\n let query: any;\n if (gateway.requiredSettings.indexOf(\"publicApiKey\") !== -1) {\n query = {\n api_key: options.publicApiKey,\n };\n }\n\n gateway.actions\n .tokenize(buildUrl(query), data)\n .then(gateway.actions.normalizeResponse)\n .then((resp: IError | ISuccess) => {\n if ((resp as IError).error) {\n reject(resp);\n return;\n }\n\n resp = resp as ISuccess;\n\n if (gateway.requiredSettings.indexOf(\"X-GP-Api-Key\") !== -1) {\n resolve(resp);\n return;\n }\n\n if (data[\"card-number\"]) {\n const cardNumber = data[\"card-number\"].replace(/\\D/g, \"\");\n const bin = cardNumber.substr(0, 6);\n const last4 = cardNumber.substr(-4);\n const type = typeByNumber(cardNumber);\n\n resp.details = resp.details || {};\n resp.details.cardNumber =\n bin + \"*\".repeat(cardNumber.length - 10) + last4;\n resp.details.cardBin = bin;\n resp.details.cardLast4 = last4;\n resp.details.cardType = type ? type.code : \"unknown\";\n resp.details.cardSecurityCode = !!data[\"card-cvv\"];\n }\n\n if (\n data[\"card-expiration\"] &&\n data[\"card-expiration\"].indexOf(\" / \") !== -1\n ) {\n const exp = data[\"card-expiration\"].split(\" / \");\n\n resp.details = resp.details || {};\n resp.details.expiryMonth = exp[0] || \"\";\n resp.details.expiryYear = exp[1] || \"\";\n }\n\n if (data[\"card-holder-name\"]) {\n resp.details = resp.details || {};\n // matches PaymentRequest spec naming for cardholder name\n resp.details.cardholderName =\n resp.details.cardholderName || data[\"card-holder-name\"];\n }\n\n if (data[\"card-track\"]) {\n const cardTrack = data[\"card-track\"];\n const type = typeByTrack(cardTrack);\n\n resp.details = resp.details || {};\n resp.details.cardType = type ? type.code : \"unknown\";\n }\n\n if (data[\"account-number\"]) {\n const accountNumber = data[\"account-number\"].replace(/\\D/g, \"\");\n const last4 = accountNumber.substr(-4);\n resp.details = resp.details || {};\n resp.details.accountNumber =\n \"*\".repeat(accountNumber.length - 4) + last4;\n resp.details.accountLast4 = last4;\n }\n\n resolve(resp);\n })\n .catch(reject);\n });\n};\n","import EventEmitter from \"../lib/event-emitter\";\nexport * from \"./lib/loaded-frames\";\nexport * from \"./lib/options\";\nexport * from \"./lib/post-message\";\n\nexport { default as tokenize } from \"./requests/tokenize\";\n\nexport const bus = new EventEmitter();\n","export default \"1.3.0\";\n","import { options } from \"../..\";\nimport version from \"../../../lib/version\";\nimport getGateway from \"../../lib/get-gateway\";\n\nexport default (result: string) => {\n const gateway = getGateway();\n if (!gateway) {\n return result;\n }\n\n const majorVersion = version.split(\".\")[0] || version[0];\n const env = gateway.getEnv(options);\n\n switch (env) {\n case \"local\":\n return `http://localhost:8080/v${majorVersion}/`;\n case \"dev\":\n return `https://js.dev.paygateway.com/secure_payment/v${majorVersion}/`;\n case \"pqa\":\n return `https://js.pqa.paygateway.com/secure_payment/v${majorVersion}/`;\n case \"qa\":\n return `https://js.qa.paygateway.com/secure_payment/v${majorVersion}/`;\n case \"test\":\n return `https://js.test.paygateway.com/secure_payment/v${majorVersion}/`;\n case \"prod\":\n return `https://js.paygateway.com/secure_payment/v${majorVersion}/`;\n case \"GP\":\n return result;\n default:\n return result;\n }\n};\n","import { IActions } from \"..\";\nimport { options } from \"../../lib/options\";\nimport { IDictionary } from \"../../lib/util\";\n\nimport actionNormalizeResponse from \"./action-normalize-response\";\nimport actionTokenize from \"./action-tokenize\";\nimport actionValidateData from \"./action-validate-data\";\nimport getAssetBaseUrl from \"./get-asset-base-url\";\n\nexport const supports = {\n apm: {\n androidPay: false,\n applePay: true,\n },\n consumerAuthentication: true,\n eCheck: true,\n gift: true,\n tokenization: {\n cardNotPresent: true,\n cardPresent: true,\n eCheck: true,\n gift: true,\n },\n};\n/* tslint:disable:object-literal-sort-keys */\nconst domains: IDictionary = {\n local: \"https://api-sandbox.dev.paygateway.com\",\n dev: \"https://api.dev.paygateway.com\",\n pqa: \"https://api.dev.paygateway.com\",\n qa: \"https://api.qa.paygateway.com\",\n test: \"https://api.pit.paygateway.com\",\n prod: \"https://api.paygateway.com\",\n};\n/* tslint:enable:object-literal-sort-keys */\n\nexport const urls = {\n asset: getAssetBaseUrl,\n tokenization: (prod: boolean) =>\n `${domains[getEnv()]}/tokenization/temporary_tokens`,\n};\n\nexport const actions: IActions = {\n normalizeResponse: actionNormalizeResponse,\n tokenize: actionTokenize,\n validateData: actionValidateData,\n};\n\nexport const requiredSettings = [\"X-GP-Api-Key\", \"X-GP-Environment\"];\n\nexport const getEnv = () => {\n return options[\"X-GP-Environment\"] || \"local\";\n};\n","import { IDictionary } from \"../../lib/util\";\n\nexport default (data: IDictionary) => {\n if (data.error && data.reasons) {\n return {\n error: data.error,\n reasons: data.reasons,\n };\n }\n\n // TODO: parse these properly\n if ([\"FAIL\", \"FAILURE\"].indexOf(data.status) !== -1) {\n return {\n error: true,\n reasons: [{\n code: \"ERROR\",\n message: `${data.responseCode}: ${data.message}`,\n }],\n };\n }\n\n const response: any = {\n paymentReference: data.tsepToken,\n requestId: data.transactionId,\n };\n\n return response;\n};\n","import { options } from \"../../lib/options\";\nimport { IDictionary } from \"../../lib/util\";\n\nexport default (url: string, data: IDictionary) => {\n const getRequest = () => {\n const request: any = {\n cvv2: data[\"card-cvv\"],\n deviceID: (window as any).getDeviceId(),\n manifest: (window as any).getManifest(),\n uniqueKeyIdentifier: (window as any).getKeyId(),\n };\n\n if (data[\"card-number\"]) {\n request.encCardNumber = (window as any).encryptTsepCard(data[\"card-number\"].replace(/\\s/g, \"\"));\n }\n\n if (\n data[\"card-expiration\"] &&\n data[\"card-expiration\"].indexOf(\" / \") !== -1\n ) {\n request.expirationDate = data[\"card-expiration\"].replace(\" / \", \"/\");\n }\n\n return request;\n };\n\n return new Promise((resolve, reject) => {\n const scriptId = \"tsep-entry-script\";\n const cardId = \"tsep-cardNumDiv\";\n\n const timeout = setTimeout(() => {\n reject({\n error: true,\n reasons: [{ code: \"TIMEOUT\", message: \"TransIT setup timeout\" }],\n });\n }, 30000);\n\n const cleanup = () => {\n clearTimeout(timeout);\n\n [cardId, scriptId].forEach((id) => {\n const el = document.getElementById(id);\n if (!el || !el.parentNode) {\n return;\n }\n el.parentNode.removeChild(el);\n });\n };\n\n try {\n // handle tsep response\n (window as any).tsepHandler = (eventType: string, eventData: any) => {\n // tsep's input fields aren't being used, so this should\n // be the only event to capture in order to handle load errors\n if (eventType === \"ErrorEvent\") {\n cleanup();\n reject({ error: true, reasons: [{\n code: \"ERROR\",\n message: `${eventData.responseCode}: ${eventData.message}`,\n }]});\n }\n };\n\n // add holder for tsep card number input\n const card = document.createElement(\"div\");\n card.hidden = true;\n card.style.display = \"none\";\n card.id = cardId;\n document.body.appendChild(card);\n\n // add new script on page\n const script = document.createElement(\"script\");\n script.id = scriptId;\n script.src = url;\n script.defer = true;\n script.onload = (e) => {\n if (!window.onload) {\n return;\n }\n window.onload(e);\n };\n document.body.appendChild(script);\n\n // tsep doesn't expose a way to hook into the library's load event,\n // so we create an interval to check manually\n const interval = setInterval(() => {\n const cardEl = document.getElementById(cardId.substr(0, cardId.length - 3)) as HTMLInputElement;\n\n // presence of the card element ensures tsep.js is loaded\n // presence of `cryptTsep` ensures jsencrypt.js is loaded\n if (!cardEl || !(window as any).cryptTsep) {\n return;\n }\n\n // tsep has loaded, so continue on after stopping the interval\n clearInterval(interval);\n\n const headers = {\n \"Content-Type\": \"application/json\",\n };\n fetch(`${options.tsepHost}/transit-tsep-web/generateTsepToken`, {\n body: JSON.stringify(getRequest()),\n credentials: \"omit\",\n headers: typeof Headers !== \"undefined\" ? new Headers(headers) : headers,\n method: \"POST\",\n })\n .then((resp) => {\n cleanup();\n resolve(resp.json());\n })\n .catch((e) => {\n cleanup();\n reject(e);\n });\n }, 100);\n } catch (e) {\n return reject({\n error: true,\n reasons: [{ code: e.name, message: e.message }],\n });\n }\n });\n};\n","import { IErrorReason } from \"..\";\nimport { IDictionary } from \"../../lib/util\";\n\nexport default (data: IDictionary) => {\n const errors: IErrorReason[] = [];\n\n if (!data[\"card-number\"]) {\n errors.push({\n code: \"INVALID_CARD_NUMBER\",\n message: \"The card number is invalid.\",\n });\n }\n\n if (!data[\"card-cvv\"]) {\n errors.push({\n code: \"INVALID_CARD_SECURITY_CODE\",\n message: \"The card security code is invalid.\",\n });\n }\n\n if (!data[\"card-expiration\"]) {\n errors.push({\n code: \"INVALID_CARD_EXPIRATION\",\n message: \"The card expiration is invalid.\",\n });\n }\n\n return errors;\n};\n","import { IActions } from \"..\";\nimport { options } from \"../../lib/options\";\n\nimport actionNormalizeResponse from \"./action-normalize-response\";\nimport actionTokenize from \"./action-tokenize\";\nimport actionValidateData from \"./action-validate-data\";\n\nexport const supports = {\n apm: {\n androidPay: false,\n applePay: false,\n },\n consumerAuthentication: false,\n eCheck: false,\n gift: false,\n tokenization: {\n cardNotPresent: true,\n cardPresent: false,\n eCheck: false,\n gift: false,\n },\n};\n\nconst domains = {\n // Genius Checkout has an automatic sandbox feature for developer / partner accounts\n production: \"https://gateway.transit-pass.com\",\n sandbox: \"https://stagegw.transnox.com\",\n};\n\nexport const urls = {\n tokenization: (prod: boolean) => {\n options.tsepHost = prod ? domains.production : domains.sandbox;\n return `${options.tsepHost}/transit-tsep-web/jsView/${options.deviceId}?${options.manifest}`;\n },\n};\n\nexport const actions: IActions = {\n normalizeResponse: actionNormalizeResponse,\n tokenize: actionTokenize,\n validateData: actionValidateData,\n};\n\nexport const requiredSettings = [\"deviceId\", \"manifest\"];\n\nexport const getEnv = () => {\n return options.env || \"production\";\n};\n","import { IDictionary } from \"../lib/util\";\nimport * as genius from \"./genius\";\nimport * as globalpayments from \"./globalpayments\";\nimport * as heartland from \"./heartland\";\nimport * as openedge from \"./openedge\";\nimport * as transit from \"./transit\";\n\nexport interface ICapabilitiesList {\n apm?: {\n androidPay?: boolean;\n applePay?: boolean;\n };\n consumerAuthentication?: boolean;\n eCheck?: boolean;\n env?: string;\n gift?: boolean;\n tokenization?: {\n cardNotPresent?: boolean;\n cardPresent?: boolean;\n eCheck?: boolean;\n gift?: boolean;\n };\n}\n\nexport interface ISuccess {\n details: {\n accountNumber?: string;\n accountLast4?: string;\n billingAddress?: PaymentAddress;\n cardBin?: string;\n cardLast4?: string;\n cardNumber?: string;\n cardSecurityCode?: boolean;\n cardType?: string;\n // matches PaymentRequest spec naming for cardholder name\n cardholderName?: string;\n expiryMonth?: string;\n expiryYear?: string;\n orderId?: string;\n };\n methodName?: string;\n payerEmail?: string;\n payerName?: string;\n payerPhone?: string;\n paymentReference: string;\n requestId?: string;\n shippingAddress?: PaymentAddress;\n shippingOptions?: PaymentShippingOption[];\n}\n\nexport interface IError {\n error: boolean;\n reasons?: IErrorReason[];\n}\n\nexport interface IErrorReason {\n code: string;\n message: string;\n}\n\nexport interface IActions {\n normalizeResponse: (data: IDictionary) => ISuccess | IError;\n setup?: () => any;\n tokenize: (url: string, data: IDictionary) => Promise;\n validateData: (data: IDictionary) => IErrorReason[];\n}\n\nexport interface IUrlGenerators {\n assetBaseUrl?: (result: string) => string;\n tokenization: (prod: boolean) => string;\n}\n\nexport interface IGatewayModule {\n [key: string]: any;\n actions: IActions;\n getEnv: (options: object) => string;\n requiredSettings: string[];\n supports: ICapabilitiesList;\n urls: IUrlGenerators;\n}\n\nexport interface IGatewayList {\n [key: string]: IGatewayModule;\n}\n\nexport const availableGateways: IGatewayList = {\n genius,\n globalpayments,\n heartland,\n openedge,\n transit,\n};\n","import { availableGateways, IGatewayModule } from \"../gateways\";\nimport { options } from \"./options\";\n\nconst configHasAllRequiredSettings = (settings: string[]) => {\n const totalSettings = settings.length;\n let count = 0;\n\n for (let i = 0; i < totalSettings; i++) {\n const setting = settings[i];\n if (options.hasOwnProperty(setting) && options[setting] !== undefined) {\n count++;\n }\n }\n\n return count === totalSettings;\n};\n\nexport default (): IGatewayModule | undefined => {\n for (const key in availableGateways) {\n if (!availableGateways.hasOwnProperty(key)) {\n continue;\n }\n\n const gateway = availableGateways[key];\n\n if (configHasAllRequiredSettings(gateway.requiredSettings)) {\n return gateway;\n }\n }\n\n return undefined;\n};\n","/**\n * Creates a single object by merging a `source` (default) and `properties`\n * obtained elsewhere. Any properties in `properties` will overwrite\n * matching properties in `source`.\n *\n * @param source\n * @param properties\n */\nexport default function objectAssign(source: object, properties: object) {\n const destination: object = {};\n\n if (!source) {\n source = {};\n }\n\n for (const property in source) {\n if (source.hasOwnProperty(property)) {\n (destination as any)[property] = (source as any)[property];\n }\n }\n\n for (const property in properties) {\n if (properties.hasOwnProperty(property)) {\n (destination as any)[property] = (properties as any)[property];\n }\n }\n\n return destination;\n}\n","import { IDictionary } from \"./util\";\n\n/**\n * addStylesheet\n *\n * Creates a `style` node in the DOM with the given `css`.\n *\n * @param css\n * @param id\n */\nexport function addStylesheet(css: string, id?: string) {\n const el = document.createElement(\"style\");\n const elements = document.getElementsByTagName(\"head\");\n if (id) {\n if (document.getElementById(id)) {\n return;\n }\n\n el.id = id;\n }\n el.type = \"text/css\";\n if ((el as any).styleSheet) {\n // for IE\n (el as any).styleSheet.cssText = css;\n } else {\n el.appendChild(document.createTextNode(css));\n }\n if (elements && elements[0]) {\n elements[0].appendChild(el);\n }\n}\n\n/**\n * json2css\n *\n * Converts a JSON node to text representing CSS.\n *\n * @param json\n */\nexport function json2css(json: IDictionary): string {\n let css = \"\";\n const attributes = jsonAttributes(json);\n const children = jsonChildren(json);\n let i: number;\n let j: number;\n let key: any;\n let value: any;\n\n if (attributes) {\n const attributesLength = attributes.length;\n for (i = 0; i < attributesLength; i++) {\n key = attributes[i];\n value = json[key];\n if (isArray(value)) {\n const arrLength = value.length;\n for (j = 0; j < arrLength; j++) {\n css += key + \":\" + value[j] + \";\";\n }\n } else {\n css += key + \":\" + value + \";\";\n }\n }\n }\n\n if (children) {\n const childrenLength = children.length;\n for (i = 0; i < childrenLength; i++) {\n key = children[i];\n value = json[key];\n css += key + \"{\" + json2css(value) + \"}\";\n }\n }\n\n return css;\n}\n\nfunction isArray(obj: any): boolean {\n return Object.prototype.toString.call(obj) === \"[object Array]\";\n}\n\nfunction jsonAttributes(json: IDictionary): string[] {\n const keys = [];\n for (const key in json) {\n if (\n json.hasOwnProperty(key) &&\n (typeof json[key] === \"string\" || isArray(json[key]))\n ) {\n keys.push(key);\n }\n }\n return keys;\n}\n\nfunction jsonChildren(json: IDictionary): string[] {\n const keys = [];\n for (const key in json) {\n if (\n json.hasOwnProperty(key) &&\n !(typeof json[key] === \"string\" || isArray(json[key]))\n ) {\n keys.push(key);\n }\n }\n return keys;\n}\n","import getGateway from \"../../internal/lib/get-gateway\";\nimport { options } from \"../../internal/lib/options\";\nimport version from \"../../lib/version\";\n\nexport default () => {\n let result = `https://api2.heartlandportico.com/SecureSubmit.v1/token/gp-${version}/`;\n\n const gateway = getGateway();\n if (!gateway) {\n return result;\n }\n\n if (gateway.urls.assetBaseUrl) {\n return gateway.urls.assetBaseUrl(result);\n }\n\n result =\n gateway.getEnv(options) === \"sandbox\"\n ? `https://hps.github.io/token/gp-${version}/`\n : result;\n return result;\n};\n","import assetBaseUrl from \"../asset-base-url\";\n\n// tslint:disable:object-literal-key-quotes\n// tslint:disable:object-literal-sort-keys\n\nconst imageBase = assetBaseUrl() + \"images/\";\n\nexport const fieldStyles = {\n \"#secure-payment-field\": {\n \"-o-transition\":\n \"border-color ease-in-out .15s,box-shadow ease-in-out .15s\",\n \"-webkit-box-shadow\": \"inset 0 1px 1px rgba(0,0,0,.075)\",\n \"-webkit-transition\":\n \"border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s\",\n \"background-color\": \"#fff\",\n border: \"1px solid #ccc\",\n \"border-radius\": \"0px\",\n \"box-shadow\": \"inset 0 1px 1px rgba(0,0,0,.075)\",\n \"box-sizing\": \"border-box\",\n color: \"#555\",\n display: \"block\",\n \"font-family\": \"sans-serif\",\n \"font-size\": \"14px\",\n height: \"50px\",\n \"line-height\": \"1.42857143\",\n margin: \"0 .5em 0 0\",\n \"max-width\": \"100%\",\n outline: \"0\",\n padding: \"6px 12px\",\n transition: \"border-color ease-in-out .15s,box-shadow ease-in-out .15s\",\n \"vertical-align\": \"baseline\",\n width: \"100% \",\n },\n \"#secure-payment-field:focus\": {\n border: \"1px solid #3989e3\",\n \"box-shadow\": \"none\",\n height: \"50px\",\n outline: \"none\",\n },\n \"#secure-payment-field[type=button]\": {\n \"-moz-user-select\": \"none\",\n \"-ms-touch-action\": \"manipulation\",\n \"-ms-user-select\": \"none\",\n \"-webkit-user-select\": \"none\",\n \"background-color\": \"#36b46e\",\n \"background-image\": \"none\",\n border: \"0px solid transparent\",\n \"box-sizing\": \"border-box\",\n color: \"#fff\",\n cursor: \"pointer\",\n display: \"inline-block\",\n \"font-family\": \"sans-serif\",\n \"font-size\": \"14px\",\n \"font-weight\": \"400\",\n \"line-height\": \"1.42857143\",\n \"margin-bottom\": \"0\",\n padding: \"6px 12px\",\n \"text-align\": \"center\",\n \"text-transform\": \"uppercase\",\n \"touch-action\": \"manipulation\",\n \"user-select\": \"none\",\n \"vertical-align\": \"middle\",\n \"white-space\": \"nowrap\",\n },\n \"#secure-payment-field[type=button]:focus\": {\n \"background-color\": \"#258851\",\n color: \"#ffffff\",\n outline: \"none\",\n },\n \"#secure-payment-field[type=button]:hover\": {\n \"background-color\": \"#258851\",\n },\n \".card-cvv\": {\n background: `transparent url(${imageBase}cvv.png) no-repeat right`,\n \"background-size\": \"63px 40px\",\n },\n \".card-cvv.card-type-amex\": {\n background: `transparent url(${imageBase}cvv-amex.png) no-repeat right`,\n \"background-size\": \"63px 40px\",\n },\n \".card-number\": {\n background: `transparent url(${imageBase}logo-unknown@2x.png) no-repeat right`,\n \"background-size\": \"55px 35px\",\n },\n \".card-number.invalid.card-type-amex\": {\n background: `transparent url(${imageBase}logo-amex@2x.png) no-repeat right`,\n \"background-position-y\": \"-44px\",\n \"background-size\": \"50px 90px\",\n },\n \".card-number.invalid.card-type-discover\": {\n background: `transparent url(${imageBase}logo-discover@2x.png) no-repeat right`,\n \"background-position-y\": \"-44px\",\n \"background-size\": \"85px 90px\",\n },\n \".card-number.invalid.card-type-jcb\": {\n background: `transparent url(${imageBase}logo-jcb@2x.png) no-repeat right`,\n \"background-position-y\": \"-44px\",\n \"background-size\": \"55px 94px\",\n },\n \".card-number.invalid.card-type-mastercard\": {\n background: `transparent url(${imageBase}logo-mastercard@2x.png) no-repeat right`,\n \"background-position-y\": \"-52px\",\n \"background-size\": \"62px 105px\",\n },\n \".card-number.invalid.card-type-visa\": {\n background: `transparent url(${imageBase}logo-visa@2x.png) no-repeat right`,\n \"background-position-y\": \"-44px\",\n \"background-size\": \"83px 88px\",\n },\n \".card-number.valid.card-type-amex\": {\n background: `transparent url(${imageBase}logo-amex@2x.png) no-repeat right top`,\n \"background-size\": \"50px 90px\",\n },\n \".card-number.valid.card-type-discover\": {\n background: `transparent url(${imageBase}logo-discover@2x.png) no-repeat right`,\n \"background-position-y\": \"1px\",\n \"background-size\": \"85px 90px\",\n },\n \".card-number.valid.card-type-jcb\": {\n background: `transparent url(${imageBase}logo-jcb@2x.png) no-repeat right top`,\n \"background-position-y\": \"2px\",\n \"background-size\": \"55px 94px\",\n },\n \".card-number.valid.card-type-mastercard\": {\n background: `transparent url(${imageBase}logo-mastercard@2x.png) no-repeat right`,\n \"background-position-y\": \"-1px\",\n \"background-size\": \"62px 105px\",\n },\n \".card-number.valid.card-type-visa\": {\n background: `transparent url(${imageBase}logo-visa@2x.png) no-repeat right top`,\n \"background-size\": \"82px 86px\",\n },\n \".card-number::-ms-clear\": {\n display: \"none\",\n },\n \"input[placeholder]\": {\n \"letter-spacing\": \"3px\",\n },\n};\n\nexport const parentStyles = {\n \".secure-payment-form\": {\n \"font-family\": \"sans-serif\",\n },\n\n \".secure-payment-form label\": {\n color: \"#555\",\n \"font-size\": \"13px\",\n \"font-weight\": \"bold\",\n \"line-height\": \"1.5\",\n \"text-transform\": \"uppercase\",\n },\n\n \".secure-payment-form #ss-banner\": {\n background: `transparent url(${imageBase}shield-and-logos@2x.png) no-repeat left center`,\n \"background-size\": \"280px 34px\",\n height: \"40px\",\n \"margin-bottom\": \"7px\",\n },\n\n \".secure-payment-form div\": {\n display: \"block\",\n },\n\n \".secure-payment-form iframe\": {\n width: \"300px\",\n },\n\n \".secure-payment-form .form-row\": {\n \"margin-top\": \"10px\",\n },\n\n \".secure-payment-form .form-wrapper\": {\n display: \"block\",\n margin: \"10px auto\",\n width: \"300px\",\n },\n};\n","import assetBaseUrl from \"../asset-base-url\";\n\n// tslint:disable:object-literal-key-quotes\n// tslint:disable:object-literal-sort-keys\n\nconst imageBase = assetBaseUrl() + \"images\";\n\n// @TODO: confirm styles with enterprise repo\n\nexport const fieldStyles = {\n \"html\": {\n \"font-size\": \"62.5%\",\n },\n\n \"body\": {\n \"font-size\": \"1.4rem\",\n },\n\n \"#secure-payment-field-wrapper\": {\n \"postition\": \"relative\",\n },\n\n \"#secure-payment-field\": {\n \"-o-transition\": \"border-color ease-in-out .15s,box-shadow ease-in-out .15s\",\n \"-webkit-box-shadow\": \"inset 0 1px 1px rgba(0,0,0,.075)\",\n \"-webkit-transition\": \"border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s\",\n \"background-color\": \"#fff\",\n \"border\": \"1px solid #cecece\",\n \"border-radius\": \"2px\",\n \"box-shadow\": \"none\",\n \"box-sizing\": \"border-box\",\n \"display\": \"block\",\n \"font-family\": \"Roboto, sans-serif\",\n \"font-size\": \"11px\",\n \"font-smoothing\": \"antialiased\",\n \"height\": \"35px\",\n \"margin\": \"5px 0 10px 0\",\n \"max-width\": \"100%\",\n \"outline\": \"0\",\n \"padding\": \"0 10px\",\n \"transition\": \"border-color ease-in-out .15s,box-shadow ease-in-out .15s\",\n \"vertical-align\": \"baseline\",\n \"width\": \"100%\",\n },\n\n \"#secure-payment-field:focus\": {\n \"border\": \"1px solid lightblue\",\n \"box-shadow\": \"0 1px 3px 0 #cecece\",\n \"outline\": \"none\",\n },\n\n \"#secure-payment-field[type=button]\": {\n \"text-align\": \"center\",\n \"text-transform\": \"none\",\n \"white-space\": \"nowrap\",\n },\n\n \"#secure-payment-field[type=button]:focus\": {\n \"outline\": \"none\",\n },\n\n \".card-cvv\": {\n \"background\": `transparent url(${imageBase}/cvv.png) no-repeat right`,\n \"background-size\": \"60px\",\n },\n\n \".card-cvv.card-type-amex\": {\n \"background\": `transparent url(${imageBase}/cvv-amex.png) no-repeat right`,\n \"background-size\": \"60px\",\n },\n\n \".card-number\": {\n \"background\": `transparent url(${imageBase}/logo-unknown@2x.png) no-repeat right`,\n \"background-size\": \"52px\",\n },\n\n \".card-number.invalid.card-type-amex\": {\n \"background\": `transparent url(${imageBase}/amex-invalid.svg) no-repeat right center`,\n \"background-position-x\": \"98%\",\n \"background-size\": \"38px\",\n },\n\n \".card-number.invalid.card-type-discover\": {\n \"background\": `transparent url(${imageBase}/discover-invalid.svg) no-repeat right center`,\n \"background-position-x\": \"98%\",\n \"background-size\": \"60px\",\n },\n\n \".card-number.invalid.card-type-jcb\": {\n \"background\": `transparent url(${imageBase}/jcb-invalid.svg) no-repeat right center`,\n \"background-position-x\": \"98%\",\n \"background-size\": \"38px\",\n },\n\n \".card-number.invalid.card-type-mastercard\": {\n \"background\": `transparent url(${imageBase}/mastercard-invalid.svg) no-repeat right center`,\n \"background-position-x\": \"98%\",\n \"background-size\": \"40px\",\n },\n\n \".card-number.invalid.card-type-visa\": {\n \"background\": `transparent url(${imageBase}/visa-invalid.svg) no-repeat center`,\n \"background-position-x\": \"98%\",\n \"background-size\": \"50px\",\n },\n\n \".card-number.valid.card-type-amex\": {\n \"background\": `transparent url(${imageBase}/amex.svg) no-repeat right center`,\n \"background-position-x\": \"98%\",\n \"background-size\": \"38px\",\n },\n\n \".card-number.valid.card-type-discover\": {\n \"background\": `transparent url(${imageBase}/discover.svg) no-repeat right center`,\n \"background-position-x\": \"98%\",\n \"background-size\": \"60px\",\n },\n\n \".card-number.valid.card-type-jcb\": {\n \"background\": `transparent url(${imageBase}/jcb.svg) no-repeat right center`,\n \"background-position-x\": \"98%\",\n \"background-size\": \"38px\",\n },\n\n \".card-number.valid.card-type-mastercard\": {\n \"background\": `transparent url(${imageBase}/mastercard.svg) no-repeat center`,\n \"background-position-x\": \"98%\",\n \"background-size\": \"40px\",\n },\n\n \".card-number.valid.card-type-visa\": {\n \"background\": `transparent url(${imageBase}/visa.svg) no-repeat right center`,\n \"background-position-x\": \"98%\",\n \"background-size\": \"50px\",\n },\n\n \".card-number::-ms-clear\": {\n \"display\": \"none\",\n },\n\n \"input[placeholder]\": {\n \"letter-spacing\": \".5px\",\n },\n};\n\nexport const parentStyles = {\n \".secure-payment-form\": {\n \"font-family\": \"sans-serif\",\n width: \"300px\",\n },\n\n \".secure-payment-form label\": {\n color: \"#555\",\n \"font-size\": \"13px\",\n \"font-weight\": \"bold\",\n \"line-height\": \"1.5\",\n \"text-transform\": \"uppercase\",\n },\n\n \".secure-payment-form #ss-banner\": {\n background: `transparent url(${imageBase}/shield-and-logos@2x.png) no-repeat left center`,\n \"background-size\": \"280px 34px\",\n height: \"40px\",\n \"margin-bottom\": \"7px\",\n },\n\n \".secure-payment-form div\": {\n display: \"block\",\n },\n\n \".secure-payment-form iframe\": {\n \"min-height\": \"3.6rem\",\n },\n\n \".secure-payment-form .form-row\": {\n \"margin-top\": \"10px\",\n },\n\n \".secure-payment-form .form-wrapper\": {\n display: \"block\",\n margin: \"10px auto\",\n },\n\n \".secure-payment-form input\": fieldStyles[\"#secure-payment-field\"],\n \".secure-payment-form input:focus\": fieldStyles[\"#secure-payment-field:focus\"],\n};\n","import { typeByNumber } from \"../lib/card-types\";\nimport IFormatter from \"./formatter\";\n\nexport default class CardNumber implements IFormatter {\n public format(cardNumber: string): string {\n cardNumber = cardNumber.replace(/\\D/g, \"\");\n const type = typeByNumber(cardNumber);\n\n if (!type) {\n return cardNumber;\n }\n\n const matches = cardNumber.match(type.format);\n\n if (!matches) {\n return cardNumber;\n }\n\n if (!type.format.global) {\n matches.shift();\n }\n return matches.join(\" \").replace(/^\\s+|\\s+$/gm, \"\");\n }\n}\n","import IFormatter from \"./formatter\";\n\nexport default class Expiration implements IFormatter {\n public format(exp: string, final = false): string {\n const pat = /^\\D*(\\d{1,2})(\\D+)?(\\d{1,4})?/;\n const groups = exp.match(pat);\n let month: string;\n let del: string;\n let year: string;\n\n if (!groups) {\n return \"\";\n }\n\n month = groups[1] || \"\";\n del = groups[2] || \"\";\n year = groups[3] || \"\";\n\n if (year.length > 0) {\n del = \" / \";\n } else if (month.length === 2 || del.length > 0) {\n del = \" / \";\n } else if (month.length === 1 && (month !== \"0\" && month !== \"1\")) {\n del = \" / \";\n }\n\n if (month.length === 1 && del !== \"\") {\n month = \"0\" + month;\n }\n\n if (final && year.length === 2) {\n year =\n new Date()\n .getFullYear()\n .toString()\n .slice(0, 2) + year;\n }\n\n return month + del + year;\n }\n}\n","import { luhnCheck, typeByNumber } from \"../lib/card-types\";\nimport IValidator from \"./validator\";\n\nexport default class CardNumber implements IValidator {\n public validate(cardNumber: string): boolean {\n if (!cardNumber) {\n return false;\n }\n\n cardNumber = cardNumber.replace(/[-\\s]/g, \"\");\n const type = typeByNumber(cardNumber);\n\n if (!type) {\n return false;\n }\n return luhnCheck(cardNumber) && cardNumber.length === type.length;\n }\n}\n","import IValidator from \"./validator\";\n\nexport default class Cvv implements IValidator {\n public validate(cvv: string, isAmex?: boolean): boolean {\n if (!cvv) {\n return false;\n }\n\n cvv = cvv.replace(/^\\s+|\\s+$/g, \"\");\n\n if (!/^\\d+$/.test(cvv)) {\n return false;\n }\n\n if (typeof isAmex !== \"undefined\" && isAmex === true) {\n return cvv.length === 4;\n }\n\n if (typeof isAmex !== \"undefined\" && isAmex === false) {\n return cvv.length === 3;\n }\n\n return 3 <= cvv.length && cvv.length <= 4;\n }\n}\n","import IValidator from \"./validator\";\n\nexport default class Expiration implements IValidator {\n public validate(exp: string): boolean {\n let m: string;\n let y: string;\n\n if (!exp) {\n return false;\n }\n\n const split = exp.split(\"/\");\n [m, y] = split;\n\n if (!m || !y) {\n return false;\n }\n\n m = m.replace(/^\\s+|\\s+$/g, \"\");\n y = y.replace(/^\\s+|\\s+$/g, \"\");\n\n if (!/^\\d+$/.test(m)) {\n return false;\n }\n if (!/^\\d+$/.test(y)) {\n return false;\n }\n\n if (y.length === 2) {\n y =\n new Date()\n .getFullYear()\n .toString()\n .slice(0, 2) + y;\n }\n\n const month = parseInt(m, 10);\n const year = parseInt(y, 10);\n\n if (!(1 <= month && month <= 12)) {\n return false;\n }\n\n // creates date as 1 day past end of\n // expiration month since JS months\n // are 0 indexed\n return new Date(year, month, 1) > new Date();\n }\n}\n","export default class Ev {\n public static listen(\n node: EventTarget,\n eventName: string,\n callback: EventListener,\n ) {\n if (document.addEventListener) {\n node.addEventListener(eventName, callback, false);\n } else {\n if (node === document) {\n (document.documentElement as any).attachEvent(\n \"onpropertychange\",\n (e: Event) => {\n if ((e as any).propertyName === eventName) {\n callback(e);\n }\n },\n );\n } else {\n (node as any).attachEvent(\"on\" + eventName, callback);\n }\n }\n }\n public static trigger(node: EventTarget, eventName: string) {\n if (document.createEvent) {\n const event = document.createEvent(\"Event\");\n event.initEvent(eventName, true, true);\n node.dispatchEvent(event);\n } else {\n (document.documentElement as any)[eventName]++;\n }\n }\n public static ignore(eventName: string, callback: EventListener) {\n if (document.removeEventListener) {\n document.removeEventListener(eventName, callback, false);\n } else {\n (document.documentElement as any).detachEvent(\n \"onpropertychange\",\n (e: Event) => {\n if ((e as any).propertyName === eventName) {\n callback(e);\n }\n },\n );\n }\n }\n}\n","import Ev from \"./ev\";\n\nexport default class Events {\n /**\n * addHandler\n *\n * Adds an `event` handler for a given `target` element.\n *\n * @param target\n * @param event\n * @param callback\n */\n public static addHandler(\n target: string | EventTarget,\n event: string,\n callback: EventListener | ((e: KeyboardEvent) => void),\n ) {\n let node: EventTarget | null;\n if (typeof target === \"string\") {\n node = document.getElementById(target);\n } else {\n node = target;\n }\n\n if (!node) {\n return;\n }\n\n if (document.addEventListener) {\n node.addEventListener(event, callback as EventListener, false);\n } else {\n Ev.listen(node, event, callback as EventListener);\n }\n }\n\n /**\n * removeHandler\n *\n * Removes an `event` handler for a given `target` element.\n *\n * @param target\n * @param event\n * @param callback\n */\n public static removeHandler(\n target: string | EventTarget,\n event: string,\n callback: EventListener,\n ) {\n let node: EventTarget | null;\n if (typeof target === \"string\") {\n node = document.getElementById(target);\n } else {\n node = target;\n }\n\n if (!node) {\n return;\n }\n\n if (document.removeEventListener) {\n node.removeEventListener(event, callback, false);\n } else {\n Ev.ignore(event, callback);\n }\n }\n\n /**\n * trigger\n *\n * Fires off an `event` for a given `target` element.\n *\n * @param name\n * @param target\n */\n public static trigger(name: string, target: any) {\n if (document.createEvent) {\n const event = document.createEvent(\"Event\");\n event.initEvent(name, true, true);\n target.dispatchEvent(event);\n } else {\n Ev.trigger(target, name);\n }\n }\n}\n","import CardNumberFormatter from \"../formatters/card-number\";\nimport ExpirationFormatter from \"../formatters/expiration\";\nimport CardNumberValidator from \"../validators/card-number\";\nimport CvvValidator from \"../validators/cvv\";\nimport ExpirationValidator from \"../validators/expiration\";\nimport { typeByNumber } from \"./card-types\";\nimport Events from \"./events\";\nimport { postMessage } from \"./post-message\";\n\nexport default class Card {\n /**\n * addType\n *\n * Adds a class to the target element with the card type\n * inferred from the target\"s current value.\n *\n * @param e\n */\n public static addType(e: Event) {\n const target = (e.currentTarget\n ? e.currentTarget\n : e.srcElement) as HTMLInputElement;\n const type = typeByNumber(target.value);\n const classList = target.className.split(\" \");\n const length = classList.length;\n let i = 0;\n let c = \"\";\n\n for (i; i < length; i++) {\n c = classList[i];\n if (c && c.indexOf(\"card-type-\") !== -1) {\n delete classList[i];\n }\n }\n\n if (type) {\n classList.push(\"card-type-\" + type.code);\n\n const id = target.getAttribute(\"data-id\");\n if (id) {\n postMessage.post(\n {\n data: { cardType: type.code },\n id,\n type: \"ui:iframe-field:card-type\",\n },\n \"parent\",\n );\n }\n }\n\n target.className = classList.join(\" \").replace(/^\\s+|\\s+$/gm, \"\");\n }\n\n /**\n * formatNumber\n *\n * Formats a target element\"s value based on the\n * inferred card type\"s formatting regex.\n *\n * @param e\n */\n public static formatNumber(e: Event) {\n const target = (e.currentTarget\n ? e.currentTarget\n : e.srcElement) as HTMLInputElement;\n const value = target.value;\n\n if (value.length === 0) {\n return;\n }\n\n const formatted = new CardNumberFormatter().format(value);\n target.value = formatted;\n\n if (!target.setSelectionRange) {\n return;\n }\n\n let cursor = target.selectionStart || 0;\n\n // copy and paste, space inserted on formatter\n if (value.length < formatted.length) {\n cursor += formatted.length - value.length;\n }\n\n // check if before new inserted digit is a space\n if (value.charAt(cursor) === \" \" && formatted.charAt(cursor - 1) === \" \") {\n cursor += 1;\n }\n\n target.setSelectionRange(cursor, cursor);\n }\n\n /**\n * formatExpiration\n *\n * Formats a target element\"s value.\n *\n * @param e\n */\n public static formatExpiration(e: KeyboardEvent) {\n const target = (e.currentTarget\n ? e.currentTarget\n : e.srcElement) as HTMLInputElement;\n const value = target.value;\n // allow: delete, backspace\n if (\n [46, 8].indexOf(e.keyCode) !== -1 ||\n // allow: home, end, left, right\n (e.keyCode >= 35 && e.keyCode <= 39)\n ) {\n return;\n }\n target.value = new ExpirationFormatter().format(value, e.type === \"blur\");\n }\n\n /**\n * restrictLength\n *\n * Restricts input in a target element to a\n * certain length data.\n *\n * @param length\n */\n public static restrictLength(length: number) {\n return (e: KeyboardEvent) => {\n const target = (e.currentTarget\n ? e.currentTarget\n : e.srcElement) as HTMLInputElement;\n const value = target.value;\n // allow: backspace, delete, tab, escape and enter\n if (\n [46, 8, 9, 27, 13, 110].indexOf(e.keyCode) !== -1 ||\n // allow: Ctrl+A\n (e.keyCode === 65 && e.ctrlKey === true) ||\n // allow: home, end, left, right\n (e.keyCode >= 35 && e.keyCode <= 39)\n ) {\n // let it happen, don\"t do anything\n return;\n }\n if (value.length >= length) {\n e.preventDefault ? e.preventDefault() : (e.returnValue = false);\n }\n };\n }\n\n /**\n * restrictCardNumberLength\n *\n * Restricts input in a target element to a\n * certain length data.\n *\n * @param length\n */\n public static restrictCardNumberLength(e: KeyboardEvent) {\n const target = (e.currentTarget\n ? e.currentTarget\n : e.srcElement) as HTMLInputElement;\n const value = target.value;\n const cardType = typeByNumber(value);\n // allow: backspace, delete, tab, escape and enter\n if (\n [46, 8, 9, 27, 13, 110].indexOf(e.keyCode) !== -1 ||\n // allow: Ctrl+A\n (e.keyCode === 65 && e.ctrlKey === true) ||\n // allow: home, end, left, right\n (e.keyCode >= 35 && e.keyCode <= 39)\n ) {\n // let it happen, don\"t do anything\n return;\n }\n if (value.replace(/\\D/g, \"\").length >= (cardType ? cardType.length : 19)) {\n e.preventDefault ? e.preventDefault() : (e.returnValue = false);\n }\n }\n\n /**\n * restrictNumeric\n *\n * Restricts input in a target element to only\n * numeric data.\n *\n * @param e\n */\n public static restrictNumeric(e: KeyboardEvent) {\n // allow: backspace, delete, tab, escape and enter\n if (\n [46, 8, 9, 27, 13, 110].indexOf(e.keyCode) !== -1 ||\n // allow: Ctrl+A\n (e.keyCode === 65 && e.ctrlKey === true) ||\n // allow: home, end, left, right\n (e.keyCode >= 35 && e.keyCode <= 39) ||\n // allow: weird Android/Chrome issue\n e.keyCode === 229\n ) {\n // let it happen, don\"t do anything\n return;\n }\n // ensure that it is a number and stop the keypress\n if (\n (e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) &&\n (e.keyCode < 96 || e.keyCode > 105)\n ) {\n e.preventDefault ? e.preventDefault() : (e.returnValue = false);\n }\n }\n\n /**\n * deleteProperly\n *\n * Places cursor on the correct position to\n * let the browser delete the digit instead\n * of the space.\n *\n * @param e\n */\n public static deleteProperly(e: KeyboardEvent) {\n const target = (e.currentTarget\n ? e.currentTarget\n : e.srcElement) as HTMLInputElement;\n const value = target.value;\n\n if (!target.setSelectionRange) {\n return;\n }\n\n const cursor = target.selectionStart || 0;\n\n // allow: delete, backspace\n if (\n [46, 8].indexOf(e.keyCode) !== -1 &&\n // if space to be deleted\n value.charAt(cursor - 1) === \" \"\n ) {\n // placing cursor before space to delete digit instead\n target.setSelectionRange(cursor - 1, cursor - 1);\n }\n }\n\n /**\n * validateNumber\n *\n * Validates a target element\"s value based on the\n * inferred card type\"s validation regex. Adds a\n * class to the target element to note `valid` or\n * `invalid`.\n *\n * @param e\n */\n public static validateNumber(e: Event) {\n const target = (e.currentTarget\n ? e.currentTarget\n : e.srcElement) as HTMLInputElement;\n const value = target.value.replace(/[-\\s]/g, \"\");\n const cardType = typeByNumber(value);\n const classList = target.className.split(\" \");\n const length = classList.length;\n let c = \"\";\n\n for (let i = 0; i < length; i++) {\n c = classList[i];\n if (c.indexOf(\"valid\") !== -1) {\n delete classList[i];\n }\n }\n\n if (cardType && value.length < cardType.length) {\n classList.push(\"possibly-valid\");\n }\n\n if (new CardNumberValidator().validate(value)) {\n classList.push(\"valid\");\n\n const id = target.getAttribute(\"data-id\");\n if (id) {\n postMessage.post(\n {\n data: { valid: true },\n id,\n type: \"ui:iframe-field:card-number-test\",\n },\n \"parent\",\n );\n }\n } else {\n classList.push(\"invalid\");\n\n const id = target.getAttribute(\"data-id\");\n if (id) {\n postMessage.post(\n {\n data: { valid: false },\n id,\n type: \"ui:iframe-field:card-number-test\",\n },\n \"parent\",\n );\n }\n }\n\n target.className = classList.join(\" \").replace(/^\\s+|\\s+$/gm, \"\");\n }\n\n /**\n * validateCvv\n *\n * Validates a target element\"s value based on the\n * possible CVV lengths. Adds a class to the target\n * element to note `valid` or `invalid`.\n *\n * @param e\n */\n public static validateCvv(e: Event) {\n const target = (e.currentTarget\n ? e.currentTarget\n : e.srcElement) as HTMLInputElement;\n const value = target.value;\n const classList = target.className.split(\" \");\n const length = classList.length;\n let c = \"\";\n let cardType = \"unknown\";\n\n for (let i = 0; i < length; i++) {\n c = classList[i];\n if (c.indexOf(\"valid\") !== -1) {\n delete classList[i];\n }\n if (c.indexOf(\"card-type-\") !== -1) {\n cardType = c.replace(\"card-type-\", \"\");\n }\n }\n\n const isAmex = cardType === \"amex\";\n const maxLength = isAmex ? 4 : 3;\n\n if (value.length < maxLength) {\n classList.push(\"possibly-valid\");\n }\n\n if (\n new CvvValidator().validate(\n value,\n cardType === \"unknown\" ? undefined : isAmex,\n )\n ) {\n classList.push(\"valid\");\n\n const id = target.getAttribute(\"data-id\");\n if (id) {\n postMessage.post(\n {\n data: { valid: true },\n id,\n type: \"ui:iframe-field:card-cvv-test\",\n },\n \"parent\",\n );\n }\n } else {\n classList.push(\"invalid\");\n\n const id = target.getAttribute(\"data-id\");\n if (id) {\n postMessage.post(\n {\n data: { valid: false },\n id,\n type: \"ui:iframe-field:card-cvv-test\",\n },\n \"parent\",\n );\n }\n }\n\n target.className = classList.join(\" \").replace(/^\\s+|\\s+$/gm, \"\");\n }\n\n /**\n * validateExpiration\n *\n * Validates a target element\"s value based on the\n * current date. Adds a class to the target element\n * to note `valid` or `invalid`.\n *\n * @param e\n */\n public static validateExpiration(e: Event) {\n const target = (e.currentTarget\n ? e.currentTarget\n : e.srcElement) as HTMLInputElement;\n const value = target.value;\n const classList = target.className.split(\" \");\n const length = classList.length;\n let c = \"\";\n\n for (let i = 0; i < length; i++) {\n c = classList[i];\n if (c.indexOf(\"valid\") !== -1) {\n delete classList[i];\n }\n }\n\n const [month, year] = value.split(\" / \");\n\n if (!month || !year || month.length < 2 || year.length < 4) {\n classList.push(\"possibly-valid\");\n }\n\n if (new ExpirationValidator().validate(value)) {\n classList.push(\"valid\");\n\n const id = target.getAttribute(\"data-id\");\n if (id) {\n postMessage.post(\n {\n data: { valid: true },\n id,\n type: \"ui:iframe-field:card-expiration-test\",\n },\n \"parent\",\n );\n }\n } else {\n classList.push(\"invalid\");\n\n const id = target.getAttribute(\"data-id\");\n if (id) {\n postMessage.post(\n {\n data: { valid: false },\n id,\n type: \"ui:iframe-field:card-expiration-test\",\n },\n \"parent\",\n );\n }\n }\n\n target.className = classList.join(\" \").replace(/^\\s+|\\s+$/gm, \"\");\n }\n\n /**\n * attachNumberEvents\n *\n * @param selector\n */\n public static attachNumberEvents(selector: string) {\n const el = document.querySelector(selector);\n if (!el) {\n return;\n }\n\n Events.addHandler(el, \"keydown\", Card.restrictNumeric);\n Events.addHandler(el, \"keydown\", Card.restrictCardNumberLength);\n Events.addHandler(el, \"keydown\", Card.deleteProperly);\n Events.addHandler(el, \"keyup\", Card.formatNumber);\n Events.addHandler(el, \"input\", Card.formatNumber);\n Events.addHandler(el, \"input\", Card.validateNumber);\n Events.addHandler(el, \"input\", Card.addType);\n }\n\n /**\n * attachExpirationEvents\n *\n * @param selector\n */\n public static attachExpirationEvents(selector: string) {\n const el = document.querySelector(selector);\n if (!el) {\n return;\n }\n\n Events.addHandler(el, \"keydown\", Card.restrictNumeric);\n Events.addHandler(el, \"keydown\", Card.restrictLength(9));\n Events.addHandler(el, \"keyup\", Card.formatExpiration);\n Events.addHandler(el, \"blur\", Card.formatExpiration);\n Events.addHandler(el, \"input\", Card.validateExpiration);\n Events.addHandler(el, \"blur\", Card.validateExpiration);\n }\n\n /**\n * attachCvvEvents\n *\n * @param selector\n */\n public static attachCvvEvents(selector: string) {\n const el = document.querySelector(selector);\n if (!el) {\n return;\n }\n\n Events.addHandler(el, \"keydown\", Card.restrictNumeric);\n Events.addHandler(el, \"keydown\", Card.restrictLength(4));\n Events.addHandler(el, \"input\", Card.validateCvv);\n }\n}\n\nif (!Array.prototype.indexOf) {\n Array.prototype.indexOf = function(obj, start) {\n for (let i = start || 0, j = this.length; i < j; i++) {\n if (this[i] === obj) {\n return i;\n }\n }\n return -1;\n };\n}\n","import { postMessage } from \"../../internal\";\nimport paymentFieldId from \"../../internal/lib/payment-field-id\";\nimport { IDictionary } from \"../../internal/lib/util\";\nimport tokenize from \"../../internal/requests/tokenize\";\n\nexport default (id: string, type: string, data: IDictionary) => {\n if (type !== \"card-number\" && type !== \"account-number\") {\n return;\n }\n\n const w = window as any;\n\n w.dataContents = w.dataContents || {};\n w.dataContents[data.data.type] = data.data.value;\n\n if (!w.dataReceivedFields) {\n w.dataReceivedFields = [\"submit\"];\n }\n\n (w.dataReceivedFields as string[]).push(data.data.type);\n\n if (\n JSON.stringify(w.dataFields.sort()) ===\n JSON.stringify(w.dataReceivedFields.sort())\n ) {\n const field = document.getElementById(paymentFieldId) as HTMLInputElement;\n const value = field && field.value ? field.value : \"\";\n\n tokenize({\n \"account-number\": window.name === \"account-number\" && value,\n \"card-cvv\":\n w.dataContents[\"card-cvv\"] !== undefined && w.dataContents[\"card-cvv\"],\n \"card-expiration\":\n w.dataContents[\"card-expiration\"] !== undefined &&\n w.dataContents[\"card-expiration\"],\n \"card-holder-name\":\n w.dataContents[\"card-holder-name\"] !== undefined &&\n w.dataContents[\"card-holder-name\"],\n \"card-number\": window.name === \"card-number\" && value,\n \"routing-number\":\n w.dataContents[\"routing-number\"] !== undefined &&\n w.dataContents[\"routing-number\"],\n })\n .then((response) => {\n w.dataContents = undefined;\n w.dataReceivedFields = undefined;\n\n postMessage.post(\n {\n data: response,\n id,\n type: \"ui:iframe-field:token-success\",\n },\n \"parent\",\n );\n })\n .catch((response) => {\n w.dataContents = undefined;\n w.dataReceivedFields = undefined;\n\n postMessage.post(\n {\n data: response,\n id,\n type: \"ui:iframe-field:token-error\",\n },\n \"parent\",\n );\n });\n }\n};\n","import Events from \"../../internal/lib/events\";\nimport paymentFieldId from \"../../internal/lib/payment-field-id\";\nimport { postMessage } from \"../../internal/lib/post-message\";\nimport tokenize from \"../../internal/requests/tokenize\";\n\nexport default (id: string) => {\n let el: HTMLInputElement | null = document.getElementById(\n paymentFieldId + \"-data\",\n ) as HTMLInputElement;\n if (el && el.parentNode) {\n el.parentNode.removeChild(el);\n }\n el = document.createElement(\"input\");\n el.id = paymentFieldId + \"-data\";\n el.type = \"text\";\n\n const container = document.querySelector(\".extra-div-2\") as HTMLDivElement;\n\n if (!container) {\n throw new Error(\"TODO\");\n }\n\n container.style.height = \"0px\";\n container.style.width = \"0px\";\n container.style.overflow = \"hidden\";\n\n container.appendChild(el);\n\n const button = document.getElementById(paymentFieldId);\n const originalButtonText =\n button && button.innerText ? button.innerText : \"Read Card\";\n\n if (button && button.firstChild) {\n button.replaceChild(\n document.createTextNode(\"Waiting...\"),\n button.firstChild,\n );\n }\n\n el.focus();\n\n postMessage.post(\n {\n id,\n type: \"ui:iframe-field:waiting-for-data\",\n },\n \"parent\",\n );\n\n Events.addHandler(el, \"keydown\", (e: KeyboardEvent) => {\n if (e.keyCode !== 13) {\n return;\n }\n\n postMessage.post(\n {\n id,\n type: \"ui:iframe-field:data-received\",\n },\n \"parent\",\n );\n\n e.preventDefault();\n\n const field = document.getElementById(\n paymentFieldId + \"-data\",\n ) as HTMLInputElement;\n const value = field && field.value ? field.value : \"\";\n\n tokenize({\n \"card-track\": value,\n })\n .then((response) => {\n if (button && button.firstChild) {\n button.replaceChild(\n document.createTextNode(originalButtonText),\n button.firstChild,\n );\n }\n field.blur();\n\n postMessage.post(\n {\n data: response,\n id,\n type: \"ui:iframe-field:token-success\",\n },\n \"parent\",\n );\n })\n .catch((response) => {\n if (button && button.firstChild) {\n button.replaceChild(\n document.createTextNode(originalButtonText),\n button.firstChild,\n );\n }\n field.blur();\n\n postMessage.post(\n {\n data: response,\n id,\n type: \"ui:iframe-field:token-error\",\n },\n \"parent\",\n );\n });\n });\n};\n","import { postMessage } from \"../../internal\";\nimport { IDictionary } from \"../../internal/lib/util\";\n\nexport default async (id: string, data: IDictionary) => {\n if (!(window as any).globalPaymentResponse) {\n postMessage.post(\n {\n data: {\n code: \"ERROR\",\n message: \"Missing PaymentResponse object\",\n },\n id,\n type: \"ui:iframe-field:error\",\n },\n \"parent\",\n );\n return;\n }\n ((window as any).globalPaymentResponse as PaymentResponse)\n .complete(data.data.status)\n .then(() => {\n postMessage.post(\n {\n id,\n type: \"ui:iframe-field:payment-request-completed\",\n },\n \"parent\",\n );\n })\n .catch((e: Error) => {\n postMessage.post(\n {\n data: {\n code: \"ERROR\",\n message: e.message,\n },\n id,\n type: \"ui:iframe-field:error\",\n },\n \"parent\",\n );\n });\n};\n","import { postMessage } from \"../../internal\";\nimport { typeByNumber } from \"../../internal/lib/card-types\";\nimport { IDictionary } from \"../../internal/lib/util\";\nimport tokenize from \"../../internal/requests/tokenize\";\n\nexport default async (id: string, data: IDictionary) => {\n let response;\n try {\n const request = new PaymentRequest(\n data.data.instruments,\n data.data.details,\n data.data.options,\n );\n\n response = await request.show();\n (window as any).globalPaymentResponse = response;\n } catch (e) {\n let code = \"ERROR\";\n if (e.name !== \"Error\") {\n code = e.name.replace(\"Error\", \"_Error\").toUpperCase();\n }\n postMessage.post(\n {\n data: {\n code,\n message: e.message,\n },\n id,\n type: \"ui:iframe-field:token-error\",\n },\n \"parent\",\n );\n return;\n }\n\n try {\n const token = await tokenize({\n \"card-cvv\": response.details.cardSecurityCode || \"\",\n \"card-expiration\":\n (response.details.expiryMonth || \"\") +\n \" / \" +\n (response.details.expiryYear || \"\"),\n \"card-holder-name\": response.details.cardholderName || \"\",\n \"card-number\": response.details.cardNumber || \"\",\n });\n\n const d = response.toJSON();\n\n const cardNumber = response.details.cardNumber.replace(/\\D/g, \"\");\n const bin = cardNumber.substr(0, 6);\n const last4 = cardNumber.substr(-4);\n const type = typeByNumber(cardNumber);\n\n d.details = d.details || {};\n d.details.cardNumber = bin + \"*\".repeat(cardNumber.length - 10) + last4;\n d.details.cardBin = bin;\n d.details.cardLast4 = last4;\n d.details.cardType = type ? type.code : \"unknown\";\n d.details.cardSecurityCode = !!response.details.cardSecurityCode;\n\n (token as any).details = d.details;\n (token as any).methodName = d.methodName;\n (token as any).payerEmail = d.payerEmail;\n (token as any).payerName = d.payerName;\n (token as any).payerPhone = d.payerPhone;\n (token as any).requestId = d.requestId;\n (token as any).shippingAddress = d.shippingAddress;\n (token as any).shippingOption = d.shippingOption;\n\n postMessage.post(\n {\n data: token,\n id,\n type: \"ui:iframe-field:token-success\",\n },\n \"parent\",\n );\n } catch (e) {\n response.complete(\"fail\");\n postMessage.post(\n {\n data: e,\n id,\n type: \"ui:iframe-field:token-error\",\n },\n \"parent\",\n );\n }\n};\n","import { postMessage as pm } from \"../../internal\";\nimport paymentFieldId from \"../../internal/lib/payment-field-id\";\nimport { IDictionary } from \"../../internal/lib/util\";\n\nexport default (id: string, type: string, data: IDictionary) => {\n if (!(window as any).dataReceivedFields) {\n (window as any).dataReceivedFields = [\"submit\"];\n }\n\n const field = document.getElementById(paymentFieldId) as HTMLInputElement;\n let value = field && field.value ? field.value : \"\";\n\n if (type === \"card-number\" || type === \"account-number\") {\n // ignore to prevent these fields from leaking their data\n // but store expected list of fields\n (window as any).dataFields = data.data.fields;\n value = \"\";\n }\n\n pm.post(\n {\n data: {\n target: data.data.target,\n type,\n value,\n },\n id,\n type: \"ui:iframe-field:pass-data\",\n },\n \"parent\",\n );\n};\n","import paymentFieldId from \"../../internal/lib/payment-field-id\";\n\nexport default (cardType?: string) => {\n const el = document.getElementById(paymentFieldId);\n if (!el) {\n return;\n }\n\n const classList = el.className.split(\" \");\n const length = classList.length;\n let i = 0;\n let c = \"\";\n\n for (i; i < length; i++) {\n c = classList[i];\n if (c && c.indexOf(\"card-type-\") !== -1) {\n delete classList[i];\n }\n }\n\n if (cardType) {\n classList.push(\"card-type-\" + cardType);\n }\n\n el.className = classList.join(\" \");\n};\n","import paymentFieldId from \"../../internal/lib/payment-field-id\";\n\nexport default () => {\n const el = document.getElementById(paymentFieldId);\n if (!el) {\n return;\n }\n\n el.focus();\n};\n","/**\n * Escapes all potentially dangerous characters, so that the\n * resulting string can be safely inserted into attribute or\n * element text.\n *\n * @param value\n * @returns escaped text\n */\nexport default function encodeEntities(value: string) {\n return value\n .replace(/&/g, \"&\")\n .replace(/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g, (v) => {\n const hi = v.charCodeAt(0);\n const low = v.charCodeAt(1);\n return \"&#\" + ((hi - 0xd800) * 0x400 + (low - 0xdc00) + 0x10000) + \";\";\n })\n .replace(/([^\\#-~| |!])/g, (v) => {\n return \"&#\" + v.charCodeAt(0) + \";\";\n })\n .replace(//g, \">\");\n}\n","import encodeEntities from \"../../internal/lib/encode-entities\";\nimport paymentFieldId from \"../../internal/lib/payment-field-id\";\n\nexport default (text: string) => {\n const el = document.getElementById(paymentFieldId);\n if (!el) {\n return;\n }\n\n el.setAttribute(\"aria-label\", encodeEntities(text));\n document.querySelectorAll(\"main\")\n .forEach((e) => e.setAttribute(\"aria-label\", encodeEntities(text)));\n document.querySelectorAll(`#${paymentFieldId}-label`)\n .forEach((e) => e.textContent = encodeEntities(text));\n};\n","import encodeEntities from \"../../internal/lib/encode-entities\";\nimport paymentFieldId from \"../../internal/lib/payment-field-id\";\n\nexport default (placeholder: string) => {\n const el = document.getElementById(paymentFieldId);\n if (!el) {\n return;\n }\n\n if (\n placeholder === \"•••• •••• •••• ••••\" ||\n placeholder === \"•••••••••\" ||\n placeholder === \"••••\" ||\n placeholder === \"•••\" ||\n placeholder === \"···· ···· ···· ····\"\n ) {\n el.setAttribute(\"placeholder\", placeholder);\n } else {\n el.setAttribute(\"placeholder\", encodeEntities(placeholder));\n }\n};\n","import encodeEntities from \"../../internal/lib/encode-entities\";\nimport paymentFieldId from \"../../internal/lib/payment-field-id\";\n\nexport default (text: string) => {\n const el = document.getElementById(paymentFieldId);\n if (!el) {\n return;\n }\n\n el.textContent = encodeEntities(text);\n};\n","import encodeEntities from \"../../internal/lib/encode-entities\";\nimport Events from \"../../internal/lib/events\";\nimport paymentFieldId from \"../../internal/lib/payment-field-id\";\n\nexport default (text: string) => {\n const el = document.getElementById(paymentFieldId);\n if (!el) {\n return;\n }\n\n el.setAttribute(\"value\", encodeEntities(text));\n\n Events.trigger(\"keyup\", el);\n Events.trigger(\"input\", el);\n};\n","import { bus, loadedFrames, options, postMessage } from \"../../internal\";\nimport Card from \"../../internal/lib/card\";\nimport Events from \"../../internal/lib/events\";\nimport paymentFieldId from \"../../internal/lib/payment-field-id\";\nimport { json2css } from \"../../internal/lib/styles\";\nimport { IDictionary } from \"../../internal/lib/util\";\nimport EventEmitter from \"../../lib/event-emitter\";\nimport generateGuid from \"../../lib/generate-guid\";\n\nimport actionAccumulateDataAndTokenize from \"./action-accumulate-data-and-tokenize\";\nimport actionAddStylesheet from \"./action-add-stylesheet\";\nimport actionCardTrackButtonClick from \"./action-card-track-button-click\";\nimport actionPaymentRequestComplete from \"./action-payment-request-complete\";\nimport actionPaymentRequestStart from \"./action-payment-request-start\";\nimport actionRequestData from \"./action-request-data\";\nimport actionSetCardType from \"./action-set-card-type\";\nimport actionSetFocus from \"./action-set-focus\";\nimport actionSetLabel from \"./action-set-label\";\nimport actionSetPlaceholder from \"./action-set-placeholder\";\nimport actionSetText from \"./action-set-text\";\nimport actionSetValue from \"./action-set-value\";\n\nexport interface IFrameCollection {\n [key: string]: IframeField | undefined;\n}\n\nexport interface IUIFormField {\n label?: string;\n placeholder?: string;\n target?: string;\n text?: string;\n title?: string;\n value?: string;\n}\n\nexport const fieldTypeAutocompleteMap: IDictionary = {\n \"card-cvv\": \"cc-csc\",\n \"card-expiration\": \"cc-exp\",\n \"card-number\": \"cc-number\",\n};\n\nexport class IframeField extends EventEmitter {\n public static register(type: string) {\n const query = window.location.hash.replace(\"#\", \"\");\n const data: any = JSON.parse(atob(query));\n const id: string = data.id;\n const enableAutocomplete = data.enableAutocomplete || false;\n\n IframeField.setHtmlLang(data.lang);\n IframeField.createField(id, type, data.type, enableAutocomplete);\n IframeField.addMessageListener(id, type, data.targetOrigin);\n\n postMessage.post(\n {\n data: { type },\n id,\n type: \"ui:iframe-field:register\",\n },\n \"parent\",\n );\n IframeField.triggerResize(id);\n\n // Fix iOS issue with cross-origin iframes\n Events.addHandler(document.body, \"touchstart\", () => { /** */ });\n }\n\n public static setHtmlLang(lang: string) {\n document.querySelectorAll(\"html\").forEach((el) => el.lang = lang);\n }\n\n /**\n * Creates the inner field within the iframe window and sets\n * any appropriate attributes, properties, and event handlers.\n * @param id Field ID\n * @param name Field type\n * @param type Type of element\n * @param enableAutocomplete Whether autocomplete should be enabled\n */\n public static createField(id: string, name: string, type: string, enableAutocomplete: boolean) {\n const input = document.createElement(\n type === \"button\" ? \"button\" : \"input\",\n );\n input.setAttribute(\"type\", type === \"button\" ? \"button\" : (name === \"card-holder-name\" ? \"text\" : \"tel\"));\n input.id = paymentFieldId;\n input.className = name;\n input.setAttribute(\"data-id\", id);\n\n if (enableAutocomplete === true && fieldTypeAutocompleteMap[name]) {\n input.setAttribute(\"autocomplete\", fieldTypeAutocompleteMap[name]);\n }\n\n if (name === \"card-track\") {\n const message = \"Read Card\";\n input.appendChild(document.createTextNode(message));\n } else if (type === \"button\") {\n const message = \"Submit\";\n input.appendChild(document.createTextNode(message));\n }\n\n const label = document.createElement(\"label\");\n label.id = paymentFieldId + \"-label\";\n label.setAttribute(\"for\", paymentFieldId);\n label.className = \"offscreen\";\n\n const dest = document.getElementById(paymentFieldId + \"-wrapper\");\n if (!dest) {\n return;\n }\n\n dest.insertBefore(input, dest.firstChild);\n dest.insertBefore(label, dest.firstChild);\n\n IframeField.addFrameFocusEvent();\n\n if (enableAutocomplete === true && name === \"card-number\") {\n IframeField.createAutocompleteField(dest, id, \"card-cvv\", \"cardCsc\", \"cc-csc\");\n IframeField.createAutocompleteField(dest, id, \"card-expiration\", \"cardExpiration\", \"cc-exp\");\n IframeField.createAutocompleteField(dest, id, \"card-holder-name\", \"cardHolderName\", \"cc-name\");\n }\n\n if (name === \"card-track\") {\n Events.addHandler(input, \"click\", () => {\n actionCardTrackButtonClick(id);\n });\n } else if (type === \"button\") {\n Events.addHandler(input, \"click\", () => {\n postMessage.post(\n {\n id,\n type: \"ui:iframe-field:click\",\n },\n \"parent\",\n );\n });\n }\n\n switch (name) {\n case \"card-number\":\n Card.attachNumberEvents(\"#\" + input.id);\n input.name = \"cardNumber\";\n break;\n case \"card-expiration\":\n Card.attachExpirationEvents(\"#\" + input.id);\n break;\n case \"card-cvv\":\n Card.attachCvvEvents(\"#\" + input.id);\n break;\n default:\n break;\n }\n }\n\n /**\n * Appends a hidden input to the given destination to accept\n * full autocomplete/auto-fill data from the browser. The\n * parent window is also notified of data changes to these\n * fields in order display the new data to the end-user.\n *\n * @param destination Parent node for new element\n * @param id Field ID\n * @param type Field type\n * @param name Field name to be used\n * @param autocomplete Value for field's autocomplete attribute\n */\n public static createAutocompleteField(\n destination: Node,\n id: string,\n type: string,\n name: string,\n autocomplete: string,\n ) {\n const element = document.createElement(\"input\");\n element.name = name;\n element.className = \"autocomplete-hidden\";\n element.tabIndex = -1;\n element.autocomplete = autocomplete;\n Events.addHandler(element, \"input\", () => {\n let value = element && element.value ? element.value : \"\";\n\n // this shouldn't happen, but explicitly ignore to prevent\n // these fields from leaking their data to the parent\n if (type === \"card-number\" || type === \"account-number\") {\n value = \"\";\n }\n\n postMessage.post(\n {\n data: {\n type,\n value,\n },\n id,\n type: \"ui:iframe-field:set-autocomplete-value\",\n },\n \"parent\",\n );\n });\n destination.appendChild(element);\n }\n\n /**\n * addFrameFocusEvent\n *\n * Ensures an iframe's document forwards its received focus\n * to the input field. Helps provide consistent behavior in\n * all browsers.\n */\n public static addFrameFocusEvent() {\n const element = document.getElementById(paymentFieldId);\n if (!element) {\n return;\n }\n\n const focusEventName = \"focus\";\n const handler = (e: any) => {\n if (e.fromElement === element) {\n return;\n }\n if (e.relatedTarget) {\n return;\n }\n\n element.focus();\n };\n\n if ((document as any)[\"on\" + focusEventName + \"in\"]) {\n Events.addHandler(document, focusEventName + \"in\", handler);\n } else {\n Events.addHandler(document, focusEventName, handler);\n }\n }\n\n /**\n * Sets the iframe window's postMessage handler in order to\n * react to parent/sibling events.\n *\n * @param id Field ID\n * @param type Field type\n * @param targetOrigin Parent window's origin\n */\n public static addMessageListener(\n id: string,\n type: string,\n targetOrigin: string,\n ) {\n // update the global statge with information about the parent window\n loadedFrames.parent = {\n frame: parent,\n url: targetOrigin,\n } as any;\n\n postMessage.receive((data: any) => {\n if (!data.id || (data.id && data.id !== id)) {\n return;\n }\n\n const event: string = data.type.replace(\"ui:iframe-field:\", \"\");\n\n switch (event) {\n case \"accumulate-data\":\n actionAccumulateDataAndTokenize(id, type, data);\n break;\n case \"add-stylesheet\":\n actionAddStylesheet(data.data.css);\n IframeField.triggerResize(id);\n break;\n case \"payment-request-complete\":\n actionPaymentRequestComplete(id, data);\n break;\n case \"payment-request-start\":\n actionPaymentRequestStart(id, data);\n break;\n case \"request-data\":\n actionRequestData(id, type, data);\n break;\n case \"set-card-type\":\n actionSetCardType(data.data.cardType);\n break;\n case \"set-focus\":\n actionSetFocus();\n break;\n case \"set-placeholder\":\n actionSetPlaceholder(data.data.placeholder);\n IframeField.triggerResize(id);\n break;\n case \"set-text\":\n actionSetText(data.data.text);\n IframeField.triggerResize(id);\n break;\n case \"set-value\":\n actionSetValue(data.data.value);\n IframeField.triggerResize(id);\n break;\n case \"set-label\":\n actionSetLabel(data.data.label);\n IframeField.triggerResize(id);\n case \"update-options\":\n for (const prop in data.data) {\n if (data.data.hasOwnProperty(prop)) {\n options[prop] = data.data[prop];\n }\n }\n break;\n default:\n break;\n }\n });\n }\n\n public static triggerResize(id: string) {\n postMessage.post(\n {\n data: {\n height: document.body.offsetHeight + 1,\n },\n id,\n type: \"ui:iframe-field:resize\",\n },\n \"parent\",\n );\n }\n\n public container: Element | null;\n public frame: HTMLIFrameElement;\n public id: string;\n public targetNode: any;\n public type: \"button\" | \"input\";\n public url: string;\n\n constructor(type: string, opts: IUIFormField, src: string) {\n super();\n\n const selector = opts.target || \"\";\n\n this.id = btoa(generateGuid());\n this.type = type === \"submit\" || type === \"card-track\" ? \"button\" : \"input\";\n this.url = src;\n this.frame = this.makeFrame(type, this.id, opts);\n this.frame.onload = () => {\n this.emit(\"load\");\n };\n this.frame.src =\n src +\n \"#\" +\n btoa(\n JSON.stringify({\n enableAutocomplete: options.enableAutocomplete,\n id: this.id,\n lang: options.language || \"en\",\n targetOrigin: window.location.href,\n type: this.type,\n }),\n );\n\n this.container = document.querySelector(selector);\n\n if (!this.container) {\n bus.emit(\"error\", {\n error: true,\n reasons: [\n {\n code: \"ERROR\",\n message: \"IframeField: target cannot be found with given selector\",\n },\n ],\n });\n return;\n }\n\n this.container.appendChild(this.frame);\n this.on(\"dispose\", () => {\n loadedFrames[this.id] = undefined;\n if (this.container) {\n this.container.removeChild(this.frame);\n }\n });\n\n postMessage.receive((data: any) => {\n if (!data.id || (data.id && data.id !== this.id)) {\n return;\n }\n\n const event: string = data.type.replace(\"ui:iframe-field:\", \"\");\n\n switch (event) {\n case \"register\":\n postMessage.post(\n {\n data: options,\n id: this.id,\n type: \"ui:iframe-field:update-options\",\n },\n this.id,\n );\n break;\n case \"resize\":\n this.frame.style.height = `${data.data.height}px`;\n break;\n case \"pass-data\":\n postMessage.post(\n {\n data: {\n type: data.data.type,\n value: data.data.value,\n },\n id: data.data.target,\n type: \"ui:iframe-field:accumulate-data\",\n },\n data.data.target,\n );\n break;\n default:\n break;\n }\n\n this.emit(event, data.data);\n });\n\n loadedFrames[this.id] = this;\n }\n\n public addStylesheet(json: IDictionary) {\n const css = json2css(json);\n postMessage.post(\n {\n data: { css },\n id: this.id,\n type: \"ui:iframe-field:add-stylesheet\",\n },\n this.id,\n );\n }\n\n public setFocus() {\n postMessage.post(\n {\n id: this.id,\n type: \"ui:iframe-field:set-focus\",\n },\n this.id,\n );\n }\n\n public setPlaceholder(placeholder: string) {\n postMessage.post(\n {\n data: { placeholder },\n id: this.id,\n type: \"ui:iframe-field:set-placeholder\",\n },\n this.id,\n );\n }\n\n public setText(text: string) {\n postMessage.post(\n {\n data: { text },\n id: this.id,\n type: \"ui:iframe-field:set-text\",\n },\n this.id,\n );\n }\n\n public setValue(value: string) {\n postMessage.post(\n {\n data: { value },\n id: this.id,\n type: \"ui:iframe-field:set-value\",\n },\n this.id,\n );\n }\n\n public setLabel(label: string) {\n postMessage.post(\n {\n data: { label },\n id: this.id,\n type: \"ui:iframe-field:set-label\",\n },\n this.id,\n );\n }\n\n public setTitle(title: string) {\n this.frame.title = title;\n }\n\n private makeFrame(type: string, id: string, opts: IUIFormField) {\n const frame = document.createElement(\"iframe\");\n frame.id = `secure-payment-field-${type}-${id}`;\n frame.name = type;\n if (opts.title || opts.label) {\n frame.title = opts.title || opts.label || \"\";\n }\n frame.style.border = \"0\";\n frame.frameBorder = \"0\";\n frame.scrolling = \"no\";\n frame.setAttribute(\"allowtransparency\", \"true\");\n frame.allowPaymentRequest = true;\n return frame;\n }\n}\n","import assetBaseUrl from \"../../internal/lib/asset-base-url\";\nimport { postMessage } from \"../../internal/lib/post-message\";\nimport {\n fieldStyles as defaultFieldStyles,\n parentStyles as defaultParentStyles,\n} from \"../../internal/lib/styles/default\";\nimport {\n fieldStyles as simpleFieldStyles,\n parentStyles as simpleParentStyles,\n} from \"../../internal/lib/styles/simple\";\nimport { IDictionary } from \"../../internal/lib/util\";\nimport { IEventListener } from \"../../lib/event-emitter\";\nimport { IFrameCollection, IframeField, IUIFormField } from \"../iframe-field\";\n\nexport { IUIFormField } from \"../iframe-field\";\n\nexport const fieldStyles = {\n blank: {},\n default: defaultFieldStyles,\n simple: simpleFieldStyles,\n};\n\nexport const parentStyles = {\n blank: {},\n default: defaultParentStyles,\n simple: simpleParentStyles,\n};\n\nexport interface IUIFormOptions {\n labels?: IDictionary;\n placeholders?: IDictionary;\n prefix?: string;\n style?: \"default\" | \"simple\" | \"blank\";\n titles?: IDictionary;\n values?: IDictionary;\n}\n\nexport const frameFieldTypes = [\n \"card-number\",\n \"card-expiration\",\n \"card-cvv\",\n \"card-holder-name\",\n \"card-track\",\n \"account-number\",\n \"routing-number\",\n \"submit\",\n];\n\nexport interface IUIFormFields {\n [key: string]: IUIFormField;\n}\n\nexport default class UIForm {\n public frames: IFrameCollection;\n public fields: IUIFormFields;\n public styles: object;\n private totalNumberOfFields = 0;\n\n public constructor(fields: IUIFormFields, styles: object) {\n this.frames = {};\n this.fields = fields;\n this.styles = styles;\n\n this.createFrames();\n }\n\n public on(\n type: string,\n event: string | IEventListener,\n listener?: IEventListener,\n ) {\n if (typeof event === \"string\" && listener) {\n checkFieldType(this.frames, type);\n const field = this.frames[type];\n if (!field) {\n return;\n }\n\n field.on(event, listener);\n return this;\n }\n\n for (const i in frameFieldTypes) {\n if (!frameFieldTypes.hasOwnProperty(i)) {\n continue;\n }\n\n const fieldType = frameFieldTypes[i];\n if (!this.frames.hasOwnProperty(fieldType)) {\n continue;\n }\n\n checkFieldType(this.frames, fieldType);\n const field = this.frames[fieldType];\n if (!field) {\n return;\n }\n field.on(type, event as IEventListener);\n }\n return this;\n }\n\n public addStylesheet(json: IDictionary) {\n for (const i in frameFieldTypes) {\n if (!frameFieldTypes.hasOwnProperty(i)) {\n continue;\n }\n\n const type = frameFieldTypes[i];\n if (!this.frames.hasOwnProperty(type)) {\n continue;\n }\n\n checkFieldType(this.frames, type);\n const field = this.frames[type];\n if (!field) {\n return;\n }\n field.addStylesheet(json);\n }\n return this;\n }\n\n public ready(fn: (fields: IFrameCollection) => void) {\n let registered = 0;\n let ready = false;\n\n for (const i in frameFieldTypes) {\n if (!frameFieldTypes.hasOwnProperty(i)) {\n continue;\n }\n\n const type = frameFieldTypes[i];\n if (!this.frames.hasOwnProperty(type)) {\n continue;\n }\n\n checkFieldType(this.frames, type);\n const field = this.frames[type];\n if (!field) {\n return;\n }\n field.on(\"register\", () => {\n ready = ++registered === this.totalNumberOfFields;\n\n if (ready) {\n fn(this.frames);\n }\n });\n }\n }\n\n public dispose() {\n for (const i in frameFieldTypes) {\n if (!frameFieldTypes.hasOwnProperty(i)) {\n continue;\n }\n\n const type = frameFieldTypes[i];\n if (!this.frames.hasOwnProperty(type)) {\n continue;\n }\n\n const field = this.frames[type];\n if (!field) {\n return;\n }\n\n field.emit(\"dispose\");\n }\n }\n\n private createFrames() {\n for (const type of frameFieldTypes) {\n if (!this.fields[type]) {\n continue;\n }\n\n const field = (this.frames[type] = new IframeField(\n type,\n this.fields[type],\n assetBaseUrl() + \"field.html\",\n ));\n this.totalNumberOfFields++;\n\n if (field === undefined) {\n continue;\n }\n\n field.on(\"register\", () => {\n if (this.fields[type].placeholder) {\n field.setPlaceholder(this.fields[type].placeholder || \"\");\n }\n if (this.fields[type].text) {\n field.setText(this.fields[type].text || \"\");\n }\n if (this.fields[type].value) {\n field.setValue(this.fields[type].value || \"\");\n }\n if (this.fields[type].label) {\n field.setLabel(this.fields[type].label || \"\");\n }\n if (this.fields[type].title) {\n field.setTitle(this.fields[type].title || \"\");\n }\n if (this.styles) {\n field.addStylesheet(this.styles);\n }\n });\n }\n\n if (this.frames.submit !== undefined) {\n this.frames.submit.on(\"click\", () => {\n const target =\n this.frames[`card-number`] || this.frames[`account-number`];\n\n if (target) {\n this.requestDataFromAll(target);\n }\n });\n }\n\n const cardNumber = this.frames[\"card-number\"];\n const cardCvv = this.frames[\"card-cvv\"];\n\n if (cardNumber) {\n cardNumber.on(\"set-autocomplete-value\", (data?: any) => {\n if (!data) {\n return;\n }\n\n const target = this.frames[data.type];\n\n if (data.type && data.value && target) {\n target.setValue(data.value);\n }\n });\n }\n\n if (cardNumber && cardCvv) {\n cardNumber.on(\"card-type\", (data?: any) => {\n postMessage.post(\n {\n data,\n id: cardCvv.id,\n type: \"ui:iframe-field:set-card-type\",\n },\n cardCvv.id,\n );\n });\n }\n }\n\n private requestDataFromAll(target: IframeField) {\n const fields: string[] = [];\n\n for (const type of frameFieldTypes) {\n if (!this.frames[type]) {\n continue;\n }\n\n fields.push(type);\n }\n\n for (const type of fields) {\n if (type === \"submit\") {\n continue;\n }\n\n const field = this.frames[type];\n\n if (!field) {\n continue;\n }\n\n postMessage.post(\n {\n data: {\n fields,\n target: target.id,\n },\n id: field.id,\n type: \"ui:iframe-field:request-data\",\n },\n field.id,\n );\n }\n }\n}\n\nfunction checkFieldType(collection: IFrameCollection, type: string) {\n if (frameFieldTypes.indexOf(type) === -1) {\n throw new Error(\"Supplied field type is invalid\");\n }\n\n if (!collection[type]) {\n throw new Error(\n \"No field with the type `\" + type + \"` is currently available\",\n );\n }\n}\n","import { addSandboxAlert } from \"../internal/lib/add-sandbox-alert\";\nimport getGateway from \"../internal/lib/get-gateway\";\nimport objectAssign from \"../internal/lib/object-assign\";\nimport { options } from \"../internal/lib/options\";\nimport { addStylesheet, json2css } from \"../internal/lib/styles\";\nimport UIForm, { fieldStyles, IUIFormOptions, parentStyles } from \"../ui/form\";\n\nexport const defaultOptions: IUIFormOptions = {\n labels: {\n \"card-cvv\": \"Card CVV\",\n \"card-expiration\": \"Card Expiration\",\n \"card-holder-name\": \"Card Holder Name\",\n \"card-number\": \"Card Number\",\n },\n placeholders: {\n \"card-cvv\": \"•••\",\n \"card-expiration\": \"MM / YYYY\",\n \"card-holder-name\": \"Jane Smith\",\n \"card-number\": \"•••• •••• •••• ••••\",\n },\n prefix: \"credit-card-\",\n style: \"default\",\n titles: {\n \"card-cvv\": \"Card CVV Input\",\n \"card-expiration\": \"Card Expiration Input\",\n \"card-holder-name\": \"Card Holder Name Input\",\n \"card-number\": \"Card Number Input\",\n \"submit\": \"Form Submit Button Input\",\n },\n values: {\n \"card-track\": \"Read Card\",\n // tslint:disable-next-line:object-literal-key-quotes\n submit: \"Submit\",\n },\n};\n\nexport function form(\n target: string | HTMLElement,\n formOptions: IUIFormOptions = {},\n) {\n if (typeof target === \"string\") {\n const el = document.querySelector(target) as HTMLElement;\n\n if (!el) {\n throw new Error(\"Credit card form target does not exist\");\n }\n\n target = el;\n }\n\n target.className = target.className + \" secure-payment-form\";\n\n const gateway = getGateway();\n\n if (gateway && gateway.getEnv(options) !== \"production\") {\n addSandboxAlert(target);\n }\n\n formOptions = objectAssign(objectAssign({}, defaultOptions), formOptions);\n\n // create field targets\n const fieldTypes = [\n \"card-holder-name\",\n \"card-number\",\n \"card-expiration\",\n \"card-cvv\",\n \"submit\",\n ];\n const fields: any = {};\n for (const i in fieldTypes) {\n if (!fieldTypes.hasOwnProperty(i)) {\n continue;\n }\n\n const type = fieldTypes[i];\n\n if (formOptions.labels && formOptions.labels[type]) {\n const label = document.createElement(\"label\");\n label.setAttribute(\"for\", formOptions.prefix + type);\n label.appendChild(document.createTextNode(formOptions.labels[type]));\n target.appendChild(label);\n }\n\n const el = document.createElement(\"div\");\n el.id = formOptions.prefix + type;\n target.appendChild(el);\n\n fields[type] = {} as any;\n fields[type].target = \"#\" + formOptions.prefix + type;\n\n if (formOptions.placeholders && formOptions.placeholders[type]) {\n fields[type].placeholder = formOptions.placeholders[type];\n }\n if (formOptions.values && formOptions.values[type]) {\n fields[type].value = formOptions.values[type];\n }\n if (formOptions.labels && formOptions.labels[type]) {\n fields[type].label = formOptions.labels[type];\n }\n if (formOptions.titles && formOptions.titles[type]) {\n fields[type].title = formOptions.titles[type];\n }\n }\n\n // add any styles for the parent window\n if (formOptions.style) {\n addStylesheet(\n json2css(parentStyles[formOptions.style]),\n `secure-payment-styles-${formOptions.style}`,\n );\n }\n\n return new UIForm(\n fields,\n formOptions.style ? fieldStyles[formOptions.style] : {},\n );\n}\n\nexport function trackReaderForm(\n target: string | HTMLElement,\n formOptions: IUIFormOptions = {},\n) {\n if (typeof target === \"string\") {\n const el = document.querySelector(target) as HTMLElement;\n\n if (!el) {\n throw new Error(\"Credit card track reader form target does not exist\");\n }\n\n target = el;\n }\n\n target.className = target.className + \" secure-payment-form\";\n\n const gateway = getGateway();\n\n if (gateway && gateway.getEnv(options) !== \"production\") {\n addSandboxAlert(target);\n }\n\n formOptions = objectAssign(objectAssign({}, defaultOptions), formOptions);\n formOptions.prefix = \"track-reader-\";\n\n // create field targets\n const fieldTypes = [\"card-track\"];\n const fields: any = {};\n for (const i in fieldTypes) {\n if (!fieldTypes.hasOwnProperty(i)) {\n continue;\n }\n\n const type = fieldTypes[i];\n\n if (formOptions.labels && formOptions.labels[type]) {\n const label = document.createElement(\"label\");\n label.setAttribute(\"for\", formOptions.prefix + type);\n label.appendChild(document.createTextNode(formOptions.labels[type]));\n target.appendChild(label);\n }\n\n const el = document.createElement(\"div\");\n el.id = formOptions.prefix + type;\n target.appendChild(el);\n\n fields[type] = {} as any;\n fields[type].target = \"#\" + formOptions.prefix + type;\n\n if (formOptions.placeholders && formOptions.placeholders[type]) {\n fields[type].placeholder = formOptions.placeholders[type];\n }\n if (formOptions.values && formOptions.values[type]) {\n fields[type].value = formOptions.values[type];\n }\n }\n\n // add any styles for the parent window\n if (formOptions.style) {\n addStylesheet(\n json2css(parentStyles[formOptions.style]),\n `secure-payment-styles-${formOptions.style}`,\n );\n }\n\n return new UIForm(\n fields,\n formOptions.style ? fieldStyles[formOptions.style] : {},\n );\n}\n","import { addSandboxAlert } from \"../internal/lib/add-sandbox-alert\";\nimport getGateway from \"../internal/lib/get-gateway\";\nimport objectAssign from \"../internal/lib/object-assign\";\nimport { options } from \"../internal/lib/options\";\nimport { addStylesheet, json2css } from \"../internal/lib/styles\";\nimport UIForm, {\n fieldStyles,\n IUIFormField,\n IUIFormOptions,\n parentStyles,\n} from \"../ui/form\";\n\nexport const defaultOptions: IUIFormOptions = {\n labels: {\n \"account-number\": \"Account Number:\",\n \"account-type\": \"Account Type:\",\n \"check-type\": \"Check Type:\",\n \"routing-number\": \"Routing Number:\",\n },\n placeholders: {\n \"account-number\": \"•••••••••\",\n \"routing-number\": \"•••••••••\",\n },\n prefix: \"echeck-\",\n style: \"default\",\n values: {\n submit: \"Submit\",\n },\n};\n\nexport function form(\n target: string | HTMLElement,\n formOptions: IUIFormOptions = {},\n) {\n if (typeof target === \"string\") {\n const el = document.querySelector(target) as HTMLElement;\n\n if (!el) {\n throw new Error(\"ACH/eCheck form target does not exist\");\n }\n\n target = el;\n }\n\n target.className = target.className + \" secure-payment-form\";\n\n const gateway = getGateway();\n\n if (gateway && gateway.getEnv(options) !== \"production\") {\n addSandboxAlert(target);\n }\n\n formOptions = objectAssign(objectAssign({}, defaultOptions), formOptions);\n\n // create field targets\n const fieldTypes = [\n \"account-number\",\n \"routing-number\",\n \"account-type\",\n \"check-type\",\n \"submit\",\n ];\n const fields: any = {};\n for (const i in fieldTypes) {\n if (!fieldTypes.hasOwnProperty(i)) {\n continue;\n }\n\n const type = fieldTypes[i];\n\n if (formOptions.labels && formOptions.labels[type]) {\n const label = document.createElement(\"label\");\n label.setAttribute(\"for\", formOptions.prefix + type);\n label.appendChild(document.createTextNode(formOptions.labels[type]));\n target.appendChild(label);\n }\n\n const el = document.createElement(\"div\");\n el.id = formOptions.prefix + type;\n target.appendChild(el);\n\n if (type === \"account-type\") {\n const select = document.createElement(\"select\");\n select.name = \"account-type\";\n const defaultOption = document.createElement(\"option\");\n defaultOption.appendChild(document.createTextNode(\"-- Account Type --\"));\n defaultOption.disabled = true;\n defaultOption.selected = true;\n select.appendChild(defaultOption);\n const personalOption = document.createElement(\"option\");\n personalOption.appendChild(document.createTextNode(\"Personal\"));\n select.appendChild(personalOption);\n const businessOption = document.createElement(\"option\");\n businessOption.appendChild(document.createTextNode(\"Business\"));\n select.appendChild(businessOption);\n el.appendChild(select);\n continue;\n }\n\n if (type === \"check-type\") {\n const select = document.createElement(\"select\");\n select.name = \"check-type\";\n const defaultOption = document.createElement(\"option\");\n defaultOption.appendChild(document.createTextNode(\"-- Check Type --\"));\n defaultOption.disabled = true;\n defaultOption.selected = true;\n select.appendChild(defaultOption);\n const checkingOption = document.createElement(\"option\");\n checkingOption.appendChild(document.createTextNode(\"Checking\"));\n select.appendChild(checkingOption);\n const savingsOption = document.createElement(\"option\");\n savingsOption.appendChild(document.createTextNode(\"Savings\"));\n select.appendChild(savingsOption);\n el.appendChild(select);\n continue;\n }\n\n fields[type] = {} as IUIFormField;\n fields[type].target = \"#\" + formOptions.prefix + type;\n\n if (formOptions.placeholders && formOptions.placeholders[type]) {\n fields[type].placeholder = formOptions.placeholders[type];\n }\n if (formOptions.values && formOptions.values[type]) {\n fields[type].value = formOptions.values[type];\n }\n }\n\n // add any styles for the parent window\n if (formOptions.style) {\n addStylesheet(json2css(parentStyles[formOptions.style]));\n }\n\n return new UIForm(\n fields,\n formOptions.style ? fieldStyles[formOptions.style] : {},\n );\n}\n","import { addSandboxAlert } from \"../internal/lib/add-sandbox-alert\";\nimport getGateway from \"../internal/lib/get-gateway\";\nimport objectAssign from \"../internal/lib/object-assign\";\nimport { options } from \"../internal/lib/options\";\nimport { addStylesheet, json2css } from \"../internal/lib/styles\";\nimport UIForm, {\n fieldStyles,\n IUIFormField,\n IUIFormOptions,\n parentStyles,\n} from \"../ui/form\";\n\nexport const defaultOptions: IUIFormOptions = {\n labels: {\n \"card-number\": \"Card Number:\",\n // tslint:disable-next-line:object-literal-key-quotes\n pin: \"PIN:\",\n },\n placeholders: {\n \"card-number\": \"•••• •••• •••• ••••\",\n // tslint:disable-next-line:object-literal-key-quotes\n pin: \"••••\",\n },\n prefix: \"gift-and-loyalty-\",\n style: \"default\",\n values: {\n submit: \"Submit\",\n },\n};\n\nexport function form(\n target: string | HTMLElement,\n formOptions: IUIFormOptions = {},\n) {\n if (typeof target === \"string\") {\n const el = document.querySelector(target) as HTMLElement;\n\n if (!el) {\n throw new Error(\"Gift and loyalty form target does not exist\");\n }\n\n target = el;\n }\n\n target.className = target.className + \" secure-payment-form\";\n\n const gateway = getGateway();\n\n if (gateway && gateway.getEnv(options) !== \"production\") {\n addSandboxAlert(target);\n }\n\n formOptions = objectAssign(objectAssign({}, defaultOptions), formOptions);\n\n // create field targets\n const fieldTypes = [\"card-number\", \"pin\", \"submit\"];\n const fields: any = {};\n for (const i in fieldTypes) {\n if (!fieldTypes.hasOwnProperty(i)) {\n continue;\n }\n\n const type = fieldTypes[i];\n\n if (formOptions.labels && formOptions.labels[type]) {\n const label = document.createElement(\"label\");\n label.setAttribute(\"for\", formOptions.prefix + type);\n label.appendChild(document.createTextNode(formOptions.labels[type]));\n target.appendChild(label);\n }\n\n const el = document.createElement(\"div\");\n el.id = formOptions.prefix + type;\n target.appendChild(el);\n\n if (type === \"pin\") {\n const input = document.createElement(\"input\");\n input.name = \"pin\";\n input.type = \"tel\";\n el.appendChild(input);\n continue;\n }\n\n fields[type] = {} as IUIFormField;\n fields[type].target = \"#\" + formOptions.prefix + type;\n\n if (formOptions.placeholders && formOptions.placeholders[type]) {\n fields[type].placeholder = formOptions.placeholders[type];\n }\n if (formOptions.values && formOptions.values[type]) {\n fields[type].value = formOptions.values[type];\n }\n }\n\n // add any styles for the parent window\n if (formOptions.style) {\n addStylesheet(json2css(parentStyles[formOptions.style]));\n }\n\n return new UIForm(\n fields,\n formOptions.style ? fieldStyles[formOptions.style] : {},\n );\n}\n","import { loadedFrames, postMessage } from \"../internal\";\n\nexport default (status: PaymentComplete) => {\n const frames = loadedFrames;\n for (const frameId in frames) {\n if (!frames.hasOwnProperty(frameId)) {\n continue;\n }\n\n postMessage.post(\n {\n data: { status },\n id: frameId,\n type: \"ui:iframe-field:payment-request-complete\",\n },\n frameId,\n );\n }\n};\n","export function defaultInstruments() {\n return [{ supportedMethods: [\"basic-card\"] }];\n}\n\nexport function defaultDetails() {\n return {} as PaymentDetailsInit;\n}\n\nexport function defaultOptions() {\n return {};\n}\n","import { bus } from \"../internal\";\nimport assetBaseUrl from \"../internal/lib/asset-base-url\";\nimport Events from \"../internal/lib/events\";\nimport { postMessage } from \"../internal/lib/post-message\";\nimport EventEmitter, { IEventListener } from \"../lib/event-emitter\";\nimport { IframeField } from \"../ui/iframe-field\";\nimport {\n defaultDetails as defaultPaymentRequestDetails,\n defaultInstruments as defaultPaymentRequestInstruments,\n defaultOptions as defaultPaymentRequestOptions,\n} from \"./defaults\";\n\nconst iframeHolderId = \"global-pay-payment-request\";\n\nexport class PaymentRequestEmitter extends EventEmitter {\n private iframe: IframeField;\n\n constructor(iframe: IframeField) {\n super();\n this.iframe = iframe;\n }\n\n public on(event: string, listener: IEventListener) {\n this.iframe.on(event, listener);\n }\n}\n\nexport default function(\n selector: string,\n details?: PaymentDetailsInit,\n instruments?: PaymentMethodData[],\n options?: PaymentOptions,\n startOnLoad = false,\n) {\n const target = document.querySelector(selector);\n\n if (!target) {\n return bus.emit(\"error\", {\n error: true,\n reasons: [\n { code: \"INVALID_CONFIGURATION\", message: \"Invalid target element\" },\n ],\n });\n }\n\n if (typeof PaymentRequest === \"undefined\") {\n return bus.emit(\"error\", {\n error: true,\n reasons: [{ code: \"ERROR\", message: \"PaymentRequest API not available\" }],\n });\n }\n\n const holder = document.createElement(\"div\");\n holder.id = iframeHolderId;\n holder.style.display = \"none\";\n const parent = target.parentElement;\n\n if (!parent) {\n return bus.emit(\"error\", {\n error: true,\n reasons: [\n {\n code: \"INVALID_CONFIGURATION\",\n message: \"Target element has no parent\",\n },\n ],\n });\n }\n\n parent.appendChild(holder);\n\n // remove the inline display style to reveal\n (target as HTMLElement).style.display = null;\n\n const iframe = new IframeField(\n \"payment-request\",\n {target: \"#\" + holder.id},\n assetBaseUrl() + \"field.html\",\n );\n\n instruments = instruments || defaultPaymentRequestInstruments();\n details = details || defaultPaymentRequestDetails();\n options = options || defaultPaymentRequestOptions();\n\n const result = new PaymentRequestEmitter(iframe);\n\n const start = () =>\n postMessage.post(\n {\n data: {\n details,\n instruments,\n options,\n },\n id: iframe.id,\n type: \"ui:iframe-field:payment-request-start\",\n },\n iframe.id,\n );\n\n if (startOnLoad) {\n result.on(\"register\", () => {\n start();\n });\n } else {\n Events.addHandler(target, \"click\", (e: Event) => {\n e.preventDefault();\n start();\n return false;\n });\n }\n\n iframe.on(\"token-success\", (data?: object) => {\n if (startOnLoad) {\n reset(holder);\n }\n result.emit(\"token-success\", data);\n });\n iframe.on(\"token-error\", (data?: object) => {\n if (startOnLoad) {\n reset(holder);\n }\n result.emit(\"token-error\", data);\n });\n iframe.on(\"payment-request-closed\", () => {\n if (startOnLoad) {\n reset(holder);\n }\n result.emit(\"error\", {\n error: true,\n reasons: [{ code: \"PAYMENT_UI_CLOSED\", message: \"Payment UI closed\" }],\n });\n });\n iframe.on(\"error\", (e?: object) => {\n if (startOnLoad) {\n reset(holder);\n }\n result.emit(\"error\", {\n error: true,\n reasons: [e],\n });\n });\n\n return result;\n}\n\nconst reset = (el: HTMLDivElement) => {\n if (el.remove) {\n el.remove();\n } else if (el.parentNode && el.parentNode.removeChild) {\n el.parentNode.removeChild(el);\n }\n};\n","import getGateway from \"../internal/lib/get-gateway\";\nimport { options as opts } from \"../internal/lib/options\";\nimport { IDictionary } from \"../internal/lib/util\";\n\nexport interface IConfiguration {\n [key: string]: any;\n enableAutocomplete?: boolean;\n language?: string;\n // heartland\n publicApiKey?: string;\n // globalpayments\n merchantId?: string;\n account?: string;\n hash?: (data: IDictionary) => Promise;\n customerExists?: boolean;\n customerReference?: string;\n validateOnly?: boolean;\n env?: string;\n // genius\n webApiKey?: string;\n // tsep\n deviceId?: string;\n manifest?: string;\n tsepHost?: string; // internal. inferred from env\n}\n\nexport default (options: IConfiguration) => {\n for (const prop in options) {\n if (options.hasOwnProperty(prop)) {\n opts[prop] = options[prop];\n }\n }\n\n const gateway = getGateway();\n\n if (gateway && gateway.actions.setup) {\n gateway.actions.setup();\n }\n};\n","import UIForm from \"./form\";\n\nexport * from \"./iframe-field\";\n\nexport function form(options: any) {\n return new UIForm(options.fields, options.styles || {});\n}\n","import \"unfetch/polyfill\";\n\nimport \"./lib/array-foreach-polyfill\";\nimport \"./lib/base64-polyfill\";\nimport \"./lib/json-polyfill\";\nimport \"./lib/object-freeze-polyfill\";\nimport \"./lib/object-getownpropertynames-polyfill\";\nimport \"./lib/promise-polyfill\";\nimport \"./lib/string-repeat-polyfill\";\n\nimport * as creditCard from \"./credit-card\";\nimport * as eCheck from \"./echeck\";\nimport * as giftAndLoyalty from \"./gift-and-loyalty\";\nimport * as internal from \"./internal\";\nimport Events from \"./internal/lib/events\";\nimport { IEventListener } from \"./lib/event-emitter\";\nimport * as paymentRequest from \"./payment-request\";\nimport * as configure from \"./tools/configure\";\nimport * as ui from \"./ui\";\n\nexport default {\n configure: configure.default,\n creditCard,\n eCheck,\n events: Events,\n giftAndLoyalty,\n internal,\n // Don't use Function.prototype bind because it's not available on\n // IE8 and polyfills use eval :(\n on: (ev: string, listener: IEventListener) => internal.bus.on(ev, listener),\n paymentRequest,\n ui,\n};\n"],"names":["require$$0","fromByteArray","toByteArray","JSON","Promise","pm","supports","domains","urls","getEnv","actions","actionNormalizeResponse","actionTokenize","actionValidateData","requiredSettings","imageBase","fieldStyles","parentStyles","CardNumberFormatter","ExpirationFormatter","CardNumberValidator","CvvValidator","ExpirationValidator","tslib_1.__extends","actionAddStylesheet","defaultFieldStyles","simpleFieldStyles","defaultParentStyles","simpleParentStyles","defaultOptions","form","options","defaultPaymentRequestInstruments","defaultPaymentRequestDetails","defaultPaymentRequestOptions","opts","configure[\"default\"]","internal.bus"],"mappings":"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"}