semver-ts
Version:
Tree-shakable, lightweight, drop-in replacement of semver with correct type definition
1 lines • 7.13 kB
JavaScript
var semver=function(e){"use strict";var r=Number.MAX_SAFE_INTEGER||9007199254740991,t=/^v?(0|[1-9]\d{0,256})\.(0|[1-9]\d{0,256})\.(0|[1-9]\d{0,256})(?:-((?:0|[1-9]\d{0,256}|\d{0,256}[a-zA-Z-][a-zA-Z0-9-]{0,250})(?:\.(?:0|[1-9]\d{0,256}|\d{0,256}[a-zA-Z-][a-zA-Z0-9-]{0,250}))*))?(?:\+([a-zA-Z0-9-]{1,250}(?:\.[a-zA-Z0-9-]{1,250})*))?$/,n=/^[v=\s]*(\d{1,256})\.(\d{1,256})\.(\d{1,256})(?:-?((?:\d{1,256}|\d{0,256}[a-zA-Z-][a-zA-Z0-9-]{0,250})(?:\.(?:\d{1,256}|\d{0,256}[a-zA-Z-][a-zA-Z0-9-]{0,250}))*))?(?:\+([a-zA-Z0-9-]{1,250}(?:\.[a-zA-Z0-9-]{1,250})*))?$/,a=/(^|[^\d])(\d{1,16})(?:\.(\d{1,16}))?(?:\.(\d{1,16}))?(?:(?:-((?:0|[1-9]\d{0,256}|\d{0,256}[a-zA-Z-][a-zA-Z0-9-]{0,250})(?:\.(?:0|[1-9]\d{0,256}|\d{0,256}[a-zA-Z-][a-zA-Z0-9-]{0,250}))*)))?(?:(?:\+([a-zA-Z0-9-]{1,250}(?:\.[a-zA-Z0-9-]{1,250})*)))?(?:$|[^\d])/,i=/(^|[^\d])(\d{1,16})(?:\.(\d{1,16}))?(?:\.(\d{1,16}))?(?:$|[^\d])/,l=/(^|[^\d])(\d{1,16})(?:\.(\d{1,16}))?(?:\.(\d{1,16}))?(?:(?:-((?:0|[1-9]\d{0,256}|\d{0,256}[a-zA-Z-][a-zA-Z0-9-]{0,250})(?:\.(?:0|[1-9]\d{0,256}|\d{0,256}[a-zA-Z-][a-zA-Z0-9-]{0,250}))*)))?(?:(?:\+([a-zA-Z0-9-]{1,250}(?:\.[a-zA-Z0-9-]{1,250})*)))?(?:$|[^\d])/g,o=/(^|[^\d])(\d{1,16})(?:\.(\d{1,16}))?(?:\.(\d{1,16}))?(?:$|[^\d])/g,s=/^(?:-((?:0|[1-9]\d{0,256}|\d{0,256}[a-zA-Z-][a-zA-Z0-9-]{0,250})(?:\.(?:0|[1-9]\d{0,256}|\d{0,256}[a-zA-Z-][a-zA-Z0-9-]{0,250}))*))$/,c=/^(?:-?((?:\d{1,256}|\d{0,256}[a-zA-Z-][a-zA-Z0-9-]{0,250})(?:\.(?:\d{1,256}|\d{0,256}[a-zA-Z-][a-zA-Z0-9-]{0,250}))*))$/,p=e=>!!e&&("object"!=typeof e||!!e.loose),d=(e,r,t,n,a)=>{let i=`${e}.${r}.${t}`;n.length&&(i+=`-${n.join(".")}`);let l=i;return a.length&&(l+=`+${a.join(".")}`),[i,l]},h=(e,a,i)=>{try{return((e,a)=>{if("string"!=typeof e)throw new TypeError(`Invalid version. Must be a string. Got type "${typeof e}".`);if(e.length>256)throw new TypeError("version is longer than 256 characters");const i=p(a),l=e.trim().match(i?n:t);if(!l)throw new TypeError(`Invalid Version: ${e}`);const o=+l[1],s=+l[2],c=+l[3];if(o>r||o<0)throw new TypeError("Invalid major version");if(s>r||s<0)throw new TypeError("Invalid minor version");if(c>r||c<0)throw new TypeError("Invalid patch version");const h=l[4]?l[4].split(".").map((e=>{if(/^[0-9]+$/.test(e)){const t=+e;if(t>=0&&t<r)return t}return e})):[],u=l[5]?l[5].split("."):[],[m,f]=d(o,s,c,h,u);return{version:m,fullVersion:f,major:o,minor:s,patch:c,prerelease:h,build:u}})(e,a)}catch(e){if(!i)return null;throw e}},u=(e,r)=>{const t=h(e.trim().replace(/^[=v]+/,""),r);return t?t.version:null},m=/^[0-9]+$/,f=(e,r)=>{let t=e.toString(),n=r.toString();const a=m.test(t),i=m.test(n);return a&&i&&(t=+t,n=+n),t===n?0:a&&!i?-1:i&&!a?1:t<n?-1:1},g=(e,r)=>f(e.major,r.major)||f(e.minor,r.minor)||f(e.patch,r.patch),v=(e,r)=>e.version===r.version?0:g(e,r)||((e,r)=>{if(e.length&&!r.length)return-1;if(!e.length&&r.length)return 1;if(!e.length&&!r.length)return 0;let t=0;for(;;){const n=e[t],a=r[t];if(void 0===n&&void 0===a)return 0;if(void 0===a)return 1;if(void 0===n)return-1;if(n!==a)return f(n,a);t++}})(e.prerelease,r.prerelease),A=(e,r,t)=>v(h(e,t,!0),h(r,t,!0)),z=(e,r,t)=>0===A(e,r,t),Z=(e,r,t)=>A(e,r,t)>0,$=(e,r,t)=>A(e,r,t)>=0,w=(e,r,t)=>A(e,r,t)<0,b=(e,r,t)=>A(e,r,t)<=0,j=(e,r,t)=>0!==A(e,r,t),y=(e,r)=>{let t=e;if("number"==typeof t&&(t=String(t)),"string"!=typeof t)return null;let n=null;if((r=r||{}).rtl){const e=r.includePrerelease?l:o;let a;for(;(a=e.exec(t))&&(!n||n.index+n[0].length!==t.length);)n&&a.index+a[0].length===n.index+n[0].length||(n=a),e.lastIndex=a.index+a[1].length+a[2].length;e.lastIndex=-1}else n=t.match(r.includePrerelease?a:i);if(null===n)return null;const s=n[2],c=n[3]||"0",p=n[4]||"0",d=r.includePrerelease&&n[5]?`-${n[5]}`:"",u=r.includePrerelease&&n[6]?`+${n[6]}`:"",m=h(`${s}.${c}.${p}${d}${u}`,r);return m?m.fullVersion:null},E=(e,r,t)=>{const n=h(e,t,!0),a=h(r,t,!0);return v(n,a)||((e,r)=>{let t=0;for(;;){const n=e[t],a=r[t];if(void 0===n&&void 0===a)return 0;if(void 0===a)return 1;if(void 0===n)return-1;if(n!==a)return f(n,a);t++}})(n.build,a.build)},I=(e,r)=>A(e,r,!0),k=(e,r)=>{const t=h(e,!1,!0),n=h(r,!1,!0),a=v(t,n);if(0===a)return null;const i=a>0,l=i?t:n,o=i?n:t,s=!!l.prerelease.length;if(!!o.prerelease.length&&!s){if(!o.patch&&!o.minor)return"major";if(0===g(o,l))return o.minor&&!o.patch?"minor":"patch"}const c=s?"pre":"";return t.major!==n.major?c+"major":t.minor!==n.minor?c+"minor":t.patch!==n.patch?c+"patch":"prerelease"},x=(e,r,t,n,a)=>{if(0===r||r.startsWith("pre")){if(!t&&!1===n)throw new Error("invalid increment argument: identifier is empty");if(t){const e=a?c:s,r=`-${t}`.match(e);if(!r||r[1]!==t)throw new Error(`invalid identifier: ${t}`)}}switch(r){case"premajor":e.prerelease.length=0,e.patch=0,e.minor=0,e.major++,x(e,0,t,n,a);break;case"preminor":e.prerelease.length=0,e.patch=0,e.minor++,x(e,0,t,n,a);break;case"prepatch":e.prerelease.length=0,x(e,"patch",t,n,a),x(e,0,t,n,a);break;case"prerelease":0===e.prerelease.length&&x(e,"patch",t,n,a),x(e,0,t,n,a);break;case"release":if(0===e.prerelease.length)throw new Error(`version ${e.fullVersion} is not a prerelease`);e.prerelease.length=0;break;case"major":0===e.minor&&0===e.patch&&0!==e.prerelease.length||e.major++,e.minor=0,e.patch=0,e.prerelease.length=0;break;case"minor":0===e.patch&&0!==e.prerelease.length||e.minor++,e.patch=0,e.prerelease.length=0;break;case"patch":0===e.prerelease.length&&e.patch++,e.prerelease.length=0;break;case 0:{const r=Number(n)?1:0;if(0===e.prerelease.length)e.prerelease=[r];else{let a=e.prerelease.length;for(;--a>=0;)"number"==typeof e.prerelease[a]&&(e.prerelease[a]++,a=-2);if(-1===a){if(t===e.prerelease.join(".")&&!1===n)throw new Error("invalid increment argument: identifier already exists");e.prerelease.push(r)}}if(t){let a=[t,r];!1===n&&(a=[t]),0===f(e.prerelease[0],t)?isNaN(e.prerelease[1])&&(e.prerelease=a):e.prerelease=a}break}default:throw new Error(`invalid increment argument: ${r}`)}const{major:i,minor:l,patch:o,prerelease:p,build:h}=e,[u,m]=d(i,l,o,p,h);return{version:u,fullVersion:m,major:i,minor:l,patch:o,prerelease:p,build:h}};var T=(e,r)=>h(e,r,!0).major,N=(e,r)=>h(e,r,!0).minor,V=(e,r)=>h(e,r,!0).patch,P=(e,r)=>{const t=h(e,r);return t&&t.prerelease.length?t.prerelease:null},S=(e,r,t)=>A(r,e,t),q=(e,r)=>e.sort(((e,t)=>E(t,e,r))),G=(e,r)=>e.sort(((e,t)=>E(e,t,r))),M=(e,r)=>{const t=h(e,r);return t?t.version:null};return e.clean=u,e.cmp=(e,r,t,n)=>{switch(r){case"===":return e===t;case"!==":return e!==t;case"":case"=":case"==":return z(e,t,n);case"!=":return j(e,t,n);case">":return Z(e,t,n);case">=":return $(e,t,n);case"<":return w(e,t,n);case"<=":return b(e,t,n);default:throw new TypeError(`Invalid operator: ${r}`)}},e.coerce=y,e.compare=A,e.compareBuild=E,e.compareIdentifiers=f,e.compareLoose=I,e.diff=k,e.eq=z,e.gt=Z,e.gte=$,e.inc=function(e,r,t,n,a){let i=t,l=n,o=a;"string"==typeof i&&(o=l,l=i,i=void 0);const s=p(i);try{return x(h(e,i,!0),r,l,o,s).version}catch(e){return null}},e.incThrow=(e,r,t,n,a)=>{const i=p(a);return x(h(e,a,!0),r,t,n,i).version},e.lt=w,e.lte=b,e.major=T,e.minor=N,e.neq=j,e.parse=h,e.patch=V,e.prerelease=P,e.rcompare=S,e.rsort=q,e.semverRegex=t,e.sort=G,e.valid=M,e}({});