UNPKG

braintree-web

Version:

A suite of tools for integrating Braintree in the browser

1,515 lines (1,451 loc) 180 kB
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}(g.braintree || (g.braintree = {})).hostedFields = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(_dereq_,module,exports){ "use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.PromiseGlobal = void 0; var promise_polyfill_1 = __importDefault(_dereq_("promise-polyfill")); var PromiseGlobal = // eslint-disable-next-line no-undef typeof Promise !== "undefined" ? Promise : promise_polyfill_1.default; exports.PromiseGlobal = PromiseGlobal; },{"promise-polyfill":63}],2:[function(_dereq_,module,exports){ "use strict"; var promise_1 = _dereq_("./lib/promise"); var scriptPromiseCache = {}; function loadScript(options) { var scriptLoadPromise; var stringifiedOptions = JSON.stringify(options); if (!options.forceScriptReload) { scriptLoadPromise = scriptPromiseCache[stringifiedOptions]; if (scriptLoadPromise) { return scriptLoadPromise; } } var script = document.createElement("script"); var attrs = options.dataAttributes || {}; var container = options.container || document.head; script.src = options.src; script.id = options.id || ""; script.async = true; if (options.crossorigin) { script.setAttribute("crossorigin", "" + options.crossorigin); } Object.keys(attrs).forEach(function (key) { script.setAttribute("data-" + key, "" + attrs[key]); }); scriptLoadPromise = new promise_1.PromiseGlobal(function (resolve, reject) { script.addEventListener("load", function () { resolve(script); }); script.addEventListener("error", function () { reject(new Error(options.src + " failed to load.")); }); script.addEventListener("abort", function () { reject(new Error(options.src + " has aborted.")); }); container.appendChild(script); }); scriptPromiseCache[stringifiedOptions] = scriptLoadPromise; return scriptLoadPromise; } loadScript.clearCache = function () { scriptPromiseCache = {}; }; module.exports = loadScript; },{"./lib/promise":1}],3:[function(_dereq_,module,exports){ module.exports = _dereq_("./dist/load-script"); },{"./dist/load-script":2}],4:[function(_dereq_,module,exports){ "use strict"; module.exports = function isAndroid(ua) { ua = ua || window.navigator.userAgent; return /Android/i.test(ua); }; },{}],5:[function(_dereq_,module,exports){ "use strict"; module.exports = function isChromeOS(ua) { ua = ua || window.navigator.userAgent; return /CrOS/i.test(ua); }; },{}],6:[function(_dereq_,module,exports){ "use strict"; var isEdge = _dereq_("./is-edge"); var isSamsung = _dereq_("./is-samsung"); var isDuckDuckGo = _dereq_("./is-duckduckgo"); var isOpera = _dereq_("./is-opera"); var isSilk = _dereq_("./is-silk"); module.exports = function isChrome(ua) { ua = ua || window.navigator.userAgent; return ((ua.indexOf("Chrome") !== -1 || ua.indexOf("CriOS") !== -1) && !isEdge(ua) && !isSamsung(ua) && !isDuckDuckGo(ua) && !isOpera(ua) && !isSilk(ua)); }; },{"./is-duckduckgo":7,"./is-edge":8,"./is-opera":17,"./is-samsung":18,"./is-silk":19}],7:[function(_dereq_,module,exports){ "use strict"; module.exports = function isDuckDuckGo(ua) { ua = ua || window.navigator.userAgent; return ua.indexOf("DuckDuckGo/") !== -1; }; },{}],8:[function(_dereq_,module,exports){ "use strict"; module.exports = function isEdge(ua) { ua = ua || window.navigator.userAgent; return ua.indexOf("Edge/") !== -1; }; },{}],9:[function(_dereq_,module,exports){ "use strict"; module.exports = function isFirefox(ua) { ua = ua || window.navigator.userAgent; return /Firefox/i.test(ua); }; },{}],10:[function(_dereq_,module,exports){ "use strict"; var isIE11 = _dereq_("./is-ie11"); module.exports = function isIE(ua) { ua = ua || window.navigator.userAgent; return ua.indexOf("MSIE") !== -1 || isIE11(ua); }; },{"./is-ie11":12}],11:[function(_dereq_,module,exports){ "use strict"; module.exports = function isIe10(ua) { ua = ua || window.navigator.userAgent; return ua.indexOf("MSIE 10") !== -1; }; },{}],12:[function(_dereq_,module,exports){ "use strict"; module.exports = function isIe11(ua) { ua = ua || window.navigator.userAgent; return ua.indexOf("Trident/7") !== -1; }; },{}],13:[function(_dereq_,module,exports){ "use strict"; module.exports = function isIe9(ua) { ua = ua || window.navigator.userAgent; return ua.indexOf("MSIE 9") !== -1; }; },{}],14:[function(_dereq_,module,exports){ "use strict"; var isIos = _dereq_("./is-ios"); function isGoogleSearchApp(ua) { return /\bGSA\b/.test(ua); } module.exports = function isIosGoogleSearchApp(ua) { ua = ua || window.navigator.userAgent; return isIos(ua) && isGoogleSearchApp(ua); }; },{"./is-ios":16}],15:[function(_dereq_,module,exports){ "use strict"; var isIos = _dereq_("./is-ios"); var isIosGoogleSearchApp = _dereq_("./is-ios-google-search-app"); module.exports = function isIosWebview(ua) { ua = ua || window.navigator.userAgent; if (isIos(ua)) { // The Google Search iOS app is technically a webview and doesn't support popups. if (isIosGoogleSearchApp(ua)) { return true; } // Historically, a webview could be identified by the presence of AppleWebKit and _no_ presence of Safari after. return /.+AppleWebKit(?!.*Safari)/i.test(ua); } return false; }; },{"./is-ios":16,"./is-ios-google-search-app":14}],16:[function(_dereq_,module,exports){ "use strict"; module.exports = function isIos(ua) { ua = ua || window.navigator.userAgent; return /iPhone|iPod|iPad/i.test(ua); }; },{}],17:[function(_dereq_,module,exports){ "use strict"; module.exports = function isOpera(ua) { ua = ua || window.navigator.userAgent; return (ua.indexOf("OPR/") !== -1 || ua.indexOf("Opera/") !== -1 || ua.indexOf("OPT/") !== -1); }; },{}],18:[function(_dereq_,module,exports){ "use strict"; module.exports = function isSamsungBrowser(ua) { ua = ua || window.navigator.userAgent; return /SamsungBrowser/i.test(ua); }; },{}],19:[function(_dereq_,module,exports){ "use strict"; module.exports = function isSilk(ua) { ua = ua || window.navigator.userAgent; return ua.indexOf("Silk/") !== -1; }; },{}],20:[function(_dereq_,module,exports){ module.exports = _dereq_("./dist/is-android"); },{"./dist/is-android":4}],21:[function(_dereq_,module,exports){ module.exports = _dereq_("./dist/is-chrome-os"); },{"./dist/is-chrome-os":5}],22:[function(_dereq_,module,exports){ module.exports = _dereq_("./dist/is-chrome"); },{"./dist/is-chrome":6}],23:[function(_dereq_,module,exports){ module.exports = _dereq_("./dist/is-edge"); },{"./dist/is-edge":8}],24:[function(_dereq_,module,exports){ module.exports = _dereq_("./dist/is-firefox"); },{"./dist/is-firefox":9}],25:[function(_dereq_,module,exports){ module.exports = _dereq_("./dist/is-ie"); },{"./dist/is-ie":10}],26:[function(_dereq_,module,exports){ module.exports = _dereq_("./dist/is-ie10"); },{"./dist/is-ie10":11}],27:[function(_dereq_,module,exports){ module.exports = _dereq_("./dist/is-ie9"); },{"./dist/is-ie9":13}],28:[function(_dereq_,module,exports){ module.exports = _dereq_("./dist/is-ios-webview"); },{"./dist/is-ios-webview":15}],29:[function(_dereq_,module,exports){ module.exports = _dereq_("./dist/is-ios"); },{"./dist/is-ios":16}],30:[function(_dereq_,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.toggle = exports.remove = exports.add = void 0; function _classesOf(element) { return element.className.trim().split(/\s+/); } function add(element) { var toAdd = []; for (var _i = 1; _i < arguments.length; _i++) { toAdd[_i - 1] = arguments[_i]; } element.className = _classesOf(element) .filter(function (classname) { return toAdd.indexOf(classname) === -1; }) .concat(toAdd) .join(" "); } exports.add = add; function remove(element) { var toRemove = []; for (var _i = 1; _i < arguments.length; _i++) { toRemove[_i - 1] = arguments[_i]; } element.className = _classesOf(element) .filter(function (classname) { return toRemove.indexOf(classname) === -1; }) .join(" "); } exports.remove = remove; function toggle(element, classname, adding) { if (adding) { add(element, classname); } else { remove(element, classname); } } exports.toggle = toggle; },{}],31:[function(_dereq_,module,exports){ "use strict"; var EventEmitter = /** @class */ (function () { function EventEmitter() { this._events = {}; } EventEmitter.prototype.on = function (event, callback) { if (this._events[event]) { this._events[event].push(callback); } else { this._events[event] = [callback]; } }; EventEmitter.prototype.off = function (event, callback) { var eventCallbacks = this._events[event]; if (!eventCallbacks) { return; } var indexOfCallback = eventCallbacks.indexOf(callback); eventCallbacks.splice(indexOfCallback, 1); }; EventEmitter.prototype._emit = function (event) { var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; } var eventCallbacks = this._events[event]; if (!eventCallbacks) { return; } eventCallbacks.forEach(function (callback) { callback.apply(void 0, args); }); }; EventEmitter.prototype.hasListener = function (event) { var eventCallbacks = this._events[event]; if (!eventCallbacks) { return false; } return eventCallbacks.length > 0; }; EventEmitter.createChild = function (ChildObject) { ChildObject.prototype = Object.create(EventEmitter.prototype, { constructor: ChildObject, }); }; return EventEmitter; }()); module.exports = EventEmitter; },{}],32:[function(_dereq_,module,exports){ "use strict"; var GlobalPromise = (typeof Promise !== "undefined" ? Promise // eslint-disable-line no-undef : null); var ExtendedPromise = /** @class */ (function () { function ExtendedPromise(options) { var _this = this; if (typeof options === "function") { this._promise = new ExtendedPromise.Promise(options); return; } this._promise = new ExtendedPromise.Promise(function (resolve, reject) { _this._resolveFunction = resolve; _this._rejectFunction = reject; }); options = options || {}; this._onResolve = options.onResolve || ExtendedPromise.defaultOnResolve; this._onReject = options.onReject || ExtendedPromise.defaultOnReject; if (ExtendedPromise.shouldCatchExceptions(options)) { this._promise.catch(function () { // prevents unhandled promise rejection warning // in the console for extended promises that // that catch the error in an asynchronous manner }); } this._resetState(); } ExtendedPromise.defaultOnResolve = function (result) { return ExtendedPromise.Promise.resolve(result); }; ExtendedPromise.defaultOnReject = function (err) { return ExtendedPromise.Promise.reject(err); }; ExtendedPromise.setPromise = function (PromiseClass) { ExtendedPromise.Promise = PromiseClass; }; ExtendedPromise.shouldCatchExceptions = function (options) { if (options.hasOwnProperty("suppressUnhandledPromiseMessage")) { return Boolean(options.suppressUnhandledPromiseMessage); } return Boolean(ExtendedPromise.suppressUnhandledPromiseMessage); }; // start Promise methods documented in: // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise#Methods ExtendedPromise.all = function (args) { return ExtendedPromise.Promise.all(args); }; ExtendedPromise.allSettled = function (args) { return ExtendedPromise.Promise.allSettled(args); }; ExtendedPromise.race = function (args) { return ExtendedPromise.Promise.race(args); }; ExtendedPromise.reject = function (arg) { return ExtendedPromise.Promise.reject(arg); }; ExtendedPromise.resolve = function (arg) { return ExtendedPromise.Promise.resolve(arg); }; ExtendedPromise.prototype.then = function () { var _a; var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } return (_a = this._promise).then.apply(_a, args); }; ExtendedPromise.prototype.catch = function () { var _a; var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } return (_a = this._promise).catch.apply(_a, args); }; ExtendedPromise.prototype.resolve = function (arg) { var _this = this; if (this.isFulfilled) { return this; } this._setResolved(); ExtendedPromise.Promise.resolve() .then(function () { return _this._onResolve(arg); }) .then(function (argForResolveFunction) { _this._resolveFunction(argForResolveFunction); }) .catch(function (err) { _this._resetState(); _this.reject(err); }); return this; }; ExtendedPromise.prototype.reject = function (arg) { var _this = this; if (this.isFulfilled) { return this; } this._setRejected(); ExtendedPromise.Promise.resolve() .then(function () { return _this._onReject(arg); }) .then(function (result) { _this._setResolved(); _this._resolveFunction(result); }) .catch(function (err) { return _this._rejectFunction(err); }); return this; }; ExtendedPromise.prototype._resetState = function () { this.isFulfilled = false; this.isResolved = false; this.isRejected = false; }; ExtendedPromise.prototype._setResolved = function () { this.isFulfilled = true; this.isResolved = true; this.isRejected = false; }; ExtendedPromise.prototype._setRejected = function () { this.isFulfilled = true; this.isResolved = false; this.isRejected = true; }; ExtendedPromise.Promise = GlobalPromise; return ExtendedPromise; }()); module.exports = ExtendedPromise; },{}],33:[function(_dereq_,module,exports){ "use strict"; var set_attributes_1 = _dereq_("./lib/set-attributes"); var default_attributes_1 = _dereq_("./lib/default-attributes"); var assign_1 = _dereq_("./lib/assign"); module.exports = function createFrame(options) { if (options === void 0) { options = {}; } var iframe = document.createElement("iframe"); var config = assign_1.assign({}, default_attributes_1.defaultAttributes, options); if (config.style && typeof config.style !== "string") { assign_1.assign(iframe.style, config.style); delete config.style; } set_attributes_1.setAttributes(iframe, config); if (!iframe.getAttribute("id")) { iframe.id = iframe.name; } return iframe; }; },{"./lib/assign":34,"./lib/default-attributes":35,"./lib/set-attributes":36}],34:[function(_dereq_,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.assign = void 0; function assign( // eslint-disable-next-line @typescript-eslint/no-explicit-any target) { var objs = []; for (var _i = 1; _i < arguments.length; _i++) { objs[_i - 1] = arguments[_i]; } objs.forEach(function (obj) { if (typeof obj !== "object") { return; } Object.keys(obj).forEach(function (key) { target[key] = obj[key]; }); }); return target; } exports.assign = assign; },{}],35:[function(_dereq_,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.defaultAttributes = void 0; exports.defaultAttributes = { src: "about:blank", frameBorder: 0, allowtransparency: true, scrolling: "no", }; },{}],36:[function(_dereq_,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.setAttributes = void 0; function setAttributes(element, // eslint-disable-next-line @typescript-eslint/no-explicit-any attributes) { for (var key in attributes) { if (attributes.hasOwnProperty(key)) { var value = attributes[key]; if (value == null) { element.removeAttribute(key); } else { element.setAttribute(key, value); } } } } exports.setAttributes = setAttributes; },{}],37:[function(_dereq_,module,exports){ 'use strict'; function uuid() { return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { var r = Math.random() * 16 | 0; var v = c === 'x' ? r : r & 0x3 | 0x8; return v.toString(16); }); } module.exports = uuid; },{}],38:[function(_dereq_,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); function deferred(fn) { return function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } setTimeout(function () { try { fn.apply(void 0, args); } catch (err) { /* eslint-disable no-console */ console.log("Error in callback function"); console.log(err); /* eslint-enable no-console */ } }, 1); }; } exports.deferred = deferred; },{}],39:[function(_dereq_,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); function once(fn) { var called = false; return function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } if (!called) { called = true; fn.apply(void 0, args); } }; } exports.once = once; },{}],40:[function(_dereq_,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /* eslint-disable consistent-return */ function promiseOrCallback(promise, callback) { if (!callback) { return promise; } promise.then(function (data) { return callback(null, data); }).catch(function (err) { return callback(err); }); } exports.promiseOrCallback = promiseOrCallback; },{}],41:[function(_dereq_,module,exports){ "use strict"; var deferred_1 = _dereq_("./lib/deferred"); var once_1 = _dereq_("./lib/once"); var promise_or_callback_1 = _dereq_("./lib/promise-or-callback"); function wrapPromise(fn) { // eslint-disable-next-line @typescript-eslint/no-explicit-any return function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var callback; var lastArg = args[args.length - 1]; if (typeof lastArg === "function") { callback = args.pop(); callback = once_1.once(deferred_1.deferred(callback)); } // I know, I know, this looks bad. But it's a quirk of the library that // we need to allow passing the this context to the original function // eslint-disable-next-line @typescript-eslint/ban-ts-ignore // @ts-ignore: this has an implicit any return promise_or_callback_1.promiseOrCallback(fn.apply(this, args), callback); // eslint-disable-line no-invalid-this }; } wrapPromise.wrapPrototype = function (target, options) { if (options === void 0) { options = {}; } var ignoreMethods = options.ignoreMethods || []; var includePrivateMethods = options.transformPrivateMethods === true; var methods = Object.getOwnPropertyNames(target.prototype).filter(function (method) { var isNotPrivateMethod; var isNonConstructorFunction = method !== "constructor" && typeof target.prototype[method] === "function"; var isNotAnIgnoredMethod = ignoreMethods.indexOf(method) === -1; if (includePrivateMethods) { isNotPrivateMethod = true; } else { isNotPrivateMethod = method.charAt(0) !== "_"; } return (isNonConstructorFunction && isNotPrivateMethod && isNotAnIgnoredMethod); }); methods.forEach(function (method) { var original = target.prototype[method]; target.prototype[method] = wrapPromise(original); }); return target; }; module.exports = wrapPromise; },{"./lib/deferred":38,"./lib/once":39,"./lib/promise-or-callback":40}],42:[function(_dereq_,module,exports){ "use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var cardTypes = _dereq_("./lib/card-types"); var add_matching_cards_to_results_1 = _dereq_("./lib/add-matching-cards-to-results"); var is_valid_input_type_1 = _dereq_("./lib/is-valid-input-type"); var find_best_match_1 = _dereq_("./lib/find-best-match"); var clone_1 = _dereq_("./lib/clone"); var customCards = {}; var cardNames = { VISA: "visa", MASTERCARD: "mastercard", AMERICAN_EXPRESS: "american-express", DINERS_CLUB: "diners-club", DISCOVER: "discover", JCB: "jcb", UNIONPAY: "unionpay", MAESTRO: "maestro", ELO: "elo", MIR: "mir", HIPER: "hiper", HIPERCARD: "hipercard", }; var ORIGINAL_TEST_ORDER = [ cardNames.VISA, cardNames.MASTERCARD, cardNames.AMERICAN_EXPRESS, cardNames.DINERS_CLUB, cardNames.DISCOVER, cardNames.JCB, cardNames.UNIONPAY, cardNames.MAESTRO, cardNames.ELO, cardNames.MIR, cardNames.HIPER, cardNames.HIPERCARD, ]; var testOrder = clone_1.clone(ORIGINAL_TEST_ORDER); function findType(cardType) { return customCards[cardType] || cardTypes[cardType]; } function getAllCardTypes() { return testOrder.map(function (cardType) { return clone_1.clone(findType(cardType)); }); } function getCardPosition(name, ignoreErrorForNotExisting) { if (ignoreErrorForNotExisting === void 0) { ignoreErrorForNotExisting = false; } var position = testOrder.indexOf(name); if (!ignoreErrorForNotExisting && position === -1) { throw new Error('"' + name + '" is not a supported card type.'); } return position; } function creditCardType(cardNumber) { var results = []; if (!is_valid_input_type_1.isValidInputType(cardNumber)) { return results; } if (cardNumber.length === 0) { return getAllCardTypes(); } testOrder.forEach(function (cardType) { var cardConfiguration = findType(cardType); add_matching_cards_to_results_1.addMatchingCardsToResults(cardNumber, cardConfiguration, results); }); var bestMatch = find_best_match_1.findBestMatch(results); if (bestMatch) { return [bestMatch]; } return results; } creditCardType.getTypeInfo = function (cardType) { return clone_1.clone(findType(cardType)); }; creditCardType.removeCard = function (name) { var position = getCardPosition(name); testOrder.splice(position, 1); }; creditCardType.addCard = function (config) { var existingCardPosition = getCardPosition(config.type, true); customCards[config.type] = config; if (existingCardPosition === -1) { testOrder.push(config.type); } }; creditCardType.updateCard = function (cardType, updates) { var originalObject = customCards[cardType] || cardTypes[cardType]; if (!originalObject) { throw new Error("\"" + cardType + "\" is not a recognized type. Use `addCard` instead.'"); } if (updates.type && originalObject.type !== updates.type) { throw new Error("Cannot overwrite type parameter."); } var clonedCard = clone_1.clone(originalObject); clonedCard = __assign(__assign({}, clonedCard), updates); customCards[clonedCard.type] = clonedCard; }; creditCardType.changeOrder = function (name, position) { var currentPosition = getCardPosition(name); testOrder.splice(currentPosition, 1); testOrder.splice(position, 0, name); }; creditCardType.resetModifications = function () { testOrder = clone_1.clone(ORIGINAL_TEST_ORDER); customCards = {}; }; creditCardType.types = cardNames; module.exports = creditCardType; },{"./lib/add-matching-cards-to-results":43,"./lib/card-types":44,"./lib/clone":45,"./lib/find-best-match":46,"./lib/is-valid-input-type":47}],43:[function(_dereq_,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.addMatchingCardsToResults = void 0; var clone_1 = _dereq_("./clone"); var matches_1 = _dereq_("./matches"); function addMatchingCardsToResults(cardNumber, cardConfiguration, results) { var i, patternLength; for (i = 0; i < cardConfiguration.patterns.length; i++) { var pattern = cardConfiguration.patterns[i]; if (!matches_1.matches(cardNumber, pattern)) { continue; } var clonedCardConfiguration = clone_1.clone(cardConfiguration); if (Array.isArray(pattern)) { patternLength = String(pattern[0]).length; } else { patternLength = String(pattern).length; } if (cardNumber.length >= patternLength) { clonedCardConfiguration.matchStrength = patternLength; } results.push(clonedCardConfiguration); break; } } exports.addMatchingCardsToResults = addMatchingCardsToResults; },{"./clone":45,"./matches":48}],44:[function(_dereq_,module,exports){ "use strict"; var cardTypes = { visa: { niceType: "Visa", type: "visa", patterns: [4], gaps: [4, 8, 12], lengths: [16, 18, 19], code: { name: "CVV", size: 3, }, }, mastercard: { niceType: "Mastercard", type: "mastercard", patterns: [[51, 55], [2221, 2229], [223, 229], [23, 26], [270, 271], 2720], gaps: [4, 8, 12], lengths: [16], code: { name: "CVC", size: 3, }, }, "american-express": { niceType: "American Express", type: "american-express", patterns: [34, 37], gaps: [4, 10], lengths: [15], code: { name: "CID", size: 4, }, }, "diners-club": { niceType: "Diners Club", type: "diners-club", patterns: [[300, 305], 36, 38, 39], gaps: [4, 10], lengths: [14, 16, 19], code: { name: "CVV", size: 3, }, }, discover: { niceType: "Discover", type: "discover", patterns: [6011, [644, 649], 65], gaps: [4, 8, 12], lengths: [16, 19], code: { name: "CID", size: 3, }, }, jcb: { niceType: "JCB", type: "jcb", patterns: [2131, 1800, [3528, 3589]], gaps: [4, 8, 12], lengths: [16, 17, 18, 19], code: { name: "CVV", size: 3, }, }, unionpay: { niceType: "UnionPay", type: "unionpay", patterns: [ 620, [624, 626], [62100, 62182], [62184, 62187], [62185, 62197], [62200, 62205], [622010, 622999], 622018, [622019, 622999], [62207, 62209], [622126, 622925], [623, 626], 6270, 6272, 6276, [627700, 627779], [627781, 627799], [6282, 6289], 6291, 6292, 810, [8110, 8131], [8132, 8151], [8152, 8163], [8164, 8171], ], gaps: [4, 8, 12], lengths: [14, 15, 16, 17, 18, 19], code: { name: "CVN", size: 3, }, }, maestro: { niceType: "Maestro", type: "maestro", patterns: [ 493698, [500000, 504174], [504176, 506698], [506779, 508999], [56, 59], 63, 67, 6, ], gaps: [4, 8, 12], lengths: [12, 13, 14, 15, 16, 17, 18, 19], code: { name: "CVC", size: 3, }, }, elo: { niceType: "Elo", type: "elo", patterns: [ 401178, 401179, 438935, 457631, 457632, 431274, 451416, 457393, 504175, [506699, 506778], [509000, 509999], 627780, 636297, 636368, [650031, 650033], [650035, 650051], [650405, 650439], [650485, 650538], [650541, 650598], [650700, 650718], [650720, 650727], [650901, 650978], [651652, 651679], [655000, 655019], [655021, 655058], ], gaps: [4, 8, 12], lengths: [16], code: { name: "CVE", size: 3, }, }, mir: { niceType: "Mir", type: "mir", patterns: [[2200, 2204]], gaps: [4, 8, 12], lengths: [16, 17, 18, 19], code: { name: "CVP2", size: 3, }, }, hiper: { niceType: "Hiper", type: "hiper", patterns: [637095, 63737423, 63743358, 637568, 637599, 637609, 637612], gaps: [4, 8, 12], lengths: [16], code: { name: "CVC", size: 3, }, }, hipercard: { niceType: "Hipercard", type: "hipercard", patterns: [606282], gaps: [4, 8, 12], lengths: [16], code: { name: "CVC", size: 3, }, }, }; module.exports = cardTypes; },{}],45:[function(_dereq_,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.clone = void 0; function clone(originalObject) { if (!originalObject) { return null; } return JSON.parse(JSON.stringify(originalObject)); } exports.clone = clone; },{}],46:[function(_dereq_,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.findBestMatch = void 0; function hasEnoughResultsToDetermineBestMatch(results) { var numberOfResultsWithMaxStrengthProperty = results.filter(function (result) { return result.matchStrength; }).length; /* * if all possible results have a maxStrength property that means the card * number is sufficiently long enough to determine conclusively what the card * type is * */ return (numberOfResultsWithMaxStrengthProperty > 0 && numberOfResultsWithMaxStrengthProperty === results.length); } function findBestMatch(results) { if (!hasEnoughResultsToDetermineBestMatch(results)) { return null; } return results.reduce(function (bestMatch, result) { if (!bestMatch) { return result; } /* * If the current best match pattern is less specific than this result, set * the result as the new best match * */ if (Number(bestMatch.matchStrength) < Number(result.matchStrength)) { return result; } return bestMatch; }); } exports.findBestMatch = findBestMatch; },{}],47:[function(_dereq_,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isValidInputType = void 0; function isValidInputType(cardNumber) { return typeof cardNumber === "string" || cardNumber instanceof String; } exports.isValidInputType = isValidInputType; },{}],48:[function(_dereq_,module,exports){ "use strict"; /* * Adapted from https://github.com/polvo-labs/card-type/blob/aaab11f80fa1939bccc8f24905a06ae3cd864356/src/cardType.js#L37-L42 * */ Object.defineProperty(exports, "__esModule", { value: true }); exports.matches = void 0; function matchesRange(cardNumber, min, max) { var maxLengthToCheck = String(min).length; var substr = cardNumber.substr(0, maxLengthToCheck); var integerRepresentationOfCardNumber = parseInt(substr, 10); min = parseInt(String(min).substr(0, substr.length), 10); max = parseInt(String(max).substr(0, substr.length), 10); return (integerRepresentationOfCardNumber >= min && integerRepresentationOfCardNumber <= max); } function matchesPattern(cardNumber, pattern) { pattern = String(pattern); return (pattern.substring(0, cardNumber.length) === cardNumber.substring(0, pattern.length)); } function matches(cardNumber, pattern) { if (Array.isArray(pattern)) { return matchesRange(cardNumber, pattern[0], pattern[1]); } return matchesPattern(cardNumber, pattern); } exports.matches = matches; },{}],49:[function(_dereq_,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Framebus = void 0; var is_not_string_1 = _dereq_("./lib/is-not-string"); var subscription_args_invalid_1 = _dereq_("./lib/subscription-args-invalid"); var broadcast_1 = _dereq_("./lib/broadcast"); var package_payload_1 = _dereq_("./lib/package-payload"); var constants_1 = _dereq_("./lib/constants"); var DefaultPromise = (typeof window !== "undefined" && window.Promise); var Framebus = /** @class */ (function () { function Framebus(options) { if (options === void 0) { options = {}; } this.origin = options.origin || "*"; this.channel = options.channel || ""; this.verifyDomain = options.verifyDomain; this.isDestroyed = false; this.listeners = []; } Framebus.setPromise = function (PromiseGlobal) { Framebus.Promise = PromiseGlobal; }; Framebus.target = function (options) { return new Framebus(options); }; Framebus.prototype.include = function (childWindow) { if (childWindow == null) { return false; } if (childWindow.Window == null) { return false; } if (childWindow.constructor !== childWindow.Window) { return false; } constants_1.childWindows.push(childWindow); return true; }; Framebus.prototype.target = function (options) { return Framebus.target(options); }; Framebus.prototype.emit = function (eventName, data, reply) { if (this.isDestroyed) { return false; } var origin = this.origin; eventName = this.namespaceEvent(eventName); if (is_not_string_1.isntString(eventName)) { return false; } if (is_not_string_1.isntString(origin)) { return false; } if (typeof data === "function") { reply = data; data = undefined; // eslint-disable-line no-undefined } var payload = package_payload_1.packagePayload(eventName, origin, data, reply); if (!payload) { return false; } broadcast_1.broadcast(window.top || window.self, payload, origin); return true; }; Framebus.prototype.emitAsPromise = function (eventName, data) { var _this = this; return new Framebus.Promise(function (resolve, reject) { var didAttachListener = _this.emit(eventName, data, function (payload) { resolve(payload); }); if (!didAttachListener) { reject(new Error("Listener not added for \"" + eventName + "\"")); } }); }; Framebus.prototype.on = function (eventName, originalHandler) { if (this.isDestroyed) { return false; } // eslint-disable-next-line @typescript-eslint/no-this-alias var self = this; var origin = this.origin; var handler = originalHandler; eventName = this.namespaceEvent(eventName); if (subscription_args_invalid_1.subscriptionArgsInvalid(eventName, handler, origin)) { return false; } if (this.verifyDomain) { /* eslint-disable no-invalid-this, @typescript-eslint/ban-ts-comment */ handler = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } // @ts-ignore if (self.checkOrigin(this && this.origin)) { originalHandler.apply(void 0, args); } }; /* eslint-enable no-invalid-this, @typescript-eslint/ban-ts-comment */ } this.listeners.push({ eventName: eventName, handler: handler, originalHandler: originalHandler, }); constants_1.subscribers[origin] = constants_1.subscribers[origin] || {}; constants_1.subscribers[origin][eventName] = constants_1.subscribers[origin][eventName] || []; constants_1.subscribers[origin][eventName].push(handler); return true; }; Framebus.prototype.off = function (eventName, originalHandler) { var handler = originalHandler; if (this.isDestroyed) { return false; } if (this.verifyDomain) { for (var i = 0; i < this.listeners.length; i++) { var listener = this.listeners[i]; if (listener.originalHandler === originalHandler) { handler = listener.handler; } } } eventName = this.namespaceEvent(eventName); var origin = this.origin; if (subscription_args_invalid_1.subscriptionArgsInvalid(eventName, handler, origin)) { return false; } var subscriberList = constants_1.subscribers[origin] && constants_1.subscribers[origin][eventName]; if (!subscriberList) { return false; } for (var i = 0; i < subscriberList.length; i++) { if (subscriberList[i] === handler) { subscriberList.splice(i, 1); return true; } } return false; }; Framebus.prototype.teardown = function () { if (this.isDestroyed) { return; } this.isDestroyed = true; for (var i = 0; i < this.listeners.length; i++) { var listener = this.listeners[i]; this.off(listener.eventName, listener.handler); } this.listeners.length = 0; }; Framebus.prototype.checkOrigin = function (postMessageOrigin) { var merchantHost; var a = document.createElement("a"); a.href = location.href; if (a.protocol === "https:") { merchantHost = a.host.replace(/:443$/, ""); } else if (a.protocol === "http:") { merchantHost = a.host.replace(/:80$/, ""); } else { merchantHost = a.host; } var merchantOrigin = a.protocol + "//" + merchantHost; if (merchantOrigin === postMessageOrigin) { return true; } if (this.verifyDomain) { return this.verifyDomain(postMessageOrigin); } return true; }; Framebus.prototype.namespaceEvent = function (eventName) { if (!this.channel) { return eventName; } return this.channel + ":" + eventName; }; Framebus.Promise = DefaultPromise; return Framebus; }()); exports.Framebus = Framebus; },{"./lib/broadcast":53,"./lib/constants":54,"./lib/is-not-string":57,"./lib/package-payload":59,"./lib/subscription-args-invalid":61}],50:[function(_dereq_,module,exports){ "use strict"; var attach_1 = _dereq_("./lib/attach"); var framebus_1 = _dereq_("./framebus"); attach_1.attach(); module.exports = framebus_1.Framebus; },{"./framebus":49,"./lib/attach":51}],51:[function(_dereq_,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.detach = exports.attach = void 0; var message_1 = _dereq_("./message"); var isAttached = false; function attach() { if (isAttached || typeof window === "undefined") { return; } isAttached = true; window.addEventListener("message", message_1.onmessage, false); } exports.attach = attach; // removeIf(production) function detach() { isAttached = false; window.removeEventListener("message", message_1.onmessage, false); } exports.detach = detach; // endRemoveIf(production) },{"./message":58}],52:[function(_dereq_,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.broadcastToChildWindows = void 0; var broadcast_1 = _dereq_("./broadcast"); var constants_1 = _dereq_("./constants"); function broadcastToChildWindows(payload, origin, source) { for (var i = constants_1.childWindows.length - 1; i >= 0; i--) { var childWindow = constants_1.childWindows[i]; if (childWindow.closed) { constants_1.childWindows.splice(i, 1); } else if (source !== childWindow) { broadcast_1.broadcast(childWindow.top, payload, origin); } } } exports.broadcastToChildWindows = broadcastToChildWindows; },{"./broadcast":53,"./constants":54}],53:[function(_dereq_,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.broadcast = void 0; var has_opener_1 = _dereq_("./has-opener"); function broadcast(frame, payload, origin) { var i = 0; var frameToBroadcastTo; try { frame.postMessage(payload, origin); if (has_opener_1.hasOpener(frame) && frame.opener.top !== window.top) { broadcast(frame.opener.top, payload, origin); } // previously, our max value was frame.frames.length // but frames.length inherits from window.length // which can be overwritten if a developer does // `var length = value;` outside of a function // scope, it'll prevent us from looping through // all the frames. With this, we loop through // until there are no longer any frames // eslint-disable-next-line no-cond-assign while ((frameToBroadcastTo = frame.frames[i])) { broadcast(frameToBroadcastTo, payload, origin); i++; } } catch (_) { /* ignored */ } } exports.broadcast = broadcast; },{"./has-opener":56}],54:[function(_dereq_,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.subscribers = exports.childWindows = exports.prefix = void 0; exports.prefix = "/*framebus*/"; exports.childWindows = []; exports.subscribers = {}; },{}],55:[function(_dereq_,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.dispatch = void 0; var constants_1 = _dereq_("./constants"); function dispatch(origin, event, data, reply, e) { if (!constants_1.subscribers[origin]) { return; } if (!constants_1.subscribers[origin][event]) { return; } var args = []; if (data) { args.push(data); } if (reply) { args.push(reply); } for (var i = 0; i < constants_1.subscribers[origin][event].length; i++) { constants_1.subscribers[origin][event][i].apply(e, args); } } exports.dispatch = dispatch; },{"./constants":54}],56:[function(_dereq_,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.hasOpener = void 0; function hasOpener(frame) { if (frame.top !== frame) { return false; } if (frame.opener == null) { return false; } if (frame.opener === frame) { return false; } if (frame.opener.closed === true) { return false; } return true; } exports.hasOpener = hasOpener; },{}],57:[function(_dereq_,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isntString = void 0; function isntString(str) { return typeof str !== "string"; } exports.isntString = isntString; },{}],58:[function(_dereq_,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.onmessage = void 0; var is_not_string_1 = _dereq_("./is-not-string"); var unpack_payload_1 = _dereq_("./unpack-payload"); var dispatch_1 = _dereq_("./dispatch"); var broadcast_to_child_windows_1 = _dereq_("./broadcast-to-child-windows"); function onmessage(e) { if (is_not_string_1.isntString(e.data)) { return; } var payload = unpack_payload_1.unpackPayload(e); if (!payload) { return; } var data = payload.eventData; var reply = payload.reply; dispatch_1.dispatch("*", payload.event, data, reply, e); dispatch_1.dispatch(e.origin, payload.event, data, reply, e); broadcast_to_child_windows_1.broadcastToChildWindows(e.data, payload.origin, e.source); } exports.onmessage = onmessage; },{"./broadcast-to-child-windows":52,"./dispatch":55,"./is-not-string":57,"./unpack-payload":62}],59:[function(_dereq_,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.packagePayload = void 0; var subscribe_replier_1 = _dereq_("./subscribe-replier"); var constants_1 = _dereq_("./constants"); function packagePayload(event, origin, data, reply) { var packaged; var payload = { event: event, origin: origin, }; if (typeof reply === "function") { payload.reply = subscribe_replier_1.subscribeReplier(reply, origin); } payload.eventData = data; try { packaged = constants_1.prefix + JSON.stringify(payload); } catch (e) { throw new Error("Could not stringify event: " + e.message); } return packaged; } exports.packagePayload = packagePayload; },{"./constants":54,"./subscribe-replier":60}],60:[function(_dereq_,module,exports){ "use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.subscribeReplier = void 0; var framebus_1 = _dereq_("../framebus"); var uuid_1 = __importDefault(_dereq_("@braintree/uuid")); function subscribeReplier(fn, origin) { var uuid = uuid_1.default(); function replier(data, replyOriginHandler) { fn(data, replyOriginHandler); framebus_1.Framebus.target({ origin: origin, }).off(uuid, replier); } framebus_1.Framebus.target({ origin: origin, }).on(uuid, replier); return uuid; } exports.subscribeReplier = subscribeReplier; },{"../framebus":49,"@braintree/uuid":37}],61:[function(_dereq_,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.subscriptionArgsInvalid = void 0; var is_not_string_1 = _dereq_("./is-not-string"); function subscriptionArgsInvalid(event, fn, origin) { if (is_not_string_1.isntString(event)) { return true; } if (typeof fn !== "function") { return true; } return is_not_string_1.isntString(origin); } exports.subscriptionArgsInvalid = subscriptionArgsInvalid; },{"./is-not-string":57}],62:[function(_dereq_,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.unpackPayload = void 0; var constants_1 = _dereq_("./constants"); var package_payload_1 = _dereq_("./package-payload"); function unpackPayload(e) { var payload; if (e.data.slice(0, constants_1.prefix.length) !== constants_1.prefix) { return false; } try { payload = JSON.parse(e.data.slice(constants_1.prefix.length)); } catch (err) { return false; } if (payload.reply) { var replyOrigin_1 = e.origin; var replySource_1 =