Skip to content

Instantly share code, notes, and snippets.

@bendrucker
Last active August 29, 2015 14:18
Show Gist options
  • Select an option

  • Save bendrucker/0ad41741e4d7ff53b2a1 to your computer and use it in GitHub Desktop.

Select an option

Save bendrucker/0ad41741e4d7ff53b2a1 to your computer and use it in GitHub Desktop.
requirebin sketch
var card = require('creditcards').card;
console.log('Validates as', card.type('6759000000000000'));
console.log('Eagerly detected as', card.type('67', true));
require=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){var sentence=require("sentence-case");module.exports=function(string){return sentence(string).replace(/\./g,"_").replace(/ (\w)/g,function(_,$1){return $1.toUpperCase()})}},{"sentence-case":2}],2:[function(require,module,exports){module.exports=function(string){return String(string).replace(/([a-z])([A-Z0-9])/g,"$1 $2").replace(/[^a-zA-Z0-9]+/g,".").replace(/(?!\d\.\d)(^|.)\./g,"$1 ").replace(/^ | $/g,"").toLowerCase()}},{}],3:[function(require,module,exports){module.exports=extend;function extend(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(source.hasOwnProperty(key)){target[key]=source[key]}}}return target}},{}],4:[function(require,module,exports){"use strict";exports.types=require("./types")},{"./types":6}],5:[function(require,module,exports){"use strict";var extend=require("xtend/mutable");function CardType(name,config){extend(this,{name:name},config)}CardType.prototype.cvcLength=3;CardType.prototype.luhn=true;CardType.prototype.groupPattern=/(\d{1,4})(\d{1,4})?(\d{1,4})?(\d{1,4})?/;CardType.prototype.group=function(number){return(number.match(this.groupPattern)||[]).slice(1).filter(identity)};CardType.prototype.test=function(number,eager){return this[eager?"eagerPattern":"pattern"].test(number)};module.exports=CardType;function identity(value){return value}},{"xtend/mutable":3}],6:[function(require,module,exports){"use strict";var Type=require("./type");var group19=/(\d{1,4})(\d{1,4})?(\d{1,4})?(\d{1,4})?(\d{1,3})?/;exports.visa=new Type("Visa",{pattern:/^4\d{12}(\d{3})?$/,eagerPattern:/^4/});exports.maestro=new Type("Maestro",{pattern:/^(?:5[0678]\d\d|6304|6390|67\d\d)\d{8,15}$/,eagerPattern:/^(5(018|0[23]|[68])|6[37])/,groupPattern:group19});exports.forbrugsforeningen=new Type("Forbrugsforeningen",{pattern:/^600722\d{10}$/,eagerPattern:/^600/});exports.dankort=new Type("Dankort",{pattern:/^5019\d{12}$/,eagerPattern:/^5019/});exports.masterCard=new Type("MasterCard",{pattern:/^5[1-5]\d{14}$/,eagerPattern:/^5[1-5]/});exports.americanExpress=new Type("American Express",{pattern:/^3[47]\d{13}$/,eagerPattern:/^3[47]/,groupPattern:/(\d{1,4})(\d{1,6})?(\d{1,5})?/,cvcLength:4});exports.dinersClub=new Type("Diners Club",{pattern:/^3(0[0-5]|[68]\d)\d{11}$/,eagerPattern:/^3(0|[68])/,groupPattern:/(\d{1,4})?(\d{1,6})?(\d{1,4})?/});exports.discover=new Type("Discover",{pattern:/^6(011|[45]\d{2})\d{12}$/,eagerPattern:/^6([45]|01)/});exports.jcb=new Type("JCB",{pattern:/^35\d{14}$/,eagerPattern:/^35/});exports.unionPay=new Type("UnionPay",{pattern:/^62[0-5]\d{13,16}$/,eagerPattern:/^62/,groupPattern:group19,luhn:false})},{"./type":5}],7:[function(require,module,exports){"use strict";module.exports=function(array){return function luhn(number){if(!number)return false;var length=number.length;var bit=1;var sum=0;var value;while(length){value=parseInt(number.charAt(--length),10);sum+=(bit^=1)?array[value]:value}return sum&&sum%10===0}}([0,2,4,6,8,1,3,5,7,9])},{}],8:[function(require,module,exports){"use strict";var camel=require("camel-case");var luhn=require("fast-luhn");exports.types=require("creditcards-types").types;exports.parse=function(number){if(typeof number!=="string")return"";return number.replace(/[^\d]/g,"")};exports.type=function(number,eager){for(var typeName in exports.types){var type=exports.types[typeName];if(type.test(number,eager))return exports.types[typeName].name}};exports.luhn=luhn;exports.isValid=function(number,type){if(!type)type=exports.type(number);type=exports.types[camel(type)];if(!type)return false;return(!type.luhn||luhn(number))&&type.test(number)}},{"camel-case":1,"creditcards-types":4,"fast-luhn":7}],9:[function(require,module,exports){"use strict";var camel=require("camel-case");var card=require("./card");var cvcRegex=/^\d{3,4}$/;exports.isValid=function(cvc,type){if(typeof cvc!=="string")return false;if(!cvcRegex.test(cvc))return false;if(!type)return true;return card.types[camel(type)].cvcLength===cvc.length}},{"./card":8,"camel-case":1}],10:[function(require,module,exports){"use strict";exports.isPast=function(month,year){return Date.now()>=new Date(year,month)};exports.month={parse:function(month){return~~month||void 0},isValid:function(month){if(typeof month!=="number")return false;return month>=1&&month<=12}};var base=(new Date).getFullYear().toString().substr(0,2);function twoDigit(number){return number>=10?number:"0"+number}exports.year={parse:function(year,pad){year=~~year;if(!pad)return year||void 0;return~~(base+twoDigit(year))},format:function(year,strip){year=year.toString();return strip?year.substr(2,4):year},isValid:function(year){if(typeof year!=="number")return false;return year>0},isPast:function(year){return(new Date).getFullYear()>year}}},{}],creditcards:[function(require,module,exports){"use strict";var card=exports.card=require("./card");var cvc=exports.cvc=require("./cvc");var expiration=exports.expiration=require("./expiration");exports.validate=function(cardObj){return{card:{type:card.type(cardObj.number),number:cardObj.number,expirationMonth:cardObj.expirationMonth,expirationYear:cardObj.expirationYear,cvc:cardObj.cvc},validCardNumber:card.luhn(cardObj.number),validExpirationMonth:expiration.month.isValid(cardObj.expirationMonth),validExpirationYear:expiration.year.isValid(cardObj.expirationYear),validCvc:cvc.isValid(cardObj.cvc),expired:expiration.isPast(cardObj.expirationMonth,cardObj.expirationYear)}}},{"./card":8,"./cvc":9,"./expiration":10}]},{},[]);var card=require("creditcards").card;console.log("Validates as",card.type("6759000000000000"));console.log("Eagerly detected as",card.type("67",true));
{
"name": "requirebin-sketch",
"version": "1.0.0",
"dependencies": {
"creditcards": "1.4.0"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment