Skip to content

Instantly share code, notes, and snippets.

@kirbysayshi
Created November 21, 2013 00:09
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save kirbysayshi/7573618 to your computer and use it in GitHub Desktop.
Save kirbysayshi/7573618 to your computer and use it in GitHub Desktop.
requirebin sketch
var semver = require('semver')
console.log(semver.satisfies('0.3.0-beta1', '^0.3.0'))
require=function(e,t,n){function i(n,s){if(!t[n]){if(!e[n]){var o="function"==typeof require&&require;if(!s&&o)return o(n,!0);if(r)return r(n,!0);throw Error("Cannot find module '"+n+"'")}var u=t[n]={exports:{}};e[n][0].call(u.exports,function(t){var r=e[n][1][t];return i(r?r:t)},u,u.exports)}return t[n].exports}for(var r="function"==typeof require&&require,s=0;n.length>s;s++)i(n[s]);return i}({semver:[function(e,n){n.exports=e("S9zMH4")},{}],S9zMH4:[function(e,n,i){(function(exports){function parse(version,loose){var r=loose?re[LOOSE]:re[FULL];return r.test(version)?new SemVer(version,loose):null}function valid(version,loose){var v=parse(version,loose);return v?v.version:null}function clean(version,loose){var s=parse(version,loose);return s?s.version:null}function SemVer(version,loose){if(version instanceof SemVer){if(version.loose===loose)return version;version=version.version}if(!(this instanceof SemVer))return new SemVer(version,loose);this.loose=loose;var m=version.trim().match(loose?re[LOOSE]:re[FULL]);if(!m)throw new TypeError("Invalid Version: "+version);this.raw=version,this.major=+m[1],this.minor=+m[2],this.patch=+m[3],this.prerelease=m[4]?m[4].split(".").map(function(id){return/^[0-9]+$/.test(id)?+id:id}):[],this.build=m[5]?m[5].split("."):[],this.format()}function inc(version,release,loose){try{return new SemVer(version,loose).inc(release).version}catch(er){return null}}function compareIdentifiers(a,b){var anum=numeric.test(a),bnum=numeric.test(b);return anum&&bnum&&(a=+a,b=+b),anum&&!bnum?-1:bnum&&!anum?1:b>a?-1:a>b?1:0}function rcompareIdentifiers(a,b){return compareIdentifiers(b,a)}function compare(a,b,loose){return new SemVer(a,loose).compare(b)}function compareLoose(a,b){return compare(a,b,!0)}function rcompare(a,b,loose){return compare(b,a,loose)}function sort(list,loose){return list.sort(function(a,b){return exports.compare(a,b,loose)})}function rsort(list,loose){return list.sort(function(a,b){return exports.rcompare(a,b,loose)})}function gt(a,b,loose){return compare(a,b,loose)>0}function lt(a,b,loose){return 0>compare(a,b,loose)}function eq(a,b,loose){return 0===compare(a,b,loose)}function neq(a,b,loose){return 0!==compare(a,b,loose)}function gte(a,b,loose){return compare(a,b,loose)>=0}function lte(a,b,loose){return 0>=compare(a,b,loose)}function cmp(a,op,b,loose){var ret;switch(op){case"===":ret=a===b;break;case"!==":ret=a!==b;break;case"":case"=":case"==":ret=eq(a,b,loose);break;case"!=":ret=neq(a,b,loose);break;case">":ret=gt(a,b,loose);break;case">=":ret=gte(a,b,loose);break;case"<":ret=lt(a,b,loose);break;case"<=":ret=lte(a,b,loose);break;default:throw new TypeError("Invalid operator: "+op)}return ret}function Comparator(comp,loose){if(comp instanceof Comparator){if(comp.loose===loose)return comp;comp=comp.value}return this instanceof Comparator?(this.loose=loose,this.parse(comp),this.value=this.semver===ANY?"":this.operator+this.semver.version,void 0):new Comparator(comp,loose)}function Range(range,loose){if(range instanceof Range&&range.loose===loose)return range;if(!(this instanceof Range))return new Range(range,loose);if(this.loose=loose,this.raw=range,this.set=range.split(/\s*\|\|\s*/).map(function(range){return this.parseRange(range.trim())},this).filter(function(c){return c.length}),!this.set.length)throw new TypeError("Invalid SemVer Range: "+range);this.format()}function toComparators(range,loose){return new Range(range,loose).set.map(function(comp){return comp.map(function(c){return c.value}).join(" ").trim().split(" ")})}function isX(id){return!id||"x"===id.toLowerCase()||"*"===id}function hyphenReplace($0,from,fM,fm,fp,fpr,fb,to,tM,tm,tp,tpr){return from=isX(fM)?"":isX(fm)?">="+fM+".0.0-0":isX(fp)?">="+fM+"."+fm+".0-0":">="+from,to=isX(tM)?"":isX(tm)?"<"+(+tM+1)+".0.0-0":isX(tp)?"<"+tM+"."+(+tm+1)+".0-0":tpr?"<="+tM+"."+tm+"."+tp+"-"+tpr:"<="+to,(from+" "+to).trim()}function testSet(set,version){for(var i=0;set.length>i;i++)if(!set[i].test(version))return!1;return!0}function satisfies(version,range,loose){try{range=new Range(range,loose)}catch(er){return!1}return range.test(version)}function maxSatisfying(versions,range,loose){return versions.filter(function(version){return satisfies(version,range,loose)}).sort(function(a,b){return rcompare(a,b,loose)})[0]||null}function validRange(range,loose){try{return new Range(range,loose).range||"*"}catch(er){return null}}function ltr(version,range,loose){return outside(version,range,"<",loose)}function gtr(version,range,loose){return outside(version,range,">",loose)}function outside(version,range,hilo,loose){version=new SemVer(version,loose),range=new Range(range,loose);var gtfn,ltefn,ltfn,comp,ecomp;switch(hilo){case">":gtfn=gt,ltefn=lte,ltfn=lt,comp=">",ecomp=">=";break;case"<":gtfn=lt,ltefn=gte,ltfn=gt,comp="<",ecomp="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(satisfies(version,range,loose))return!1;for(var i=0;range.set.length>i;++i){var high=(range.set[i],null),low=null;if(comparators.forEach(function(comparator){high=high||comparator,low=low||comparator,gtfn(comparator.semver,high.semver,loose)?high=comparator:ltfn(comparator.semver,low.semver,loose)&&(low=comparator)}),high.operator===comp||high.operator===ecomp)return!1;if((!low.operator||low.operator===comp)&&ltefn(version,low.semver))return!1;if(low.operator===ecomp&&ltfn(version,low.semver))return!1}return!0}"object"==typeof module&&module.exports===exports&&(exports=module.exports=SemVer),exports.SEMVER_SPEC_VERSION="2.0.0";var re=exports.re=[],src=exports.src=[],R=0,NUMERICIDENTIFIER=R++;src[NUMERICIDENTIFIER]="0|[1-9]\\d*";var NUMERICIDENTIFIERLOOSE=R++;src[NUMERICIDENTIFIERLOOSE]="[0-9]+";var NONNUMERICIDENTIFIER=R++;src[NONNUMERICIDENTIFIER]="\\d*[a-zA-Z-][a-zA-Z0-9-]*";var MAINVERSION=R++;src[MAINVERSION]="("+src[NUMERICIDENTIFIER]+")\\."+"("+src[NUMERICIDENTIFIER]+")\\."+"("+src[NUMERICIDENTIFIER]+")";var MAINVERSIONLOOSE=R++;src[MAINVERSIONLOOSE]="("+src[NUMERICIDENTIFIERLOOSE]+")\\."+"("+src[NUMERICIDENTIFIERLOOSE]+")\\."+"("+src[NUMERICIDENTIFIERLOOSE]+")";var PRERELEASEIDENTIFIER=R++;src[PRERELEASEIDENTIFIER]="(?:"+src[NUMERICIDENTIFIER]+"|"+src[NONNUMERICIDENTIFIER]+")";var PRERELEASEIDENTIFIERLOOSE=R++;src[PRERELEASEIDENTIFIERLOOSE]="(?:"+src[NUMERICIDENTIFIERLOOSE]+"|"+src[NONNUMERICIDENTIFIER]+")";var PRERELEASE=R++;src[PRERELEASE]="(?:-("+src[PRERELEASEIDENTIFIER]+"(?:\\."+src[PRERELEASEIDENTIFIER]+")*))";var PRERELEASELOOSE=R++;src[PRERELEASELOOSE]="(?:-?("+src[PRERELEASEIDENTIFIERLOOSE]+"(?:\\."+src[PRERELEASEIDENTIFIERLOOSE]+")*))";var BUILDIDENTIFIER=R++;src[BUILDIDENTIFIER]="[0-9A-Za-z-]+";var BUILD=R++;src[BUILD]="(?:\\+("+src[BUILDIDENTIFIER]+"(?:\\."+src[BUILDIDENTIFIER]+")*))";var FULL=R++,FULLPLAIN="v?"+src[MAINVERSION]+src[PRERELEASE]+"?"+src[BUILD]+"?";src[FULL]="^"+FULLPLAIN+"$";var LOOSEPLAIN="[v=\\s]*"+src[MAINVERSIONLOOSE]+src[PRERELEASELOOSE]+"?"+src[BUILD]+"?",LOOSE=R++;src[LOOSE]="^"+LOOSEPLAIN+"$";var GTLT=R++;src[GTLT]="((?:<|>)?=?)";var XRANGEIDENTIFIERLOOSE=R++;src[XRANGEIDENTIFIERLOOSE]=src[NUMERICIDENTIFIERLOOSE]+"|x|X|\\*";var XRANGEIDENTIFIER=R++;src[XRANGEIDENTIFIER]=src[NUMERICIDENTIFIER]+"|x|X|\\*";var XRANGEPLAIN=R++;src[XRANGEPLAIN]="[v=\\s]*("+src[XRANGEIDENTIFIER]+")"+"(?:\\.("+src[XRANGEIDENTIFIER]+")"+"(?:\\.("+src[XRANGEIDENTIFIER]+")"+"(?:("+src[PRERELEASE]+")"+")?)?)?";var XRANGEPLAINLOOSE=R++;src[XRANGEPLAINLOOSE]="[v=\\s]*("+src[XRANGEIDENTIFIERLOOSE]+")"+"(?:\\.("+src[XRANGEIDENTIFIERLOOSE]+")"+"(?:\\.("+src[XRANGEIDENTIFIERLOOSE]+")"+"(?:("+src[PRERELEASELOOSE]+")"+")?)?)?";var XRANGE=R++;src[XRANGE]="^"+src[GTLT]+"\\s*"+src[XRANGEPLAIN]+"$";var XRANGELOOSE=R++;src[XRANGELOOSE]="^"+src[GTLT]+"\\s*"+src[XRANGEPLAINLOOSE]+"$";var LONETILDE=R++;src[LONETILDE]="(?:~>?)";var TILDETRIM=R++;src[TILDETRIM]="(\\s*)"+src[LONETILDE]+"\\s+",re[TILDETRIM]=RegExp(src[TILDETRIM],"g");var tildeTrimReplace="$1~",TILDE=R++;src[TILDE]="^"+src[LONETILDE]+src[XRANGEPLAIN]+"$";var TILDELOOSE=R++;src[TILDELOOSE]="^"+src[LONETILDE]+src[XRANGEPLAINLOOSE]+"$";var LONECARET=R++;src[LONECARET]="(?:\\^)";var CARETTRIM=R++;src[CARETTRIM]="(\\s*)"+src[LONECARET]+"\\s+",re[CARETTRIM]=RegExp(src[CARETTRIM],"g");var caretTrimReplace="$1^",CARET=R++;src[CARET]="^"+src[LONECARET]+src[XRANGEPLAIN]+"$";var CARETLOOSE=R++;src[CARETLOOSE]="^"+src[LONECARET]+src[XRANGEPLAINLOOSE]+"$";var COMPARATORLOOSE=R++;src[COMPARATORLOOSE]="^"+src[GTLT]+"\\s*("+LOOSEPLAIN+")$|^$";var COMPARATOR=R++;src[COMPARATOR]="^"+src[GTLT]+"\\s*("+FULLPLAIN+")$|^$";var COMPARATORTRIM=R++;src[COMPARATORTRIM]="(\\s*)"+src[GTLT]+"\\s*("+LOOSEPLAIN+"|"+src[XRANGEPLAIN]+")",re[COMPARATORTRIM]=RegExp(src[COMPARATORTRIM],"g");var comparatorTrimReplace="$1$2$3",HYPHENRANGE=R++;src[HYPHENRANGE]="^\\s*("+src[XRANGEPLAIN]+")"+"\\s+-\\s+"+"("+src[XRANGEPLAIN]+")"+"\\s*$";var HYPHENRANGELOOSE=R++;src[HYPHENRANGELOOSE]="^\\s*("+src[XRANGEPLAINLOOSE]+")"+"\\s+-\\s+"+"("+src[XRANGEPLAINLOOSE]+")"+"\\s*$";var STAR=R++;src[STAR]="(<|>)?=?\\s*\\*";for(var i=0;R>i;i++)re[i]||(re[i]=RegExp(src[i]));exports.parse=parse,exports.valid=valid,exports.clean=clean,exports.SemVer=SemVer,SemVer.prototype.format=function(){return this.version=this.major+"."+this.minor+"."+this.patch,this.prerelease.length&&(this.version+="-"+this.prerelease.join(".")),this.version},SemVer.prototype.inspect=function(){return'<SemVer "'+this+'">'},SemVer.prototype.toString=function(){return this.version},SemVer.prototype.compare=function(other){return other instanceof SemVer||(other=new SemVer(other,this.loose)),this.compareMain(other)||this.comparePre(other)},SemVer.prototype.compareMain=function(other){return other instanceof SemVer||(other=new SemVer(other,this.loose)),compareIdentifiers(this.major,other.major)||compareIdentifiers(this.minor,other.minor)||compareIdentifiers(this.patch,other.patch)},SemVer.prototype.comparePre=function(other){if(other instanceof SemVer||(other=new SemVer(other,this.loose)),this.prerelease.length&&!other.prerelease.length)return-1;if(!this.prerelease.length&&other.prerelease.length)return 1;if(!this.prerelease.lenth&&!other.prerelease.length)return 0;var i=0;do{var a=this.prerelease[i],b=other.prerelease[i];if(void 0===a&&void 0===b)return 0;if(void 0===b)return 1;if(void 0===a)return-1;if(a!==b)return compareIdentifiers(a,b)}while(++i)},SemVer.prototype.inc=function(release){switch(release){case"major":this.major++,this.minor=-1;case"minor":this.minor++,this.patch=-1;case"patch":this.patch++,this.prerelease=[];break;case"prerelease":if(0===this.prerelease.length)this.prerelease=[0];else{for(var i=this.prerelease.length;--i>=0;)"number"==typeof this.prerelease[i]&&(this.prerelease[i]++,i=-2);-1===i&&this.prerelease.push(0)}break;default:throw Error("invalid increment argument: "+release)}return this.format(),this},exports.inc=inc,exports.compareIdentifiers=compareIdentifiers;exports.rcompareIdentifiers=rcompareIdentifiers,exports.compare=compare,exports.compareLoose=compareLoose,exports.rcompare=rcompare,exports.sort=sort,exports.rsort=rsort,exports.gt=gt,exports.lt=lt,exports.eq=eq,exports.neq=neq,exports.gte=gte,exports.lte=lte,exports.cmp=cmp,exports.Comparator=Comparator;var ANY={};Comparator.prototype.parse=function(comp){var r=this.loose?re[COMPARATORLOOSE]:re[COMPARATOR],m=comp.match(r);if(!m)throw new TypeError("Invalid comparator: "+comp);this.operator=m[1],m[2]?(this.semver=new SemVer(m[2],this.loose),"<"!==this.operator||this.semver.prerelease.length||(this.semver.prerelease=["0"],this.semver.format())):this.semver=ANY},Comparator.prototype.inspect=function(){return'<SemVer Comparator "'+this+'">'},Comparator.prototype.toString=function(){return this.value},Comparator.prototype.test=function(version){return this.semver===ANY?!0:cmp(version,this.operator,this.semver,this.loose)},exports.Range=Range,Range.prototype.inspect=function(){return'<SemVer Range "'+this.range+'">'},Range.prototype.format=function(){return this.range=this.set.map(function(comps){return comps.join(" ").trim()}).join("||").trim(),this.range},Range.prototype.toString=function(){return this.range},Range.prototype.parseRange=function(range){var loose=this.loose;range=range.trim();var hr=loose?re[HYPHENRANGELOOSE]:re[HYPHENRANGE];range=range.replace(hr,hyphenReplace),range=range.replace(re[COMPARATORTRIM],comparatorTrimReplace),range=range.replace(re[TILDETRIM],tildeTrimReplace),range=range.replace(re[CARETTRIM],caretTrimReplace),range=range.split(/\s+/).join(" ");var compRe=loose?re[COMPARATORLOOSE]:re[COMPARATOR],set=range.split(" ").map(function(comp){return parseComparator(comp,loose)}).join(" ").split(/\s+/);return this.loose&&(set=set.filter(function(comp){return!!comp.match(compRe)})),set=set.map(function(comp){return new Comparator(comp,loose)})},exports.toComparators=toComparators,Range.prototype.test=function(version){if(!version)return!1;for(var i=0;this.set.length>i;i++)if(testSet(this.set[i],version))return!0;return!1},exports.satisfies=satisfies,exports.maxSatisfying=maxSatisfying,exports.validRange=validRange,exports.ltr=ltr,exports.gtr=gtr,exports.outside=outside,"function"==typeof define&&define.amd&&define(exports)})("object"==typeof i?i:"function"==typeof define&&define.amd?{}:semver={})},{}]},{},[]);var semver=require("semver");console.log(semver.satisfies("0.3.0-beta1","^0.3.0"));
<style type='text/css'>html, body { margin: 0; padding: 0; border: 0; }
body, html { height: 100%; width: 100%; }</style>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment