1(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.CardType = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ 2 'use strict'; 3 4 Object.defineProperty(exports, "__esModule", { 5 value: true 6 }); 7 8 var _slicedToArray = function () { 9 function sliceIterator(arr, i) { 10 var _arr = [];var _n = true;var _d = false;var _e = undefined;try { 11 for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { 12 _arr.push(_s.value);if (i && _arr.length === i) break; 13 } 14 } catch (err) { 15 _d = true;_e = err; 16 } finally { 17 try { 18 if (!_n && _i["return"]) _i["return"](); 19 } finally { 20 if (_d) throw _e; 21 } 22 }return _arr; 23 }return function (arr, i) { 24 if (Array.isArray(arr)) { 25 return arr; 26 } else if (Symbol.iterator in Object(arr)) { 27 return sliceIterator(arr, i); 28 } else { 29 throw new TypeError("Invalid attempt to destructure non-iterable instance"); 30 } 31 }; 32 }(); 33 34 exports.default = cardType; 35 36 var _cards = require('./cards'); 37 38 var _cards2 = _interopRequireDefault(_cards); 39 40 function _interopRequireDefault(obj) { 41 return obj && obj.__esModule ? obj : { default: obj }; 42 } 43 44 function cardType(card) { 45 var bin = getBin(card); 46 var detectedTypes = []; 47 48 _cards2.default.forEach(function (card) { 49 card.pattern.forEach(function (pattern) { 50 if (checkCard(bin, pattern)) { 51 detectedTypes.unshift(card.name); 52 } 53 }); 54 }); 55 56 return detectedTypes[0] || ''; 57 } 58 59 function getBin(value) { 60 return value.toString().replace(/\D/g, '').substr(0, 6); 61 } 62 63 function checkCard(bin, pattern) { 64 return Array.isArray(pattern) ? checkRange(bin, pattern) : checkPattern(bin, pattern); 65 } 66 67 function checkPattern(bin, pattern) { 68 if (pattern instanceof RegExp) { 69 return pattern.test(bin); 70 } 71 72 pattern = pattern.toString(); 73 return bin.substr(0, pattern.length) === pattern; 74 } 75 76 function checkRange(bin, _ref) { 77 var _ref2 = _slicedToArray(_ref, 2), 78 min = _ref2[0], 79 max = _ref2[1]; 80 81 var length = min.toString().length; 82 var value = parseInt(bin.substr(0, length)); 83 84 return value >= min && value <= max; 85 } 86 87 },{"./cards":2}],2:[function(require,module,exports){ 88 'use strict'; 89 90 Object.defineProperty(exports, "__esModule", { 91 value: true 92 }); 93 exports.default = [{ 94 name: 'visa', 95 pattern: [4] 96 }, { 97 name: 'mastercard', 98 pattern: [[51, 55], [2221, 2720]] 99 }, { 100 name: 'amex', 101 pattern: [34, 37] 102 }, { 103 name: 'diners', 104 pattern: [36, 309, [300, 305], [38, 39]] 105 }, { 106 name: 'unionpay', 107 pattern: [62] 108 }, { 109 name: 'discover', 110 pattern: [6011, [622126, 622925], [644, 649], 65] 111 }, { 112 name: 'jcb', 113 pattern: [35] 114 }, { 115 name: 'maestro', 116 pattern: [5018, 502, 503, 506, 56, 57, 58, 639, 6220, 67] 117 }, { 118 name: 'elo', 119 pattern: [401178, 401179, 431274, 438935, 451416, 457393, 457631, 457632, 504175, 627780, 636297, 636297, 636368, [506699, 506778], [509000, 509999], [650031, 650033], [650035, 650051], [650405, 650439], [650485, 650538], [650541, 650598], [650700, 650718], [650720, 650727], [650901, 650920], [651652, 651679], [655000, 655019], [655021, 655058], [650921, 650978]] 120 }, { 121 name: 'hipercard', 122 pattern: [384100, 384140, 384160, /^60(?!11)/] 123 }]; 124 125 },{}],3:[function(require,module,exports){ 126 'use strict'; 127 128 Object.defineProperty(exports, "__esModule", { 129 value: true 130 }); 131 132 var _cards = require('./cards'); 133 134 Object.defineProperty(exports, 'cards', { 135 enumerable: true, 136 get: function get() { 137 return _interopRequireDefault(_cards).default; 138 } 139 }); 140 141 var _cardType = require('./cardType'); 142 143 Object.defineProperty(exports, 'cardType', { 144 enumerable: true, 145 get: function get() { 146 return _interopRequireDefault(_cardType).default; 147 } 148 }); 149 150 function _interopRequireDefault(obj) { 151 return obj && obj.__esModule ? obj : { default: obj }; 152 } 153 154 },{"./cardType":1,"./cards":2}]},{},[3])(3) 155}); 156//# sourceMappingURL=card-type.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.