From bee4c95b61029296af37c4018d6d9c03fb4777fd Mon Sep 17 00:00:00 2001
From: David Bomba
Date: Thu, 18 Jun 2020 20:52:25 +1000
Subject: [PATCH] Fixes for cors erros
---
app/Http/Kernel.php | 4 +-
public/js/app.js | 3311 ++++++++++++++++-
.../authorize-authorize-card.js | 250 +-
.../payments/authorize-credit-card-payment.js | 245 +-
public/mix-manifest.json | 6 +-
5 files changed, 3808 insertions(+), 8 deletions(-)
diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php
index e4fd781c974c..a8e0baf3e57f 100644
--- a/app/Http/Kernel.php
+++ b/app/Http/Kernel.php
@@ -29,6 +29,8 @@ class Kernel extends HttpKernel
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
\App\Http\Middleware\TrustProxies::class,
+ \App\Http\Middleware\Cors::class,
+
];
/**
@@ -53,7 +55,7 @@ class Kernel extends HttpKernel
'bindings',
'query_logging',
\App\Http\Middleware\StartupCheck::class,
- \App\Http\Middleware\Cors::class,
+# \App\Http\Middleware\Cors::class,
],
'contact' => [
'throttle:60,1',
diff --git a/public/js/app.js b/public/js/app.js
index 0952b51bf059..0eac2b274521 100644
--- a/public/js/app.js
+++ b/public/js/app.js
@@ -1 +1,3310 @@
-!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/",n(n.s=0)}({"+YGh":function(e,t,n){"use strict";function r(e,t){return{isValid:e,isPotentiallyValid:t}}e.exports=function(e,t){return t=(t=t||3)instanceof Array?t:[t],"string"!=typeof e?r(!1,!1):/^\d*$/.test(e)?function(e,t){for(var n=0;nfunction(e){for(var t=3,n=0;nt?e[n]:t;return t}(t)?r(!1,!1):r(!0,!0):r(!1,!1)}},0:function(e,t,n){n("bUC5"),e.exports=n("pyCd")},"0H2f":function(e,t,n){"use strict";e.exports={number:n("eROS"),expirationDate:n("u4Xs"),expirationMonth:n("2EnR"),expirationYear:n("uRxV"),cvv:n("+YGh"),postalCode:n("swuF"),creditCardType:n("3T3Z")}},"2EnR":function(e,t,n){"use strict";function r(e,t,n){return{isValid:e,isPotentiallyValid:t,isValidForThisYear:n||!1}}e.exports=function(e){var t,n,o=(new Date).getMonth()+1;return"string"!=typeof e?r(!1,!1):""===e.replace(/\s/g,"")||"0"===e?r(!1,!0):/^\d*$/.test(e)?(t=parseInt(e,10),isNaN(e)?r(!1,!1):r(n=t>0&&t<13,n,n&&t>=o)):r(!1,!1)}},"2SVd":function(e,t,n){"use strict";e.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},"3T3Z":function(e,t,n){"use strict";var r,o=n("X3S+"),i=n("RGrI"),s=n("MYJU"),a=n("nyOA"),u=n("uVg8"),c={},f={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"},p=[f.VISA,f.MASTERCARD,f.AMERICAN_EXPRESS,f.DINERS_CLUB,f.DISCOVER,f.JCB,f.UNIONPAY,f.MAESTRO,f.ELO,f.MIR,f.HIPER,f.HIPERCARD];function l(e){return c[e]||o[e]}function d(e,t){var n=r.indexOf(e);if(!t&&-1===n)throw new Error('"'+e+'" is not a supported card type.');return n}function h(e){var t,n=[];return a(e)?0===e.length?r.map((function(e){return i(l(e))})):(r.forEach((function(t){var r=l(t);u(e,r,n)})),(t=s(n))?[t]:n):[]}r=i(p),h.getTypeInfo=function(e){return i(l(e))},h.removeCard=function(e){var t=d(e);r.splice(t,1)},h.addCard=function(e){var t=d(e.type,!0);c[e.type]=e,-1===t&&r.push(e.type)},h.updateCard=function(e,t){var n,r=c[e]||o[e];if(!r)throw new Error('"'+e+'" is not a recognized type. Use `addCard` instead.');if(t.type&&r.type!==t.type)throw new Error("Cannot overwrite type parameter.");n=i(r,!0),Object.keys(n).forEach((function(e){t[e]&&(n[e]=t[e])})),c[n.type]=n},h.changeOrder=function(e,t){var n=d(e);r.splice(n,1),r.splice(t,0,e)},h.resetModifications=function(){r=i(p),c={}},h.types=f,e.exports=h},"5oMp":function(e,t,n){"use strict";e.exports=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}},"8oxB":function(e,t){var n,r,o=e.exports={};function i(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}function a(e){if(n===setTimeout)return setTimeout(e,0);if((n===i||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:i}catch(e){n=i}try{r="function"==typeof clearTimeout?clearTimeout:s}catch(e){r=s}}();var u,c=[],f=!1,p=-1;function l(){f&&u&&(f=!1,u.length?c=u.concat(c):p=-1,c.length&&d())}function d(){if(!f){var e=a(l);f=!0;for(var t=c.length;t;){for(u=c,c=[];++p1)for(var n=1;n=200&&e<300}};u.headers={common:{Accept:"application/json, text/plain, */*"}},r.forEach(["delete","get","head"],(function(e){u.headers[e]={}})),r.forEach(["post","put","patch"],(function(e){u.headers[e]=r.merge(i)})),e.exports=u}).call(this,n("8oxB"))},LYNF:function(e,t,n){"use strict";var r=n("OH9c");e.exports=function(e,t,n,o,i){var s=new Error(e);return r(s,t,n,o,i)}},Lmem:function(e,t,n){"use strict";e.exports=function(e){return!(!e||!e.__CANCEL__)}},MLWZ:function(e,t,n){"use strict";var r=n("xTJ+");function o(e){return encodeURIComponent(e).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}e.exports=function(e,t,n){if(!t)return e;var i;if(n)i=n(t);else if(r.isURLSearchParams(t))i=t.toString();else{var s=[];r.forEach(t,(function(e,t){null!=e&&(r.isArray(e)?t+="[]":e=[e],r.forEach(e,(function(e){r.isDate(e)?e=e.toISOString():r.isObject(e)&&(e=JSON.stringify(e)),s.push(o(t)+"="+o(e))})))})),i=s.join("&")}if(i){var a=e.indexOf("#");-1!==a&&(e=e.slice(0,a)),e+=(-1===e.indexOf("?")?"?":"&")+i}return e}},MYJU:function(e,t,n){"use strict";e.exports=function(e){if(function(e){var t=e.filter((function(e){return e.matchStrength})).length;return t>0&&t===e.length}(e))return e.reduce((function(e,t){return e?e.matchStrength1||1===a&&Number(i[1])>2?1:1===a?(s=i.substr(1),r(s).isPotentiallyValid?1:2):5===i.length?1:i.length>5?2:1,{month:t=e.substr(0,n),year:e.substr(t.length)})}},OTTw:function(e,t,n){"use strict";var r=n("xTJ+");e.exports=r.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function o(e){var r=e;return t&&(n.setAttribute("href",r),r=n.href),n.setAttribute("href",r),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return e=o(window.location.href),function(t){var n=r.isString(t)?o(t):t;return n.protocol===e.protocol&&n.host===e.host}}():function(){return!0}},RABH:function(e,t,n){"use strict";e.exports=function(e,t){return Array.isArray(t)?function(e,t,n){var r=String(t).length,o=e.substr(0,r),i=parseInt(o,10);return t=parseInt(String(t).substr(0,o.length),10),n=parseInt(String(n).substr(0,o.length),10),i>=t&&i<=n}(e,t[0],t[1]):function(e,t){return(t=String(t)).substring(0,e.length)===e.substring(0,t.length)}(e,t)}},RGrI:function(e,t,n){"use strict";e.exports=function(e){return e?JSON.parse(JSON.stringify(e)):null}},"Rn+g":function(e,t,n){"use strict";var r=n("LYNF");e.exports=function(e,t,n){var o=n.config.validateStatus;!o||o(n.status)?e(n):t(r("Request failed with status code "+n.status,n.config,null,n.request,n))}},SntB:function(e,t,n){"use strict";var r=n("xTJ+");e.exports=function(e,t){t=t||{};var n={},o=["url","method","params","data"],i=["headers","auth","proxy"],s=["baseURL","url","transformRequest","transformResponse","paramsSerializer","timeout","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","maxContentLength","validateStatus","maxRedirects","httpAgent","httpsAgent","cancelToken","socketPath"];r.forEach(o,(function(e){void 0!==t[e]&&(n[e]=t[e])})),r.forEach(i,(function(o){r.isObject(t[o])?n[o]=r.deepMerge(e[o],t[o]):void 0!==t[o]?n[o]=t[o]:r.isObject(e[o])?n[o]=r.deepMerge(e[o]):void 0!==e[o]&&(n[o]=e[o])})),r.forEach(s,(function(r){void 0!==t[r]?n[r]=t[r]:void 0!==e[r]&&(n[r]=e[r])}));var a=o.concat(i).concat(s),u=Object.keys(t).filter((function(e){return-1===a.indexOf(e)}));return r.forEach(u,(function(r){void 0!==t[r]?n[r]=t[r]:void 0!==e[r]&&(n[r]=e[r])})),n}},UnBK:function(e,t,n){"use strict";var r=n("xTJ+"),o=n("xAGQ"),i=n("Lmem"),s=n("JEQr");function a(e){e.cancelToken&&e.cancelToken.throwIfRequested()}e.exports=function(e){return a(e),e.headers=e.headers||{},e.data=o(e.data,e.headers,e.transformRequest),e.headers=r.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),r.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]})),(e.adapter||s.adapter)(e).then((function(t){return a(e),t.data=o(t.data,t.headers,e.transformResponse),t}),(function(t){return i(t)||(a(e),t&&t.response&&(t.response.data=o(t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))}},"X3S+":function(e,t,n){"use strict";e.exports={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,[5e5,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],[509e3,509999],627780,636297,636368,[650031,650033],[650035,650051],[650405,650439],[650485,650538],[650541,650598],[650700,650718],[650720,650727],[650901,650978],[651652,651679],[655e3,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,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}}}},bUC5:function(e,t,n){window.axios=n("vDqi"),window.valid=n("0H2f")},eROS:function(e,t,n){"use strict";var r=n("foYR"),o=n("3T3Z");function i(e,t,n){return{card:e,isPotentiallyValid:t,isValid:n}}e.exports=function(e,t){var n,s,a,u,c;if(t=t||{},"number"==typeof e&&(e=String(e)),"string"!=typeof e)return i(null,!1,!1);if(e=e.replace(/\-|\s/g,""),!/^\d*$/.test(e))return i(null,!1,!1);if(0===(n=o(e)).length)return i(null,!1,!1);if(1!==n.length)return i(null,!0,!1);if(s=n[0],t.maxLength&&e.length>t.maxLength)return i(s,!1,!1);for(a=s.type===o.types.UNIONPAY&&!0!==t.luhnValidateUnionPay||r(e),c=Math.max.apply(null,s.lengths),t.maxLength&&(c=Math.min(t.maxLength,c)),u=0;u=0;)t=parseInt(e.charAt(o),10),r&&(t*=2)>9&&(t=t%10+1),r=!r,n+=t,o--;return n%10==0}},g7np:function(e,t,n){"use strict";var r=n("2SVd"),o=n("5oMp");e.exports=function(e,t){return e&&!r(t)?o(e,t):t}},"jfS+":function(e,t,n){"use strict";var r=n("endd");function o(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise((function(e){t=e}));var n=this;e((function(e){n.reason||(n.reason=new r(e),t(n.reason))}))}o.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},o.source=function(){var e;return{token:new o((function(t){e=t})),cancel:e}},e.exports=o},nyOA:function(e,t,n){"use strict";e.exports=function(e){return"string"==typeof e||e instanceof String}},pyCd:function(e,t){},swuF:function(e,t,n){"use strict";function r(e,t){return{isValid:e,isPotentiallyValid:t}}e.exports=function(e,t){var n;return n=(t=t||{}).minLength||3,"string"!=typeof e?r(!1,!1):e.length4?r(!1,!1):(e=parseInt(e,10),i=Number(String(n).substr(2,2)),2===o?(a=i===e,s=e>=i&&e<=i+t):4===o&&(a=n===e,s=e>=n&&e<=n+t),r(s,s,a))):r(!1,!1)}},uVg8:function(e,t,n){"use strict";var r=n("RGrI"),o=n("RABH");e.exports=function(e,t,n){var i,s,a,u;for(i=0;i=a&&(u.matchStrength=a),n.push(u);break}}},vDqi:function(e,t,n){e.exports=n("zuR4")},w0Vi:function(e,t,n){"use strict";var r=n("xTJ+"),o=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];e.exports=function(e){var t,n,i,s={};return e?(r.forEach(e.split("\n"),(function(e){if(i=e.indexOf(":"),t=r.trim(e.substr(0,i)).toLowerCase(),n=r.trim(e.substr(i+1)),t){if(s[t]&&o.indexOf(t)>=0)return;s[t]="set-cookie"===t?(s[t]?s[t]:[]).concat([n]):s[t]?s[t]+", "+n:n}})),s):s}},xAGQ:function(e,t,n){"use strict";var r=n("xTJ+");e.exports=function(e,t,n){return r.forEach(n,(function(n){e=n(e,t)})),e}},"xTJ+":function(e,t,n){"use strict";var r=n("HSsa"),o=Object.prototype.toString;function i(e){return"[object Array]"===o.call(e)}function s(e){return void 0===e}function a(e){return null!==e&&"object"==typeof e}function u(e){return"[object Function]"===o.call(e)}function c(e,t){if(null!=e)if("object"!=typeof e&&(e=[e]),i(e))for(var n=0,r=e.length;n= 200 && status < 300;
+ }
+};
+
+defaults.headers = {
+ common: {
+ 'Accept': 'application/json, text/plain, */*'
+ }
+};
+
+utils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {
+ defaults.headers[method] = {};
+});
+
+utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {
+ defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);
+});
+
+module.exports = defaults;
+
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../process/browser.js */ "./node_modules/process/browser.js")))
+
+/***/ }),
+
+/***/ "./node_modules/axios/lib/helpers/bind.js":
+/*!************************************************!*\
+ !*** ./node_modules/axios/lib/helpers/bind.js ***!
+ \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+module.exports = function bind(fn, thisArg) {
+ return function wrap() {
+ var args = new Array(arguments.length);
+ for (var i = 0; i < args.length; i++) {
+ args[i] = arguments[i];
+ }
+ return fn.apply(thisArg, args);
+ };
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/axios/lib/helpers/buildURL.js":
+/*!****************************************************!*\
+ !*** ./node_modules/axios/lib/helpers/buildURL.js ***!
+ \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js");
+
+function encode(val) {
+ return encodeURIComponent(val).
+ replace(/%40/gi, '@').
+ replace(/%3A/gi, ':').
+ replace(/%24/g, '$').
+ replace(/%2C/gi, ',').
+ replace(/%20/g, '+').
+ replace(/%5B/gi, '[').
+ replace(/%5D/gi, ']');
+}
+
+/**
+ * Build a URL by appending params to the end
+ *
+ * @param {string} url The base of the url (e.g., http://www.google.com)
+ * @param {object} [params] The params to be appended
+ * @returns {string} The formatted url
+ */
+module.exports = function buildURL(url, params, paramsSerializer) {
+ /*eslint no-param-reassign:0*/
+ if (!params) {
+ return url;
+ }
+
+ var serializedParams;
+ if (paramsSerializer) {
+ serializedParams = paramsSerializer(params);
+ } else if (utils.isURLSearchParams(params)) {
+ serializedParams = params.toString();
+ } else {
+ var parts = [];
+
+ utils.forEach(params, function serialize(val, key) {
+ if (val === null || typeof val === 'undefined') {
+ return;
+ }
+
+ if (utils.isArray(val)) {
+ key = key + '[]';
+ } else {
+ val = [val];
+ }
+
+ utils.forEach(val, function parseValue(v) {
+ if (utils.isDate(v)) {
+ v = v.toISOString();
+ } else if (utils.isObject(v)) {
+ v = JSON.stringify(v);
+ }
+ parts.push(encode(key) + '=' + encode(v));
+ });
+ });
+
+ serializedParams = parts.join('&');
+ }
+
+ if (serializedParams) {
+ var hashmarkIndex = url.indexOf('#');
+ if (hashmarkIndex !== -1) {
+ url = url.slice(0, hashmarkIndex);
+ }
+
+ url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;
+ }
+
+ return url;
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/axios/lib/helpers/combineURLs.js":
+/*!*******************************************************!*\
+ !*** ./node_modules/axios/lib/helpers/combineURLs.js ***!
+ \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+/**
+ * Creates a new URL by combining the specified URLs
+ *
+ * @param {string} baseURL The base URL
+ * @param {string} relativeURL The relative URL
+ * @returns {string} The combined URL
+ */
+module.exports = function combineURLs(baseURL, relativeURL) {
+ return relativeURL
+ ? baseURL.replace(/\/+$/, '') + '/' + relativeURL.replace(/^\/+/, '')
+ : baseURL;
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/axios/lib/helpers/cookies.js":
+/*!***************************************************!*\
+ !*** ./node_modules/axios/lib/helpers/cookies.js ***!
+ \***************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js");
+
+module.exports = (
+ utils.isStandardBrowserEnv() ?
+
+ // Standard browser envs support document.cookie
+ (function standardBrowserEnv() {
+ return {
+ write: function write(name, value, expires, path, domain, secure) {
+ var cookie = [];
+ cookie.push(name + '=' + encodeURIComponent(value));
+
+ if (utils.isNumber(expires)) {
+ cookie.push('expires=' + new Date(expires).toGMTString());
+ }
+
+ if (utils.isString(path)) {
+ cookie.push('path=' + path);
+ }
+
+ if (utils.isString(domain)) {
+ cookie.push('domain=' + domain);
+ }
+
+ if (secure === true) {
+ cookie.push('secure');
+ }
+
+ document.cookie = cookie.join('; ');
+ },
+
+ read: function read(name) {
+ var match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)'));
+ return (match ? decodeURIComponent(match[3]) : null);
+ },
+
+ remove: function remove(name) {
+ this.write(name, '', Date.now() - 86400000);
+ }
+ };
+ })() :
+
+ // Non standard browser env (web workers, react-native) lack needed support.
+ (function nonStandardBrowserEnv() {
+ return {
+ write: function write() {},
+ read: function read() { return null; },
+ remove: function remove() {}
+ };
+ })()
+);
+
+
+/***/ }),
+
+/***/ "./node_modules/axios/lib/helpers/isAbsoluteURL.js":
+/*!*********************************************************!*\
+ !*** ./node_modules/axios/lib/helpers/isAbsoluteURL.js ***!
+ \*********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+/**
+ * Determines whether the specified URL is absolute
+ *
+ * @param {string} url The URL to test
+ * @returns {boolean} True if the specified URL is absolute, otherwise false
+ */
+module.exports = function isAbsoluteURL(url) {
+ // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL).
+ // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed
+ // by any combination of letters, digits, plus, period, or hyphen.
+ return /^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(url);
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/axios/lib/helpers/isURLSameOrigin.js":
+/*!***********************************************************!*\
+ !*** ./node_modules/axios/lib/helpers/isURLSameOrigin.js ***!
+ \***********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js");
+
+module.exports = (
+ utils.isStandardBrowserEnv() ?
+
+ // Standard browser envs have full support of the APIs needed to test
+ // whether the request URL is of the same origin as current location.
+ (function standardBrowserEnv() {
+ var msie = /(msie|trident)/i.test(navigator.userAgent);
+ var urlParsingNode = document.createElement('a');
+ var originURL;
+
+ /**
+ * Parse a URL to discover it's components
+ *
+ * @param {String} url The URL to be parsed
+ * @returns {Object}
+ */
+ function resolveURL(url) {
+ var href = url;
+
+ if (msie) {
+ // IE needs attribute set twice to normalize properties
+ urlParsingNode.setAttribute('href', href);
+ href = urlParsingNode.href;
+ }
+
+ urlParsingNode.setAttribute('href', href);
+
+ // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils
+ return {
+ href: urlParsingNode.href,
+ protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',
+ host: urlParsingNode.host,
+ search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '',
+ hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',
+ hostname: urlParsingNode.hostname,
+ port: urlParsingNode.port,
+ pathname: (urlParsingNode.pathname.charAt(0) === '/') ?
+ urlParsingNode.pathname :
+ '/' + urlParsingNode.pathname
+ };
+ }
+
+ originURL = resolveURL(window.location.href);
+
+ /**
+ * Determine if a URL shares the same origin as the current location
+ *
+ * @param {String} requestURL The URL to test
+ * @returns {boolean} True if URL shares the same origin, otherwise false
+ */
+ return function isURLSameOrigin(requestURL) {
+ var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;
+ return (parsed.protocol === originURL.protocol &&
+ parsed.host === originURL.host);
+ };
+ })() :
+
+ // Non standard browser envs (web workers, react-native) lack needed support.
+ (function nonStandardBrowserEnv() {
+ return function isURLSameOrigin() {
+ return true;
+ };
+ })()
+);
+
+
+/***/ }),
+
+/***/ "./node_modules/axios/lib/helpers/normalizeHeaderName.js":
+/*!***************************************************************!*\
+ !*** ./node_modules/axios/lib/helpers/normalizeHeaderName.js ***!
+ \***************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var utils = __webpack_require__(/*! ../utils */ "./node_modules/axios/lib/utils.js");
+
+module.exports = function normalizeHeaderName(headers, normalizedName) {
+ utils.forEach(headers, function processHeader(value, name) {
+ if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {
+ headers[normalizedName] = value;
+ delete headers[name];
+ }
+ });
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/axios/lib/helpers/parseHeaders.js":
+/*!********************************************************!*\
+ !*** ./node_modules/axios/lib/helpers/parseHeaders.js ***!
+ \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js");
+
+// Headers whose duplicates are ignored by node
+// c.f. https://nodejs.org/api/http.html#http_message_headers
+var ignoreDuplicateOf = [
+ 'age', 'authorization', 'content-length', 'content-type', 'etag',
+ 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',
+ 'last-modified', 'location', 'max-forwards', 'proxy-authorization',
+ 'referer', 'retry-after', 'user-agent'
+];
+
+/**
+ * Parse headers into an object
+ *
+ * ```
+ * Date: Wed, 27 Aug 2014 08:58:49 GMT
+ * Content-Type: application/json
+ * Connection: keep-alive
+ * Transfer-Encoding: chunked
+ * ```
+ *
+ * @param {String} headers Headers needing to be parsed
+ * @returns {Object} Headers parsed into an object
+ */
+module.exports = function parseHeaders(headers) {
+ var parsed = {};
+ var key;
+ var val;
+ var i;
+
+ if (!headers) { return parsed; }
+
+ utils.forEach(headers.split('\n'), function parser(line) {
+ i = line.indexOf(':');
+ key = utils.trim(line.substr(0, i)).toLowerCase();
+ val = utils.trim(line.substr(i + 1));
+
+ if (key) {
+ if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {
+ return;
+ }
+ if (key === 'set-cookie') {
+ parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);
+ } else {
+ parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;
+ }
+ }
+ });
+
+ return parsed;
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/axios/lib/helpers/spread.js":
+/*!**************************************************!*\
+ !*** ./node_modules/axios/lib/helpers/spread.js ***!
+ \**************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+/**
+ * Syntactic sugar for invoking a function and expanding an array for arguments.
+ *
+ * Common use case would be to use `Function.prototype.apply`.
+ *
+ * ```js
+ * function f(x, y, z) {}
+ * var args = [1, 2, 3];
+ * f.apply(null, args);
+ * ```
+ *
+ * With `spread` this example can be re-written.
+ *
+ * ```js
+ * spread(function(x, y, z) {})([1, 2, 3]);
+ * ```
+ *
+ * @param {Function} callback
+ * @returns {Function}
+ */
+module.exports = function spread(callback) {
+ return function wrap(arr) {
+ return callback.apply(null, arr);
+ };
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/axios/lib/utils.js":
+/*!*****************************************!*\
+ !*** ./node_modules/axios/lib/utils.js ***!
+ \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var bind = __webpack_require__(/*! ./helpers/bind */ "./node_modules/axios/lib/helpers/bind.js");
+
+/*global toString:true*/
+
+// utils is a library of generic helper functions non-specific to axios
+
+var toString = Object.prototype.toString;
+
+/**
+ * Determine if a value is an Array
+ *
+ * @param {Object} val The value to test
+ * @returns {boolean} True if value is an Array, otherwise false
+ */
+function isArray(val) {
+ return toString.call(val) === '[object Array]';
+}
+
+/**
+ * Determine if a value is undefined
+ *
+ * @param {Object} val The value to test
+ * @returns {boolean} True if the value is undefined, otherwise false
+ */
+function isUndefined(val) {
+ return typeof val === 'undefined';
+}
+
+/**
+ * Determine if a value is a Buffer
+ *
+ * @param {Object} val The value to test
+ * @returns {boolean} True if value is a Buffer, otherwise false
+ */
+function isBuffer(val) {
+ return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)
+ && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);
+}
+
+/**
+ * Determine if a value is an ArrayBuffer
+ *
+ * @param {Object} val The value to test
+ * @returns {boolean} True if value is an ArrayBuffer, otherwise false
+ */
+function isArrayBuffer(val) {
+ return toString.call(val) === '[object ArrayBuffer]';
+}
+
+/**
+ * Determine if a value is a FormData
+ *
+ * @param {Object} val The value to test
+ * @returns {boolean} True if value is an FormData, otherwise false
+ */
+function isFormData(val) {
+ return (typeof FormData !== 'undefined') && (val instanceof FormData);
+}
+
+/**
+ * Determine if a value is a view on an ArrayBuffer
+ *
+ * @param {Object} val The value to test
+ * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false
+ */
+function isArrayBufferView(val) {
+ var result;
+ if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {
+ result = ArrayBuffer.isView(val);
+ } else {
+ result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);
+ }
+ return result;
+}
+
+/**
+ * Determine if a value is a String
+ *
+ * @param {Object} val The value to test
+ * @returns {boolean} True if value is a String, otherwise false
+ */
+function isString(val) {
+ return typeof val === 'string';
+}
+
+/**
+ * Determine if a value is a Number
+ *
+ * @param {Object} val The value to test
+ * @returns {boolean} True if value is a Number, otherwise false
+ */
+function isNumber(val) {
+ return typeof val === 'number';
+}
+
+/**
+ * Determine if a value is an Object
+ *
+ * @param {Object} val The value to test
+ * @returns {boolean} True if value is an Object, otherwise false
+ */
+function isObject(val) {
+ return val !== null && typeof val === 'object';
+}
+
+/**
+ * Determine if a value is a Date
+ *
+ * @param {Object} val The value to test
+ * @returns {boolean} True if value is a Date, otherwise false
+ */
+function isDate(val) {
+ return toString.call(val) === '[object Date]';
+}
+
+/**
+ * Determine if a value is a File
+ *
+ * @param {Object} val The value to test
+ * @returns {boolean} True if value is a File, otherwise false
+ */
+function isFile(val) {
+ return toString.call(val) === '[object File]';
+}
+
+/**
+ * Determine if a value is a Blob
+ *
+ * @param {Object} val The value to test
+ * @returns {boolean} True if value is a Blob, otherwise false
+ */
+function isBlob(val) {
+ return toString.call(val) === '[object Blob]';
+}
+
+/**
+ * Determine if a value is a Function
+ *
+ * @param {Object} val The value to test
+ * @returns {boolean} True if value is a Function, otherwise false
+ */
+function isFunction(val) {
+ return toString.call(val) === '[object Function]';
+}
+
+/**
+ * Determine if a value is a Stream
+ *
+ * @param {Object} val The value to test
+ * @returns {boolean} True if value is a Stream, otherwise false
+ */
+function isStream(val) {
+ return isObject(val) && isFunction(val.pipe);
+}
+
+/**
+ * Determine if a value is a URLSearchParams object
+ *
+ * @param {Object} val The value to test
+ * @returns {boolean} True if value is a URLSearchParams object, otherwise false
+ */
+function isURLSearchParams(val) {
+ return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;
+}
+
+/**
+ * Trim excess whitespace off the beginning and end of a string
+ *
+ * @param {String} str The String to trim
+ * @returns {String} The String freed of excess whitespace
+ */
+function trim(str) {
+ return str.replace(/^\s*/, '').replace(/\s*$/, '');
+}
+
+/**
+ * Determine if we're running in a standard browser environment
+ *
+ * This allows axios to run in a web worker, and react-native.
+ * Both environments support XMLHttpRequest, but not fully standard globals.
+ *
+ * web workers:
+ * typeof window -> undefined
+ * typeof document -> undefined
+ *
+ * react-native:
+ * navigator.product -> 'ReactNative'
+ * nativescript
+ * navigator.product -> 'NativeScript' or 'NS'
+ */
+function isStandardBrowserEnv() {
+ if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||
+ navigator.product === 'NativeScript' ||
+ navigator.product === 'NS')) {
+ return false;
+ }
+ return (
+ typeof window !== 'undefined' &&
+ typeof document !== 'undefined'
+ );
+}
+
+/**
+ * Iterate over an Array or an Object invoking a function for each item.
+ *
+ * If `obj` is an Array callback will be called passing
+ * the value, index, and complete array for each item.
+ *
+ * If 'obj' is an Object callback will be called passing
+ * the value, key, and complete object for each property.
+ *
+ * @param {Object|Array} obj The object to iterate
+ * @param {Function} fn The callback to invoke for each item
+ */
+function forEach(obj, fn) {
+ // Don't bother if no value provided
+ if (obj === null || typeof obj === 'undefined') {
+ return;
+ }
+
+ // Force an array if not already something iterable
+ if (typeof obj !== 'object') {
+ /*eslint no-param-reassign:0*/
+ obj = [obj];
+ }
+
+ if (isArray(obj)) {
+ // Iterate over array values
+ for (var i = 0, l = obj.length; i < l; i++) {
+ fn.call(null, obj[i], i, obj);
+ }
+ } else {
+ // Iterate over object keys
+ for (var key in obj) {
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
+ fn.call(null, obj[key], key, obj);
+ }
+ }
+ }
+}
+
+/**
+ * Accepts varargs expecting each argument to be an object, then
+ * immutably merges the properties of each object and returns result.
+ *
+ * When multiple objects contain the same key the later object in
+ * the arguments list will take precedence.
+ *
+ * Example:
+ *
+ * ```js
+ * var result = merge({foo: 123}, {foo: 456});
+ * console.log(result.foo); // outputs 456
+ * ```
+ *
+ * @param {Object} obj1 Object to merge
+ * @returns {Object} Result of all merge properties
+ */
+function merge(/* obj1, obj2, obj3, ... */) {
+ var result = {};
+ function assignValue(val, key) {
+ if (typeof result[key] === 'object' && typeof val === 'object') {
+ result[key] = merge(result[key], val);
+ } else {
+ result[key] = val;
+ }
+ }
+
+ for (var i = 0, l = arguments.length; i < l; i++) {
+ forEach(arguments[i], assignValue);
+ }
+ return result;
+}
+
+/**
+ * Function equal to merge with the difference being that no reference
+ * to original objects is kept.
+ *
+ * @see merge
+ * @param {Object} obj1 Object to merge
+ * @returns {Object} Result of all merge properties
+ */
+function deepMerge(/* obj1, obj2, obj3, ... */) {
+ var result = {};
+ function assignValue(val, key) {
+ if (typeof result[key] === 'object' && typeof val === 'object') {
+ result[key] = deepMerge(result[key], val);
+ } else if (typeof val === 'object') {
+ result[key] = deepMerge({}, val);
+ } else {
+ result[key] = val;
+ }
+ }
+
+ for (var i = 0, l = arguments.length; i < l; i++) {
+ forEach(arguments[i], assignValue);
+ }
+ return result;
+}
+
+/**
+ * Extends object a by mutably adding to it the properties of object b.
+ *
+ * @param {Object} a The object to be extended
+ * @param {Object} b The object to copy properties from
+ * @param {Object} thisArg The object to bind function to
+ * @return {Object} The resulting value of object a
+ */
+function extend(a, b, thisArg) {
+ forEach(b, function assignValue(val, key) {
+ if (thisArg && typeof val === 'function') {
+ a[key] = bind(val, thisArg);
+ } else {
+ a[key] = val;
+ }
+ });
+ return a;
+}
+
+module.exports = {
+ isArray: isArray,
+ isArrayBuffer: isArrayBuffer,
+ isBuffer: isBuffer,
+ isFormData: isFormData,
+ isArrayBufferView: isArrayBufferView,
+ isString: isString,
+ isNumber: isNumber,
+ isObject: isObject,
+ isUndefined: isUndefined,
+ isDate: isDate,
+ isFile: isFile,
+ isBlob: isBlob,
+ isFunction: isFunction,
+ isStream: isStream,
+ isURLSearchParams: isURLSearchParams,
+ isStandardBrowserEnv: isStandardBrowserEnv,
+ forEach: forEach,
+ merge: merge,
+ deepMerge: deepMerge,
+ extend: extend,
+ trim: trim
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/card-validator/index.js":
+/*!**********************************************!*\
+ !*** ./node_modules/card-validator/index.js ***!
+ \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+module.exports = {
+ number: __webpack_require__(/*! ./src/card-number */ "./node_modules/card-validator/src/card-number.js"),
+ expirationDate: __webpack_require__(/*! ./src/expiration-date */ "./node_modules/card-validator/src/expiration-date.js"),
+ expirationMonth: __webpack_require__(/*! ./src/expiration-month */ "./node_modules/card-validator/src/expiration-month.js"),
+ expirationYear: __webpack_require__(/*! ./src/expiration-year */ "./node_modules/card-validator/src/expiration-year.js"),
+ cvv: __webpack_require__(/*! ./src/cvv */ "./node_modules/card-validator/src/cvv.js"),
+ postalCode: __webpack_require__(/*! ./src/postal-code */ "./node_modules/card-validator/src/postal-code.js"),
+ creditCardType: __webpack_require__(/*! credit-card-type */ "./node_modules/credit-card-type/index.js")
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/card-validator/src/card-number.js":
+/*!********************************************************!*\
+ !*** ./node_modules/card-validator/src/card-number.js ***!
+ \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var luhn10 = __webpack_require__(/*! ./luhn-10 */ "./node_modules/card-validator/src/luhn-10.js");
+var getCardTypes = __webpack_require__(/*! credit-card-type */ "./node_modules/credit-card-type/index.js");
+
+function verification(card, isPotentiallyValid, isValid) {
+ return {card: card, isPotentiallyValid: isPotentiallyValid, isValid: isValid};
+}
+
+function cardNumber(value, options) {
+ var potentialTypes, cardType, isPotentiallyValid, isValid, i, maxLength;
+
+ options = options || {};
+
+ if (typeof value === 'number') {
+ value = String(value);
+ }
+
+ if (typeof value !== 'string') { return verification(null, false, false); }
+
+ value = value.replace(/\-|\s/g, '');
+
+ if (!/^\d*$/.test(value)) { return verification(null, false, false); }
+
+ potentialTypes = getCardTypes(value);
+
+ if (potentialTypes.length === 0) {
+ return verification(null, false, false);
+ } else if (potentialTypes.length !== 1) {
+ return verification(null, true, false);
+ }
+
+ cardType = potentialTypes[0];
+
+ if (options.maxLength && value.length > options.maxLength) {
+ return verification(cardType, false, false);
+ }
+
+ if (cardType.type === getCardTypes.types.UNIONPAY && options.luhnValidateUnionPay !== true) {
+ isValid = true;
+ } else {
+ isValid = luhn10(value);
+ }
+
+ maxLength = Math.max.apply(null, cardType.lengths);
+ if (options.maxLength) {
+ maxLength = Math.min(options.maxLength, maxLength);
+ }
+
+ for (i = 0; i < cardType.lengths.length; i++) {
+ if (cardType.lengths[i] === value.length) {
+ isPotentiallyValid = value.length < maxLength || isValid;
+
+ return verification(cardType, isPotentiallyValid, isValid);
+ }
+ }
+
+ return verification(cardType, value.length < maxLength, false);
+}
+
+module.exports = cardNumber;
+
+
+/***/ }),
+
+/***/ "./node_modules/card-validator/src/cvv.js":
+/*!************************************************!*\
+ !*** ./node_modules/card-validator/src/cvv.js ***!
+ \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var DEFAULT_LENGTH = 3;
+
+function includes(array, thing) {
+ var i = 0;
+
+ for (; i < array.length; i++) {
+ if (thing === array[i]) { return true; }
+ }
+
+ return false;
+}
+
+function max(array) {
+ var maximum = DEFAULT_LENGTH;
+ var i = 0;
+
+ for (; i < array.length; i++) {
+ maximum = array[i] > maximum ? array[i] : maximum;
+ }
+
+ return maximum;
+}
+
+function verification(isValid, isPotentiallyValid) {
+ return {isValid: isValid, isPotentiallyValid: isPotentiallyValid};
+}
+
+function cvv(value, maxLength) {
+ maxLength = maxLength || DEFAULT_LENGTH;
+ maxLength = maxLength instanceof Array ? maxLength : [maxLength];
+
+ if (typeof value !== 'string') { return verification(false, false); }
+ if (!/^\d*$/.test(value)) { return verification(false, false); }
+ if (includes(maxLength, value.length)) { return verification(true, true); }
+ if (value.length < Math.min.apply(null, maxLength)) { return verification(false, true); }
+ if (value.length > max(maxLength)) { return verification(false, false); }
+
+ return verification(true, true);
+}
+
+module.exports = cvv;
+
+
+/***/ }),
+
+/***/ "./node_modules/card-validator/src/expiration-date.js":
+/*!************************************************************!*\
+ !*** ./node_modules/card-validator/src/expiration-date.js ***!
+ \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var parseDate = __webpack_require__(/*! ./parse-date */ "./node_modules/card-validator/src/parse-date.js");
+var expirationMonth = __webpack_require__(/*! ./expiration-month */ "./node_modules/card-validator/src/expiration-month.js");
+var expirationYear = __webpack_require__(/*! ./expiration-year */ "./node_modules/card-validator/src/expiration-year.js");
+
+function verification(isValid, isPotentiallyValid, month, year) {
+ return {
+ isValid: isValid,
+ isPotentiallyValid: isPotentiallyValid,
+ month: month,
+ year: year
+ };
+}
+
+function expirationDate(value, maxElapsedYear) {
+ var date, monthValid, yearValid, isValidForThisYear;
+
+ if (typeof value === 'string') {
+ value = value.replace(/^(\d\d) (\d\d(\d\d)?)$/, '$1/$2');
+ date = parseDate(value);
+ } else if (value !== null && typeof value === 'object') {
+ date = {
+ month: String(value.month),
+ year: String(value.year)
+ };
+ } else {
+ return verification(false, false, null, null);
+ }
+
+ monthValid = expirationMonth(date.month);
+ yearValid = expirationYear(date.year, maxElapsedYear);
+
+ if (monthValid.isValid) {
+ if (yearValid.isCurrentYear) {
+ isValidForThisYear = monthValid.isValidForThisYear;
+
+ return verification(isValidForThisYear, isValidForThisYear, date.month, date.year);
+ }
+
+ if (yearValid.isValid) {
+ return verification(true, true, date.month, date.year);
+ }
+ }
+
+ if (monthValid.isPotentiallyValid && yearValid.isPotentiallyValid) {
+ return verification(false, true, null, null);
+ }
+
+ return verification(false, false, null, null);
+}
+
+module.exports = expirationDate;
+
+
+/***/ }),
+
+/***/ "./node_modules/card-validator/src/expiration-month.js":
+/*!*************************************************************!*\
+ !*** ./node_modules/card-validator/src/expiration-month.js ***!
+ \*************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+function verification(isValid, isPotentiallyValid, isValidForThisYear) {
+ return {
+ isValid: isValid,
+ isPotentiallyValid: isPotentiallyValid,
+ isValidForThisYear: isValidForThisYear || false
+ };
+}
+
+function expirationMonth(value) {
+ var month, result;
+ var currentMonth = new Date().getMonth() + 1;
+
+ if (typeof value !== 'string') {
+ return verification(false, false);
+ }
+ if (value.replace(/\s/g, '') === '' || value === '0') {
+ return verification(false, true);
+ }
+ if (!/^\d*$/.test(value)) {
+ return verification(false, false);
+ }
+
+ month = parseInt(value, 10);
+
+ if (isNaN(value)) {
+ return verification(false, false);
+ }
+
+ result = month > 0 && month < 13;
+
+ return verification(result, result, result && month >= currentMonth);
+}
+
+module.exports = expirationMonth;
+
+
+/***/ }),
+
+/***/ "./node_modules/card-validator/src/expiration-year.js":
+/*!************************************************************!*\
+ !*** ./node_modules/card-validator/src/expiration-year.js ***!
+ \************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var DEFAULT_VALID_NUMBER_OF_YEARS_IN_THE_FUTURE = 19;
+
+function verification(isValid, isPotentiallyValid, isCurrentYear) {
+ return {
+ isValid: isValid,
+ isPotentiallyValid: isPotentiallyValid,
+ isCurrentYear: isCurrentYear || false
+ };
+}
+
+function expirationYear(value, maxElapsedYear) {
+ var currentFirstTwo, currentYear, firstTwo, len, twoDigitYear, valid, isCurrentYear;
+
+ maxElapsedYear = maxElapsedYear || DEFAULT_VALID_NUMBER_OF_YEARS_IN_THE_FUTURE;
+
+ if (typeof value !== 'string') {
+ return verification(false, false);
+ }
+ if (value.replace(/\s/g, '') === '') {
+ return verification(false, true);
+ }
+ if (!/^\d*$/.test(value)) {
+ return verification(false, false);
+ }
+
+ len = value.length;
+
+ if (len < 2) {
+ return verification(false, true);
+ }
+
+ currentYear = new Date().getFullYear();
+
+ if (len === 3) {
+ // 20x === 20x
+ firstTwo = value.slice(0, 2);
+ currentFirstTwo = String(currentYear).slice(0, 2);
+
+ return verification(false, firstTwo === currentFirstTwo);
+ }
+
+ if (len > 4) {
+ return verification(false, false);
+ }
+
+ value = parseInt(value, 10);
+ twoDigitYear = Number(String(currentYear).substr(2, 2));
+
+ if (len === 2) {
+ isCurrentYear = twoDigitYear === value;
+ valid = value >= twoDigitYear && value <= twoDigitYear + maxElapsedYear;
+ } else if (len === 4) {
+ isCurrentYear = currentYear === value;
+ valid = value >= currentYear && value <= currentYear + maxElapsedYear;
+ }
+
+ return verification(valid, valid, isCurrentYear);
+}
+
+module.exports = expirationYear;
+
+
+/***/ }),
+
+/***/ "./node_modules/card-validator/src/lib/is-array.js":
+/*!*********************************************************!*\
+ !*** ./node_modules/card-validator/src/lib/is-array.js ***!
+ \*********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+// Polyfill taken from .
+
+module.exports = Array.isArray || function (arg) {
+ return Object.prototype.toString.call(arg) === '[object Array]';
+};
+
+
+/***/ }),
+
+/***/ "./node_modules/card-validator/src/luhn-10.js":
+/*!****************************************************!*\
+ !*** ./node_modules/card-validator/src/luhn-10.js ***!
+ \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/*
+ * Luhn algorithm implementation in JavaScript
+ * Copyright (c) 2009 Nicholas C. Zakas
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+
+function luhn10(identifier) {
+ var sum = 0;
+ var alt = false;
+ var i = identifier.length - 1;
+ var num;
+
+ while (i >= 0) {
+ num = parseInt(identifier.charAt(i), 10);
+
+ if (alt) {
+ num *= 2;
+ if (num > 9) {
+ num = (num % 10) + 1; // eslint-disable-line no-extra-parens
+ }
+ }
+
+ alt = !alt;
+
+ sum += num;
+
+ i--;
+ }
+
+ return sum % 10 === 0;
+}
+
+module.exports = luhn10;
+
+
+/***/ }),
+
+/***/ "./node_modules/card-validator/src/parse-date.js":
+/*!*******************************************************!*\
+ !*** ./node_modules/card-validator/src/parse-date.js ***!
+ \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var expirationYear = __webpack_require__(/*! ./expiration-year */ "./node_modules/card-validator/src/expiration-year.js");
+var isArray = __webpack_require__(/*! ./lib/is-array */ "./node_modules/card-validator/src/lib/is-array.js");
+
+function getNumberOfMonthDigitsInDateString(dateString) {
+ var firstCharacter = Number(dateString[0]);
+ var assumedYear;
+
+ /*
+ if the first character in the string starts with `0`,
+ we know that the month will be 2 digits.
+
+ '0122' => {month: '01', year: '22'}
+ */
+ if (firstCharacter === 0) {
+ return 2;
+ }
+
+ /*
+ if the first character in the string starts with
+ number greater than 1, it must be a 1 digit month
+
+ '322' => {month: '3', year: '22'}
+ */
+ if (firstCharacter > 1) {
+ return 1;
+ }
+
+ /*
+ if the first 2 characters make up a number between
+ 13-19, we know that the month portion must be 1
+
+ '139' => {month: '1', year: '39'}
+ */
+ if (firstCharacter === 1 && Number(dateString[1]) > 2) {
+ return 1;
+ }
+
+ /*
+ if the first 2 characters make up a number between
+ 10-12, we check if the year portion would be considered
+ valid if we assumed that the month was 1. If it is
+ not potentially valid, we assume the month must have
+ 2 digits.
+
+ '109' => {month: '10', year: '9'}
+ '120' => {month: '1', year: '20'} // when checked in the year 2019
+ '120' => {month: '12', year: '0'} // when checked in the year 2021
+ */
+ if (firstCharacter === 1) {
+ assumedYear = dateString.substr(1);
+
+ return expirationYear(assumedYear).isPotentiallyValid ? 1 : 2;
+ }
+
+ /*
+ If the length of the value is exactly 5 characters,
+ we assume a full year was passed in, meaning the remaining
+ single leading digit must be the month value.
+
+ '12202' => {month: '1', year: '2202'}
+ */
+ if (dateString.length === 5) {
+ return 1;
+ }
+
+ /*
+ If the length of the value is more than five characters,
+ we assume a full year was passed in addition to the month
+ and therefore the month portion must be 2 digits.
+
+ '112020' => {month: '11', year: '2020'}
+ */
+ if (dateString.length > 5) {
+ return 2;
+ }
+
+ /*
+ By default, the month value is the first value
+ */
+ return 1;
+}
+
+function parseDate(date) {
+ var month, numberOfDigitsInMonth;
+
+ if (/^\d{4}-\d{1,2}$/.test(date)) {
+ date = date.split('-').reverse();
+ } else if (/\//.test(date)) {
+ date = date.split(/\s*\/\s*/g);
+ } else if (/\s/.test(date)) {
+ date = date.split(/ +/g);
+ }
+
+ if (isArray(date)) {
+ return {
+ month: date[0] || '',
+ year: date.slice(1).join()
+ };
+ }
+
+ numberOfDigitsInMonth = getNumberOfMonthDigitsInDateString(date);
+
+ month = date.substr(0, numberOfDigitsInMonth);
+
+ return {
+ month: month,
+ year: date.substr(month.length)
+ };
+}
+
+module.exports = parseDate;
+
+
+/***/ }),
+
+/***/ "./node_modules/card-validator/src/postal-code.js":
+/*!********************************************************!*\
+ !*** ./node_modules/card-validator/src/postal-code.js ***!
+ \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var DEFAULT_MIN_POSTAL_CODE_LENGTH = 3;
+
+function verification(isValid, isPotentiallyValid) {
+ return {isValid: isValid, isPotentiallyValid: isPotentiallyValid};
+}
+
+function postalCode(value, options) {
+ var minLength;
+
+ options = options || {};
+
+ minLength = options.minLength || DEFAULT_MIN_POSTAL_CODE_LENGTH;
+
+ if (typeof value !== 'string') {
+ return verification(false, false);
+ } else if (value.length < minLength) {
+ return verification(false, true);
+ }
+
+ return verification(true, true);
+}
+
+module.exports = postalCode;
+
+
+/***/ }),
+
+/***/ "./node_modules/credit-card-type/index.js":
+/*!************************************************!*\
+ !*** ./node_modules/credit-card-type/index.js ***!
+ \************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var types = __webpack_require__(/*! ./lib/card-types */ "./node_modules/credit-card-type/lib/card-types.js");
+var clone = __webpack_require__(/*! ./lib/clone */ "./node_modules/credit-card-type/lib/clone.js");
+var findBestMatch = __webpack_require__(/*! ./lib/find-best-match */ "./node_modules/credit-card-type/lib/find-best-match.js");
+var isValidInputType = __webpack_require__(/*! ./lib/is-valid-input-type */ "./node_modules/credit-card-type/lib/is-valid-input-type.js");
+var addMatchingCardsToResults = __webpack_require__(/*! ./lib/add-matching-cards-to-results */ "./node_modules/credit-card-type/lib/add-matching-cards-to-results.js");
+
+var testOrder;
+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
+];
+
+testOrder = clone(ORIGINAL_TEST_ORDER);
+
+function findType(type) {
+ return customCards[type] || types[type];
+}
+
+function getAllCardTypes() {
+ return testOrder.map(function (type) {
+ return clone(findType(type));
+ });
+}
+
+function getCardPosition(name, ignoreErrorForNotExisting) {
+ 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 bestMatch;
+ var results = [];
+
+ if (!isValidInputType(cardNumber)) {
+ return [];
+ }
+
+ if (cardNumber.length === 0) {
+ return getAllCardTypes(testOrder);
+ }
+
+ testOrder.forEach(function (type) {
+ var cardConfiguration = findType(type);
+
+ addMatchingCardsToResults(cardNumber, cardConfiguration, results);
+ });
+
+ bestMatch = findBestMatch(results);
+
+ if (bestMatch) {
+ return [bestMatch];
+ }
+
+ return results;
+}
+
+creditCardType.getTypeInfo = function (type) {
+ return clone(findType(type));
+};
+
+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 clonedCard;
+ var originalObject = customCards[cardType] || types[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.');
+ }
+
+ clonedCard = clone(originalObject, true);
+
+ Object.keys(clonedCard).forEach(function (key) {
+ if (updates[key]) {
+ clonedCard[key] = updates[key];
+ }
+ });
+
+ 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(ORIGINAL_TEST_ORDER);
+ customCards = {};
+};
+
+creditCardType.types = cardNames;
+
+module.exports = creditCardType;
+
+
+/***/ }),
+
+/***/ "./node_modules/credit-card-type/lib/add-matching-cards-to-results.js":
+/*!****************************************************************************!*\
+ !*** ./node_modules/credit-card-type/lib/add-matching-cards-to-results.js ***!
+ \****************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var clone = __webpack_require__(/*! ./clone */ "./node_modules/credit-card-type/lib/clone.js");
+var matches = __webpack_require__(/*! ./matches */ "./node_modules/credit-card-type/lib/matches.js");
+
+function addMatchingCardsToResults(cardNumber, cardConfiguration, results) {
+ var i, pattern, patternLength, clonedCardConfiguration;
+
+ for (i = 0; i < cardConfiguration.patterns.length; i++) {
+ pattern = cardConfiguration.patterns[i];
+
+ if (!matches(cardNumber, pattern)) {
+ continue;
+ }
+
+ clonedCardConfiguration = 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;
+ }
+}
+
+module.exports = addMatchingCardsToResults;
+
+
+/***/ }),
+
+/***/ "./node_modules/credit-card-type/lib/card-types.js":
+/*!*********************************************************!*\
+ !*** ./node_modules/credit-card-type/lib/card-types.js ***!
+ \*********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"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, 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,
+ 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;
+
+
+/***/ }),
+
+/***/ "./node_modules/credit-card-type/lib/clone.js":
+/*!****************************************************!*\
+ !*** ./node_modules/credit-card-type/lib/clone.js ***!
+ \****************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+function clone(originalObject) {
+ var dupe;
+
+ if (!originalObject) { return null; }
+
+ dupe = JSON.parse(JSON.stringify(originalObject));
+
+ return dupe;
+}
+
+module.exports = clone;
+
+
+/***/ }),
+
+/***/ "./node_modules/credit-card-type/lib/find-best-match.js":
+/*!**************************************************************!*\
+ !*** ./node_modules/credit-card-type/lib/find-best-match.js ***!
+ \**************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+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 type is
+ return numberOfResultsWithMaxStrengthProperty > 0 &&
+ numberOfResultsWithMaxStrengthProperty === results.length;
+}
+
+function findBestMatch(results) {
+ if (!hasEnoughResultsToDetermineBestMatch(results)) {
+ return;
+ }
+
+ return results.reduce(function (bestMatch, result) { // eslint-disable-line consistent-return
+ 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 (bestMatch.matchStrength < result.matchStrength) {
+ return result;
+ }
+
+ return bestMatch;
+ });
+}
+
+module.exports = findBestMatch;
+
+
+/***/ }),
+
+/***/ "./node_modules/credit-card-type/lib/is-valid-input-type.js":
+/*!******************************************************************!*\
+ !*** ./node_modules/credit-card-type/lib/is-valid-input-type.js ***!
+ \******************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+function isValidInputType(cardNumber) {
+ return typeof cardNumber === 'string' || cardNumber instanceof String;
+}
+
+module.exports = isValidInputType;
+
+
+/***/ }),
+
+/***/ "./node_modules/credit-card-type/lib/matches.js":
+/*!******************************************************!*\
+ !*** ./node_modules/credit-card-type/lib/matches.js ***!
+ \******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+// Adapted from https://github.com/polvo-labs/card-type/blob/aaab11f80fa1939bccc8f24905a06ae3cd864356/src/cardType.js#L37-L42
+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);
+}
+
+module.exports = matches;
+
+
+/***/ }),
+
+/***/ "./node_modules/process/browser.js":
+/*!*****************************************!*\
+ !*** ./node_modules/process/browser.js ***!
+ \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+// shim for using process in browser
+var process = module.exports = {};
+
+// cached from whatever global is present so that test runners that stub it
+// don't break things. But we need to wrap it in a try catch in case it is
+// wrapped in strict mode code which doesn't define any globals. It's inside a
+// function because try/catches deoptimize in certain engines.
+
+var cachedSetTimeout;
+var cachedClearTimeout;
+
+function defaultSetTimout() {
+ throw new Error('setTimeout has not been defined');
+}
+function defaultClearTimeout () {
+ throw new Error('clearTimeout has not been defined');
+}
+(function () {
+ try {
+ if (typeof setTimeout === 'function') {
+ cachedSetTimeout = setTimeout;
+ } else {
+ cachedSetTimeout = defaultSetTimout;
+ }
+ } catch (e) {
+ cachedSetTimeout = defaultSetTimout;
+ }
+ try {
+ if (typeof clearTimeout === 'function') {
+ cachedClearTimeout = clearTimeout;
+ } else {
+ cachedClearTimeout = defaultClearTimeout;
+ }
+ } catch (e) {
+ cachedClearTimeout = defaultClearTimeout;
+ }
+} ())
+function runTimeout(fun) {
+ if (cachedSetTimeout === setTimeout) {
+ //normal enviroments in sane situations
+ return setTimeout(fun, 0);
+ }
+ // if setTimeout wasn't available but was latter defined
+ if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
+ cachedSetTimeout = setTimeout;
+ return setTimeout(fun, 0);
+ }
+ try {
+ // when when somebody has screwed with setTimeout but no I.E. maddness
+ return cachedSetTimeout(fun, 0);
+ } catch(e){
+ try {
+ // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
+ return cachedSetTimeout.call(null, fun, 0);
+ } catch(e){
+ // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
+ return cachedSetTimeout.call(this, fun, 0);
+ }
+ }
+
+
+}
+function runClearTimeout(marker) {
+ if (cachedClearTimeout === clearTimeout) {
+ //normal enviroments in sane situations
+ return clearTimeout(marker);
+ }
+ // if clearTimeout wasn't available but was latter defined
+ if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
+ cachedClearTimeout = clearTimeout;
+ return clearTimeout(marker);
+ }
+ try {
+ // when when somebody has screwed with setTimeout but no I.E. maddness
+ return cachedClearTimeout(marker);
+ } catch (e){
+ try {
+ // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
+ return cachedClearTimeout.call(null, marker);
+ } catch (e){
+ // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
+ // Some versions of I.E. have different rules for clearTimeout vs setTimeout
+ return cachedClearTimeout.call(this, marker);
+ }
+ }
+
+
+
+}
+var queue = [];
+var draining = false;
+var currentQueue;
+var queueIndex = -1;
+
+function cleanUpNextTick() {
+ if (!draining || !currentQueue) {
+ return;
+ }
+ draining = false;
+ if (currentQueue.length) {
+ queue = currentQueue.concat(queue);
+ } else {
+ queueIndex = -1;
+ }
+ if (queue.length) {
+ drainQueue();
+ }
+}
+
+function drainQueue() {
+ if (draining) {
+ return;
+ }
+ var timeout = runTimeout(cleanUpNextTick);
+ draining = true;
+
+ var len = queue.length;
+ while(len) {
+ currentQueue = queue;
+ queue = [];
+ while (++queueIndex < len) {
+ if (currentQueue) {
+ currentQueue[queueIndex].run();
+ }
+ }
+ queueIndex = -1;
+ len = queue.length;
+ }
+ currentQueue = null;
+ draining = false;
+ runClearTimeout(timeout);
+}
+
+process.nextTick = function (fun) {
+ var args = new Array(arguments.length - 1);
+ if (arguments.length > 1) {
+ for (var i = 1; i < arguments.length; i++) {
+ args[i - 1] = arguments[i];
+ }
+ }
+ queue.push(new Item(fun, args));
+ if (queue.length === 1 && !draining) {
+ runTimeout(drainQueue);
+ }
+};
+
+// v8 likes predictible objects
+function Item(fun, array) {
+ this.fun = fun;
+ this.array = array;
+}
+Item.prototype.run = function () {
+ this.fun.apply(null, this.array);
+};
+process.title = 'browser';
+process.browser = true;
+process.env = {};
+process.argv = [];
+process.version = ''; // empty string to avoid regexp issues
+process.versions = {};
+
+function noop() {}
+
+process.on = noop;
+process.addListener = noop;
+process.once = noop;
+process.off = noop;
+process.removeListener = noop;
+process.removeAllListeners = noop;
+process.emit = noop;
+process.prependListener = noop;
+process.prependOnceListener = noop;
+
+process.listeners = function (name) { return [] }
+
+process.binding = function (name) {
+ throw new Error('process.binding is not supported');
+};
+
+process.cwd = function () { return '/' };
+process.chdir = function (dir) {
+ throw new Error('process.chdir is not supported');
+};
+process.umask = function() { return 0; };
+
+
+/***/ }),
+
+/***/ "./resources/js/app.js":
+/*!*****************************!*\
+ !*** ./resources/js/app.js ***!
+ \*****************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+/**
+ * Axios
+ *
+ * Promise based HTTP client for the browser and node.js
+ * https://github.com/axios/axios
+ */
+window.axios = __webpack_require__(/*! axios */ "./node_modules/axios/index.js");
+/**
+ * card-validator
+ *
+ * Validate credit cards as users type.
+ * https://github.com/braintree/card-validator
+ */
+
+window.valid = __webpack_require__(/*! card-validator */ "./node_modules/card-validator/index.js");
+
+/***/ }),
+
+/***/ "./resources/sass/app.scss":
+/*!*********************************!*\
+ !*** ./resources/sass/app.scss ***!
+ \*********************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+// removed by extract-text-webpack-plugin
+
+/***/ }),
+
+/***/ 0:
+/*!*************************************************************!*\
+ !*** multi ./resources/js/app.js ./resources/sass/app.scss ***!
+ \*************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+__webpack_require__(/*! /home/david/Development/invoiceninja/resources/js/app.js */"./resources/js/app.js");
+module.exports = __webpack_require__(/*! /home/david/Development/invoiceninja/resources/sass/app.scss */"./resources/sass/app.scss");
+
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/public/js/clients/payment_methods/authorize-authorize-card.js b/public/js/clients/payment_methods/authorize-authorize-card.js
index 46a2eb6164f8..77dcdc4eb418 100644
--- a/public/js/clients/payment_methods/authorize-authorize-card.js
+++ b/public/js/clients/payment_methods/authorize-authorize-card.js
@@ -1 +1,249 @@
-!function(e){var t={};function n(a){if(t[a])return t[a].exports;var r=t[a]={i:a,l:!1,exports:{}};return e[a].call(r.exports,r,r.exports,n),r.l=!0,r.exports}n.m=e,n.c=t,n.d=function(e,t,a){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(n.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(a,r,function(t){return e[t]}.bind(null,r));return a},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/",n(n.s=2)}({2:function(e,t,n){e.exports=n("6vDv")},"6vDv":function(e,t){function n(e,t){for(var n=0;n"+e.messages.message[0].code+": "+e.messages.message[0].text+"
"):"Ok"===e.messages.resultCode&&(document.getElementById("dataDescriptor").value=e.opaqueData.dataDescriptor,document.getElementById("dataValue").value=e.opaqueData.dataValue,document.getElementById("store_card").value=document.getElementById("store_card_checkbox").checked,document.getElementById("server_response").submit()),this.cardButton.disabled=!1,!1}}])&&n(t.prototype,a),o&&n(t,o),e}())(document.querySelector('meta[name="authorize-public-key"]').content,document.querySelector('meta[name="authorize-login-id"]').content).handle()}});
\ No newline at end of file
+/******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "/";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = 3);
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./resources/js/clients/payments/authorize-credit-card-payment.js":
+/*!************************************************************************!*\
+ !*** ./resources/js/clients/payments/authorize-credit-card-payment.js ***!
+ \************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
+
+/**
+ * Invoice Ninja (https://invoiceninja.com)
+ *
+ * @link https://github.com/invoiceninja/invoiceninja source repository
+ *
+ * @copyright Copyright (c) 2020. Invoice Ninja LLC (https://invoiceninja.com)
+ *
+ * @license https://opensource.org/licenses/AAL
+ */
+var AuthorizeAuthorizeCard = /*#__PURE__*/function () {
+ function AuthorizeAuthorizeCard(publicKey, loginId) {
+ var _this = this;
+
+ _classCallCheck(this, AuthorizeAuthorizeCard);
+
+ _defineProperty(this, "handleAuthorization", function () {
+ var myCard = $('#my-card');
+ var authData = {};
+ authData.clientKey = _this.publicKey;
+ authData.apiLoginID = _this.loginId;
+ var cardData = {};
+ cardData.cardNumber = myCard.CardJs('cardNumber');
+ cardData.month = myCard.CardJs('expiryMonth');
+ cardData.year = myCard.CardJs('expiryYear');
+ ;
+ cardData.cardCode = document.getElementById("cvv").value;
+ var secureData = {};
+ secureData.authData = authData;
+ secureData.cardData = cardData; // If using banking information instead of card information,
+ // send the bankData object instead of the cardData object.
+ //
+ // secureData.bankData = bankData;
+
+ Accept.dispatchData(secureData, _this.responseHandler);
+ return false;
+ });
+
+ _defineProperty(this, "handle", function () {
+ if (_this.cardButton) {
+ _this.cardButton.addEventListener("click", function () {
+ _this.cardButton.disabled = true;
+
+ _this.handleAuthorization();
+ });
+ }
+
+ if (_this.payNowButton) {
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ var _loop = function _loop() {
+ var item = _step.value;
+ item.addEventListener('click', function () {
+ item.disabled = true;
+
+ _this.handlePayNowAction(item.dataset.id);
+ });
+ };
+
+ for (var _iterator = _this.payNowButton[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ _loop();
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator["return"] != null) {
+ _iterator["return"]();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+ }
+
+ return _this;
+ });
+
+ this.publicKey = publicKey;
+ this.loginId = loginId;
+ this.cardHolderName = document.getElementById("cardholder_name");
+ this.cardButton = document.getElementById("card_button");
+ this.payNowButton = document.getElementsByClassName("pay_now_button");
+ }
+
+ _createClass(AuthorizeAuthorizeCard, [{
+ key: "handlePayNowAction",
+ value: function handlePayNowAction(token_hashed_id) {
+ document.getElementById("token").value = token_hashed_id;
+ document.getElementById("server_response").submit();
+ }
+ }, {
+ key: "responseHandler",
+ value: function responseHandler(response) {
+ if (response.messages.resultCode === "Error") {
+ var i = 0;
+ var $errors = $('#errors'); // get the reference of the div
+
+ $errors.show().html("" + response.messages.message[i].code + ": " + response.messages.message[i].text + "
");
+ } else if (response.messages.resultCode === "Ok") {
+ document.getElementById("dataDescriptor").value = response.opaqueData.dataDescriptor;
+ document.getElementById("dataValue").value = response.opaqueData.dataValue;
+ document.getElementById("store_card").value = document.getElementById("store_card_checkbox").checked;
+ document.getElementById("server_response").submit();
+ }
+
+ this.cardButton.disabled = false;
+ return false;
+ }
+ }]);
+
+ return AuthorizeAuthorizeCard;
+}();
+
+var publicKey = document.querySelector('meta[name="authorize-public-key"]').content;
+var loginId = document.querySelector('meta[name="authorize-login-id"]').content;
+/** @handle */
+
+new AuthorizeAuthorizeCard(publicKey, loginId).handle();
+
+/***/ }),
+
+/***/ 3:
+/*!******************************************************************************!*\
+ !*** multi ./resources/js/clients/payments/authorize-credit-card-payment.js ***!
+ \******************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__(/*! /home/david/Development/invoiceninja/resources/js/clients/payments/authorize-credit-card-payment.js */"./resources/js/clients/payments/authorize-credit-card-payment.js");
+
+
+/***/ })
+
+/******/ });
\ No newline at end of file
diff --git a/public/mix-manifest.json b/public/mix-manifest.json
index a63ec60367c6..c4575cde5dd3 100644
--- a/public/mix-manifest.json
+++ b/public/mix-manifest.json
@@ -1,13 +1,13 @@
{
- "/js/app.js": "/js/app.js?id=baf7fef12d5e65c3d9ff",
+ "/js/app.js": "/js/app.js?id=ff27ccddd30b0e7b4db9",
"/css/app.css": "/css/app.css?id=b4f28bc71925ec9b1f74",
"/js/clients/invoices/action-selectors.js": "/js/clients/invoices/action-selectors.js?id=0632d6281202800e0921",
"/js/clients/invoices/payment.js": "/js/clients/invoices/payment.js?id=d7e708d66a9c769b4c6e",
"/js/clients/payment_methods/authorize-ach.js": "/js/clients/payment_methods/authorize-ach.js?id=9e6495d9ae236b3cb5ad",
- "/js/clients/payment_methods/authorize-authorize-card.js": "/js/clients/payment_methods/authorize-authorize-card.js?id=1db80c8670affed9909b",
+ "/js/clients/payment_methods/authorize-authorize-card.js": "/js/clients/payment_methods/authorize-authorize-card.js?id=7f63b5cd48631432a424",
"/js/clients/payment_methods/authorize-stripe-card.js": "/js/clients/payment_methods/authorize-stripe-card.js?id=f4c45f0da9868d840799",
"/js/clients/payments/alipay.js": "/js/clients/payments/alipay.js?id=428ac5b81ed722636e8f",
- "/js/clients/payments/authorize-credit-card-payment.js": "/js/clients/payments/authorize-credit-card-payment.js?id=3a74587f41c617a7cc81",
+ "/js/clients/payments/authorize-credit-card-payment.js": "/js/clients/payments/authorize-credit-card-payment.js?id=a474e669b65198f7ce6f",
"/js/clients/payments/card-js.min.js": "/js/clients/payments/card-js.min.js?id=7200ac43b87bddf1bedc",
"/js/clients/payments/checkout.com.js": "/js/clients/payments/checkout.com.js?id=42d239882b80af83ad22",
"/js/clients/payments/process.js": "/js/clients/payments/process.js?id=49b220081e0d7fa8140b",