{"_id":"resin-semver","_rev":"48-40d7a3200c64354edfa2ba6ce863e8d1","name":"resin-semver","description":"Resin.io specific semver utility methods","dist-tags":{"latest":"1.6.0"},"versions":{"0.6.0":{"name":"resin-semver","version":"0.6.0","description":"Resin.io specific semver utility methods","main":"src/index.js","typings":"src/index.d.ts","scripts":{"test":"npm run build && npm run lint && mocha -r ts-node/register test/index.spec.ts","build":"tsc src/index.ts","lint":"tslint -t stylish -c tslint.json 'src/**/*.ts' 'test/**/*.ts'","docs":"npm run build && jsdoc2md --template doc/README.hbs src/index.js > README.md"},"author":{"name":"Lucian Buzzo","email":"lucian@resin.io"},"license":"Apache-2.0","dependencies":{"lodash.memoize":"^4.1.2","semver":"^5.3.0","@types/chai":"^4.0.1","@types/lodash.memoize":"^4.1.2","@types/mocha":"^2.2.41","@types/semver":"^5.3.32"},"devDependencies":{"chai":"^4.1.0","mocha":"^3.4.2","ts-node":"^3.2.1","tslint":"^5.5.0","typescript":"^2.4.2"},"gitHead":"e487a72807fd563291f88b0c6aee5cc30cf4431c","_id":"resin-semver@0.6.0","_shasum":"eaf5c6eba4ce0529ff1358a2619a52499f94fc21","_from":".","_npmVersion":"4.1.1","_nodeVersion":"6.9.4","_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"dist":{"shasum":"eaf5c6eba4ce0529ff1358a2619a52499f94fc21","tarball":"https://registry.npmjs.org/resin-semver/-/resin-semver-0.6.0.tgz","integrity":"sha512-oUNlVpbOtNXHffoOOZdoFYeNzcd+eClPgauLws9Hr5Hb60HNHmJpbZunjr6k1T3npPhJHqzfOJyFbxVDNetkPQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC/x+tCO8iJWNQMTC0Df46q4EnbgKB8Psf7ECG8R5g7cgIhANlxivshE2IEk6t8ny+KwT5HbcKh3eCuN+eQyNOCXXCa"}]},"maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/resin-semver-0.6.0.tgz_1501595408041_0.07733634393662214"},"directories":{},"deprecated":"resin-semver is deprecated, please use balena-semver instead"},"0.6.1":{"name":"resin-semver","version":"0.6.1","description":"Resin.io specific semver utility methods","main":"src/index.js","typings":"src/index.d.ts","homepage":"https://github.com/resin-io-modules/resin-semver","repository":{"type":"git","url":"git+https://github.com/resin-io-modules/resin-semver.git"},"keywords":["resin","resin.io","semver"],"scripts":{"test":"npm run build && npm run lint && mocha -r ts-node/register test/index.spec.ts","build":"tsc src/index.ts","lint":"tslint -t stylish -c tslint.json 'src/**/*.ts' 'test/**/*.ts'","docs":"npm run build && jsdoc2md --template doc/README.hbs src/index.js > README.md"},"author":{"name":"Lucian Buzzo","email":"lucian@resin.io"},"license":"Apache-2.0","dependencies":{"lodash.memoize":"^4.1.2","semver":"^5.3.0","@types/chai":"^4.0.1","@types/lodash.memoize":"^4.1.2","@types/mocha":"^2.2.41","@types/semver":"^5.3.32"},"devDependencies":{"chai":"^4.1.0","mocha":"^3.4.2","ts-node":"^3.2.1","tslint":"^5.5.0","typescript":"^2.4.2"},"gitHead":"8a90377bd12aaa4520cd352d189644d56dbeadff","bugs":{"url":"https://github.com/resin-io-modules/resin-semver/issues"},"_id":"resin-semver@0.6.1","_shasum":"79f959fd7ccd608c9e4c4250865a6761d2bce23b","_from":".","_npmVersion":"4.1.1","_nodeVersion":"6.9.4","_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"dist":{"shasum":"79f959fd7ccd608c9e4c4250865a6761d2bce23b","tarball":"https://registry.npmjs.org/resin-semver/-/resin-semver-0.6.1.tgz","integrity":"sha512-XcwIxL2hYz0cKEIS/6IRrvT204nZEdf4/rWxVQUOjhmPMfRrApJSrFRqxcSCcouD/hUASaZOLdDOZPcs9Uu5Fg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEjvcSRn0o7yj1TBMD/FMtn3xgWwetDW40TkCNMavhwLAiEAuYLKNnT4tqGklOG0NLGZJ0OzQVStoOUpwWikJnKi6so="}]},"maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/resin-semver-0.6.1.tgz_1501602822931_0.8603613185696304"},"directories":{},"deprecated":"resin-semver is deprecated, please use balena-semver instead"},"0.8.0":{"name":"resin-semver","version":"0.8.0","description":"Resin.io specific semver utility methods","main":"src/index.js","typings":"src/index.d.ts","homepage":"https://github.com/resin-io-modules/resin-semver","repository":{"type":"git","url":"git+https://github.com/resin-io-modules/resin-semver.git"},"keywords":["resin","resin.io","semver"],"scripts":{"test":"npm run build && npm run lint && mocha -r ts-node/register test/index.spec.ts","build":"tsc src/index.ts","lint":"tslint -t stylish -c tslint.json 'src/**/*.ts' 'test/**/*.ts'","docs":"npm run build && node generateDocs"},"author":{"name":"Lucian Buzzo","email":"lucian@resin.io"},"license":"Apache-2.0","dependencies":{"lodash.memoize":"^4.1.2","semver":"^5.3.0","@types/chai":"^4.0.1","@types/lodash.memoize":"^4.1.2","@types/mocha":"^2.2.41","@types/semver":"^5.3.32"},"devDependencies":{"chai":"^4.1.0","jsdoc-to-markdown":"^3.0.0","mocha":"^3.4.2","ts-node":"^3.2.1","tslint":"^5.5.0","typescript":"^2.4.2"},"gitHead":"8d3246c772cb88e918bbc5de5869388fa51f193c","bugs":{"url":"https://github.com/resin-io-modules/resin-semver/issues"},"_id":"resin-semver@0.8.0","_shasum":"a40cc78d27e9fcdda195cd3c66b4efc2c7f90bcc","_from":".","_npmVersion":"4.1.1","_nodeVersion":"6.9.4","_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"dist":{"shasum":"a40cc78d27e9fcdda195cd3c66b4efc2c7f90bcc","tarball":"https://registry.npmjs.org/resin-semver/-/resin-semver-0.8.0.tgz","integrity":"sha512-9aZIVTC6ik5T1//mtRT3oFBA7zGqiYNQ8O10V0HMl+rPVqAdYIHwUOiY8JgHGpI3V4utIQ9bw3Y9ocIOKCdvTA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID/mUy2NfTqxzRNi1C6qMxoY9SDuBMcWPLxFXTyGpQHvAiEAm2iHVAT90YaxGwscZUSzGv58A8mRGcXe0LBrEjrwA9M="}]},"maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/resin-semver-0.8.0.tgz_1502099197903_0.4421741683036089"},"directories":{},"deprecated":"resin-semver is deprecated, please use balena-semver instead"},"0.9.0":{"name":"resin-semver","version":"0.9.0","description":"Resin.io specific semver utility methods","main":"src/index.js","typings":"src/index.d.ts","homepage":"https://github.com/resin-io-modules/resin-semver","repository":{"type":"git","url":"git+https://github.com/resin-io-modules/resin-semver.git"},"keywords":["resin","resin.io","semver"],"scripts":{"test":"npm run build && npm run lint && mocha -r ts-node/register test/index.spec.ts","build":"tsc","lint":"tslint -t stylish -c tslint.json 'src/**/*.ts' 'test/**/*.ts'","docs":"npm run build && node generateDocs"},"author":{"name":"Lucian Buzzo","email":"lucian@resin.io"},"license":"Apache-2.0","dependencies":{"lodash.memoize":"^4.1.2","semver":"^5.3.0","@types/chai":"^4.0.1","@types/lodash.memoize":"^4.1.2","@types/mocha":"^2.2.41","@types/semver":"^5.3.32"},"devDependencies":{"chai":"^4.1.0","jsdoc-to-markdown":"^3.0.0","mocha":"^3.4.2","ts-node":"^3.2.1","tslint":"^5.5.0","typescript":"^2.4.2"},"gitHead":"4e82bab42308892c4cd82e68706d1e9db42a90b2","bugs":{"url":"https://github.com/resin-io-modules/resin-semver/issues"},"_id":"resin-semver@0.9.0","_shasum":"411d6325a716c3e5fdb38090f5ec5bd84e331210","_from":".","_npmVersion":"4.1.1","_nodeVersion":"6.9.4","_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"dist":{"shasum":"411d6325a716c3e5fdb38090f5ec5bd84e331210","tarball":"https://registry.npmjs.org/resin-semver/-/resin-semver-0.9.0.tgz","integrity":"sha512-CvHet5NjrmHVZ2vR9KFpw4lgGjhJK4Xm0IPRMllL/17rkxHc8T+/i/FbO7fvsxnhpZbji6ry7blrwYH6Hwa+Ow==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDxZMeFSSe6iHj4aj8+n7J7ZMg2AhtsGv9U5xBhFSm+lAIgD0dMojrA3qWRaer1mLVBwATcCA5tKHYrbf46v1e1t34="}]},"maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/resin-semver-0.9.0.tgz_1502874135893_0.37815940426662564"},"directories":{},"deprecated":"resin-semver is deprecated, please use balena-semver instead"},"0.9.1":{"name":"resin-semver","version":"0.9.1","description":"Resin.io specific semver utility methods","main":"src/index.js","typings":"src/index.d.ts","homepage":"https://github.com/resin-io-modules/resin-semver","repository":{"type":"git","url":"git+https://github.com/resin-io-modules/resin-semver.git"},"keywords":["resin","resin.io","semver"],"scripts":{"test":"npm run build && npm run lint && mocha -r ts-node/register test/index.spec.ts","build":"tsc","lint":"tslint -t stylish -c tslint.json 'src/**/*.ts' 'test/**/*.ts'","docs":"npm run build && node generateDocs"},"author":{"name":"Lucian Buzzo","email":"lucian@resin.io"},"license":"Apache-2.0","dependencies":{"lodash.memoize":"^4.1.2","semver":"^5.3.0","@types/chai":"^4.0.1","@types/lodash.memoize":"^4.1.2","@types/mocha":"^2.2.41","@types/semver":"^5.3.34"},"devDependencies":{"chai":"^4.1.0","jsdoc-to-markdown":"^3.0.0","mocha":"^3.4.2","ts-node":"^3.2.1","tslint":"^5.5.0","typescript":"^2.4.2"},"gitHead":"ca5b50d781780a098e27b0182ac3b3bec68fbeaa","bugs":{"url":"https://github.com/resin-io-modules/resin-semver/issues"},"_id":"resin-semver@0.9.1","_shasum":"6df578bb997fb0110b54ea627eef59835a30e13f","_from":".","_npmVersion":"4.1.1","_nodeVersion":"6.9.4","_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"dist":{"shasum":"6df578bb997fb0110b54ea627eef59835a30e13f","tarball":"https://registry.npmjs.org/resin-semver/-/resin-semver-0.9.1.tgz","integrity":"sha512-w77F8T4Df1lZQiQGtBoIOZtT8zigkqvRhbAY1ArfEO9gBUVdfWtlgdGys31c6EbEhADjpjeEi9Jud752r63Oag==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCLnk7qkILLt6hmCd4adClZjD36Aqp2TqiGOWg/QoK0VwIhANANmwllclDKomrm0/FkoYHoGW5VLuUDeMPl7emzP9sK"}]},"maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/resin-semver-0.9.1.tgz_1503049546436_0.09960167622193694"},"directories":{},"deprecated":"resin-semver is deprecated, please use balena-semver instead"},"0.9.2":{"name":"resin-semver","version":"0.9.2","description":"Resin.io specific semver utility methods","main":"src/index.js","typings":"src/index.d.ts","homepage":"https://github.com/resin-io-modules/resin-semver","repository":{"type":"git","url":"git+https://github.com/resin-io-modules/resin-semver.git"},"keywords":["resin","resin.io","semver"],"scripts":{"test":"npm run build && npm run lint && mocha -r ts-node/register test/index.spec.ts","build":"tsc","lint":"tslint -t stylish -c tslint.json 'src/**/*.ts' 'test/**/*.ts'","docs":"npm run build && node generateDocs"},"author":{"name":"Lucian Buzzo","email":"lucian@resin.io"},"license":"Apache-2.0","dependencies":{"lodash.memoize":"^4.1.2","semver":"^5.3.0","@types/chai":"^4.0.1","@types/lodash.memoize":"^4.1.2","@types/mocha":"^2.2.41","@types/semver":"^5.3.34"},"devDependencies":{"chai":"^4.1.0","jsdoc-to-markdown":"^3.0.0","mocha":"^3.4.2","ts-node":"^3.2.1","tslint":"^5.5.0","typescript":"^2.4.2"},"gitHead":"8727143fa7ed974d3eb932c21fcb73814e161a87","bugs":{"url":"https://github.com/resin-io-modules/resin-semver/issues"},"_id":"resin-semver@0.9.2","_shasum":"d957df3b41d95d2114cadc480fbdc78aae48f465","_from":".","_npmVersion":"4.1.1","_nodeVersion":"6.9.4","_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"dist":{"shasum":"d957df3b41d95d2114cadc480fbdc78aae48f465","tarball":"https://registry.npmjs.org/resin-semver/-/resin-semver-0.9.2.tgz","integrity":"sha512-eQb78lO0dF/1fCn4QwQu6CjX+jHSB3lxLbH/XOdksLFJr2lBgE4Xq2gcbc4gvwMavfr51l0NK2ayJEz9OQShEw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDVrDP9lis0+T+AXR0HDnYcjEk0j8CnNphgvW9pDWOc+QIhAJShPsQisytJltoSp9fd7tbxS0uXP0HeOCLma9M9ebe5"}]},"maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/resin-semver-0.9.2.tgz_1503053254729_0.8836297844536602"},"directories":{},"deprecated":"resin-semver is deprecated, please use balena-semver instead"},"0.10.0":{"name":"resin-semver","version":"0.10.0","description":"Resin.io specific semver utility methods","main":"src/index.js","typings":"src/index.d.ts","homepage":"https://github.com/resin-io-modules/resin-semver","repository":{"type":"git","url":"git+https://github.com/resin-io-modules/resin-semver.git"},"keywords":["resin","resin.io","semver"],"scripts":{"test":"npm run build && npm run lint && mocha -r ts-node/register test/index.spec.ts","build":"tsc","lint":"tslint -t stylish -c tslint.json 'src/**/*.ts' 'test/**/*.ts'","docs":"npm run build && node generateDocs"},"author":{"name":"Lucian Buzzo","email":"lucian@resin.io"},"license":"Apache-2.0","dependencies":{"lodash.memoize":"^4.1.2","semver":"^5.3.0","@types/chai":"^4.0.1","@types/lodash.memoize":"^4.1.2","@types/mocha":"^2.2.41","@types/semver":"^5.3.34"},"devDependencies":{"chai":"^4.1.0","jsdoc-to-markdown":"^3.0.0","mocha":"^3.4.2","ts-node":"^3.2.1","tslint":"^5.5.0","typescript":"^2.4.2"},"gitHead":"a90759af4737cb905000ff93875cc2ae8c6cf3f4","bugs":{"url":"https://github.com/resin-io-modules/resin-semver/issues"},"_id":"resin-semver@0.10.0","_shasum":"05ee7bafe3b0b4cdeea3d7e4143e018bee902e34","_from":".","_npmVersion":"4.1.1","_nodeVersion":"6.9.4","_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"dist":{"shasum":"05ee7bafe3b0b4cdeea3d7e4143e018bee902e34","tarball":"https://registry.npmjs.org/resin-semver/-/resin-semver-0.10.0.tgz","integrity":"sha512-oF74ybu4LBwEWJ6e3aThL1ZUC30V+zmMxgCZRQqM3hL4OOvwHD/FhZeopzook0qDX83p/FeSwR4hnI3smmnPiA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCfcENz8UzBhaU1e7fsaoY8kOz9jweQQEs4JT51c4AlKgIgQDolHC5fzq/bTNnpHkcQq01vEGXrYQRTMKL0DJozDVI="}]},"maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/resin-semver-0.10.0.tgz_1505219443308_0.7385242176242173"},"directories":{},"deprecated":"resin-semver is deprecated, please use balena-semver instead"},"0.12.0":{"name":"resin-semver","version":"0.12.0","description":"Resin.io specific semver utility methods","main":"src/index.js","typings":"src/index.d.ts","homepage":"https://github.com/resin-io-modules/resin-semver","repository":{"type":"git","url":"git+https://github.com/resin-io-modules/resin-semver.git"},"keywords":["resin","resin.io","semver"],"scripts":{"test":"npm run build && npm run lint && mocha -r ts-node/register test/index.spec.ts","build":"tsc","lint":"tslint -t stylish -c tslint.json 'src/**/*.ts' 'test/**/*.ts'","docs":"npm run build && node generateDocs"},"author":{"name":"Lucian Buzzo","email":"lucian@resin.io"},"license":"Apache-2.0","dependencies":{"lodash.memoize":"^4.1.2","semver":"^5.3.0","@types/chai":"^4.0.1","@types/lodash.memoize":"^4.1.2","@types/mocha":"^2.2.41","@types/semver":"^5.3.34"},"devDependencies":{"chai":"^4.1.0","jsdoc-to-markdown":"^3.0.0","mocha":"^3.4.2","ts-node":"^3.2.1","tslint":"^5.5.0","typescript":"^2.4.2"},"gitHead":"b4416f8aff71d514d30878efcf5e675da8aca2d8","bugs":{"url":"https://github.com/resin-io-modules/resin-semver/issues"},"_id":"resin-semver@0.12.0","_shasum":"584a11ee6bcc08c0fe4dc49c65e2b982d5ea2532","_from":".","_npmVersion":"4.1.1","_nodeVersion":"6.9.4","_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"dist":{"shasum":"584a11ee6bcc08c0fe4dc49c65e2b982d5ea2532","tarball":"https://registry.npmjs.org/resin-semver/-/resin-semver-0.12.0.tgz","integrity":"sha512-dJ0nPkdokYVZ1N5ZZ+bXgnK2PmdWmr58LKg98i25JfdVvW7k9vfpO+9MgX+ZTzaSUglPAiyf4CxV6+CsuEUbVQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFszlkvXctWwM2JM6u3p2CwCLHeUC5HwTCTX6mPby/UuAiEAofVP51Ytgpf2SRQXr8f0v8BhmX/OW8xkZyFbSzbpfgU="}]},"maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/resin-semver-0.12.0.tgz_1505292720933_0.024988512275740504"},"directories":{},"deprecated":"resin-semver is deprecated, please use balena-semver instead"},"0.12.1":{"name":"resin-semver","version":"0.12.1","description":"Resin.io specific semver utility methods","main":"src/index.js","typings":"src/index.d.ts","homepage":"https://github.com/resin-io-modules/resin-semver","repository":{"type":"git","url":"git+https://github.com/resin-io-modules/resin-semver.git"},"keywords":["resin","resin.io","semver"],"scripts":{"test":"npm run build && npm run lint && mocha -r ts-node/register test/index.spec.ts","build":"tsc","lint":"tslint -t stylish -c tslint.json 'src/**/*.ts' 'test/**/*.ts'","docs":"npm run build && node generateDocs"},"author":{"name":"Lucian Buzzo","email":"lucian@resin.io"},"license":"Apache-2.0","dependencies":{"lodash.memoize":"^4.1.2","semver":"^5.3.0","@types/chai":"^4.0.1","@types/lodash.memoize":"^4.1.2","@types/mocha":"^2.2.41","@types/semver":"^5.3.34"},"devDependencies":{"chai":"^4.1.0","jsdoc-to-markdown":"^3.0.0","mocha":"^3.4.2","ts-node":"^3.2.1","tslint":"^5.5.0","typescript":"^2.4.2"},"gitHead":"841a16f2a221b24ce1c0b0b33201a899463c49e7","bugs":{"url":"https://github.com/resin-io-modules/resin-semver/issues"},"_id":"resin-semver@0.12.1","_shasum":"2ae6039776a487a0369b7914959abc4b50a6bd4a","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.11.3","_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"dist":{"shasum":"2ae6039776a487a0369b7914959abc4b50a6bd4a","tarball":"https://registry.npmjs.org/resin-semver/-/resin-semver-0.12.1.tgz","integrity":"sha512-hKCm/kzfVebzwoogjNNY0JaaygckPpliPjxFMCCNiD9CE9Ojj8Iy9KUNyjfsQrLTwy/Nbs79tA712fP3ZUYAxw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCHkAN7T51a2BH29SPtRMUhhxh2Ubz0d3QhnrxoYUCTlgIhALSJ/jIv6qXclNnpoHMgQXraqDa7jB56OJYslMXT2lA8"}]},"maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/resin-semver-0.12.1.tgz_1505393727563_0.46510158386081457"},"directories":{},"deprecated":"resin-semver is deprecated, please use balena-semver instead"},"1.0.0":{"name":"resin-semver","version":"1.0.0","description":"Resin.io specific semver utility methods","main":"src/index.js","typings":"src/index.d.ts","homepage":"https://github.com/resin-io-modules/resin-semver","repository":{"type":"git","url":"git+https://github.com/resin-io-modules/resin-semver.git"},"keywords":["resin","resin.io","semver"],"scripts":{"test":"npm run build && npm run lint && mocha -r ts-node/register test/index.spec.ts","build":"tsc","lint":"tslint -t stylish -c tslint.json 'src/**/*.ts' 'test/**/*.ts'","docs":"npm run build && node generateDocs"},"author":{"name":"Lucian Buzzo","email":"lucian@resin.io"},"license":"Apache-2.0","dependencies":{"lodash.memoize":"^4.1.2","semver":"^5.3.0","@types/chai":"^4.0.1","@types/lodash.memoize":"^4.1.2","@types/mocha":"^2.2.41","@types/semver":"^5.3.34"},"devDependencies":{"chai":"^4.1.0","jsdoc-to-markdown":"^3.0.0","mocha":"^3.4.2","ts-node":"^3.2.1","tslint":"^5.5.0","typescript":"^2.4.2"},"gitHead":"201575cce495a967460c55b5dbffafd412623e52","bugs":{"url":"https://github.com/resin-io-modules/resin-semver/issues"},"_id":"resin-semver@1.0.0","_shasum":"3bdd92d4637fa1c1727192670fdc69936619dc4b","_from":".","_npmVersion":"3.10.10","_nodeVersion":"6.11.3","_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"dist":{"shasum":"3bdd92d4637fa1c1727192670fdc69936619dc4b","tarball":"https://registry.npmjs.org/resin-semver/-/resin-semver-1.0.0.tgz","integrity":"sha512-0SF8VtsA5y73dSCbjBCFj/EDSOCyNq7G4AiKH03W3OqqGVhjkvOisuUcqLPzqlyKR7dypDmEYFxOy+vuqPW1SA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICxsSvtZgBIsTnXhVgRViG2tc+H29NVhoF5gb/wLFE9IAiEA5xRlrtsvOESX2/f7q9M58hB7HactGti27O0Wt69U1SA="}]},"maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/resin-semver-1.0.0.tgz_1505403123484_0.6674098365474492"},"directories":{},"deprecated":"resin-semver is deprecated, please use balena-semver instead"},"1.0.1":{"name":"resin-semver","version":"1.0.1","description":"Resin.io specific semver utility methods","main":"src/index.js","typings":"src/index.d.ts","homepage":"https://github.com/resin-io-modules/resin-semver","repository":{"type":"git","url":"git+https://github.com/resin-io-modules/resin-semver.git"},"keywords":["resin","resin.io","semver"],"scripts":{"test":"npm run lint && ./automation/test.js","build":"tsc && npm run docs","lint":"tslint -t stylish -c tslint.json 'src/**/*.ts' 'test/**/*.ts'","docs":"./automation/docs.js","ci":"npm run build && catch-uncommitted && npm test"},"author":{"name":"Lucian Buzzo","email":"lucian@resin.io"},"license":"Apache-2.0","dependencies":{"lodash.memoize":"^4.1.2","semver":"^5.3.0","@types/chai":"^4.0.1","@types/lodash.memoize":"^4.1.2","@types/mocha":"^2.2.41","@types/semver":"^5.3.34"},"devDependencies":{"catch-uncommitted":"^1.0.0","chai":"^4.1.0","jsdoc-to-markdown":"^3.0.0","mocha":"^3.4.2","ts-node":"^3.2.1","tslint":"^5.5.0","typescript":"^2.4.2"},"gitHead":"bff3280495819dd60fd97e99f8f90cec46fa588d","bugs":{"url":"https://github.com/resin-io-modules/resin-semver/issues"},"_id":"resin-semver@1.0.1","_shasum":"e0fae5693597b487c21f7bc4ff66ff6db58f81fc","_from":".","_npmVersion":"4.6.1","_nodeVersion":"6.11.3","_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"dist":{"shasum":"e0fae5693597b487c21f7bc4ff66ff6db58f81fc","tarball":"https://registry.npmjs.org/resin-semver/-/resin-semver-1.0.1.tgz","integrity":"sha512-NVhHYLH64nMvSBJ0H+9LGAYnP/qDdeoWfS2lVS/tvBKh5TQRouzfIs3DoPifuwZXc98nZ1dMYUAYP0IzE/7y7A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAwiv8zsKOPuTvvI5KErnvxsFJo2vfEcdsI9jV7yDOHiAiEAuUV6mmuJh3eUghDlT5cBQpkinptI9wTlUnzPRdF3DC8="}]},"maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/resin-semver-1.0.1.tgz_1505403493976_0.05271279765293002"},"directories":{},"deprecated":"resin-semver is deprecated, please use balena-semver instead"},"1.1.0":{"name":"resin-semver","version":"1.1.0","description":"Resin.io specific semver utility methods","main":"src/index.js","typings":"src/index.d.ts","homepage":"https://github.com/resin-io-modules/resin-semver","repository":{"type":"git","url":"git+https://github.com/resin-io-modules/resin-semver.git"},"keywords":["resin","resin.io","semver"],"scripts":{"test":"npm run lint && ./automation/test.js","build":"tsc && npm run docs","lint":"tslint -t stylish -c tslint.json 'src/**/*.ts' 'test/**/*.ts'","docs":"./automation/docs.js","ci":"npm run build && catch-uncommitted && npm test"},"author":{"name":"Lucian Buzzo","email":"lucian@resin.io"},"license":"Apache-2.0","dependencies":{"lodash.memoize":"^4.1.2","semver":"^5.3.0","@types/chai":"^4.0.1","@types/lodash.memoize":"^4.1.2","@types/mocha":"^2.2.41","@types/semver":"^5.3.34"},"devDependencies":{"catch-uncommitted":"^1.0.0","chai":"^4.1.0","jsdoc-to-markdown":"^3.0.0","mocha":"^3.4.2","ts-node":"^3.2.1","tslint":"^5.5.0","typescript":"^2.4.2"},"gitHead":"c9a4501ed2559c7aafbb800980c0ab5366c9e220","bugs":{"url":"https://github.com/resin-io-modules/resin-semver/issues"},"_id":"resin-semver@1.1.0","_shasum":"93d256500ced9697e37406fa889c7a9e5ba67b57","_from":".","_npmVersion":"4.6.1","_nodeVersion":"6.11.3","_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"dist":{"shasum":"93d256500ced9697e37406fa889c7a9e5ba67b57","tarball":"https://registry.npmjs.org/resin-semver/-/resin-semver-1.1.0.tgz","integrity":"sha512-4l1KdMKUgJB7FbNVjS5edEyK3JeX1M6R0DhZl1mNqJqSB2x8ImnkOPZkyA1S16uKGInKEPPm1uSpjitwnWJr/A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFecLdBMpIRf2pYgUkRVpOJ9HQBVw+/S1fJEOpRK7IDHAiA1x4mtiRiAAZgMNlD4U6Xb6GrooVhxHdZ76dELiZVd3A=="}]},"maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/resin-semver-1.1.0.tgz_1505404059225_0.17992246290668845"},"directories":{},"deprecated":"resin-semver is deprecated, please use balena-semver instead"},"1.1.1":{"name":"resin-semver","version":"1.1.1","description":"Resin.io specific semver utility methods","main":"src/index.js","typings":"src/index.d.ts","homepage":"https://github.com/resin-io-modules/resin-semver","repository":{"type":"git","url":"git+https://github.com/resin-io-modules/resin-semver.git"},"keywords":["resin","resin.io","semver"],"scripts":{"test":"npm run lint && ./automation/test.js","build":"tsc && npm run docs","lint":"tslint -t stylish -c tslint.json 'src/**/*.ts' 'test/**/*.ts'","docs":"./automation/docs.js","ci":"npm run build && catch-uncommitted && npm test","precommit":"lint-staged","prettify":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\""},"author":{"name":"Lucian Buzzo","email":"lucian@resin.io"},"license":"Apache-2.0","dependencies":{"lodash.memoize":"^4.1.2","semver":"^5.3.0","@types/chai":"^4.0.1","@types/lodash.memoize":"^4.1.2","@types/mocha":"^2.2.41","@types/semver":"^5.3.34"},"devDependencies":{"catch-uncommitted":"^1.0.0","chai":"^4.1.0","husky":"^0.14.3","jsdoc-to-markdown":"^3.0.0","lint-staged":"^4.0.4","mocha":"^3.4.2","prettier":"^1.6.1","ts-node":"^3.2.1","tslint":"^5.5.0","typescript":"^2.4.2"},"lint-staged":{"*.ts":["prettier --write","npm run lint","npm run docs","git add"]},"gitHead":"8a45a8afed31feccc6831fa2d7eda2643ab291d9","bugs":{"url":"https://github.com/resin-io-modules/resin-semver/issues"},"_id":"resin-semver@1.1.1","_shasum":"adde64ee45b2d2ba153dcabb70233200998aeced","_from":".","_npmVersion":"4.6.1","_nodeVersion":"6.11.3","_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"dist":{"shasum":"adde64ee45b2d2ba153dcabb70233200998aeced","tarball":"https://registry.npmjs.org/resin-semver/-/resin-semver-1.1.1.tgz","integrity":"sha512-K/fiI0M6gwi1XbRFQpl/sYY4MqahmEisAdkus/P2P0pSrCZWPaJ5rkn6dSDfJSuVEm8o3mtELVEOMNiE+43mfg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAc6r5sAXFdN2li86HK1Rzasm9Pr5LM7yU0aoJz8H1KlAiB3JFPBBBVHStD68cFItuKT0ydkdk7H9qi5zlAVj1MjTw=="}]},"maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/resin-semver-1.1.1.tgz_1505405019800_0.9080963074229658"},"directories":{},"deprecated":"resin-semver is deprecated, please use balena-semver instead"},"1.2.0":{"name":"resin-semver","version":"1.2.0","description":"Resin.io specific semver utility methods","main":"src/index.js","typings":"src/index.d.ts","homepage":"https://github.com/resin-io-modules/resin-semver","repository":{"type":"git","url":"git+https://github.com/resin-io-modules/resin-semver.git"},"keywords":["resin","resin.io","semver"],"scripts":{"test":"npm run lint && ./automation/test.js","build":"tsc && npm run docs","lint":"tslint -t stylish -c tslint.json 'src/**/*.ts' 'test/**/*.ts'","docs":"./automation/docs.js","ci":"npm run build && catch-uncommitted && npm test","precommit":"lint-staged","prettify":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\""},"author":{"name":"Lucian Buzzo","email":"lucian@resin.io"},"license":"Apache-2.0","dependencies":{"lodash.memoize":"^4.1.2","semver":"^5.3.0","@types/chai":"^4.0.1","@types/lodash.memoize":"^4.1.2","@types/mocha":"^2.2.41","@types/semver":"^5.3.34"},"devDependencies":{"catch-uncommitted":"^1.0.0","chai":"^4.1.0","husky":"^0.14.3","jsdoc-to-markdown":"^3.0.0","lint-staged":"^4.0.4","mocha":"^3.4.2","prettier":"^1.6.1","ts-node":"^3.2.1","tslint":"^5.5.0","typescript":"^2.4.2"},"lint-staged":{"*.ts":["prettier --write","npm run lint","npm run docs","git add"]},"gitHead":"81b60dd147e2463ae7722ab93790916db9937235","bugs":{"url":"https://github.com/resin-io-modules/resin-semver/issues"},"_id":"resin-semver@1.2.0","_shasum":"3a721bd6b6982a768a849464b8c50249c30961c8","_from":".","_npmVersion":"4.6.1","_nodeVersion":"6.11.3","_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"dist":{"shasum":"3a721bd6b6982a768a849464b8c50249c30961c8","tarball":"https://registry.npmjs.org/resin-semver/-/resin-semver-1.2.0.tgz","integrity":"sha512-XNi6fwHQKks8W375Jjr4M7/qPsymLi5BhAt7fYjaU5mIWB3EnvZ9k9cKM8jv5/c8lAHaA4szOiBdM5bjRK6+OA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCzOPVFZ2I92YuU+p+qclC2t/bM4g65oEbg2gWRWgy1pgIgMA3WHBeay65nDMGS/rfQWt2SN37atxg38QXpY+2ZUI0="}]},"maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/resin-semver-1.2.0.tgz_1505489362161_0.08135543647222221"},"directories":{},"deprecated":"resin-semver is deprecated, please use balena-semver instead"},"1.2.1":{"name":"resin-semver","version":"1.2.1","description":"Resin.io specific semver utility methods","main":"src/index.js","typings":"src/index.ts","homepage":"https://github.com/resin-io-modules/resin-semver","repository":{"type":"git","url":"git+https://github.com/resin-io-modules/resin-semver.git"},"keywords":["resin","resin.io","semver"],"scripts":{"test":"npm run lint && ./automation/test.js","build":"tsc && npm run docs","lint":"tslint -t stylish -c tslint.json 'src/**/*.ts' 'test/**/*.ts'","docs":"./automation/docs.js","ci":"npm run build && catch-uncommitted && npm test","precommit":"lint-staged","prettify":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\""},"author":{"name":"Lucian Buzzo","email":"lucian@resin.io"},"license":"Apache-2.0","dependencies":{"lodash.memoize":"^4.1.2","semver":"^5.3.0","@types/chai":"^4.0.1","@types/lodash.memoize":"^4.1.2","@types/mocha":"^2.2.41","@types/semver":"^5.4.0"},"devDependencies":{"catch-uncommitted":"^1.0.0","chai":"^4.1.0","husky":"^0.14.3","jsdoc-to-markdown":"^3.0.0","lint-staged":"^4.0.4","mocha":"^3.4.2","prettier":"^1.6.1","ts-node":"^3.2.1","tslint":"^5.5.0","typescript":"^2.4.2"},"lint-staged":{"*.ts":["prettier --write","npm run lint","npm run docs","git add"]},"gitHead":"e4e15dc2f3e135f8daad50bf89494fc2774e3989","bugs":{"url":"https://github.com/resin-io-modules/resin-semver/issues"},"_id":"resin-semver@1.2.1","_shasum":"aed5a975e9bd13bd7c33f9006197e5c9c1470f5a","_from":".","_npmVersion":"4.6.1","_nodeVersion":"6.11.4","_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"dist":{"shasum":"aed5a975e9bd13bd7c33f9006197e5c9c1470f5a","tarball":"https://registry.npmjs.org/resin-semver/-/resin-semver-1.2.1.tgz","integrity":"sha512-XCr9hjGELZDfUzzJ1Hpo2CNewwDDitUPolQG+znAG5YjpUdkJ5v+bORAkq3OgHqOylZdSxcPpx8c4wLDkTmiGQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAOJ2/k5viHtMK+tvE+m+WyrXZsJTYjIErEwq4Ry88dFAiEAwrzwnku+jtwMm/Y6XOxrCU3zL9bWSNi+cbUci5lmi5Q="}]},"maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/resin-semver-1.2.1.tgz_1507282638135_0.6818831616546959"},"directories":{},"deprecated":"resin-semver is deprecated, please use balena-semver instead"},"1.2.2":{"name":"resin-semver","version":"1.2.2","description":"Resin.io specific semver utility methods","main":"src/index.js","typings":"src/index.ts","homepage":"https://github.com/resin-io-modules/resin-semver","repository":{"type":"git","url":"git+https://github.com/resin-io-modules/resin-semver.git"},"keywords":["resin","resin.io","semver"],"scripts":{"test":"npm run lint && ./automation/test.js","build":"tsc && npm run docs","lint":"tslint -t stylish -c tslint.json 'src/**/*.ts' 'test/**/*.ts'","docs":"./automation/docs.js","ci":"npm run build && catch-uncommitted && npm test","precommit":"lint-staged","prettify":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\""},"author":{"name":"Lucian Buzzo","email":"lucian@resin.io"},"license":"Apache-2.0","dependencies":{"lodash.memoize":"^4.1.2","semver":"^5.3.0","@types/lodash.memoize":"^4.1.2","@types/semver":"^5.4.0"},"devDependencies":{"@types/chai":"^4.0.1","@types/mocha":"^2.2.41","catch-uncommitted":"^1.0.0","chai":"^4.1.0","husky":"^0.14.3","jsdoc-to-markdown":"^3.0.0","lint-staged":"^4.0.4","mocha":"^3.4.2","prettier":"^1.6.1","ts-node":"^3.2.1","tslint":"^5.5.0","typescript":"^2.4.2"},"lint-staged":{"*.ts":["prettier --write","npm run lint","npm run docs","git add"]},"gitHead":"0a32cfa833ccf3842e89f70496170fe737da5bab","bugs":{"url":"https://github.com/resin-io-modules/resin-semver/issues"},"_id":"resin-semver@1.2.2","_shasum":"851d3d9a8778598d50a35272c844384571be4309","_from":".","_npmVersion":"4.6.1","_nodeVersion":"6.13.0","_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"dist":{"shasum":"851d3d9a8778598d50a35272c844384571be4309","tarball":"https://registry.npmjs.org/resin-semver/-/resin-semver-1.2.2.tgz","fileCount":19,"unpackedSize":135239,"integrity":"sha512-MSiXvxHWbc/yupjVHu6Q7AM0sXYEUCVqI1Xn/gWf3gqIul9/vWzDvGXIaEhVbthlWvzfgm/VLwh7R8Dx90F22w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCxy81MW22Pt665JS0lLvk6PcmI6Pz0NLdbon5/aD48yAIhALtoDmO8wXmXnfjnlspwao3NYvhfeIM2Y593opPMgLbt"}]},"maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/resin-semver_1.2.2_1518775615325_0.7518342541153433"},"_hasShrinkwrap":false,"deprecated":"resin-semver is deprecated, please use balena-semver instead"},"1.3.0-balena-aa6e151197858e1ca22df0987850db324ff672b7":{"name":"resin-semver","version":"1.3.0-balena-aa6e151197858e1ca22df0987850db324ff672b7","description":"Resin.io specific semver utility methods","main":"src/index.js","typings":"src/index.ts","homepage":"https://github.com/resin-io-modules/resin-semver","repository":{"type":"git","url":"git+https://github.com/resin-io-modules/resin-semver.git"},"keywords":["resin","resin.io","semver"],"scripts":{"test":"npm run lint && ./automation/test.js","build":"tsc && npm run docs","lint":"tslint -t stylish -c tslint.json 'src/**/*.ts' 'test/**/*.ts'","docs":"./automation/docs.js","ci":"npm run build && catch-uncommitted && npm test","precommit":"lint-staged","prettify":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\""},"author":{"name":"Lucian Buzzo","email":"lucian@resin.io"},"license":"Apache-2.0","dependencies":{"@types/lodash.memoize":"^4.1.2","@types/semver":"^5.4.0","lodash.memoize":"^4.1.2","semver":"^5.3.0"},"devDependencies":{"@types/chai":"^4.0.1","@types/lodash.sortby":"^4.7.4","@types/mocha":"^2.2.41","catch-uncommitted":"^1.0.0","chai":"^4.1.0","husky":"^0.14.3","jsdoc-to-markdown":"^3.0.0","lint-staged":"^4.0.4","lodash.sortby":"^4.7.0","mocha":"^3.4.2","prettier":"^1.6.1","ts-node":"^3.2.1","tslint":"^5.5.0","typescript":"^2.4.2"},"lint-staged":{"*.ts":["prettier --write","npm run lint","npm run docs","git add"]},"gitHead":"aa6e151197858e1ca22df0987850db324ff672b7","readme":"resin-semver\n============\n\n> Resin.io specific semver utility methods\n\n[![Build Status](https://travis-ci.org/resin-io-modules/resin-semver.svg?branch=master)](https://travis-ci.org/resin-io-modules/resin-semver)\n\nRole\n----\n\nThe intention of this module is to provide a collection of resin specific semver utility methods.\n\n**THIS MODULE IS LOW LEVEL AND IS NOT MEANT TO BE USED BY END USERS DIRECTLY**.\n\nUnless you know what you're doing, use the [Resin SDK](https://github.com/resin-io/resin-sdk) instead.\n\nInstallation\n------------\n\nInstall `resin-semver` by running:\n\n```sh\n$ npm install --save resin-semver\n```\n\nDocumentation\n-------------\n\n## Functions\n\n<dl>\n<dt><a href=\"#compare\">compare(versionA, versionB)</a> ⇒ <code>number</code></dt>\n<dd><p>Accepts string or null values and compares them, returning a number\nindicating sort order. Values are parsed for valid semver strings. Sorts an array\nof versions in ascending order if passed to <code>Array.sort()</code>.</p>\n</dd>\n<dt><a href=\"#rcompare\">rcompare(versionA, versionB)</a> ⇒ <code>number</code></dt>\n<dd><p>The reverse of <code>.compare()</code>. Accepts string or null values and compares\nthem, returning a number indicating sort order. Values are parsed for valid semver\nstrings. Sorts an array of versions in descending order when passed to <code>Array.sort()</code>.</p>\n</dd>\n<dt><a href=\"#major\">major(version)</a> ⇒ <code>number</code> | <code>null</code></dt>\n<dd><p>Returns the major version number in a semver string.\nIf the version is not a valid semver string, or a valid semver string cannot be\nfound, it returns null.</p>\n</dd>\n<dt><a href=\"#prerelease\">prerelease(version)</a> ⇒ <code>Array.&lt;(string|number)&gt;</code> | <code>null</code></dt>\n<dd><p>Returns an array of prerelease components, or null if none exist</p>\n</dd>\n<dt><a href=\"#gte\">gte(versionA, versionB)</a> ⇒ <code>boolean</code></dt>\n<dd><p>Returns true if versionA is greater than or equal to versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.</p>\n</dd>\n<dt><a href=\"#gt\">gt(versionA, versionB)</a> ⇒ <code>boolean</code></dt>\n<dd><p>Returns true if versionA is greater than versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.</p>\n</dd>\n<dt><a href=\"#lt\">lt(versionA, versionB)</a> ⇒ <code>boolean</code></dt>\n<dd><p>Returns true if versionA is less than versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.</p>\n</dd>\n<dt><a href=\"#satisfies\">satisfies(version, range)</a> ⇒ <code>boolean</code></dt>\n<dd><p>Return true if the parsed version satisfies the range.\nThis method will always return false if the provided version doesn&#39;t contain a valid semver string.</p>\n</dd>\n<dt><a href=\"#maxSatisfying\">maxSatisfying(versions, range)</a> ⇒ <code>string</code> | <code>null</code></dt>\n<dd><p>Return the highest version in the list that satisfies the range, or null if none of them do.\nIf multiple versions are found that have equally high values, the last one in the array is returned.\nNote that only version that contain a valid semver string can satisfy a range.</p>\n</dd>\n<dt><a href=\"#parse\">parse(version)</a> ⇒ <code>SemverObject</code> | <code>null</code></dt>\n<dd><p>Returns an object representing the semver version. Returns null\nif a valid semver string can&#39;t be found.</p>\n</dd>\n<dt><a href=\"#valid\">valid(version)</a> ⇒ <code>string</code> | <code>null</code></dt>\n<dd><p>Return the parsed version, or null if it&#39;s not valid.</p>\n</dd>\n<dt><a href=\"#inc\">inc(version, release)</a> ⇒ <code>string</code> | <code>null</code></dt>\n<dd><p>Return the version incremented by the release type\n(major, premajor, minor, preminor, patch, prepatch, or prerelease), or null\nif it&#39;s not valid.</p>\n</dd>\n</dl>\n\n<a name=\"compare\"></a>\n\n## compare(versionA, versionB) ⇒ <code>number</code>\nAccepts string or null values and compares them, returning a number\nindicating sort order. Values are parsed for valid semver strings. Sorts an array\nof versions in ascending order if passed to `Array.sort()`.\n\n**Kind**: global function  \n**Summary**: Compare order of versions  \n**Returns**: <code>number</code> - Returns `0` if `versionA == versionB`,\nor `1` if `versionA` is greater, or `-1` if `versionB` is greater.\nNull values are sorted before invalid semver values, and invalid semver values\nare sorted before valid semver values\nIf both values are invalid semver values, then the values are compared alphabetically.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The first version to compare |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The second version to compare |\n\n**Example**  \nshould not throw when provided with a version.\n\n```js\nversions_1.versions.forEach(function (version) {\n    chai.expect(function () { return semver.compare(version, version); }).to.not.throw();\n});\n```\n\nshould correctly sort lists of versions.\n\n```js\nchai.expect(sortBy(versions_1.versions.slice(), semver.compare)).to.eql(versions_1.versions);\n```\n\nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.compare('2.0.5', '1.16.0')).to.equal(1);\nchai.expect(semver.compare('2.0.5', '2.0.5')).to.equal(0);\nchai.expect(semver.compare('1.16.0', '2.0.5')).to.equal(-1);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.compare('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(1);\nchai.expect(semver.compare('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(-1);\nchai.expect(semver.compare('1.16.0', 'Resin OS v1.16.0')).to.equal(0);\nchai.expect(semver.compare('Resin OS 1.16.0', '2.0.2')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 1.16.0', '1.16.0')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.2', '1.16.0')).to.equal(1);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.compare('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(1);\nchai.expect(semver.compare('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 1.16.0', 'Resin OS 1.16.0')).to.equal(0);\n```\n\nshould correctly compare Balena formatted versions.\n\n```js\nchai.expect(semver.compare('Balena OS 2.0.5', 'Balena OS 2.0.2+rev2')).to.equal(1);\nchai.expect(semver.compare('Balena OS 1.16.0', 'Balena OS 2.0.2 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Balena OS 1.16.0', 'Balena OS 1.16.0')).to.equal(0);\n```\n\nshould correctly compare Balena formatted versions to Resin formatted versions.\n\n```js\nchai.expect(semver.compare('Balena OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(1);\nchai.expect(semver.compare('Balena OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Balena OS 1.16.0', 'Resin OS 1.16.0')).to.equal(0);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.compare('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(-1);\nchai.expect(semver.compare('Linux 14.04', 'A development version')).to.equal(1);\nchai.expect(semver.compare('Version B', 'Version A')).to.equal(1);\nchai.expect(semver.compare('Version A', 'Version A')).to.equal(0);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.compare('2.0.5', null)).to.equal(1);\nchai.expect(semver.compare(null, '1.16.0')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 1.16.0', null)).to.equal(1);\nchai.expect(semver.compare(null, 'Resin OS 1.16.0')).to.equal(-1);\nchai.expect(semver.compare('Linux 14.04', null)).to.equal(1);\nchai.expect(semver.compare(null, 'Linux 14.04')).to.equal(-1);\nchai.expect(semver.compare(null, null)).to.equal(0);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.compare('2.0.5', undefined)).to.equal(1);\nchai.expect(semver.compare(undefined, '1.16.0')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 1.16.0', undefined)).to.equal(1);\nchai.expect(semver.compare(undefined, 'Resin OS 1.16.0')).to.equal(-1);\nchai.expect(semver.compare('Linux 14.04', undefined)).to.equal(1);\nchai.expect(semver.compare(undefined, 'Linux 14.04')).to.equal(-1);\nchai.expect(semver.compare(undefined, undefined)).to.equal(0);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.compare('2.0.0+rev6', '2.0.0+rev3')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(1);\nchai.expect(semver.compare('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(1);\nchai.expect(semver.compare('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(-1);\nchai.expect(semver.compare('2.0.0+rev3', '2.0.0+rev3')).to.equal(0);\nchai.expect(semver.compare('2.0.0+rev1', '2.0.0+rev11')).to.equal(-1);\nchai.expect(semver.compare('2.0.0+rev2', '2.0.0+rev11')).to.equal(-1);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.compare('2.0.0', '2.0.0+dev')).to.equal(1);\nchai.expect(semver.compare('2.0.0', '2.0.0-dev')).to.equal(1);\nchai.expect(semver.compare('2.0.0', '2.0.0.dev')).to.equal(1);\nchai.expect(semver.compare('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(1);\nchai.expect(semver.compare('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(-1);\nchai.expect(semver.compare('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(0);\nchai.expect(semver.compare('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0.dev', '2.0.0')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(0);\n```\n\nshould correctly compare \"(dev)\" and \"(prod)\" versions without revisions.\n\n```js\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0 (dev)')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0 (dev)', 'Resin OS 2.0.0 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0-prod')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0.prod')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0+prod')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0 (dev)', 'Resin OS 2.0.0+prod')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0.dev', 'Resin OS 2.0.0+dev')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0.dev', 'Resin OS 2.0.0 (dev)')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0+dev', 'Resin OS 2.0.0 (dev)')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0.prod', 'Resin OS 2.0.0+prod')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0.prod', 'Resin OS 2.0.0 (prod)')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0+prod', 'Resin OS 2.0.0 (prod)')).to.equal(0);\n```\n\nshould correctly compare \"(dev)\" and \"(prod)\" versions of the same revision.\n\n```js\nchai.expect(semver.compare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3 (dev)')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3 (dev)', 'Resin OS 2.0.0+rev3 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.prod')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3 (dev)', 'Resin OS 2.0.0+rev3+prod')).to.equal(1); // B is invalid\n```\n\n<a name=\"resin-semver-rcompare\"></a>\n\n<a name=\"rcompare\"></a>\n\n## rcompare(versionA, versionB) ⇒ <code>number</code>\nThe reverse of `.compare()`. Accepts string or null values and compares\nthem, returning a number indicating sort order. Values are parsed for valid semver\nstrings. Sorts an array of versions in descending order when passed to `Array.sort()`.\n\n**Kind**: global function  \n**Summary**: Compare order of versions in reverse  \n**Returns**: <code>number</code> - Returns `0` if `versionA == versionB`,\nor `-1` if `versionA` is greater, or `1` if `versionB` is greater.\nValid semver values are sorted before invalid semver values, and invalid semver values are\nsorted before null values.\nIf both values are non-null invalid semver values, then the values are compared alphabetically.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The first version to compare |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The second version to compare |\n\n**Example**  \nshould not throw when provided with a version.\n\n```js\nversions_1.versions.forEach(function (version) {\n    chai.expect(function () { return semver.rcompare(version, version); }).to.not.throw();\n});\n```\n\nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.rcompare('2.0.5', '1.16.0')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.5', '2.0.5')).to.equal(0);\nchai.expect(semver.rcompare('1.16.0', '2.0.5')).to.equal(1);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.rcompare('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(-1);\nchai.expect(semver.rcompare('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(1);\nchai.expect(semver.rcompare('1.16.0', 'Resin OS v1.16.0')).to.equal(0);\nchai.expect(semver.rcompare('Resin OS 1.16.0', '2.0.2')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', '1.16.0')).to.equal(0);\nchai.expect(semver.rcompare('Resin OS 2.0.2', '1.16.0')).to.equal(-1);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.rcompare('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(-1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', 'Resin OS 1.16.0')).to.equal(0);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.rcompare('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(1);\nchai.expect(semver.rcompare('Linux 14.04', 'A development version')).to.equal(-1);\nchai.expect(semver.rcompare('Version B', 'Version A')).to.equal(-1);\nchai.expect(semver.rcompare('Version A', 'Version A')).to.equal(0);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.rcompare('2.0.5', null)).to.equal(-1);\nchai.expect(semver.rcompare(null, '1.16.0')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', null)).to.equal(-1);\nchai.expect(semver.rcompare(null, 'Resin OS 1.16.0')).to.equal(1);\nchai.expect(semver.rcompare('Linux 14.04', null)).to.equal(-1);\nchai.expect(semver.rcompare(null, 'Linux 14.04')).to.equal(1);\nchai.expect(semver.rcompare(null, null)).to.equal(0);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.rcompare('2.0.5', undefined)).to.equal(-1);\nchai.expect(semver.rcompare(undefined, '1.16.0')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', undefined)).to.equal(-1);\nchai.expect(semver.rcompare(undefined, 'Resin OS 1.16.0')).to.equal(1);\nchai.expect(semver.rcompare('Linux 14.04', undefined)).to.equal(-1);\nchai.expect(semver.rcompare(undefined, 'Linux 14.04')).to.equal(1);\nchai.expect(semver.rcompare(undefined, undefined)).to.equal(0);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.rcompare('2.0.0+rev6', '2.0.0+rev3')).to.equal(-1);\nchai.expect(semver.rcompare('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(1);\nchai.expect(semver.rcompare('2.0.0+rev3', '2.0.0+rev3')).to.equal(0);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.rcompare('2.0.0', '2.0.0+dev')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0', '2.0.0-dev')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0', '2.0.0.dev')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(1);\nchai.expect(semver.rcompare('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(0);\nchai.expect(semver.rcompare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(-1);\nchai.expect(semver.rcompare('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(0);\nchai.expect(semver.rcompare('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(-1);\nchai.expect(semver.rcompare('Resin OS 2.0.0.dev', '2.0.0')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(0);\n```\n\n<a name=\"resin-semver-major\"></a>\n\n<a name=\"major\"></a>\n\n## major(version) ⇒ <code>number</code> \\| <code>null</code>\nReturns the major version number in a semver string.\nIf the version is not a valid semver string, or a valid semver string cannot be\nfound, it returns null.\n\n**Kind**: global function  \n**Summary**: Return the major version number  \n**Returns**: <code>number</code> \\| <code>null</code> - - The major version number  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefine</code> | The version string to evaluate |\n\n**Example**  \nshould correctly match valid semver versions.\n\n```js\nchai.expect(semver.major('4.5.1')).to.equal(4);\n```\n\nshould correctly match resinOS prefixed versions.\n\n```js\nchai.expect(semver.major('Resin OS v2.0.5')).to.equal(2);\nchai.expect(semver.major('Resin OS 2.0.2+rev2')).to.equal(2);\nchai.expect(semver.major('Resin OS 2.0.0.rev1 (prod)')).to.equal(2);\nchai.expect(semver.major('Resin OS 2.0.0-rc5.rev1')).to.equal(2);\n```\n\nshould return null when version is `null`.\n\n```js\nchai.expect(semver.major(null)).to.equal(null);\n```\n\nshould return null when version is `undefined`.\n\n```js\nchai.expect(semver.major(undefined)).to.equal(null);\n```\n\nshould return null when the version contains no valid semver value.\n\n```js\nchai.expect(semver.major('My dev version')).to.equal(null);\nchai.expect(semver.major('Linux 14.04')).to.equal(null);\nchai.expect(semver.major('Software version 42.3.20170726.72bbcf8')).to.equal(null);\n```\n\n<a name=\"resin-semver-prerelease\"></a>\n\n<a name=\"prerelease\"></a>\n\n## prerelease(version) ⇒ <code>Array.&lt;(string\\|number)&gt;</code> \\| <code>null</code>\nReturns an array of prerelease components, or null if none exist\n\n**Kind**: global function  \n**Summary**: Return prerelease components  \n**Returns**: <code>Array.&lt;(string\\|number)&gt;</code> \\| <code>null</code> - - An array of prerelease component, or null if none exist  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to evaluate |\n\n**Example**  \nshould return an array of prerelease components when provided a semver string.\n\n```js\nchai.expect(semver.prerelease('1.16.0-alpha.1')).to.eql(['alpha', 1]);\n```\n\nshould return null when provided with a semver string that has no prerelease segment.\n\n```js\nchai.expect(semver.prerelease('1.16.0')).to.eql(null);\n```\n\nshould return an array of prerelease components when provided a resinOS prefixed version.\n\n```js\nchai.expect(semver.prerelease('Resin OS 2.0.0-rc5.rev1')).to.eql(['rc5', 'rev1']);\n```\n\nshould return null when provided a resinOS prefixed version that has no prerelease segment.\n\n```js\nchai.expect(semver.prerelease('Resin OS 2.0.0')).to.equal(null);\n```\n\nshould return null when provided with an invalid version.\n\n```js\nchai.expect(semver.prerelease('My dev version')).to.equal(null);\nchai.expect(semver.prerelease('Linux 14.04')).to.equal(null);\nchai.expect(semver.prerelease('Software version 42.3.20170726.72bbcf8')).to.equal(null);\n```\n\nshould return null when provided with a null value.\n\n```js\nchai.expect(semver.prerelease(null)).to.equal(null);\n```\n\nshould return null when provided with an undefined value.\n\n```js\nchai.expect(semver.prerelease(undefined)).to.equal(null);\n```\n\n<a name=\"resin-semver-gte\"></a>\n\n<a name=\"gte\"></a>\n\n## gte(versionA, versionB) ⇒ <code>boolean</code>\nReturns true if versionA is greater than or equal to versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.\n\n**Kind**: global function  \n**Summary**: Check if a version is greater than or equal to another  \n**Returns**: <code>boolean</code> - - true if versionA is greater than or equal to versionB, otherwise false.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare against |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare to versionA |\n\n**Example**  \nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.gte('2.0.5', '1.16.0')).to.equal(true);\nchai.expect(semver.gte('1.16.0', '2.0.5')).to.equal(false);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.gte('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.gte('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.gte('Resin OS 1.16.0', '2.0.2')).to.equal(false);\nchai.expect(semver.gte('Resin OS 1.16.0', '1.16.0')).to.equal(true);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.gte('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(true);\nchai.expect(semver.gte('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(false);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.gte('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.gte('Linux 14.04', 'A development version')).to.equal(true);\nchai.expect(semver.gte('Version B', 'Version A')).to.equal(true);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.gte('2.0.5', null)).to.equal(true);\nchai.expect(semver.gte(null, '1.16.0')).to.equal(false);\nchai.expect(semver.gte('Resin OS 1.16.0', null)).to.equal(true);\nchai.expect(semver.gte(null, 'Resin OS 1.16.0')).to.equal(false);\nchai.expect(semver.gte('Linux 14.04', null)).to.equal(true);\nchai.expect(semver.gte(null, 'Linux 14.04')).to.equal(false);\nchai.expect(semver.gte(null, null)).to.equal(true);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.gte('2.0.5', undefined)).to.equal(true);\nchai.expect(semver.gte(undefined, '1.16.0')).to.equal(false);\nchai.expect(semver.gte('Resin OS 1.16.0', undefined)).to.equal(true);\nchai.expect(semver.gte(undefined, 'Resin OS 1.16.0')).to.equal(false);\nchai.expect(semver.gte('Linux 14.04', undefined)).to.equal(true);\nchai.expect(semver.gte(undefined, 'Linux 14.04')).to.equal(false);\nchai.expect(semver.gte(undefined, undefined)).to.equal(true);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.gte('2.0.0+rev6', '2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gte('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gte('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gte('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(false);\nchai.expect(semver.gte('2.0.0+rev3', '2.0.0+rev3')).to.equal(true);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.gte('2.0.0', '2.0.0+dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0', '2.0.0-dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0', '2.0.0.dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(false);\nchai.expect(semver.gte('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(true);\nchai.expect(semver.gte('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(true);\nchai.expect(semver.gte('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.gte('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(true);\nchai.expect(semver.gte('Resin OS 2.0.0.dev', '2.0.0')).to.equal(false);\nchai.expect(semver.gte('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(true);\n```\n\n<a name=\"resin-semver-gt\"></a>\n\n<a name=\"gt\"></a>\n\n## gt(versionA, versionB) ⇒ <code>boolean</code>\nReturns true if versionA is greater than versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.\n\n**Kind**: global function  \n**Summary**: Check if a version is greater than another  \n**Returns**: <code>boolean</code> - - true if versionA is greater than versionB, otherwise false.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare against |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare to versionA |\n\n**Example**  \nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.gt('2.0.5', '1.16.0')).to.equal(true);\nchai.expect(semver.gt('1.16.0', '2.0.5')).to.equal(false);\nchai.expect(semver.gt('1.16.0', '1.16.0')).to.equal(false);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.gt('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.gt('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', '2.0.2')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', '1.16.0')).to.equal(false);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.gt('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(true);\nchai.expect(semver.gt('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', 'Resin OS 1.16.0')).to.equal(false);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.gt('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.gt('Linux 14.04', 'A development version')).to.equal(true);\nchai.expect(semver.gt('Version B', 'Version A')).to.equal(true);\nchai.expect(semver.gt('Version A', 'Version A')).to.equal(false);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.gt('2.0.5', null)).to.equal(true);\nchai.expect(semver.gt(null, '1.16.0')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', null)).to.equal(true);\nchai.expect(semver.gt(null, 'Resin OS 1.16.0')).to.equal(false);\nchai.expect(semver.gt('Linux 14.04', null)).to.equal(true);\nchai.expect(semver.gt(null, 'Linux 14.04')).to.equal(false);\nchai.expect(semver.gt(null, null)).to.equal(false);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.gt('2.0.5', undefined)).to.equal(true);\nchai.expect(semver.gt(undefined, '1.16.0')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', undefined)).to.equal(true);\nchai.expect(semver.gt(undefined, 'Resin OS 1.16.0')).to.equal(false);\nchai.expect(semver.gt('Linux 14.04', undefined)).to.equal(true);\nchai.expect(semver.gt(undefined, 'Linux 14.04')).to.equal(false);\nchai.expect(semver.gt(undefined, undefined)).to.equal(false);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.gt('2.0.0+rev6', '2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gt('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gt('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gt('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(false);\nchai.expect(semver.gt('2.0.0+rev3', '2.0.0+rev3')).to.equal(false);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.gt('2.0.0', '2.0.0+dev')).to.equal(true);\nchai.expect(semver.gt('2.0.0', '2.0.0-dev')).to.equal(true);\nchai.expect(semver.gt('2.0.0', '2.0.0.dev')).to.equal(true);\nchai.expect(semver.gt('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(true);\nchai.expect(semver.gt('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(false);\nchai.expect(semver.gt('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(false);\nchai.expect(semver.gt('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(true);\nchai.expect(semver.gt('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.gt('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(false);\nchai.expect(semver.gt('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(true);\nchai.expect(semver.gt('Resin OS 2.0.0.dev', '2.0.0')).to.equal(false);\nchai.expect(semver.gt('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(false);\n```\n\n<a name=\"resin-semver-lt\"></a>\n\n<a name=\"lt\"></a>\n\n## lt(versionA, versionB) ⇒ <code>boolean</code>\nReturns true if versionA is less than versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.\n\n**Kind**: global function  \n**Summary**: Check if a version is less than another  \n**Returns**: <code>boolean</code> - - true if versionA is less than versionB, otherwise false.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare against |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare to versionA |\n\n**Example**  \nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.lt('2.0.5', '1.16.0')).to.equal(false);\nchai.expect(semver.lt('1.16.0', '2.0.5')).to.equal(true);\nchai.expect(semver.lt('1.16.0', '1.16.0')).to.equal(false);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.lt('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.lt('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', '2.0.2')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', '1.16.0')).to.equal(false);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.lt('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(false);\nchai.expect(semver.lt('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', 'Resin OS 1.16.0')).to.equal(false);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.lt('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.lt('Linux 14.04', 'A development version')).to.equal(false);\nchai.expect(semver.lt('Version B', 'Version A')).to.equal(false);\nchai.expect(semver.lt('Version A', 'Version A')).to.equal(false);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.lt('2.0.5', null)).to.equal(false);\nchai.expect(semver.lt(null, '1.16.0')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', null)).to.equal(false);\nchai.expect(semver.lt(null, 'Resin OS 1.16.0')).to.equal(true);\nchai.expect(semver.lt('Linux 14.04', null)).to.equal(false);\nchai.expect(semver.lt(null, 'Linux 14.04')).to.equal(true);\nchai.expect(semver.lt(null, null)).to.equal(false);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.lt('2.0.5', undefined)).to.equal(false);\nchai.expect(semver.lt(undefined, '1.16.0')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', undefined)).to.equal(false);\nchai.expect(semver.lt(undefined, 'Resin OS 1.16.0')).to.equal(true);\nchai.expect(semver.lt('Linux 14.04', undefined)).to.equal(false);\nchai.expect(semver.lt(undefined, 'Linux 14.04')).to.equal(true);\nchai.expect(semver.lt(undefined, undefined)).to.equal(false);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.lt('2.0.0+rev6', '2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lt('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lt('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lt('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(true);\nchai.expect(semver.lt('2.0.0+rev3', '2.0.0+rev3')).to.equal(false);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.lt('2.0.0', '2.0.0+dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0', '2.0.0-dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0', '2.0.0.dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(true);\nchai.expect(semver.lt('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(false);\nchai.expect(semver.lt('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(false);\nchai.expect(semver.lt('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.lt('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(false);\nchai.expect(semver.lt('Resin OS 2.0.0.dev', '2.0.0')).to.equal(true);\nchai.expect(semver.lt('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(false);\n```\n\n<a name=\"resin-semver-satisfies\"></a>\n\n<a name=\"satisfies\"></a>\n\n## satisfies(version, range) ⇒ <code>boolean</code>\nReturn true if the parsed version satisfies the range.\nThis method will always return false if the provided version doesn't contain a valid semver string.\n\n**Kind**: global function  \n**Summary**: Check if a version satisfies a range  \n**Returns**: <code>boolean</code> - - True if the parsed version satisfies the range, false otherwise  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version to evaluate |\n| range | <code>string</code> | A semver range string, see the [node-semver](https://github.com/npm/node-semver#ranges) docs for details |\n\n**Example**  \nshould correctly evaluate valid semver values.\n\n```js\nchai.expect(semver.satisfies('2.0.5', '^2.0.0')).to.equal(true);\nchai.expect(semver.satisfies('1.16.0', '^2.0.0')).to.equal(false);\n```\n\nshould correctly evaluate Resin formatted versions.\n\n```js\nchai.expect(semver.satisfies('Resin OS 2.0.2+rev2', '^2.0.0')).to.equal(true);\nchai.expect(semver.satisfies('Resin OS 2.0.2 (prod)', '^2.0.0')).to.equal(true);\nchai.expect(semver.satisfies('Resin OS 1.16.0', '^2.0.0')).to.equal(false);\n```\n\nshould always return false when provided with an invalid semver value.\n\n```js\nchai.expect(semver.satisfies('Linux 14.04', '^2.0.0')).to.equal(false);\nchai.expect(semver.satisfies('A development version', '^2.0.0')).to.equal(false);\nchai.expect(semver.satisfies('Version A', '^2.0.0')).to.equal(false);\nchai.expect(semver.satisfies('Linux 14.04', '*')).to.equal(false);\nchai.expect(semver.satisfies('Linux 14.04', '< 1.0.0')).to.equal(false);\n```\n\nshould correctly evaluate null values.\n\n```js\nchai.expect(semver.satisfies(null, '^2.0.0')).to.equal(false);\n```\n\nshould correctly evaluate undefined values.\n\n```js\nchai.expect(semver.satisfies(undefined, '^2.0.0')).to.equal(false);\n```\n\n<a name=\"resin-semver-maxsatisfying\"></a>\n\n<a name=\"maxSatisfying\"></a>\n\n## maxSatisfying(versions, range) ⇒ <code>string</code> \\| <code>null</code>\nReturn the highest version in the list that satisfies the range, or null if none of them do.\nIf multiple versions are found that have equally high values, the last one in the array is returned.\nNote that only version that contain a valid semver string can satisfy a range.\n\n**Kind**: global function  \n**Summary**: Return the highest version in the list that satisfies the range  \n**Returns**: <code>string</code> \\| <code>null</code> - - The highest matching version string, or null.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versions | <code>Array.&lt;(string\\|null\\|undefined)&gt;</code> | An array of versions to evaluate |\n| range | <code>string</code> | A semver range string, see the [node-semver](https://github.com/npm/node-semver#ranges) docs for details |\n\n**Example**  \nshould return the correct version.\n\n```js\nchai.expect(semver.maxSatisfying(versions_1.versions, '1.1.*')).to.equal('Resin OS 1.1.4');\nchai.expect(semver.maxSatisfying(versions_1.versions, '^2.0.0')).to.equal('Resin OS 2.14.0');\nchai.expect(semver.maxSatisfying(versions_1.versions, '< 1.0.0')).to.equal(null);\n```\n\nshould return the first version found if multiple versions have equally high values.\n\n```js\nchai.expect(semver.maxSatisfying(['1.0.0', 'Resin OS 1.1.4', '1.1.4'], '1.1.*')).to.equal('Resin OS 1.1.4');\n```\n\nshould normalize versions used in range parameter.\n\n```js\nchai.expect(semver.maxSatisfying(versions_1.versions, '2.0.0.rev1')).to.equal('Resin OS 2.0.0+rev11');\nchai.expect(semver.maxSatisfying(versions_1.versions, '^ Resin OS 2.0.0 (prod)')).to.equal('Resin OS 2.14.0');\nchai.expect(semver.maxSatisfying(versions_1.versions, '< Resin OS v1.0.0')).to.equal(null);\nchai.expect(semver.maxSatisfying(versions_1.versions, 'Resin OS v1.1.*')).to.equal('Resin OS 1.1.4');\n```\n\n<a name=\"resin-semver-parse\"></a>\n\n<a name=\"parse\"></a>\n\n## parse(version) ⇒ <code>SemverObject</code> \\| <code>null</code>\nReturns an object representing the semver version. Returns null\nif a valid semver string can't be found.\n\n**Kind**: global function  \n**Summary**: Parse a version into an object  \n**Returns**: <code>SemverObject</code> \\| <code>null</code> - - An object representing the version string, or\nnull if a valid semver string could not be found  \n**Access**: public  \n\n| Param | Type |\n| --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | \n\n**Example**  \nshould correctly parse valid semver values.\n\n```js\nchai.expect(semver.parse('2.0.5')).to.deep.include({\n    raw: '2.0.5',\n    major: 2,\n    minor: 0,\n    patch: 5,\n    version: '2.0.5',\n    prerelease: [],\n    build: [],\n});\n```\n\nshould correctly parse Resin formatted versions.\n\n```js\nchai.expect(semver.parse('Resin OS v2.0.2+rev2')).to.deep.include({\n    raw: 'Resin OS v2.0.2+rev2',\n    major: 2,\n    minor: 0,\n    patch: 2,\n    version: '2.0.2',\n    prerelease: [],\n    build: ['rev2'],\n});\nchai.expect(semver.parse('Resin OS v2.0.2 (prod)')).to.deep.include({\n    raw: 'Resin OS v2.0.2 (prod)',\n    major: 2,\n    minor: 0,\n    patch: 2,\n    version: '2.0.2',\n    prerelease: [],\n    build: ['prod'],\n});\nchai.expect(semver.parse('Resin OS v2.0.2.prod')).to.deep.include({\n    raw: 'Resin OS v2.0.2.prod',\n    major: 2,\n    minor: 0,\n    patch: 2,\n    version: '2.0.2',\n    prerelease: [],\n    build: ['prod'],\n});\nchai.expect(semver.parse('Resin OS 2.0.0-rc5.rev1')).to.deep.include({\n    raw: 'Resin OS 2.0.0-rc5.rev1',\n    major: 2,\n    minor: 0,\n    patch: 0,\n    version: '2.0.0-rc5.rev1',\n    prerelease: ['rc5', 'rev1'],\n    build: [],\n});\nchai.expect(semver.parse('Resin OS 2.3.0+rev1.prod')).to.deep.include({\n    raw: 'Resin OS 2.3.0+rev1.prod',\n    major: 2,\n    minor: 3,\n    patch: 0,\n    version: '2.3.0',\n    prerelease: [],\n    build: ['rev1', 'prod'],\n});\nchai.expect(semver.parse('Resin OS v2.3.0-a.b.c (prod)')).to.deep.include({\n    raw: 'Resin OS v2.3.0-a.b.c (prod)',\n    major: 2,\n    minor: 3,\n    patch: 0,\n    version: '2.3.0-a.b.c',\n    prerelease: ['a', 'b', 'c'],\n    build: ['prod'],\n});\nchai.expect(semver.parse('Resin OS 2.3.0-a.b.c+d.e.f (prod)')).to.deep.include({\n    raw: 'Resin OS 2.3.0-a.b.c+d.e.f (prod)',\n    major: 2,\n    minor: 3,\n    patch: 0,\n    version: '2.3.0-a.b.c',\n    prerelease: ['a', 'b', 'c'],\n    build: ['d', 'e', 'f', 'prod'],\n});\nchai.expect(semver.parse('Resin OS 2.3.0+a.b.c (prod)')).to.deep.include({\n    raw: 'Resin OS 2.3.0+a.b.c (prod)',\n    major: 2,\n    minor: 3,\n    patch: 0,\n    version: '2.3.0',\n    prerelease: [],\n    build: ['a', 'b', 'c', 'prod'],\n});\n```\n\nshould correctly parse invalid semver values.\n\n```js\nchai.expect(semver.parse('Linux 14.04')).to.equal(null);\nchai.expect(semver.parse('A development version')).to.equal(null);\nchai.expect(semver.parse('Version A')).to.equal(null);\n```\n\nshould correctly parse null values.\n\n```js\nchai.expect(semver.parse(null)).to.equal(null);\n```\n\nshould correctly parse undefined values.\n\n```js\nchai.expect(semver.parse(undefined)).to.equal(null);\n```\n\n<a name=\"resin-semver-valid\"></a>\n\n<a name=\"valid\"></a>\n\n## valid(version) ⇒ <code>string</code> \\| <code>null</code>\nReturn the parsed version, or null if it's not valid.\n\n**Kind**: global function  \n**Summary**: Check if a version string is valid  \n**Returns**: <code>string</code> \\| <code>null</code> - - The parsed version string, or\nnull if a valid semver string could not be found  \n**Access**: public  \n\n| Param | Type |\n| --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | \n\n**Example**  \nshould return null for invalid semver values.\n\n```js\nchai.expect(semver.valid(null)).to.equal(null);\nchai.expect(semver.valid(undefined)).to.equal(null);\nchai.expect(semver.valid('')).to.equal(null);\nchai.expect(semver.valid('foobar')).to.equal(null);\nchai.expect(semver.valid('12345')).to.equal(null);\nchai.expect(semver.valid('1.2.3.4.5')).to.equal(null);\n```\n\nshould correctly parse valid values.\n\n```js\nchai.expect(semver.valid('Resin OS 1.0.0-pre')).to.equal('1.0.0-pre');\nchai.expect(semver.valid('Resin OS 1.0.5 (fido)')).to.equal('1.0.5');\nchai.expect(semver.valid('Resin OS 2.0.0-beta.8')).to.equal('2.0.0-beta.8');\nchai.expect(semver.valid('Resin OS 2.0.0-beta10.rev1')).to.equal('2.0.0-beta10.rev1');\nchai.expect(semver.valid('Resin OS 2.0.0+rev3')).to.equal('2.0.0');\nchai.expect(semver.valid('Resin OS 2.0.0.rev1 (prod)')).to.equal('2.0.0');\nchai.expect(semver.valid('Resin OS 2.0.0+rev4 (dev)')).to.equal('2.0.0');\nchai.expect(semver.valid('2.0.6+rev3.dev')).to.equal('2.0.6');\n```\n\n<a name=\"resin-semver-inc\"></a>\n\n<a name=\"inc\"></a>\n\n## inc(version, release) ⇒ <code>string</code> \\| <code>null</code>\nReturn the version incremented by the release type\n(major, premajor, minor, preminor, patch, prepatch, or prerelease), or null\nif it's not valid.\n\n**Kind**: global function  \n**Summary**: Return an incremented version  \n**Returns**: <code>string</code> \\| <code>null</code> - - The incremented version string, or\nnull if a valid semver string could not be found  \n**Access**: public  \n\n| Param | Type |\n| --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | \n| release | <code>string</code> | \n\n**Example**  \nshould return null for invalid semver values.\n\n```js\nchai.expect(semver.inc(null, 'major')).to.equal(null);\nchai.expect(semver.inc(undefined, 'major')).to.equal(null);\nchai.expect(semver.inc('', 'major')).to.equal(null);\nchai.expect(semver.inc('foobar', 'major')).to.equal(null);\nchai.expect(semver.inc('12345', 'major')).to.equal(null);\nchai.expect(semver.inc('1.2.3.4.5', 'major')).to.equal(null);\n```\n\nshould correctly increment valid values by a 'premajor' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'premajor')).to.equal('2.0.0-0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'premajor')).to.equal('2.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'premajor')).to.equal('3.0.0-0');\n```\n\nshould correctly increment valid values by a 'preminor' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'preminor')).to.equal('1.1.0-0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'preminor')).to.equal('1.1.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'preminor')).to.equal('2.1.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'preminor')).to.equal('2.1.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'preminor')).to.equal('2.1.0-0');\nchai.expect(semver.inc('Resin OS 2.1.0.rev1 (prod)', 'preminor')).to.equal('2.2.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'preminor')).to.equal('2.1.0-0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'preminor')).to.equal('2.1.0-0');\n```\n\nshould correctly increment valid values by a 'prepatch' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'prepatch')).to.equal('1.0.1-0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'prepatch')).to.equal('1.0.6-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'prepatch')).to.equal('2.0.7-0');\n```\n\nshould correctly increment valid values by a 'prerelease' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'prerelease')).to.equal('1.0.0-pre.0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'prerelease')).to.equal('1.0.6-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'prerelease')).to.equal('2.0.0-beta.9');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'prerelease')).to.equal('2.0.0-beta10.rev1.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'prerelease')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'prerelease')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'prerelease')).to.equal('2.0.1-0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'prerelease')).to.equal('2.0.7-0');\n```\n\nshould correctly increment valid values by a 'major' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'major')).to.equal('1.0.0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'major')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'major')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'major')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'major')).to.equal('3.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'major')).to.equal('3.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'major')).to.equal('3.0.0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'major')).to.equal('3.0.0');\n```\n\nshould correctly increment valid values by a 'minor' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'minor')).to.equal('1.0.0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'minor')).to.equal('1.1.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'minor')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'minor')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'minor')).to.equal('2.1.0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'minor')).to.equal('2.1.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'minor')).to.equal('2.1.0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'minor')).to.equal('2.1.0');\n```\n\nshould correctly increment valid values by a 'patch' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'patch')).to.equal('1.0.0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'patch')).to.equal('1.0.6');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'patch')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'patch')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'patch')).to.equal('2.0.1');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'patch')).to.equal('2.0.1');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'patch')).to.equal('2.0.1');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'patch')).to.equal('2.0.7');\n```\n\n\n\n\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/resin-io-modules/resin-semver/issues"},"_id":"resin-semver@1.3.0-balena-aa6e151197858e1ca22df0987850db324ff672b7","_npmVersion":"6.1.0","_nodeVersion":"10.4.0","_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"dist":{"integrity":"sha512-obTd+Pa9IO5BiNgr4GbjMelrE/GKdf9E0iMczMOVM3/QrpCkylUzSRjGAEQkVM/2R6oJSN2DgNdSHFdSszx+Sg==","shasum":"a846a3fa45d4ae1a783ce8ea0a17b346365226fc","tarball":"https://registry.npmjs.org/resin-semver/-/resin-semver-1.3.0-balena-aa6e151197858e1ca22df0987850db324ff672b7.tgz","fileCount":18,"unpackedSize":135254,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbm5q8CRA9TVsSAnZWagAANMIP/RdhGd8EE5nInWZpInXy\nZ5/0wcB4OfamX1wleSZDDhT0g9UG7O+/x7nXJRHmEUop3IxQGjk0tlxyvKfv\nvWj2oRltWiMBGrWWGE2fx1CeDifwhlak5eweve9oL0nbRffk6fierrxnNjAW\nA5jC8QkD/BVeH6fy+jhRBugQKuJeCRjA4+K9alhHPeTfsWz/br/OjBpmAovI\nKEfYxe8CQ12R2afewEUolnzKVdzj7DzRzvwOf4jSn6K3mYaH+epvmLrKIFIt\nOulyIZNAWfQqhaD6hfaoxsYr5CIP2KhTN/KFb8/2sbiw4WfGtpCDbJm9YfUm\nBAneXgzrQ1YD3pNCFote8i3VPBSs7BZkRpKkfIF7QHSrhbuRhrQV1x7ce6VN\nYeD7mJugR5SFdiFRMdQFQ5bBw+MEiJFtrpE38ypMNhj47FZhvxw402aKLk6x\n0UEQAIqcd6S0xywZ1o1vvrbKPOWNCmsqDVlY2bEj5C6JImANYuP/J7CPJ4Y2\nnSYCJLBuQQxgcRUfshY2Yg1vz/y+qZQqCdth/Aolfd4og3AT/eH88iX+vU2+\nWisB1HCmHCY8p8Z+f+mqATSCfjzRyD1dVhgdgHwJDFhukUikfJWrxvLpbLwK\nt/nZqGzohGYZxdW+d36gR1xev7jP4eVKt9a+fBIwMSMv52719Cvrl4T0tV7p\nE8hf\r\n=jirG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC/MkKInMdEWwhuw0eVCQ0v0v9SB0yId+uTXak/WgxlhAiEArzEC3BF4Rn23fGX2xzL0sjJCKRB914C2gs+NmQW8TEI="}]},"maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/resin-semver_1.3.0-balena-aa6e151197858e1ca22df0987850db324ff672b7_1536924347739_0.07451550438454646"},"_hasShrinkwrap":false},"1.3.0-balena-ceeaf7100b2dffa3ad42867599a10dc5f1ea5706":{"name":"resin-semver","version":"1.3.0-balena-ceeaf7100b2dffa3ad42867599a10dc5f1ea5706","description":"Resin.io specific semver utility methods","main":"src/index.js","typings":"src/index.ts","homepage":"https://github.com/resin-io-modules/resin-semver","repository":{"type":"git","url":"git+https://github.com/resin-io-modules/resin-semver.git"},"keywords":["resin","resin.io","semver"],"scripts":{"test":"npm run lint && ./automation/test.js","build":"tsc && npm run docs","lint":"tslint -t stylish -c tslint.json 'src/**/*.ts' 'test/**/*.ts'","docs":"./automation/docs.js","ci":"npm run build && catch-uncommitted && npm test","precommit":"lint-staged","prettify":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\""},"author":{"name":"Lucian Buzzo","email":"lucian@resin.io"},"license":"Apache-2.0","dependencies":{"@types/lodash.memoize":"^4.1.2","@types/semver":"^5.4.0","lodash.memoize":"^4.1.2","semver":"^5.3.0"},"devDependencies":{"@types/chai":"^4.0.1","@types/lodash.sortby":"^4.7.4","@types/mocha":"^2.2.41","catch-uncommitted":"^1.0.0","chai":"^4.1.0","husky":"^0.14.3","jsdoc-to-markdown":"^3.0.0","lint-staged":"^4.0.4","lodash.sortby":"^4.7.0","mocha":"^3.4.2","prettier":"^1.6.1","ts-node":"^3.2.1","tslint":"^5.5.0","typescript":"^2.4.2"},"lint-staged":{"*.ts":["prettier --write","npm run lint","npm run docs","git add"]},"gitHead":"ceeaf7100b2dffa3ad42867599a10dc5f1ea5706","readme":"resin-semver\n============\n\n> Resin.io specific semver utility methods\n\n[![Build Status](https://travis-ci.org/resin-io-modules/resin-semver.svg?branch=master)](https://travis-ci.org/resin-io-modules/resin-semver)\n\nRole\n----\n\nThe intention of this module is to provide a collection of resin specific semver utility methods.\n\n**THIS MODULE IS LOW LEVEL AND IS NOT MEANT TO BE USED BY END USERS DIRECTLY**.\n\nUnless you know what you're doing, use the [Resin SDK](https://github.com/resin-io/resin-sdk) instead.\n\nInstallation\n------------\n\nInstall `resin-semver` by running:\n\n```sh\n$ npm install --save resin-semver\n```\n\nDocumentation\n-------------\n\n## Functions\n\n<dl>\n<dt><a href=\"#compare\">compare(versionA, versionB)</a> ⇒ <code>number</code></dt>\n<dd><p>Accepts string or null values and compares them, returning a number\nindicating sort order. Values are parsed for valid semver strings. Sorts an array\nof versions in ascending order if passed to <code>Array.sort()</code>.</p>\n</dd>\n<dt><a href=\"#rcompare\">rcompare(versionA, versionB)</a> ⇒ <code>number</code></dt>\n<dd><p>The reverse of <code>.compare()</code>. Accepts string or null values and compares\nthem, returning a number indicating sort order. Values are parsed for valid semver\nstrings. Sorts an array of versions in descending order when passed to <code>Array.sort()</code>.</p>\n</dd>\n<dt><a href=\"#major\">major(version)</a> ⇒ <code>number</code> | <code>null</code></dt>\n<dd><p>Returns the major version number in a semver string.\nIf the version is not a valid semver string, or a valid semver string cannot be\nfound, it returns null.</p>\n</dd>\n<dt><a href=\"#prerelease\">prerelease(version)</a> ⇒ <code>Array.&lt;(string|number)&gt;</code> | <code>null</code></dt>\n<dd><p>Returns an array of prerelease components, or null if none exist</p>\n</dd>\n<dt><a href=\"#gte\">gte(versionA, versionB)</a> ⇒ <code>boolean</code></dt>\n<dd><p>Returns true if versionA is greater than or equal to versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.</p>\n</dd>\n<dt><a href=\"#gt\">gt(versionA, versionB)</a> ⇒ <code>boolean</code></dt>\n<dd><p>Returns true if versionA is greater than versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.</p>\n</dd>\n<dt><a href=\"#lt\">lt(versionA, versionB)</a> ⇒ <code>boolean</code></dt>\n<dd><p>Returns true if versionA is less than versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.</p>\n</dd>\n<dt><a href=\"#satisfies\">satisfies(version, range)</a> ⇒ <code>boolean</code></dt>\n<dd><p>Return true if the parsed version satisfies the range.\nThis method will always return false if the provided version doesn&#39;t contain a valid semver string.</p>\n</dd>\n<dt><a href=\"#maxSatisfying\">maxSatisfying(versions, range)</a> ⇒ <code>string</code> | <code>null</code></dt>\n<dd><p>Return the highest version in the list that satisfies the range, or null if none of them do.\nIf multiple versions are found that have equally high values, the last one in the array is returned.\nNote that only version that contain a valid semver string can satisfy a range.</p>\n</dd>\n<dt><a href=\"#parse\">parse(version)</a> ⇒ <code>SemverObject</code> | <code>null</code></dt>\n<dd><p>Returns an object representing the semver version. Returns null\nif a valid semver string can&#39;t be found.</p>\n</dd>\n<dt><a href=\"#valid\">valid(version)</a> ⇒ <code>string</code> | <code>null</code></dt>\n<dd><p>Return the parsed version, or null if it&#39;s not valid.</p>\n</dd>\n<dt><a href=\"#inc\">inc(version, release)</a> ⇒ <code>string</code> | <code>null</code></dt>\n<dd><p>Return the version incremented by the release type\n(major, premajor, minor, preminor, patch, prepatch, or prerelease), or null\nif it&#39;s not valid.</p>\n</dd>\n</dl>\n\n<a name=\"compare\"></a>\n\n## compare(versionA, versionB) ⇒ <code>number</code>\nAccepts string or null values and compares them, returning a number\nindicating sort order. Values are parsed for valid semver strings. Sorts an array\nof versions in ascending order if passed to `Array.sort()`.\n\n**Kind**: global function  \n**Summary**: Compare order of versions  \n**Returns**: <code>number</code> - Returns `0` if `versionA == versionB`,\nor `1` if `versionA` is greater, or `-1` if `versionB` is greater.\nNull values are sorted before invalid semver values, and invalid semver values\nare sorted before valid semver values\nIf both values are invalid semver values, then the values are compared alphabetically.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The first version to compare |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The second version to compare |\n\n**Example**  \nshould not throw when provided with a version.\n\n```js\nversions_1.versions.forEach(function (version) {\n    chai.expect(function () { return semver.compare(version, version); }).to.not.throw();\n});\n```\n\nshould correctly sort lists of versions.\n\n```js\nchai.expect(sortBy(versions_1.versions.slice(), semver.compare)).to.eql(versions_1.versions);\n```\n\nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.compare('2.0.5', '1.16.0')).to.equal(1);\nchai.expect(semver.compare('2.0.5', '2.0.5')).to.equal(0);\nchai.expect(semver.compare('1.16.0', '2.0.5')).to.equal(-1);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.compare('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(1);\nchai.expect(semver.compare('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(-1);\nchai.expect(semver.compare('1.16.0', 'Resin OS v1.16.0')).to.equal(0);\nchai.expect(semver.compare('Resin OS 1.16.0', '2.0.2')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 1.16.0', '1.16.0')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.2', '1.16.0')).to.equal(1);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.compare('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(1);\nchai.expect(semver.compare('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 1.16.0', 'Resin OS 1.16.0')).to.equal(0);\n```\n\nshould correctly compare Balena formatted versions.\n\n```js\nchai.expect(semver.compare('Balena OS 2.0.5', 'Balena OS 2.0.2+rev2')).to.equal(1);\nchai.expect(semver.compare('Balena OS 1.16.0', 'Balena OS 2.0.2 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Balena OS 1.16.0', 'Balena OS 1.16.0')).to.equal(0);\n```\n\nshould correctly compare Balena formatted versions to Resin formatted versions.\n\n```js\nchai.expect(semver.compare('Balena OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(1);\nchai.expect(semver.compare('Balena OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Balena OS 1.16.0', 'Resin OS 1.16.0')).to.equal(0);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.compare('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(-1);\nchai.expect(semver.compare('Linux 14.04', 'A development version')).to.equal(1);\nchai.expect(semver.compare('Version B', 'Version A')).to.equal(1);\nchai.expect(semver.compare('Version A', 'Version A')).to.equal(0);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.compare('2.0.5', null)).to.equal(1);\nchai.expect(semver.compare(null, '1.16.0')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 1.16.0', null)).to.equal(1);\nchai.expect(semver.compare(null, 'Resin OS 1.16.0')).to.equal(-1);\nchai.expect(semver.compare('Linux 14.04', null)).to.equal(1);\nchai.expect(semver.compare(null, 'Linux 14.04')).to.equal(-1);\nchai.expect(semver.compare(null, null)).to.equal(0);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.compare('2.0.5', undefined)).to.equal(1);\nchai.expect(semver.compare(undefined, '1.16.0')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 1.16.0', undefined)).to.equal(1);\nchai.expect(semver.compare(undefined, 'Resin OS 1.16.0')).to.equal(-1);\nchai.expect(semver.compare('Linux 14.04', undefined)).to.equal(1);\nchai.expect(semver.compare(undefined, 'Linux 14.04')).to.equal(-1);\nchai.expect(semver.compare(undefined, undefined)).to.equal(0);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.compare('2.0.0+rev6', '2.0.0+rev3')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(1);\nchai.expect(semver.compare('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(1);\nchai.expect(semver.compare('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(-1);\nchai.expect(semver.compare('2.0.0+rev3', '2.0.0+rev3')).to.equal(0);\nchai.expect(semver.compare('2.0.0+rev1', '2.0.0+rev11')).to.equal(-1);\nchai.expect(semver.compare('2.0.0+rev2', '2.0.0+rev11')).to.equal(-1);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.compare('2.0.0', '2.0.0+dev')).to.equal(1);\nchai.expect(semver.compare('2.0.0', '2.0.0-dev')).to.equal(1);\nchai.expect(semver.compare('2.0.0', '2.0.0.dev')).to.equal(1);\nchai.expect(semver.compare('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(1);\nchai.expect(semver.compare('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(-1);\nchai.expect(semver.compare('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(0);\nchai.expect(semver.compare('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0.dev', '2.0.0')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(0);\n```\n\nshould correctly compare \"(dev)\" and \"(prod)\" versions without revisions.\n\n```js\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0 (dev)')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0 (dev)', 'Resin OS 2.0.0 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0-prod')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0.prod')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0+prod')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0 (dev)', 'Resin OS 2.0.0+prod')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0.dev', 'Resin OS 2.0.0+dev')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0.dev', 'Resin OS 2.0.0 (dev)')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0+dev', 'Resin OS 2.0.0 (dev)')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0.prod', 'Resin OS 2.0.0+prod')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0.prod', 'Resin OS 2.0.0 (prod)')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0+prod', 'Resin OS 2.0.0 (prod)')).to.equal(0);\n```\n\nshould correctly compare \"(dev)\" and \"(prod)\" versions of the same revision.\n\n```js\nchai.expect(semver.compare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3 (dev)')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3 (dev)', 'Resin OS 2.0.0+rev3 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.prod')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3 (dev)', 'Resin OS 2.0.0+rev3+prod')).to.equal(1); // B is invalid\n```\n\n<a name=\"resin-semver-rcompare\"></a>\n\n<a name=\"rcompare\"></a>\n\n## rcompare(versionA, versionB) ⇒ <code>number</code>\nThe reverse of `.compare()`. Accepts string or null values and compares\nthem, returning a number indicating sort order. Values are parsed for valid semver\nstrings. Sorts an array of versions in descending order when passed to `Array.sort()`.\n\n**Kind**: global function  \n**Summary**: Compare order of versions in reverse  \n**Returns**: <code>number</code> - Returns `0` if `versionA == versionB`,\nor `-1` if `versionA` is greater, or `1` if `versionB` is greater.\nValid semver values are sorted before invalid semver values, and invalid semver values are\nsorted before null values.\nIf both values are non-null invalid semver values, then the values are compared alphabetically.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The first version to compare |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The second version to compare |\n\n**Example**  \nshould not throw when provided with a version.\n\n```js\nversions_1.versions.forEach(function (version) {\n    chai.expect(function () { return semver.rcompare(version, version); }).to.not.throw();\n});\n```\n\nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.rcompare('2.0.5', '1.16.0')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.5', '2.0.5')).to.equal(0);\nchai.expect(semver.rcompare('1.16.0', '2.0.5')).to.equal(1);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.rcompare('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(-1);\nchai.expect(semver.rcompare('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(1);\nchai.expect(semver.rcompare('1.16.0', 'Resin OS v1.16.0')).to.equal(0);\nchai.expect(semver.rcompare('Resin OS 1.16.0', '2.0.2')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', '1.16.0')).to.equal(0);\nchai.expect(semver.rcompare('Resin OS 2.0.2', '1.16.0')).to.equal(-1);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.rcompare('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(-1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', 'Resin OS 1.16.0')).to.equal(0);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.rcompare('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(1);\nchai.expect(semver.rcompare('Linux 14.04', 'A development version')).to.equal(-1);\nchai.expect(semver.rcompare('Version B', 'Version A')).to.equal(-1);\nchai.expect(semver.rcompare('Version A', 'Version A')).to.equal(0);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.rcompare('2.0.5', null)).to.equal(-1);\nchai.expect(semver.rcompare(null, '1.16.0')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', null)).to.equal(-1);\nchai.expect(semver.rcompare(null, 'Resin OS 1.16.0')).to.equal(1);\nchai.expect(semver.rcompare('Linux 14.04', null)).to.equal(-1);\nchai.expect(semver.rcompare(null, 'Linux 14.04')).to.equal(1);\nchai.expect(semver.rcompare(null, null)).to.equal(0);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.rcompare('2.0.5', undefined)).to.equal(-1);\nchai.expect(semver.rcompare(undefined, '1.16.0')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', undefined)).to.equal(-1);\nchai.expect(semver.rcompare(undefined, 'Resin OS 1.16.0')).to.equal(1);\nchai.expect(semver.rcompare('Linux 14.04', undefined)).to.equal(-1);\nchai.expect(semver.rcompare(undefined, 'Linux 14.04')).to.equal(1);\nchai.expect(semver.rcompare(undefined, undefined)).to.equal(0);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.rcompare('2.0.0+rev6', '2.0.0+rev3')).to.equal(-1);\nchai.expect(semver.rcompare('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(1);\nchai.expect(semver.rcompare('2.0.0+rev3', '2.0.0+rev3')).to.equal(0);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.rcompare('2.0.0', '2.0.0+dev')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0', '2.0.0-dev')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0', '2.0.0.dev')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(1);\nchai.expect(semver.rcompare('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(0);\nchai.expect(semver.rcompare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(-1);\nchai.expect(semver.rcompare('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(0);\nchai.expect(semver.rcompare('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(-1);\nchai.expect(semver.rcompare('Resin OS 2.0.0.dev', '2.0.0')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(0);\n```\n\n<a name=\"resin-semver-major\"></a>\n\n<a name=\"major\"></a>\n\n## major(version) ⇒ <code>number</code> \\| <code>null</code>\nReturns the major version number in a semver string.\nIf the version is not a valid semver string, or a valid semver string cannot be\nfound, it returns null.\n\n**Kind**: global function  \n**Summary**: Return the major version number  \n**Returns**: <code>number</code> \\| <code>null</code> - - The major version number  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefine</code> | The version string to evaluate |\n\n**Example**  \nshould correctly match valid semver versions.\n\n```js\nchai.expect(semver.major('4.5.1')).to.equal(4);\n```\n\nshould correctly match resinOS prefixed versions.\n\n```js\nchai.expect(semver.major('Resin OS v2.0.5')).to.equal(2);\nchai.expect(semver.major('Resin OS 2.0.2+rev2')).to.equal(2);\nchai.expect(semver.major('Resin OS 2.0.0.rev1 (prod)')).to.equal(2);\nchai.expect(semver.major('Resin OS 2.0.0-rc5.rev1')).to.equal(2);\n```\n\nshould return null when version is `null`.\n\n```js\nchai.expect(semver.major(null)).to.equal(null);\n```\n\nshould return null when version is `undefined`.\n\n```js\nchai.expect(semver.major(undefined)).to.equal(null);\n```\n\nshould return null when the version contains no valid semver value.\n\n```js\nchai.expect(semver.major('My dev version')).to.equal(null);\nchai.expect(semver.major('Linux 14.04')).to.equal(null);\nchai.expect(semver.major('Software version 42.3.20170726.72bbcf8')).to.equal(null);\n```\n\n<a name=\"resin-semver-prerelease\"></a>\n\n<a name=\"prerelease\"></a>\n\n## prerelease(version) ⇒ <code>Array.&lt;(string\\|number)&gt;</code> \\| <code>null</code>\nReturns an array of prerelease components, or null if none exist\n\n**Kind**: global function  \n**Summary**: Return prerelease components  \n**Returns**: <code>Array.&lt;(string\\|number)&gt;</code> \\| <code>null</code> - - An array of prerelease component, or null if none exist  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to evaluate |\n\n**Example**  \nshould return an array of prerelease components when provided a semver string.\n\n```js\nchai.expect(semver.prerelease('1.16.0-alpha.1')).to.eql(['alpha', 1]);\n```\n\nshould return null when provided with a semver string that has no prerelease segment.\n\n```js\nchai.expect(semver.prerelease('1.16.0')).to.eql(null);\n```\n\nshould return an array of prerelease components when provided a resinOS prefixed version.\n\n```js\nchai.expect(semver.prerelease('Resin OS 2.0.0-rc5.rev1')).to.eql(['rc5', 'rev1']);\n```\n\nshould return null when provided a resinOS prefixed version that has no prerelease segment.\n\n```js\nchai.expect(semver.prerelease('Resin OS 2.0.0')).to.equal(null);\n```\n\nshould return null when provided with an invalid version.\n\n```js\nchai.expect(semver.prerelease('My dev version')).to.equal(null);\nchai.expect(semver.prerelease('Linux 14.04')).to.equal(null);\nchai.expect(semver.prerelease('Software version 42.3.20170726.72bbcf8')).to.equal(null);\n```\n\nshould return null when provided with a null value.\n\n```js\nchai.expect(semver.prerelease(null)).to.equal(null);\n```\n\nshould return null when provided with an undefined value.\n\n```js\nchai.expect(semver.prerelease(undefined)).to.equal(null);\n```\n\n<a name=\"resin-semver-gte\"></a>\n\n<a name=\"gte\"></a>\n\n## gte(versionA, versionB) ⇒ <code>boolean</code>\nReturns true if versionA is greater than or equal to versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.\n\n**Kind**: global function  \n**Summary**: Check if a version is greater than or equal to another  \n**Returns**: <code>boolean</code> - - true if versionA is greater than or equal to versionB, otherwise false.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare against |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare to versionA |\n\n**Example**  \nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.gte('2.0.5', '1.16.0')).to.equal(true);\nchai.expect(semver.gte('1.16.0', '2.0.5')).to.equal(false);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.gte('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.gte('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.gte('Resin OS 1.16.0', '2.0.2')).to.equal(false);\nchai.expect(semver.gte('Resin OS 1.16.0', '1.16.0')).to.equal(true);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.gte('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(true);\nchai.expect(semver.gte('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(false);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.gte('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.gte('Linux 14.04', 'A development version')).to.equal(true);\nchai.expect(semver.gte('Version B', 'Version A')).to.equal(true);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.gte('2.0.5', null)).to.equal(true);\nchai.expect(semver.gte(null, '1.16.0')).to.equal(false);\nchai.expect(semver.gte('Resin OS 1.16.0', null)).to.equal(true);\nchai.expect(semver.gte(null, 'Resin OS 1.16.0')).to.equal(false);\nchai.expect(semver.gte('Linux 14.04', null)).to.equal(true);\nchai.expect(semver.gte(null, 'Linux 14.04')).to.equal(false);\nchai.expect(semver.gte(null, null)).to.equal(true);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.gte('2.0.5', undefined)).to.equal(true);\nchai.expect(semver.gte(undefined, '1.16.0')).to.equal(false);\nchai.expect(semver.gte('Resin OS 1.16.0', undefined)).to.equal(true);\nchai.expect(semver.gte(undefined, 'Resin OS 1.16.0')).to.equal(false);\nchai.expect(semver.gte('Linux 14.04', undefined)).to.equal(true);\nchai.expect(semver.gte(undefined, 'Linux 14.04')).to.equal(false);\nchai.expect(semver.gte(undefined, undefined)).to.equal(true);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.gte('2.0.0+rev6', '2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gte('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gte('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gte('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(false);\nchai.expect(semver.gte('2.0.0+rev3', '2.0.0+rev3')).to.equal(true);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.gte('2.0.0', '2.0.0+dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0', '2.0.0-dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0', '2.0.0.dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(false);\nchai.expect(semver.gte('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(true);\nchai.expect(semver.gte('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(true);\nchai.expect(semver.gte('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.gte('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(true);\nchai.expect(semver.gte('Resin OS 2.0.0.dev', '2.0.0')).to.equal(false);\nchai.expect(semver.gte('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(true);\n```\n\n<a name=\"resin-semver-gt\"></a>\n\n<a name=\"gt\"></a>\n\n## gt(versionA, versionB) ⇒ <code>boolean</code>\nReturns true if versionA is greater than versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.\n\n**Kind**: global function  \n**Summary**: Check if a version is greater than another  \n**Returns**: <code>boolean</code> - - true if versionA is greater than versionB, otherwise false.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare against |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare to versionA |\n\n**Example**  \nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.gt('2.0.5', '1.16.0')).to.equal(true);\nchai.expect(semver.gt('1.16.0', '2.0.5')).to.equal(false);\nchai.expect(semver.gt('1.16.0', '1.16.0')).to.equal(false);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.gt('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.gt('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', '2.0.2')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', '1.16.0')).to.equal(false);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.gt('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(true);\nchai.expect(semver.gt('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', 'Resin OS 1.16.0')).to.equal(false);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.gt('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.gt('Linux 14.04', 'A development version')).to.equal(true);\nchai.expect(semver.gt('Version B', 'Version A')).to.equal(true);\nchai.expect(semver.gt('Version A', 'Version A')).to.equal(false);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.gt('2.0.5', null)).to.equal(true);\nchai.expect(semver.gt(null, '1.16.0')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', null)).to.equal(true);\nchai.expect(semver.gt(null, 'Resin OS 1.16.0')).to.equal(false);\nchai.expect(semver.gt('Linux 14.04', null)).to.equal(true);\nchai.expect(semver.gt(null, 'Linux 14.04')).to.equal(false);\nchai.expect(semver.gt(null, null)).to.equal(false);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.gt('2.0.5', undefined)).to.equal(true);\nchai.expect(semver.gt(undefined, '1.16.0')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', undefined)).to.equal(true);\nchai.expect(semver.gt(undefined, 'Resin OS 1.16.0')).to.equal(false);\nchai.expect(semver.gt('Linux 14.04', undefined)).to.equal(true);\nchai.expect(semver.gt(undefined, 'Linux 14.04')).to.equal(false);\nchai.expect(semver.gt(undefined, undefined)).to.equal(false);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.gt('2.0.0+rev6', '2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gt('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gt('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gt('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(false);\nchai.expect(semver.gt('2.0.0+rev3', '2.0.0+rev3')).to.equal(false);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.gt('2.0.0', '2.0.0+dev')).to.equal(true);\nchai.expect(semver.gt('2.0.0', '2.0.0-dev')).to.equal(true);\nchai.expect(semver.gt('2.0.0', '2.0.0.dev')).to.equal(true);\nchai.expect(semver.gt('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(true);\nchai.expect(semver.gt('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(false);\nchai.expect(semver.gt('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(false);\nchai.expect(semver.gt('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(true);\nchai.expect(semver.gt('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.gt('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(false);\nchai.expect(semver.gt('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(true);\nchai.expect(semver.gt('Resin OS 2.0.0.dev', '2.0.0')).to.equal(false);\nchai.expect(semver.gt('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(false);\n```\n\n<a name=\"resin-semver-lt\"></a>\n\n<a name=\"lt\"></a>\n\n## lt(versionA, versionB) ⇒ <code>boolean</code>\nReturns true if versionA is less than versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.\n\n**Kind**: global function  \n**Summary**: Check if a version is less than another  \n**Returns**: <code>boolean</code> - - true if versionA is less than versionB, otherwise false.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare against |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare to versionA |\n\n**Example**  \nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.lt('2.0.5', '1.16.0')).to.equal(false);\nchai.expect(semver.lt('1.16.0', '2.0.5')).to.equal(true);\nchai.expect(semver.lt('1.16.0', '1.16.0')).to.equal(false);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.lt('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.lt('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', '2.0.2')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', '1.16.0')).to.equal(false);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.lt('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(false);\nchai.expect(semver.lt('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', 'Resin OS 1.16.0')).to.equal(false);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.lt('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.lt('Linux 14.04', 'A development version')).to.equal(false);\nchai.expect(semver.lt('Version B', 'Version A')).to.equal(false);\nchai.expect(semver.lt('Version A', 'Version A')).to.equal(false);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.lt('2.0.5', null)).to.equal(false);\nchai.expect(semver.lt(null, '1.16.0')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', null)).to.equal(false);\nchai.expect(semver.lt(null, 'Resin OS 1.16.0')).to.equal(true);\nchai.expect(semver.lt('Linux 14.04', null)).to.equal(false);\nchai.expect(semver.lt(null, 'Linux 14.04')).to.equal(true);\nchai.expect(semver.lt(null, null)).to.equal(false);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.lt('2.0.5', undefined)).to.equal(false);\nchai.expect(semver.lt(undefined, '1.16.0')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', undefined)).to.equal(false);\nchai.expect(semver.lt(undefined, 'Resin OS 1.16.0')).to.equal(true);\nchai.expect(semver.lt('Linux 14.04', undefined)).to.equal(false);\nchai.expect(semver.lt(undefined, 'Linux 14.04')).to.equal(true);\nchai.expect(semver.lt(undefined, undefined)).to.equal(false);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.lt('2.0.0+rev6', '2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lt('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lt('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lt('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(true);\nchai.expect(semver.lt('2.0.0+rev3', '2.0.0+rev3')).to.equal(false);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.lt('2.0.0', '2.0.0+dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0', '2.0.0-dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0', '2.0.0.dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(true);\nchai.expect(semver.lt('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(false);\nchai.expect(semver.lt('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(false);\nchai.expect(semver.lt('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.lt('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(false);\nchai.expect(semver.lt('Resin OS 2.0.0.dev', '2.0.0')).to.equal(true);\nchai.expect(semver.lt('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(false);\n```\n\n<a name=\"resin-semver-satisfies\"></a>\n\n<a name=\"satisfies\"></a>\n\n## satisfies(version, range) ⇒ <code>boolean</code>\nReturn true if the parsed version satisfies the range.\nThis method will always return false if the provided version doesn't contain a valid semver string.\n\n**Kind**: global function  \n**Summary**: Check if a version satisfies a range  \n**Returns**: <code>boolean</code> - - True if the parsed version satisfies the range, false otherwise  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version to evaluate |\n| range | <code>string</code> | A semver range string, see the [node-semver](https://github.com/npm/node-semver#ranges) docs for details |\n\n**Example**  \nshould correctly evaluate valid semver values.\n\n```js\nchai.expect(semver.satisfies('2.0.5', '^2.0.0')).to.equal(true);\nchai.expect(semver.satisfies('1.16.0', '^2.0.0')).to.equal(false);\n```\n\nshould correctly evaluate Resin formatted versions.\n\n```js\nchai.expect(semver.satisfies('Resin OS 2.0.2+rev2', '^2.0.0')).to.equal(true);\nchai.expect(semver.satisfies('Resin OS 2.0.2 (prod)', '^2.0.0')).to.equal(true);\nchai.expect(semver.satisfies('Resin OS 1.16.0', '^2.0.0')).to.equal(false);\n```\n\nshould always return false when provided with an invalid semver value.\n\n```js\nchai.expect(semver.satisfies('Linux 14.04', '^2.0.0')).to.equal(false);\nchai.expect(semver.satisfies('A development version', '^2.0.0')).to.equal(false);\nchai.expect(semver.satisfies('Version A', '^2.0.0')).to.equal(false);\nchai.expect(semver.satisfies('Linux 14.04', '*')).to.equal(false);\nchai.expect(semver.satisfies('Linux 14.04', '< 1.0.0')).to.equal(false);\n```\n\nshould correctly evaluate null values.\n\n```js\nchai.expect(semver.satisfies(null, '^2.0.0')).to.equal(false);\n```\n\nshould correctly evaluate undefined values.\n\n```js\nchai.expect(semver.satisfies(undefined, '^2.0.0')).to.equal(false);\n```\n\n<a name=\"resin-semver-maxsatisfying\"></a>\n\n<a name=\"maxSatisfying\"></a>\n\n## maxSatisfying(versions, range) ⇒ <code>string</code> \\| <code>null</code>\nReturn the highest version in the list that satisfies the range, or null if none of them do.\nIf multiple versions are found that have equally high values, the last one in the array is returned.\nNote that only version that contain a valid semver string can satisfy a range.\n\n**Kind**: global function  \n**Summary**: Return the highest version in the list that satisfies the range  \n**Returns**: <code>string</code> \\| <code>null</code> - - The highest matching version string, or null.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versions | <code>Array.&lt;(string\\|null\\|undefined)&gt;</code> | An array of versions to evaluate |\n| range | <code>string</code> | A semver range string, see the [node-semver](https://github.com/npm/node-semver#ranges) docs for details |\n\n**Example**  \nshould return the correct version.\n\n```js\nchai.expect(semver.maxSatisfying(versions_1.versions, '1.1.*')).to.equal('Resin OS 1.1.4');\nchai.expect(semver.maxSatisfying(versions_1.versions, '^2.0.0')).to.equal('Resin OS 2.14.0');\nchai.expect(semver.maxSatisfying(versions_1.versions, '< 1.0.0')).to.equal(null);\n```\n\nshould return the first version found if multiple versions have equally high values.\n\n```js\nchai.expect(semver.maxSatisfying(['1.0.0', 'Resin OS 1.1.4', '1.1.4'], '1.1.*')).to.equal('Resin OS 1.1.4');\n```\n\nshould normalize versions used in range parameter.\n\n```js\nchai.expect(semver.maxSatisfying(versions_1.versions, '2.0.0.rev1')).to.equal('Resin OS 2.0.0+rev11');\nchai.expect(semver.maxSatisfying(versions_1.versions, '^ Resin OS 2.0.0 (prod)')).to.equal('Resin OS 2.14.0');\nchai.expect(semver.maxSatisfying(versions_1.versions, '< Resin OS v1.0.0')).to.equal(null);\nchai.expect(semver.maxSatisfying(versions_1.versions, 'Resin OS v1.1.*')).to.equal('Resin OS 1.1.4');\n```\n\n<a name=\"resin-semver-parse\"></a>\n\n<a name=\"parse\"></a>\n\n## parse(version) ⇒ <code>SemverObject</code> \\| <code>null</code>\nReturns an object representing the semver version. Returns null\nif a valid semver string can't be found.\n\n**Kind**: global function  \n**Summary**: Parse a version into an object  \n**Returns**: <code>SemverObject</code> \\| <code>null</code> - - An object representing the version string, or\nnull if a valid semver string could not be found  \n**Access**: public  \n\n| Param | Type |\n| --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | \n\n**Example**  \nshould correctly parse valid semver values.\n\n```js\nchai.expect(semver.parse('2.0.5')).to.deep.include({\n    raw: '2.0.5',\n    major: 2,\n    minor: 0,\n    patch: 5,\n    version: '2.0.5',\n    prerelease: [],\n    build: [],\n});\n```\n\nshould correctly parse Resin formatted versions.\n\n```js\nchai.expect(semver.parse('Resin OS v2.0.2+rev2')).to.deep.include({\n    raw: 'Resin OS v2.0.2+rev2',\n    major: 2,\n    minor: 0,\n    patch: 2,\n    version: '2.0.2',\n    prerelease: [],\n    build: ['rev2'],\n});\nchai.expect(semver.parse('Resin OS v2.0.2 (prod)')).to.deep.include({\n    raw: 'Resin OS v2.0.2 (prod)',\n    major: 2,\n    minor: 0,\n    patch: 2,\n    version: '2.0.2',\n    prerelease: [],\n    build: ['prod'],\n});\nchai.expect(semver.parse('Resin OS v2.0.2.prod')).to.deep.include({\n    raw: 'Resin OS v2.0.2.prod',\n    major: 2,\n    minor: 0,\n    patch: 2,\n    version: '2.0.2',\n    prerelease: [],\n    build: ['prod'],\n});\nchai.expect(semver.parse('Resin OS 2.0.0-rc5.rev1')).to.deep.include({\n    raw: 'Resin OS 2.0.0-rc5.rev1',\n    major: 2,\n    minor: 0,\n    patch: 0,\n    version: '2.0.0-rc5.rev1',\n    prerelease: ['rc5', 'rev1'],\n    build: [],\n});\nchai.expect(semver.parse('Resin OS 2.3.0+rev1.prod')).to.deep.include({\n    raw: 'Resin OS 2.3.0+rev1.prod',\n    major: 2,\n    minor: 3,\n    patch: 0,\n    version: '2.3.0',\n    prerelease: [],\n    build: ['rev1', 'prod'],\n});\nchai.expect(semver.parse('Resin OS v2.3.0-a.b.c (prod)')).to.deep.include({\n    raw: 'Resin OS v2.3.0-a.b.c (prod)',\n    major: 2,\n    minor: 3,\n    patch: 0,\n    version: '2.3.0-a.b.c',\n    prerelease: ['a', 'b', 'c'],\n    build: ['prod'],\n});\nchai.expect(semver.parse('Resin OS 2.3.0-a.b.c+d.e.f (prod)')).to.deep.include({\n    raw: 'Resin OS 2.3.0-a.b.c+d.e.f (prod)',\n    major: 2,\n    minor: 3,\n    patch: 0,\n    version: '2.3.0-a.b.c',\n    prerelease: ['a', 'b', 'c'],\n    build: ['d', 'e', 'f', 'prod'],\n});\nchai.expect(semver.parse('Resin OS 2.3.0+a.b.c (prod)')).to.deep.include({\n    raw: 'Resin OS 2.3.0+a.b.c (prod)',\n    major: 2,\n    minor: 3,\n    patch: 0,\n    version: '2.3.0',\n    prerelease: [],\n    build: ['a', 'b', 'c', 'prod'],\n});\n```\n\nshould correctly parse invalid semver values.\n\n```js\nchai.expect(semver.parse('Linux 14.04')).to.equal(null);\nchai.expect(semver.parse('A development version')).to.equal(null);\nchai.expect(semver.parse('Version A')).to.equal(null);\n```\n\nshould correctly parse null values.\n\n```js\nchai.expect(semver.parse(null)).to.equal(null);\n```\n\nshould correctly parse undefined values.\n\n```js\nchai.expect(semver.parse(undefined)).to.equal(null);\n```\n\n<a name=\"resin-semver-valid\"></a>\n\n<a name=\"valid\"></a>\n\n## valid(version) ⇒ <code>string</code> \\| <code>null</code>\nReturn the parsed version, or null if it's not valid.\n\n**Kind**: global function  \n**Summary**: Check if a version string is valid  \n**Returns**: <code>string</code> \\| <code>null</code> - - The parsed version string, or\nnull if a valid semver string could not be found  \n**Access**: public  \n\n| Param | Type |\n| --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | \n\n**Example**  \nshould return null for invalid semver values.\n\n```js\nchai.expect(semver.valid(null)).to.equal(null);\nchai.expect(semver.valid(undefined)).to.equal(null);\nchai.expect(semver.valid('')).to.equal(null);\nchai.expect(semver.valid('foobar')).to.equal(null);\nchai.expect(semver.valid('12345')).to.equal(null);\nchai.expect(semver.valid('1.2.3.4.5')).to.equal(null);\n```\n\nshould correctly parse valid values.\n\n```js\nchai.expect(semver.valid('Resin OS 1.0.0-pre')).to.equal('1.0.0-pre');\nchai.expect(semver.valid('Resin OS 1.0.5 (fido)')).to.equal('1.0.5');\nchai.expect(semver.valid('Resin OS 2.0.0-beta.8')).to.equal('2.0.0-beta.8');\nchai.expect(semver.valid('Resin OS 2.0.0-beta10.rev1')).to.equal('2.0.0-beta10.rev1');\nchai.expect(semver.valid('Resin OS 2.0.0+rev3')).to.equal('2.0.0');\nchai.expect(semver.valid('Resin OS 2.0.0.rev1 (prod)')).to.equal('2.0.0');\nchai.expect(semver.valid('Resin OS 2.0.0+rev4 (dev)')).to.equal('2.0.0');\nchai.expect(semver.valid('2.0.6+rev3.dev')).to.equal('2.0.6');\n```\n\n<a name=\"resin-semver-inc\"></a>\n\n<a name=\"inc\"></a>\n\n## inc(version, release) ⇒ <code>string</code> \\| <code>null</code>\nReturn the version incremented by the release type\n(major, premajor, minor, preminor, patch, prepatch, or prerelease), or null\nif it's not valid.\n\n**Kind**: global function  \n**Summary**: Return an incremented version  \n**Returns**: <code>string</code> \\| <code>null</code> - - The incremented version string, or\nnull if a valid semver string could not be found  \n**Access**: public  \n\n| Param | Type |\n| --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | \n| release | <code>string</code> | \n\n**Example**  \nshould return null for invalid semver values.\n\n```js\nchai.expect(semver.inc(null, 'major')).to.equal(null);\nchai.expect(semver.inc(undefined, 'major')).to.equal(null);\nchai.expect(semver.inc('', 'major')).to.equal(null);\nchai.expect(semver.inc('foobar', 'major')).to.equal(null);\nchai.expect(semver.inc('12345', 'major')).to.equal(null);\nchai.expect(semver.inc('1.2.3.4.5', 'major')).to.equal(null);\n```\n\nshould correctly increment valid values by a 'premajor' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'premajor')).to.equal('2.0.0-0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'premajor')).to.equal('2.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'premajor')).to.equal('3.0.0-0');\n```\n\nshould correctly increment valid values by a 'preminor' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'preminor')).to.equal('1.1.0-0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'preminor')).to.equal('1.1.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'preminor')).to.equal('2.1.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'preminor')).to.equal('2.1.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'preminor')).to.equal('2.1.0-0');\nchai.expect(semver.inc('Resin OS 2.1.0.rev1 (prod)', 'preminor')).to.equal('2.2.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'preminor')).to.equal('2.1.0-0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'preminor')).to.equal('2.1.0-0');\n```\n\nshould correctly increment valid values by a 'prepatch' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'prepatch')).to.equal('1.0.1-0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'prepatch')).to.equal('1.0.6-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'prepatch')).to.equal('2.0.7-0');\n```\n\nshould correctly increment valid values by a 'prerelease' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'prerelease')).to.equal('1.0.0-pre.0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'prerelease')).to.equal('1.0.6-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'prerelease')).to.equal('2.0.0-beta.9');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'prerelease')).to.equal('2.0.0-beta10.rev1.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'prerelease')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'prerelease')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'prerelease')).to.equal('2.0.1-0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'prerelease')).to.equal('2.0.7-0');\n```\n\nshould correctly increment valid values by a 'major' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'major')).to.equal('1.0.0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'major')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'major')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'major')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'major')).to.equal('3.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'major')).to.equal('3.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'major')).to.equal('3.0.0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'major')).to.equal('3.0.0');\n```\n\nshould correctly increment valid values by a 'minor' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'minor')).to.equal('1.0.0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'minor')).to.equal('1.1.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'minor')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'minor')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'minor')).to.equal('2.1.0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'minor')).to.equal('2.1.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'minor')).to.equal('2.1.0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'minor')).to.equal('2.1.0');\n```\n\nshould correctly increment valid values by a 'patch' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'patch')).to.equal('1.0.0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'patch')).to.equal('1.0.6');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'patch')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'patch')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'patch')).to.equal('2.0.1');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'patch')).to.equal('2.0.1');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'patch')).to.equal('2.0.1');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'patch')).to.equal('2.0.7');\n```\n\n\n\n\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/resin-io-modules/resin-semver/issues"},"_id":"resin-semver@1.3.0-balena-ceeaf7100b2dffa3ad42867599a10dc5f1ea5706","_npmVersion":"6.1.0","_nodeVersion":"10.4.0","_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"dist":{"integrity":"sha512-CWc0h06vqW5unFiPESnd0/p0HyyOcU+PZIi75zkJTre3z/WCoNlUj7InlKYeoV//l7Ho6vdQhih+boekNxZuKw==","shasum":"3f8946e99555a80a2785eea78944126a7962ba1a","tarball":"https://registry.npmjs.org/resin-semver/-/resin-semver-1.3.0-balena-ceeaf7100b2dffa3ad42867599a10dc5f1ea5706.tgz","fileCount":17,"unpackedSize":130041,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJboOkNCRA9TVsSAnZWagAADgIQAIBgQ5LS614MTS06kFd8\n8Dc8Rc6WFNv4VZs4UbntCgsk0QY7jHY99U6b8gWQIapUySz9EHPrzG/uK2sO\nxvQJH8VmUl3BM4AUi64qQDomMjYh2mtxROK/gUkVHnqWAjhtsWKEuBM4X2N4\n6pCcd9jKUJxPwt6hvQ+HgE5vNTgJBUzJEYko/54eV8n4RCMXpBkvyIuIU3/+\nyvgNXRNKILmlh2hkgNbK7mCWzz2+jcoReyyLaBKCL2bm6emaxRuuUIVQ/oCo\ng4wOiu5Kg+Gva0zRHL0dzvefsNlJ1qG4RxY3g958FkeXDxG2mJL23lmv1Lif\nRrvJqAANyONCnAfxiGyXg/ANe3OfnVSOl133zSeG48wao5R7OCmgirGgRlIH\nkaHFOHNWp2sP6WMWYzJ0eTeU6qqPptU6k1pugy0owUdIzfxytiMUisURFI0o\n1ONlABFwVnktF+QAI3lctYUCg4vmxH7LdyLYGnfa2bOzozOtS6zwLwU2b3da\nGQW1vNk8x0loo1cQGgkTZkKO6mA4n5J0NnXhkSYk9ipXNlI2KfdkxGUSKOHG\n8MspfZjG+sjSO2P5N4O6ZNeoewKff6PKcfW7kcMRWZcW8DzM7qRa8/6TC0LI\nYq2kZAYp/6Ulw0tH5Yy7yNfGR7OT3NUbRg2OXicZIhnEerABO2repfwvrwO/\nhr2u\r\n=LYRu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICnlky5JyA949CUTHDrOvCqaAKC84Znlv4xahdazq9r1AiBhYEIGd+zP+2pGlOC2ihFgYWzv1JhITEUcfK+HaM1LmA=="}]},"maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/resin-semver_1.3.0-balena-ceeaf7100b2dffa3ad42867599a10dc5f1ea5706_1537272076167_0.2808150743380289"},"_hasShrinkwrap":false},"1.3.0":{"name":"resin-semver","version":"1.3.0","description":"Resin.io specific semver utility methods","main":"src/index.js","typings":"src/index.ts","homepage":"https://github.com/resin-io-modules/resin-semver","repository":{"type":"git","url":"git+https://github.com/resin-io-modules/resin-semver.git"},"keywords":["resin","resin.io","semver"],"scripts":{"test":"npm run lint && ./automation/test.js","build":"tsc && npm run docs","lint":"tslint -t stylish -c tslint.json 'src/**/*.ts' 'test/**/*.ts'","docs":"./automation/docs.js","ci":"npm run build && catch-uncommitted && npm test","precommit":"lint-staged","prettify":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\""},"author":{"name":"Lucian Buzzo","email":"lucian@resin.io"},"license":"Apache-2.0","dependencies":{"@types/lodash.memoize":"^4.1.2","@types/semver":"^5.4.0","lodash.memoize":"^4.1.2","semver":"^5.3.0"},"devDependencies":{"@types/chai":"^4.0.1","@types/lodash.sortby":"^4.7.4","@types/mocha":"^2.2.41","catch-uncommitted":"^1.0.0","chai":"^4.1.0","husky":"^0.14.3","jsdoc-to-markdown":"^3.0.0","lint-staged":"^4.0.4","lodash.sortby":"^4.7.0","mocha":"^3.4.2","prettier":"^1.6.1","ts-node":"^3.2.1","tslint":"^5.5.0","typescript":"^2.4.2"},"lint-staged":{"*.ts":["prettier --write","npm run lint","npm run docs","git add"]},"gitHead":"1f16e098b5b77d3630ae4ed6f65095de1489b33e","bugs":{"url":"https://github.com/resin-io-modules/resin-semver/issues"},"_id":"resin-semver@1.3.0","_npmVersion":"6.1.0","_nodeVersion":"10.4.0","_npmUser":{"name":"resin.io","email":"accounts@resin.io"},"dist":{"integrity":"sha512-3448TCpZk6Ehm1Bo3ag7WPmEXz62YaWppKGiDC834m9cs31eSkamj45Y5RqKGr7R8Q1WKp12Wm2xitxiJiO12w==","shasum":"8bd024b6b309c19db7b65cc8a623a7ac74ef8a2c","tarball":"https://registry.npmjs.org/resin-semver/-/resin-semver-1.3.0.tgz","fileCount":17,"unpackedSize":129993,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJboOtyCRA9TVsSAnZWagAAwdEP/iTIXen6trgAVlLTe1/V\nRA3dBDTpnGFhOpPPgmsc6hlX/F+krPnkdbS736WTOqWVEcufnA81y2yQJVmS\nhCVi8Vjh5tNL001nvuLfNYJ/vqkBp1OyIHiwKo2K+BDNIT/1juNIWmwybmte\nZ1quLqiFeTuUkjCL25DFmiYjKWFCRV5KwjQS/kaz8xQAThtbvoJhCKNv/4/m\nFFrC5BqSDJokAsdUMi3BCJWX7HU9is8U7yVcQD1gV4rk7/MDpz7tbufjdDa2\n0pM63UtWTVQQdTfhxAA8yc+1S+7wpc8VsnYUAoQXIrfXK7Gr5FyvnZIUdnA0\nYg18M3tj5TYm4oH4pHcTXihcyulvktHMd0Dh71CGj0omSXF2/xa0rC70/Qnp\ntodmPlXeO/fiF4i0izQ9GGF/KcD4tShHMlEsf5O9Bt8hinYJRssAP/NQhjki\nwUqMnAFRN6QM0XyWfqJJEZriTOH2xMmFdkE4ZsVeEtd81FIDf3eiH9X6FVfo\n0JgkOF+zF08oB6sIMjwvXq+4erjKN4EZTq/b4SBt1Rdiky6qY3hqCYmaGIAT\n0cdehQUtPQu+1D3vpQDM9tV0J2F48qFRkyobOT41rKRbg18/Dgqp6Qh6Q9hs\n7dTEKldOFOXTaBiv/dLj+BwIj6LRrQM6hGMetn9a3gHaaUeDv3RPkDBAc2bI\nSJ9/\r\n=/Esm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA73tvKD/aky+S2xH2Yafp4KX+aS0KbPMThON4eF4LIbAiEAkvl/qsBMg8ceNQ6824JY2myxmAbjz2KStZA2j7I7am4="}]},"maintainers":[{"name":"resin.io","email":"accounts@resin.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/resin-semver_1.3.0_1537272689366_0.5347595132013865"},"_hasShrinkwrap":false,"deprecated":"resin-semver is deprecated, please use balena-semver instead"},"1.4.0-balenaos-fc88a50891d2cd949592e2fbd4ee0b112a26de38":{"name":"resin-semver","version":"1.4.0-balenaos-fc88a50891d2cd949592e2fbd4ee0b112a26de38","description":"Resin.io specific semver utility methods","main":"src/index.js","typings":"src/index.ts","homepage":"https://github.com/resin-io-modules/resin-semver","repository":{"type":"git","url":"git+https://github.com/resin-io-modules/resin-semver.git"},"keywords":["resin","resin.io","semver"],"scripts":{"test":"npm run lint && ./automation/test.js","build":"tsc && npm run docs","lint":"tslint -t stylish -c tslint.json 'src/**/*.ts' 'test/**/*.ts'","docs":"./automation/docs.js","ci":"npm run build && catch-uncommitted && npm test","precommit":"lint-staged","prettify":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\""},"author":{"name":"Lucian Buzzo","email":"lucian@resin.io"},"license":"Apache-2.0","dependencies":{"@types/lodash.memoize":"^4.1.2","@types/semver":"^5.4.0","lodash.memoize":"^4.1.2","semver":"^5.3.0"},"devDependencies":{"@types/chai":"^4.0.1","@types/lodash.sortby":"^4.7.4","@types/mocha":"^2.2.41","catch-uncommitted":"^1.0.0","chai":"^4.1.0","husky":"^0.14.3","jsdoc-to-markdown":"^3.0.0","lint-staged":"^4.0.4","lodash.sortby":"^4.7.0","mocha":"^3.4.2","prettier":"^1.6.1","ts-node":"^3.2.1","tslint":"^5.5.0","typescript":"^2.4.2"},"lint-staged":{"*.ts":["prettier --write","npm run lint","npm run docs","git add"]},"gitHead":"fc88a50891d2cd949592e2fbd4ee0b112a26de38","readme":"resin-semver\n============\n\n> Resin.io specific semver utility methods\n\n[![Build Status](https://travis-ci.org/resin-io-modules/resin-semver.svg?branch=master)](https://travis-ci.org/resin-io-modules/resin-semver)\n\nRole\n----\n\nThe intention of this module is to provide a collection of resin specific semver utility methods.\n\n**THIS MODULE IS LOW LEVEL AND IS NOT MEANT TO BE USED BY END USERS DIRECTLY**.\n\nUnless you know what you're doing, use the [Resin SDK](https://github.com/resin-io/resin-sdk) instead.\n\nInstallation\n------------\n\nInstall `resin-semver` by running:\n\n```sh\n$ npm install --save resin-semver\n```\n\nDocumentation\n-------------\n\n## Functions\n\n<dl>\n<dt><a href=\"#compare\">compare(versionA, versionB)</a> ⇒ <code>number</code></dt>\n<dd><p>Accepts string or null values and compares them, returning a number\nindicating sort order. Values are parsed for valid semver strings. Sorts an array\nof versions in ascending order if passed to <code>Array.sort()</code>.</p>\n</dd>\n<dt><a href=\"#rcompare\">rcompare(versionA, versionB)</a> ⇒ <code>number</code></dt>\n<dd><p>The reverse of <code>.compare()</code>. Accepts string or null values and compares\nthem, returning a number indicating sort order. Values are parsed for valid semver\nstrings. Sorts an array of versions in descending order when passed to <code>Array.sort()</code>.</p>\n</dd>\n<dt><a href=\"#major\">major(version)</a> ⇒ <code>number</code> | <code>null</code></dt>\n<dd><p>Returns the major version number in a semver string.\nIf the version is not a valid semver string, or a valid semver string cannot be\nfound, it returns null.</p>\n</dd>\n<dt><a href=\"#prerelease\">prerelease(version)</a> ⇒ <code>Array.&lt;(string|number)&gt;</code> | <code>null</code></dt>\n<dd><p>Returns an array of prerelease components, or null if none exist</p>\n</dd>\n<dt><a href=\"#gte\">gte(versionA, versionB)</a> ⇒ <code>boolean</code></dt>\n<dd><p>Returns true if versionA is greater than or equal to versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.</p>\n</dd>\n<dt><a href=\"#gt\">gt(versionA, versionB)</a> ⇒ <code>boolean</code></dt>\n<dd><p>Returns true if versionA is greater than versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.</p>\n</dd>\n<dt><a href=\"#lt\">lt(versionA, versionB)</a> ⇒ <code>boolean</code></dt>\n<dd><p>Returns true if versionA is less than versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.</p>\n</dd>\n<dt><a href=\"#satisfies\">satisfies(version, range)</a> ⇒ <code>boolean</code></dt>\n<dd><p>Return true if the parsed version satisfies the range.\nThis method will always return false if the provided version doesn&#39;t contain a valid semver string.</p>\n</dd>\n<dt><a href=\"#maxSatisfying\">maxSatisfying(versions, range)</a> ⇒ <code>string</code> | <code>null</code></dt>\n<dd><p>Return the highest version in the list that satisfies the range, or null if none of them do.\nIf multiple versions are found that have equally high values, the last one in the array is returned.\nNote that only version that contain a valid semver string can satisfy a range.</p>\n</dd>\n<dt><a href=\"#parse\">parse(version)</a> ⇒ <code>SemverObject</code> | <code>null</code></dt>\n<dd><p>Returns an object representing the semver version. Returns null\nif a valid semver string can&#39;t be found.</p>\n</dd>\n<dt><a href=\"#valid\">valid(version)</a> ⇒ <code>string</code> | <code>null</code></dt>\n<dd><p>Return the parsed version, or null if it&#39;s not valid.</p>\n</dd>\n<dt><a href=\"#inc\">inc(version, release)</a> ⇒ <code>string</code> | <code>null</code></dt>\n<dd><p>Return the version incremented by the release type\n(major, premajor, minor, preminor, patch, prepatch, or prerelease), or null\nif it&#39;s not valid.</p>\n</dd>\n</dl>\n\n<a name=\"compare\"></a>\n\n## compare(versionA, versionB) ⇒ <code>number</code>\nAccepts string or null values and compares them, returning a number\nindicating sort order. Values are parsed for valid semver strings. Sorts an array\nof versions in ascending order if passed to `Array.sort()`.\n\n**Kind**: global function  \n**Summary**: Compare order of versions  \n**Returns**: <code>number</code> - Returns `0` if `versionA == versionB`,\nor `1` if `versionA` is greater, or `-1` if `versionB` is greater.\nNull values are sorted before invalid semver values, and invalid semver values\nare sorted before valid semver values\nIf both values are invalid semver values, then the values are compared alphabetically.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The first version to compare |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The second version to compare |\n\n**Example**  \nshould not throw when provided with a version.\n\n```js\nversions_1.versions.forEach(function (version) {\n    chai.expect(function () { return semver.compare(version, version); }).to.not.throw();\n});\n```\n\nshould correctly sort lists of versions.\n\n```js\nchai.expect(sortBy(versions_1.versions.slice(), semver.compare)).to.eql(versions_1.versions);\n```\n\nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.compare('2.0.5', '1.16.0')).to.equal(1);\nchai.expect(semver.compare('2.0.5', '2.0.5')).to.equal(0);\nchai.expect(semver.compare('1.16.0', '2.0.5')).to.equal(-1);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.compare('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(1);\nchai.expect(semver.compare('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(-1);\nchai.expect(semver.compare('1.16.0', 'Resin OS v1.16.0')).to.equal(0);\nchai.expect(semver.compare('Resin OS 1.16.0', '2.0.2')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 1.16.0', '1.16.0')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.2', '1.16.0')).to.equal(1);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.compare('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(1);\nchai.expect(semver.compare('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 1.16.0', 'Resin OS 1.16.0')).to.equal(0);\n```\n\nshould correctly compare Balena formatted versions.\n\n```js\nchai.expect(semver.compare('balenaOS 2.0.5', 'balenaOS 2.0.2+rev2')).to.equal(1);\nchai.expect(semver.compare('balenaOS 1.16.0', 'balenaOS 2.0.2 (prod)')).to.equal(-1);\nchai.expect(semver.compare('balenaOS 1.16.0', 'balenaOS 1.16.0')).to.equal(0);\n```\n\nshould correctly compare Balena formatted versions to Resin formatted versions.\n\n```js\nchai.expect(semver.compare('balenaOS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(1);\nchai.expect(semver.compare('balenaOS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(-1);\nchai.expect(semver.compare('balenaOS 1.16.0', 'Resin OS 1.16.0')).to.equal(0);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.compare('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(-1);\nchai.expect(semver.compare('Linux 14.04', 'A development version')).to.equal(1);\nchai.expect(semver.compare('Version B', 'Version A')).to.equal(1);\nchai.expect(semver.compare('Version A', 'Version A')).to.equal(0);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.compare('2.0.5', null)).to.equal(1);\nchai.expect(semver.compare(null, '1.16.0')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 1.16.0', null)).to.equal(1);\nchai.expect(semver.compare(null, 'Resin OS 1.16.0')).to.equal(-1);\nchai.expect(semver.compare('Linux 14.04', null)).to.equal(1);\nchai.expect(semver.compare(null, 'Linux 14.04')).to.equal(-1);\nchai.expect(semver.compare(null, null)).to.equal(0);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.compare('2.0.5', undefined)).to.equal(1);\nchai.expect(semver.compare(undefined, '1.16.0')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 1.16.0', undefined)).to.equal(1);\nchai.expect(semver.compare(undefined, 'Resin OS 1.16.0')).to.equal(-1);\nchai.expect(semver.compare('Linux 14.04', undefined)).to.equal(1);\nchai.expect(semver.compare(undefined, 'Linux 14.04')).to.equal(-1);\nchai.expect(semver.compare(undefined, undefined)).to.equal(0);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.compare('2.0.0+rev6', '2.0.0+rev3')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(1);\nchai.expect(semver.compare('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(1);\nchai.expect(semver.compare('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(-1);\nchai.expect(semver.compare('2.0.0+rev3', '2.0.0+rev3')).to.equal(0);\nchai.expect(semver.compare('2.0.0+rev1', '2.0.0+rev11')).to.equal(-1);\nchai.expect(semver.compare('2.0.0+rev2', '2.0.0+rev11')).to.equal(-1);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.compare('2.0.0', '2.0.0+dev')).to.equal(1);\nchai.expect(semver.compare('2.0.0', '2.0.0-dev')).to.equal(1);\nchai.expect(semver.compare('2.0.0', '2.0.0.dev')).to.equal(1);\nchai.expect(semver.compare('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(1);\nchai.expect(semver.compare('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(-1);\nchai.expect(semver.compare('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(0);\nchai.expect(semver.compare('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0.dev', '2.0.0')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(0);\n```\n\nshould correctly compare \"(dev)\" and \"(prod)\" versions without revisions.\n\n```js\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0 (dev)')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0 (dev)', 'Resin OS 2.0.0 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0-prod')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0.prod')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0+prod')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0 (dev)', 'Resin OS 2.0.0+prod')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0.dev', 'Resin OS 2.0.0+dev')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0.dev', 'Resin OS 2.0.0 (dev)')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0+dev', 'Resin OS 2.0.0 (dev)')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0.prod', 'Resin OS 2.0.0+prod')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0.prod', 'Resin OS 2.0.0 (prod)')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0+prod', 'Resin OS 2.0.0 (prod)')).to.equal(0);\n```\n\nshould correctly compare \"(dev)\" and \"(prod)\" versions of the same revision.\n\n```js\nchai.expect(semver.compare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3 (dev)')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3 (dev)', 'Resin OS 2.0.0+rev3 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.prod')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3 (dev)', 'Resin OS 2.0.0+rev3+prod')).to.equal(1); // B is invalid\n```\n\n<a name=\"resin-semver-rcompare\"></a>\n\n<a name=\"rcompare\"></a>\n\n## rcompare(versionA, versionB) ⇒ <code>number</code>\nThe reverse of `.compare()`. Accepts string or null values and compares\nthem, returning a number indicating sort order. Values are parsed for valid semver\nstrings. Sorts an array of versions in descending order when passed to `Array.sort()`.\n\n**Kind**: global function  \n**Summary**: Compare order of versions in reverse  \n**Returns**: <code>number</code> - Returns `0` if `versionA == versionB`,\nor `-1` if `versionA` is greater, or `1` if `versionB` is greater.\nValid semver values are sorted before invalid semver values, and invalid semver values are\nsorted before null values.\nIf both values are non-null invalid semver values, then the values are compared alphabetically.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The first version to compare |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The second version to compare |\n\n**Example**  \nshould not throw when provided with a version.\n\n```js\nversions_1.versions.forEach(function (version) {\n    chai.expect(function () { return semver.rcompare(version, version); }).to.not.throw();\n});\n```\n\nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.rcompare('2.0.5', '1.16.0')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.5', '2.0.5')).to.equal(0);\nchai.expect(semver.rcompare('1.16.0', '2.0.5')).to.equal(1);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.rcompare('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(-1);\nchai.expect(semver.rcompare('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(1);\nchai.expect(semver.rcompare('1.16.0', 'Resin OS v1.16.0')).to.equal(0);\nchai.expect(semver.rcompare('Resin OS 1.16.0', '2.0.2')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', '1.16.0')).to.equal(0);\nchai.expect(semver.rcompare('Resin OS 2.0.2', '1.16.0')).to.equal(-1);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.rcompare('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(-1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', 'Resin OS 1.16.0')).to.equal(0);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.rcompare('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(1);\nchai.expect(semver.rcompare('Linux 14.04', 'A development version')).to.equal(-1);\nchai.expect(semver.rcompare('Version B', 'Version A')).to.equal(-1);\nchai.expect(semver.rcompare('Version A', 'Version A')).to.equal(0);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.rcompare('2.0.5', null)).to.equal(-1);\nchai.expect(semver.rcompare(null, '1.16.0')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', null)).to.equal(-1);\nchai.expect(semver.rcompare(null, 'Resin OS 1.16.0')).to.equal(1);\nchai.expect(semver.rcompare('Linux 14.04', null)).to.equal(-1);\nchai.expect(semver.rcompare(null, 'Linux 14.04')).to.equal(1);\nchai.expect(semver.rcompare(null, null)).to.equal(0);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.rcompare('2.0.5', undefined)).to.equal(-1);\nchai.expect(semver.rcompare(undefined, '1.16.0')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', undefined)).to.equal(-1);\nchai.expect(semver.rcompare(undefined, 'Resin OS 1.16.0')).to.equal(1);\nchai.expect(semver.rcompare('Linux 14.04', undefined)).to.equal(-1);\nchai.expect(semver.rcompare(undefined, 'Linux 14.04')).to.equal(1);\nchai.expect(semver.rcompare(undefined, undefined)).to.equal(0);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.rcompare('2.0.0+rev6', '2.0.0+rev3')).to.equal(-1);\nchai.expect(semver.rcompare('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(1);\nchai.expect(semver.rcompare('2.0.0+rev3', '2.0.0+rev3')).to.equal(0);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.rcompare('2.0.0', '2.0.0+dev')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0', '2.0.0-dev')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0', '2.0.0.dev')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(1);\nchai.expect(semver.rcompare('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(0);\nchai.expect(semver.rcompare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(-1);\nchai.expect(semver.rcompare('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(0);\nchai.expect(semver.rcompare('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(-1);\nchai.expect(semver.rcompare('Resin OS 2.0.0.dev', '2.0.0')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(0);\n```\n\n<a name=\"resin-semver-major\"></a>\n\n<a name=\"major\"></a>\n\n## major(version) ⇒ <code>number</code> \\| <code>null</code>\nReturns the major version number in a semver string.\nIf the version is not a valid semver string, or a valid semver string cannot be\nfound, it returns null.\n\n**Kind**: global function  \n**Summary**: Return the major version number  \n**Returns**: <code>number</code> \\| <code>null</code> - - The major version number  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefine</code> | The version string to evaluate |\n\n**Example**  \nshould correctly match valid semver versions.\n\n```js\nchai.expect(semver.major('4.5.1')).to.equal(4);\n```\n\nshould correctly match resinOS prefixed versions.\n\n```js\nchai.expect(semver.major('Resin OS v2.0.5')).to.equal(2);\nchai.expect(semver.major('Resin OS 2.0.2+rev2')).to.equal(2);\nchai.expect(semver.major('Resin OS 2.0.0.rev1 (prod)')).to.equal(2);\nchai.expect(semver.major('Resin OS 2.0.0-rc5.rev1')).to.equal(2);\n```\n\nshould return null when version is `null`.\n\n```js\nchai.expect(semver.major(null)).to.equal(null);\n```\n\nshould return null when version is `undefined`.\n\n```js\nchai.expect(semver.major(undefined)).to.equal(null);\n```\n\nshould return null when the version contains no valid semver value.\n\n```js\nchai.expect(semver.major('My dev version')).to.equal(null);\nchai.expect(semver.major('Linux 14.04')).to.equal(null);\nchai.expect(semver.major('Software version 42.3.20170726.72bbcf8')).to.equal(null);\n```\n\n<a name=\"resin-semver-prerelease\"></a>\n\n<a name=\"prerelease\"></a>\n\n## prerelease(version) ⇒ <code>Array.&lt;(string\\|number)&gt;</code> \\| <code>null</code>\nReturns an array of prerelease components, or null if none exist\n\n**Kind**: global function  \n**Summary**: Return prerelease components  \n**Returns**: <code>Array.&lt;(string\\|number)&gt;</code> \\| <code>null</code> - - An array of prerelease component, or null if none exist  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to evaluate |\n\n**Example**  \nshould return an array of prerelease components when provided a semver string.\n\n```js\nchai.expect(semver.prerelease('1.16.0-alpha.1')).to.eql(['alpha', 1]);\n```\n\nshould return null when provided with a semver string that has no prerelease segment.\n\n```js\nchai.expect(semver.prerelease('1.16.0')).to.eql(null);\n```\n\nshould return an array of prerelease components when provided a resinOS prefixed version.\n\n```js\nchai.expect(semver.prerelease('Resin OS 2.0.0-rc5.rev1')).to.eql(['rc5', 'rev1']);\n```\n\nshould return null when provided a resinOS prefixed version that has no prerelease segment.\n\n```js\nchai.expect(semver.prerelease('Resin OS 2.0.0')).to.equal(null);\n```\n\nshould return null when provided with an invalid version.\n\n```js\nchai.expect(semver.prerelease('My dev version')).to.equal(null);\nchai.expect(semver.prerelease('Linux 14.04')).to.equal(null);\nchai.expect(semver.prerelease('Software version 42.3.20170726.72bbcf8')).to.equal(null);\n```\n\nshould return null when provided with a null value.\n\n```js\nchai.expect(semver.prerelease(null)).to.equal(null);\n```\n\nshould return null when provided with an undefined value.\n\n```js\nchai.expect(semver.prerelease(undefined)).to.equal(null);\n```\n\n<a name=\"resin-semver-gte\"></a>\n\n<a name=\"gte\"></a>\n\n## gte(versionA, versionB) ⇒ <code>boolean</code>\nReturns true if versionA is greater than or equal to versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.\n\n**Kind**: global function  \n**Summary**: Check if a version is greater than or equal to another  \n**Returns**: <code>boolean</code> - - true if versionA is greater than or equal to versionB, otherwise false.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare against |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare to versionA |\n\n**Example**  \nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.gte('2.0.5', '1.16.0')).to.equal(true);\nchai.expect(semver.gte('1.16.0', '2.0.5')).to.equal(false);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.gte('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.gte('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.gte('Resin OS 1.16.0', '2.0.2')).to.equal(false);\nchai.expect(semver.gte('Resin OS 1.16.0', '1.16.0')).to.equal(true);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.gte('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(true);\nchai.expect(semver.gte('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(false);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.gte('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.gte('Linux 14.04', 'A development version')).to.equal(true);\nchai.expect(semver.gte('Version B', 'Version A')).to.equal(true);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.gte('2.0.5', null)).to.equal(true);\nchai.expect(semver.gte(null, '1.16.0')).to.equal(false);\nchai.expect(semver.gte('Resin OS 1.16.0', null)).to.equal(true);\nchai.expect(semver.gte(null, 'Resin OS 1.16.0')).to.equal(false);\nchai.expect(semver.gte('Linux 14.04', null)).to.equal(true);\nchai.expect(semver.gte(null, 'Linux 14.04')).to.equal(false);\nchai.expect(semver.gte(null, null)).to.equal(true);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.gte('2.0.5', undefined)).to.equal(true);\nchai.expect(semver.gte(undefined, '1.16.0')).to.equal(false);\nchai.expect(semver.gte('Resin OS 1.16.0', undefined)).to.equal(true);\nchai.expect(semver.gte(undefined, 'Resin OS 1.16.0')).to.equal(false);\nchai.expect(semver.gte('Linux 14.04', undefined)).to.equal(true);\nchai.expect(semver.gte(undefined, 'Linux 14.04')).to.equal(false);\nchai.expect(semver.gte(undefined, undefined)).to.equal(true);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.gte('2.0.0+rev6', '2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gte('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gte('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gte('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(false);\nchai.expect(semver.gte('2.0.0+rev3', '2.0.0+rev3')).to.equal(true);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.gte('2.0.0', '2.0.0+dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0', '2.0.0-dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0', '2.0.0.dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(false);\nchai.expect(semver.gte('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(true);\nchai.expect(semver.gte('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(true);\nchai.expect(semver.gte('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.gte('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(true);\nchai.expect(semver.gte('Resin OS 2.0.0.dev', '2.0.0')).to.equal(false);\nchai.expect(semver.gte('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(true);\n```\n\n<a name=\"resin-semver-gt\"></a>\n\n<a name=\"gt\"></a>\n\n## gt(versionA, versionB) ⇒ <code>boolean</code>\nReturns true if versionA is greater than versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.\n\n**Kind**: global function  \n**Summary**: Check if a version is greater than another  \n**Returns**: <code>boolean</code> - - true if versionA is greater than versionB, otherwise false.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare against |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare to versionA |\n\n**Example**  \nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.gt('2.0.5', '1.16.0')).to.equal(true);\nchai.expect(semver.gt('1.16.0', '2.0.5')).to.equal(false);\nchai.expect(semver.gt('1.16.0', '1.16.0')).to.equal(false);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.gt('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.gt('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', '2.0.2')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', '1.16.0')).to.equal(false);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.gt('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(true);\nchai.expect(semver.gt('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', 'Resin OS 1.16.0')).to.equal(false);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.gt('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.gt('Linux 14.04', 'A development version')).to.equal(true);\nchai.expect(semver.gt('Version B', 'Version A')).to.equal(true);\nchai.expect(semver.gt('Version A', 'Version A')).to.equal(false);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.gt('2.0.5', null)).to.equal(true);\nchai.expect(semver.gt(null, '1.16.0')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', null)).to.equal(true);\nchai.expect(semver.gt(null, 'Resin OS 1.16.0')).to.equal(false);\nchai.expect(semver.gt('Linux 14.04', null)).to.equal(true);\nchai.expect(semver.gt(null, 'Linux 14.04')).to.equal(false);\nchai.expect(semver.gt(null, null)).to.equal(false);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.gt('2.0.5', undefined)).to.equal(true);\nchai.expect(semver.gt(undefined, '1.16.0')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', undefined)).to.equal(true);\nchai.expect(semver.gt(undefined, 'Resin OS 1.16.0')).to.equal(false);\nchai.expect(semver.gt('Linux 14.04', undefined)).to.equal(true);\nchai.expect(semver.gt(undefined, 'Linux 14.04')).to.equal(false);\nchai.expect(semver.gt(undefined, undefined)).to.equal(false);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.gt('2.0.0+rev6', '2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gt('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gt('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gt('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(false);\nchai.expect(semver.gt('2.0.0+rev3', '2.0.0+rev3')).to.equal(false);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.gt('2.0.0', '2.0.0+dev')).to.equal(true);\nchai.expect(semver.gt('2.0.0', '2.0.0-dev')).to.equal(true);\nchai.expect(semver.gt('2.0.0', '2.0.0.dev')).to.equal(true);\nchai.expect(semver.gt('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(true);\nchai.expect(semver.gt('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(false);\nchai.expect(semver.gt('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(false);\nchai.expect(semver.gt('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(true);\nchai.expect(semver.gt('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.gt('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(false);\nchai.expect(semver.gt('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(true);\nchai.expect(semver.gt('Resin OS 2.0.0.dev', '2.0.0')).to.equal(false);\nchai.expect(semver.gt('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(false);\n```\n\n<a name=\"resin-semver-lt\"></a>\n\n<a name=\"lt\"></a>\n\n## lt(versionA, versionB) ⇒ <code>boolean</code>\nReturns true if versionA is less than versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.\n\n**Kind**: global function  \n**Summary**: Check if a version is less than another  \n**Returns**: <code>boolean</code> - - true if versionA is less than versionB, otherwise false.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare against |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare to versionA |\n\n**Example**  \nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.lt('2.0.5', '1.16.0')).to.equal(false);\nchai.expect(semver.lt('1.16.0', '2.0.5')).to.equal(true);\nchai.expect(semver.lt('1.16.0', '1.16.0')).to.equal(false);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.lt('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.lt('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', '2.0.2')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', '1.16.0')).to.equal(false);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.lt('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(false);\nchai.expect(semver.lt('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', 'Resin OS 1.16.0')).to.equal(false);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.lt('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.lt('Linux 14.04', 'A development version')).to.equal(false);\nchai.expect(semver.lt('Version B', 'Version A')).to.equal(false);\nchai.expect(semver.lt('Version A', 'Version A')).to.equal(false);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.lt('2.0.5', null)).to.equal(false);\nchai.expect(semver.lt(null, '1.16.0')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', null)).to.equal(false);\nchai.expect(semver.lt(null, 'Resin OS 1.16.0')).to.equal(true);\nchai.expect(semver.lt('Linux 14.04', null)).to.equal(false);\nchai.expect(semver.lt(null, 'Linux 14.04')).to.equal(true);\nchai.expect(semver.lt(null, null)).to.equal(false);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.lt('2.0.5', undefined)).to.equal(false);\nchai.expect(semver.lt(undefined, '1.16.0')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', undefined)).to.equal(false);\nchai.expect(semver.lt(undefined, 'Resin OS 1.16.0')).to.equal(true);\nchai.expect(semver.lt('Linux 14.04', undefined)).to.equal(false);\nchai.expect(semver.lt(undefined, 'Linux 14.04')).to.equal(true);\nchai.expect(semver.lt(undefined, undefined)).to.equal(false);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.lt('2.0.0+rev6', '2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lt('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lt('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lt('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(true);\nchai.expect(semver.lt('2.0.0+rev3', '2.0.0+rev3')).to.equal(false);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.lt('2.0.0', '2.0.0+dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0', '2.0.0-dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0', '2.0.0.dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(true);\nchai.expect(semver.lt('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(false);\nchai.expect(semver.lt('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(false);\nchai.expect(semver.lt('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.lt('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(false);\nchai.expect(semver.lt('Resin OS 2.0.0.dev', '2.0.0')).to.equal(true);\nchai.expect(semver.lt('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(false);\n```\n\n<a name=\"resin-semver-satisfies\"></a>\n\n<a name=\"satisfies\"></a>\n\n## satisfies(version, range) ⇒ <code>boolean</code>\nReturn true if the parsed version satisfies the range.\nThis method will always return false if the provided version doesn't contain a valid semver string.\n\n**Kind**: global function  \n**Summary**: Check if a version satisfies a range  \n**Returns**: <code>boolean</code> - - True if the parsed version satisfies the range, false otherwise  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version to evaluate |\n| range | <code>string</code> | A semver range string, see the [node-semver](https://github.com/npm/node-semver#ranges) docs for details |\n\n**Example**  \nshould correctly evaluate valid semver values.\n\n```js\nchai.expect(semver.satisfies('2.0.5', '^2.0.0')).to.equal(true);\nchai.expect(semver.satisfies('1.16.0', '^2.0.0')).to.equal(false);\n```\n\nshould correctly evaluate Resin formatted versions.\n\n```js\nchai.expect(semver.satisfies('Resin OS 2.0.2+rev2', '^2.0.0')).to.equal(true);\nchai.expect(semver.satisfies('Resin OS 2.0.2 (prod)', '^2.0.0')).to.equal(true);\nchai.expect(semver.satisfies('Resin OS 1.16.0', '^2.0.0')).to.equal(false);\n```\n\nshould always return false when provided with an invalid semver value.\n\n```js\nchai.expect(semver.satisfies('Linux 14.04', '^2.0.0')).to.equal(false);\nchai.expect(semver.satisfies('A development version', '^2.0.0')).to.equal(false);\nchai.expect(semver.satisfies('Version A', '^2.0.0')).to.equal(false);\nchai.expect(semver.satisfies('Linux 14.04', '*')).to.equal(false);\nchai.expect(semver.satisfies('Linux 14.04', '< 1.0.0')).to.equal(false);\n```\n\nshould correctly evaluate null values.\n\n```js\nchai.expect(semver.satisfies(null, '^2.0.0')).to.equal(false);\n```\n\nshould correctly evaluate undefined values.\n\n```js\nchai.expect(semver.satisfies(undefined, '^2.0.0')).to.equal(false);\n```\n\n<a name=\"resin-semver-maxsatisfying\"></a>\n\n<a name=\"maxSatisfying\"></a>\n\n## maxSatisfying(versions, range) ⇒ <code>string</code> \\| <code>null</code>\nReturn the highest version in the list that satisfies the range, or null if none of them do.\nIf multiple versions are found that have equally high values, the last one in the array is returned.\nNote that only version that contain a valid semver string can satisfy a range.\n\n**Kind**: global function  \n**Summary**: Return the highest version in the list that satisfies the range  \n**Returns**: <code>string</code> \\| <code>null</code> - - The highest matching version string, or null.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versions | <code>Array.&lt;(string\\|null\\|undefined)&gt;</code> | An array of versions to evaluate |\n| range | <code>string</code> | A semver range string, see the [node-semver](https://github.com/npm/node-semver#ranges) docs for details |\n\n**Example**  \nshould return the correct version.\n\n```js\nchai.expect(semver.maxSatisfying(versions_1.versions, '1.1.*')).to.equal('Resin OS 1.1.4');\nchai.expect(semver.maxSatisfying(versions_1.versions, '^2.0.0')).to.equal('Resin OS 2.14.0');\nchai.expect(semver.maxSatisfying(versions_1.versions, '< 1.0.0')).to.equal(null);\n```\n\nshould return the first version found if multiple versions have equally high values.\n\n```js\nchai.expect(semver.maxSatisfying(['1.0.0', 'Resin OS 1.1.4', '1.1.4'], '1.1.*')).to.equal('Resin OS 1.1.4');\n```\n\nshould normalize versions used in range parameter.\n\n```js\nchai.expect(semver.maxSatisfying(versions_1.versions, '2.0.0.rev1')).to.equal('Resin OS 2.0.0+rev11');\nchai.expect(semver.maxSatisfying(versions_1.versions, '^ Resin OS 2.0.0 (prod)')).to.equal('Resin OS 2.14.0');\nchai.expect(semver.maxSatisfying(versions_1.versions, '< Resin OS v1.0.0')).to.equal(null);\nchai.expect(semver.maxSatisfying(versions_1.versions, 'Resin OS v1.1.*')).to.equal('Resin OS 1.1.4');\n```\n\n<a name=\"resin-semver-parse\"></a>\n\n<a name=\"parse\"></a>\n\n## parse(version) ⇒ <code>SemverObject</code> \\| <code>null</code>\nReturns an object representing the semver version. Returns null\nif a valid semver string can't be found.\n\n**Kind**: global function  \n**Summary**: Parse a version into an object  \n**Returns**: <code>SemverObject</code> \\| <code>null</code> - - An object representing the version string, or\nnull if a valid semver string could not be found  \n**Access**: public  \n\n| Param | Type |\n| --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | \n\n**Example**  \nshould correctly parse valid semver values.\n\n```js\nchai.expect(semver.parse('2.0.5')).to.deep.include({\n    raw: '2.0.5',\n    major: 2,\n    minor: 0,\n    patch: 5,\n    version: '2.0.5',\n    prerelease: [],\n    build: [],\n});\n```\n\nshould correctly parse Resin formatted versions.\n\n```js\nchai.expect(semver.parse('Resin OS v2.0.2+rev2')).to.deep.include({\n    raw: 'Resin OS v2.0.2+rev2',\n    major: 2,\n    minor: 0,\n    patch: 2,\n    version: '2.0.2',\n    prerelease: [],\n    build: ['rev2'],\n});\nchai.expect(semver.parse('Resin OS v2.0.2 (prod)')).to.deep.include({\n    raw: 'Resin OS v2.0.2 (prod)',\n    major: 2,\n    minor: 0,\n    patch: 2,\n    version: '2.0.2',\n    prerelease: [],\n    build: ['prod'],\n});\nchai.expect(semver.parse('Resin OS v2.0.2.prod')).to.deep.include({\n    raw: 'Resin OS v2.0.2.prod',\n    major: 2,\n    minor: 0,\n    patch: 2,\n    version: '2.0.2',\n    prerelease: [],\n    build: ['prod'],\n});\nchai.expect(semver.parse('Resin OS 2.0.0-rc5.rev1')).to.deep.include({\n    raw: 'Resin OS 2.0.0-rc5.rev1',\n    major: 2,\n    minor: 0,\n    patch: 0,\n    version: '2.0.0-rc5.rev1',\n    prerelease: ['rc5', 'rev1'],\n    build: [],\n});\nchai.expect(semver.parse('Resin OS 2.3.0+rev1.prod')).to.deep.include({\n    raw: 'Resin OS 2.3.0+rev1.prod',\n    major: 2,\n    minor: 3,\n    patch: 0,\n    version: '2.3.0',\n    prerelease: [],\n    build: ['rev1', 'prod'],\n});\nchai.expect(semver.parse('Resin OS v2.3.0-a.b.c (prod)')).to.deep.include({\n    raw: 'Resin OS v2.3.0-a.b.c (prod)',\n    major: 2,\n    minor: 3,\n    patch: 0,\n    version: '2.3.0-a.b.c',\n    prerelease: ['a', 'b', 'c'],\n    build: ['prod'],\n});\nchai.expect(semver.parse('Resin OS 2.3.0-a.b.c+d.e.f (prod)')).to.deep.include({\n    raw: 'Resin OS 2.3.0-a.b.c+d.e.f (prod)',\n    major: 2,\n    minor: 3,\n    patch: 0,\n    version: '2.3.0-a.b.c',\n    prerelease: ['a', 'b', 'c'],\n    build: ['d', 'e', 'f', 'prod'],\n});\nchai.expect(semver.parse('Resin OS 2.3.0+a.b.c (prod)')).to.deep.include({\n    raw: 'Resin OS 2.3.0+a.b.c (prod)',\n    major: 2,\n    minor: 3,\n    patch: 0,\n    version: '2.3.0',\n    prerelease: [],\n    build: ['a', 'b', 'c', 'prod'],\n});\n```\n\nshould correctly parse invalid semver values.\n\n```js\nchai.expect(semver.parse('Linux 14.04')).to.equal(null);\nchai.expect(semver.parse('A development version')).to.equal(null);\nchai.expect(semver.parse('Version A')).to.equal(null);\n```\n\nshould correctly parse null values.\n\n```js\nchai.expect(semver.parse(null)).to.equal(null);\n```\n\nshould correctly parse undefined values.\n\n```js\nchai.expect(semver.parse(undefined)).to.equal(null);\n```\n\n<a name=\"resin-semver-valid\"></a>\n\n<a name=\"valid\"></a>\n\n## valid(version) ⇒ <code>string</code> \\| <code>null</code>\nReturn the parsed version, or null if it's not valid.\n\n**Kind**: global function  \n**Summary**: Check if a version string is valid  \n**Returns**: <code>string</code> \\| <code>null</code> - - The parsed version string, or\nnull if a valid semver string could not be found  \n**Access**: public  \n\n| Param | Type |\n| --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | \n\n**Example**  \nshould return null for invalid semver values.\n\n```js\nchai.expect(semver.valid(null)).to.equal(null);\nchai.expect(semver.valid(undefined)).to.equal(null);\nchai.expect(semver.valid('')).to.equal(null);\nchai.expect(semver.valid('foobar')).to.equal(null);\nchai.expect(semver.valid('12345')).to.equal(null);\nchai.expect(semver.valid('1.2.3.4.5')).to.equal(null);\n```\n\nshould correctly parse valid values.\n\n```js\nchai.expect(semver.valid('Resin OS 1.0.0-pre')).to.equal('1.0.0-pre');\nchai.expect(semver.valid('Resin OS 1.0.5 (fido)')).to.equal('1.0.5');\nchai.expect(semver.valid('Resin OS 2.0.0-beta.8')).to.equal('2.0.0-beta.8');\nchai.expect(semver.valid('Resin OS 2.0.0-beta10.rev1')).to.equal('2.0.0-beta10.rev1');\nchai.expect(semver.valid('Resin OS 2.0.0+rev3')).to.equal('2.0.0');\nchai.expect(semver.valid('Resin OS 2.0.0.rev1 (prod)')).to.equal('2.0.0');\nchai.expect(semver.valid('Resin OS 2.0.0+rev4 (dev)')).to.equal('2.0.0');\nchai.expect(semver.valid('2.0.6+rev3.dev')).to.equal('2.0.6');\n```\n\n<a name=\"resin-semver-inc\"></a>\n\n<a name=\"inc\"></a>\n\n## inc(version, release) ⇒ <code>string</code> \\| <code>null</code>\nReturn the version incremented by the release type\n(major, premajor, minor, preminor, patch, prepatch, or prerelease), or null\nif it's not valid.\n\n**Kind**: global function  \n**Summary**: Return an incremented version  \n**Returns**: <code>string</code> \\| <code>null</code> - - The incremented version string, or\nnull if a valid semver string could not be found  \n**Access**: public  \n\n| Param | Type |\n| --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | \n| release | <code>string</code> | \n\n**Example**  \nshould return null for invalid semver values.\n\n```js\nchai.expect(semver.inc(null, 'major')).to.equal(null);\nchai.expect(semver.inc(undefined, 'major')).to.equal(null);\nchai.expect(semver.inc('', 'major')).to.equal(null);\nchai.expect(semver.inc('foobar', 'major')).to.equal(null);\nchai.expect(semver.inc('12345', 'major')).to.equal(null);\nchai.expect(semver.inc('1.2.3.4.5', 'major')).to.equal(null);\n```\n\nshould correctly increment valid values by a 'premajor' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'premajor')).to.equal('2.0.0-0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'premajor')).to.equal('2.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'premajor')).to.equal('3.0.0-0');\n```\n\nshould correctly increment valid values by a 'preminor' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'preminor')).to.equal('1.1.0-0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'preminor')).to.equal('1.1.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'preminor')).to.equal('2.1.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'preminor')).to.equal('2.1.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'preminor')).to.equal('2.1.0-0');\nchai.expect(semver.inc('Resin OS 2.1.0.rev1 (prod)', 'preminor')).to.equal('2.2.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'preminor')).to.equal('2.1.0-0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'preminor')).to.equal('2.1.0-0');\n```\n\nshould correctly increment valid values by a 'prepatch' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'prepatch')).to.equal('1.0.1-0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'prepatch')).to.equal('1.0.6-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'prepatch')).to.equal('2.0.7-0');\n```\n\nshould correctly increment valid values by a 'prerelease' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'prerelease')).to.equal('1.0.0-pre.0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'prerelease')).to.equal('1.0.6-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'prerelease')).to.equal('2.0.0-beta.9');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'prerelease')).to.equal('2.0.0-beta10.rev1.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'prerelease')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'prerelease')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'prerelease')).to.equal('2.0.1-0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'prerelease')).to.equal('2.0.7-0');\n```\n\nshould correctly increment valid values by a 'major' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'major')).to.equal('1.0.0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'major')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'major')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'major')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'major')).to.equal('3.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'major')).to.equal('3.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'major')).to.equal('3.0.0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'major')).to.equal('3.0.0');\n```\n\nshould correctly increment valid values by a 'minor' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'minor')).to.equal('1.0.0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'minor')).to.equal('1.1.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'minor')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'minor')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'minor')).to.equal('2.1.0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'minor')).to.equal('2.1.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'minor')).to.equal('2.1.0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'minor')).to.equal('2.1.0');\n```\n\nshould correctly increment valid values by a 'patch' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'patch')).to.equal('1.0.0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'patch')).to.equal('1.0.6');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'patch')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'patch')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'patch')).to.equal('2.0.1');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'patch')).to.equal('2.0.1');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'patch')).to.equal('2.0.1');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'patch')).to.equal('2.0.7');\n```\n\n\n\n\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/resin-io-modules/resin-semver/issues"},"_id":"resin-semver@1.4.0-balenaos-fc88a50891d2cd949592e2fbd4ee0b112a26de38","_npmVersion":"6.1.0","_nodeVersion":"10.4.0","_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"dist":{"integrity":"sha512-E6RMyN9/Wiwfr5X1WNgimEyuo+AlmLcjFcmITmtX+qJkrMPg72rDTNZBg4v1WB6gWNxVXV0oZA8LITyfPR8UOw==","shasum":"2b87d6beb28f8f66816ce794fb48f94f35faffd8","tarball":"https://registry.npmjs.org/resin-semver/-/resin-semver-1.4.0-balenaos-fc88a50891d2cd949592e2fbd4ee0b112a26de38.tgz","fileCount":17,"unpackedSize":130155,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbx1jwCRA9TVsSAnZWagAAKq8P/19EFx8MOqWCQMKhZdnu\nzArZ/EKqSNK+EXPUxRbPWt17Q3g18DDRhVjAs3Z3Q/ZtIeaC9WoA/auRTnmz\nAKADw4AM4JcWqQbXkSxZFltMXCb9ng7lHXle+iseT9TcCdq0YsHY4vxkUUfp\nw43rCxBhCKO/CWqq9TIqjxTDa49hBoAK2bF3/LLoUnugts2nIoD8jt+IO7mt\nL2G+cT6RaAyq48uSPQvdnHSaA+UBx7ewKAYht3oVhnd8AaRigHIFbL/RgMpX\nxh+7af+jUoHAJV3BssiP+SFe8UjLZJJ+x4dyyy3TD3o5zpeZl1CH/49NwpAh\nDZozHjN+9k2yyGFEjnLBA/ThCHdwN863LxxD/cTf5G8eIM7VkCy8upcufR+U\nCi6Fya5jSJdNilD2HZ4JRmBbD07K7dNEsvOx1Xsbzc0subk2TI62Q35cNskd\nv68Ht42UcOYHpDTcJg7/dX0R+AQ2FrTbQ2fRiGAzN1d2CStgm7Q3zcfwOTs+\nJvfn+WW1MvgdeWcBM9IqgqMg4F/qpcHYcDAfh0dI8mhZPibHKrNXToCP6ikF\n8/yGCiff2VWg9XQXAaBrs8jYP4qwK0AFqzMde4e9NCkVVfG1i+U4yNa8SJai\nzJ3mhqmjlNpHHhBFTNYaWuMbeO9UO1Yw1Tg0QGXDHkTCl/91hkuQpQJXhvuO\nnPm2\r\n=1tSQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDZM+GJjQkjbNJzfjio70bujlhRw5xUG94FyDmrUoZbFQIga5UEKtbg8fJHPooDbeyJBL9kIMohOppYVDaNJCtarTs="}]},"maintainers":[{"email":"accounts+npm@balena.io","name":"balena.io"},{"email":"accounts+npm-ci@resin.io","name":"resin-ci"},{"email":"accounts@resin.io","name":"resin.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/resin-semver_1.4.0-balenaos-fc88a50891d2cd949592e2fbd4ee0b112a26de38_1539791088035_0.6307579028326176"},"_hasShrinkwrap":false},"1.4.0":{"name":"resin-semver","version":"1.4.0","description":"Resin.io specific semver utility methods","main":"src/index.js","typings":"src/index.ts","homepage":"https://github.com/resin-io-modules/resin-semver","repository":{"type":"git","url":"git+https://github.com/resin-io-modules/resin-semver.git"},"keywords":["resin","resin.io","semver"],"scripts":{"test":"npm run lint && ./automation/test.js","build":"tsc && npm run docs","lint":"tslint -t stylish -c tslint.json 'src/**/*.ts' 'test/**/*.ts'","docs":"./automation/docs.js","ci":"npm run build && catch-uncommitted && npm test","precommit":"lint-staged","prettify":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\""},"author":{"name":"Lucian Buzzo","email":"lucian@resin.io"},"license":"Apache-2.0","dependencies":{"@types/lodash.memoize":"^4.1.2","@types/semver":"^5.4.0","lodash.memoize":"^4.1.2","semver":"^5.3.0"},"devDependencies":{"@types/chai":"^4.0.1","@types/lodash.sortby":"^4.7.4","@types/mocha":"^2.2.41","catch-uncommitted":"^1.0.0","chai":"^4.1.0","husky":"^0.14.3","jsdoc-to-markdown":"^3.0.0","lint-staged":"^4.0.4","lodash.sortby":"^4.7.0","mocha":"^3.4.2","prettier":"^1.6.1","ts-node":"^3.2.1","tslint":"^5.5.0","typescript":"^2.4.2"},"lint-staged":{"*.ts":["prettier --write","npm run lint","npm run docs","git add"]},"gitHead":"dd374621f234669b1992d8863a26895d27a8e479","bugs":{"url":"https://github.com/resin-io-modules/resin-semver/issues"},"_id":"resin-semver@1.4.0","_npmVersion":"6.1.0","_nodeVersion":"10.4.0","_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"dist":{"integrity":"sha512-7hvdM8waBxJiZcV7wqvCGG4SPp+PNpg43A6PCwiJTIIw07TgP4+/tlTmumT1MpSOn5o+w/0lt8wc3dJSsItwPQ==","shasum":"cc7c22ad6b5775c1f2f2f8dc95159405896d5e55","tarball":"https://registry.npmjs.org/resin-semver/-/resin-semver-1.4.0.tgz","fileCount":17,"unpackedSize":130105,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbyCq9CRA9TVsSAnZWagAA1zoP/ixR41Ar/CeWbbZcHcDH\npyxz0TcxTWQfnEwOZIgsFQHleVBRiDJ/w+aeWN20YXCs/LhRkv6SZ9BCDvb6\nZgQvNK7A0KXhCoGeVMN087DcIMsd1i/GLQCiFcEmA6LiGD2bYCE2zxe2eLpF\nWKUvi1bwuqysk3XbEbXHnGDCfFOGFBHkjI5jlK+HZBZmjiC2tA1EvRqswTvq\ng1AjrWEhzkMBr5nWzXmNyV4gGJJVIlh0wzjNrdnlUHRO24LVPoyoYbD3z8bc\ncsojUbemN2e2Ef7/F1n0GjJnktJWahpzpD/FJJUkaiwLoU+ngDpZqR5jeZjm\nOzSRKm46tHGkZUAe5DQmU/ha7j2/3noOHqLasqjGKcgGSST7VgDUfaCwf90w\n7fjlt/TyK10FLsaK63artZn701U4JbnXWRg0lwdqYB+biCgWw/W4Z2JLp3gH\nfbMA0JkXEkQbQpCFiREOIfoNq4RL5k0JE1cHeDbRcBkgw1VIUm2O2uMKiC0e\nmsfJLSw9asgJhTKAQmA9D1k2YPcqKdoT2dQ1gr/GAEe4hp0jq6Yn+pxqPGTf\nDHcoS/ER2eT1wJRWE4924H1zm0eD2C+3QIUybXpuPonLod9wwMDfzrFJEl8t\nS82nzWUXaA1t9yl2n25TuWRLjOT1rCTNhdj4HsaH/9pw1tbSrIRj+c0KL8Tz\nRGGY\r\n=aLrC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE9/uVkewQM0YiPqOYMxhjkaz1kP0f3Hu/z8c4UhJzXCAiAIsRQo+DEgIp+/VIo6ptvCy3uofbRK7Ryq18uBRlkgSQ=="}]},"maintainers":[{"email":"accounts+npm@balena.io","name":"balena.io"},{"email":"accounts+npm-ci@resin.io","name":"resin-ci"},{"email":"accounts@resin.io","name":"resin.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/resin-semver_1.4.0_1539844796189_0.5152879768975283"},"_hasShrinkwrap":false,"deprecated":"resin-semver is deprecated, please use balena-semver instead"},"1.4.1-sync-0cd30ce11fc43bfc476b00cc82fe69fb7ac4103f":{"name":"resin-semver","version":"1.4.1-sync-0cd30ce11fc43bfc476b00cc82fe69fb7ac4103f","description":"Resin.io specific semver utility methods","main":"src/index.js","typings":"src/index.ts","homepage":"https://github.com/resin-io-modules/resin-semver","repository":{"type":"git","url":"git+https://github.com/resin-io-modules/resin-semver.git"},"keywords":["resin","resin.io","semver"],"scripts":{"test":"npm run lint && ./automation/test.js","build":"tsc && npm run docs","lint":"tslint -t stylish -c tslint.json 'src/**/*.ts' 'test/**/*.ts'","docs":"./automation/docs.js","ci":"npm run build && catch-uncommitted && npm test","precommit":"lint-staged","prettify":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\""},"author":{"name":"Lucian Buzzo","email":"lucian@resin.io"},"license":"Apache-2.0","dependencies":{"@types/lodash.memoize":"^4.1.2","@types/semver":"^5.4.0","lodash.memoize":"^4.1.2","semver":"^5.3.0"},"devDependencies":{"@types/chai":"^4.0.1","@types/lodash.sortby":"^4.7.4","@types/mocha":"^2.2.41","catch-uncommitted":"^1.0.0","chai":"^4.1.0","husky":"^0.14.3","jsdoc-to-markdown":"^3.0.0","lint-staged":"^4.0.4","lodash.sortby":"^4.7.0","mocha":"^3.4.2","prettier":"^1.6.1","ts-node":"^3.2.1","tslint":"^5.5.0","typescript":"^2.4.2"},"lint-staged":{"*.ts":["prettier --write","npm run lint","npm run docs","git add"]},"gitHead":"0cd30ce11fc43bfc476b00cc82fe69fb7ac4103f","readme":"resin-semver\n============\n\n> Resin.io specific semver utility methods\n\n[![Build Status](https://travis-ci.org/resin-io-modules/resin-semver.svg?branch=master)](https://travis-ci.org/resin-io-modules/resin-semver)\n\nRole\n----\n\nThe intention of this module is to provide a collection of resin specific semver utility methods.\n\n**THIS MODULE IS LOW LEVEL AND IS NOT MEANT TO BE USED BY END USERS DIRECTLY**.\n\nUnless you know what you're doing, use the [Resin SDK](https://github.com/resin-io/resin-sdk) instead.\n\nInstallation\n------------\n\nInstall `resin-semver` by running:\n\n```sh\n$ npm install --save resin-semver\n```\n\nDocumentation\n-------------\n\n## Functions\n\n<dl>\n<dt><a href=\"#compare\">compare(versionA, versionB)</a> ⇒ <code>number</code></dt>\n<dd><p>Accepts string or null values and compares them, returning a number\nindicating sort order. Values are parsed for valid semver strings. Sorts an array\nof versions in ascending order if passed to <code>Array.sort()</code>.</p>\n</dd>\n<dt><a href=\"#rcompare\">rcompare(versionA, versionB)</a> ⇒ <code>number</code></dt>\n<dd><p>The reverse of <code>.compare()</code>. Accepts string or null values and compares\nthem, returning a number indicating sort order. Values are parsed for valid semver\nstrings. Sorts an array of versions in descending order when passed to <code>Array.sort()</code>.</p>\n</dd>\n<dt><a href=\"#major\">major(version)</a> ⇒ <code>number</code> | <code>null</code></dt>\n<dd><p>Returns the major version number in a semver string.\nIf the version is not a valid semver string, or a valid semver string cannot be\nfound, it returns null.</p>\n</dd>\n<dt><a href=\"#prerelease\">prerelease(version)</a> ⇒ <code>Array.&lt;(string|number)&gt;</code> | <code>null</code></dt>\n<dd><p>Returns an array of prerelease components, or null if none exist</p>\n</dd>\n<dt><a href=\"#gte\">gte(versionA, versionB)</a> ⇒ <code>boolean</code></dt>\n<dd><p>Returns true if versionA is greater than or equal to versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.</p>\n</dd>\n<dt><a href=\"#gt\">gt(versionA, versionB)</a> ⇒ <code>boolean</code></dt>\n<dd><p>Returns true if versionA is greater than versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.</p>\n</dd>\n<dt><a href=\"#lt\">lt(versionA, versionB)</a> ⇒ <code>boolean</code></dt>\n<dd><p>Returns true if versionA is less than versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.</p>\n</dd>\n<dt><a href=\"#satisfies\">satisfies(version, range)</a> ⇒ <code>boolean</code></dt>\n<dd><p>Return true if the parsed version satisfies the range.\nThis method will always return false if the provided version doesn&#39;t contain a valid semver string.</p>\n</dd>\n<dt><a href=\"#maxSatisfying\">maxSatisfying(versions, range)</a> ⇒ <code>string</code> | <code>null</code></dt>\n<dd><p>Return the highest version in the list that satisfies the range, or null if none of them do.\nIf multiple versions are found that have equally high values, the last one in the array is returned.\nNote that only version that contain a valid semver string can satisfy a range.</p>\n</dd>\n<dt><a href=\"#parse\">parse(version)</a> ⇒ <code>SemverObject</code> | <code>null</code></dt>\n<dd><p>Returns an object representing the semver version. Returns null\nif a valid semver string can&#39;t be found.</p>\n</dd>\n<dt><a href=\"#valid\">valid(version)</a> ⇒ <code>string</code> | <code>null</code></dt>\n<dd><p>Return the parsed version, or null if it&#39;s not valid.</p>\n</dd>\n<dt><a href=\"#inc\">inc(version, release)</a> ⇒ <code>string</code> | <code>null</code></dt>\n<dd><p>Return the version incremented by the release type\n(major, premajor, minor, preminor, patch, prepatch, or prerelease), or null\nif it&#39;s not valid.</p>\n</dd>\n</dl>\n\n<a name=\"compare\"></a>\n\n## compare(versionA, versionB) ⇒ <code>number</code>\nAccepts string or null values and compares them, returning a number\nindicating sort order. Values are parsed for valid semver strings. Sorts an array\nof versions in ascending order if passed to `Array.sort()`.\n\n**Kind**: global function  \n**Summary**: Compare order of versions  \n**Returns**: <code>number</code> - Returns `0` if `versionA == versionB`,\nor `1` if `versionA` is greater, or `-1` if `versionB` is greater.\nNull values are sorted before invalid semver values, and invalid semver values\nare sorted before valid semver values\nIf both values are invalid semver values, then the values are compared alphabetically.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The first version to compare |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The second version to compare |\n\n**Example**  \nshould not throw when provided with a version.\n\n```js\nversions_1.versions.forEach(function (version) {\n    chai.expect(function () { return semver.compare(version, version); }).to.not.throw();\n});\n```\n\nshould correctly sort lists of versions.\n\n```js\nchai.expect(sortBy(versions_1.versions.slice(), semver.compare)).to.eql(versions_1.versions);\n```\n\nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.compare('2.0.5', '1.16.0')).to.equal(1);\nchai.expect(semver.compare('2.0.5', '2.0.5')).to.equal(0);\nchai.expect(semver.compare('1.16.0', '2.0.5')).to.equal(-1);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.compare('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(1);\nchai.expect(semver.compare('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(-1);\nchai.expect(semver.compare('1.16.0', 'Resin OS v1.16.0')).to.equal(0);\nchai.expect(semver.compare('Resin OS 1.16.0', '2.0.2')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 1.16.0', '1.16.0')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.2', '1.16.0')).to.equal(1);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.compare('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(1);\nchai.expect(semver.compare('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 1.16.0', 'Resin OS 1.16.0')).to.equal(0);\n```\n\nshould correctly compare Balena formatted versions.\n\n```js\nchai.expect(semver.compare('balenaOS 2.0.5', 'balenaOS 2.0.2+rev2')).to.equal(1);\nchai.expect(semver.compare('balenaOS 1.16.0', 'balenaOS 2.0.2 (prod)')).to.equal(-1);\nchai.expect(semver.compare('balenaOS 1.16.0', 'balenaOS 1.16.0')).to.equal(0);\n```\n\nshould correctly compare Balena formatted versions to Resin formatted versions.\n\n```js\nchai.expect(semver.compare('balenaOS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(1);\nchai.expect(semver.compare('balenaOS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(-1);\nchai.expect(semver.compare('balenaOS 1.16.0', 'Resin OS 1.16.0')).to.equal(0);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.compare('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(-1);\nchai.expect(semver.compare('Linux 14.04', 'A development version')).to.equal(1);\nchai.expect(semver.compare('Version B', 'Version A')).to.equal(1);\nchai.expect(semver.compare('Version A', 'Version A')).to.equal(0);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.compare('2.0.5', null)).to.equal(1);\nchai.expect(semver.compare(null, '1.16.0')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 1.16.0', null)).to.equal(1);\nchai.expect(semver.compare(null, 'Resin OS 1.16.0')).to.equal(-1);\nchai.expect(semver.compare('Linux 14.04', null)).to.equal(1);\nchai.expect(semver.compare(null, 'Linux 14.04')).to.equal(-1);\nchai.expect(semver.compare(null, null)).to.equal(0);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.compare('2.0.5', undefined)).to.equal(1);\nchai.expect(semver.compare(undefined, '1.16.0')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 1.16.0', undefined)).to.equal(1);\nchai.expect(semver.compare(undefined, 'Resin OS 1.16.0')).to.equal(-1);\nchai.expect(semver.compare('Linux 14.04', undefined)).to.equal(1);\nchai.expect(semver.compare(undefined, 'Linux 14.04')).to.equal(-1);\nchai.expect(semver.compare(undefined, undefined)).to.equal(0);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.compare('2.0.0+rev6', '2.0.0+rev3')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(1);\nchai.expect(semver.compare('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(1);\nchai.expect(semver.compare('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(-1);\nchai.expect(semver.compare('2.0.0+rev3', '2.0.0+rev3')).to.equal(0);\nchai.expect(semver.compare('2.0.0+rev1', '2.0.0+rev11')).to.equal(-1);\nchai.expect(semver.compare('2.0.0+rev2', '2.0.0+rev11')).to.equal(-1);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.compare('2.0.0', '2.0.0+dev')).to.equal(1);\nchai.expect(semver.compare('2.0.0', '2.0.0-dev')).to.equal(1);\nchai.expect(semver.compare('2.0.0', '2.0.0.dev')).to.equal(1);\nchai.expect(semver.compare('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(1);\nchai.expect(semver.compare('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(-1);\nchai.expect(semver.compare('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(0);\nchai.expect(semver.compare('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0.dev', '2.0.0')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(0);\n```\n\nshould correctly compare \"(dev)\" and \"(prod)\" versions without revisions.\n\n```js\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0 (dev)')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0 (dev)', 'Resin OS 2.0.0 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0-prod')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0.prod')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0+prod')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0 (dev)', 'Resin OS 2.0.0+prod')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0.dev', 'Resin OS 2.0.0+dev')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0.dev', 'Resin OS 2.0.0 (dev)')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0+dev', 'Resin OS 2.0.0 (dev)')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0.prod', 'Resin OS 2.0.0+prod')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0.prod', 'Resin OS 2.0.0 (prod)')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0+prod', 'Resin OS 2.0.0 (prod)')).to.equal(0);\n```\n\nshould correctly compare \"(dev)\" and \"(prod)\" versions of the same revision.\n\n```js\nchai.expect(semver.compare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3 (dev)')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3 (dev)', 'Resin OS 2.0.0+rev3 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.prod')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3 (dev)', 'Resin OS 2.0.0+rev3+prod')).to.equal(1); // B is invalid\n```\n\n<a name=\"resin-semver-rcompare\"></a>\n\n<a name=\"rcompare\"></a>\n\n## rcompare(versionA, versionB) ⇒ <code>number</code>\nThe reverse of `.compare()`. Accepts string or null values and compares\nthem, returning a number indicating sort order. Values are parsed for valid semver\nstrings. Sorts an array of versions in descending order when passed to `Array.sort()`.\n\n**Kind**: global function  \n**Summary**: Compare order of versions in reverse  \n**Returns**: <code>number</code> - Returns `0` if `versionA == versionB`,\nor `-1` if `versionA` is greater, or `1` if `versionB` is greater.\nValid semver values are sorted before invalid semver values, and invalid semver values are\nsorted before null values.\nIf both values are non-null invalid semver values, then the values are compared alphabetically.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The first version to compare |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The second version to compare |\n\n**Example**  \nshould not throw when provided with a version.\n\n```js\nversions_1.versions.forEach(function (version) {\n    chai.expect(function () { return semver.rcompare(version, version); }).to.not.throw();\n});\n```\n\nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.rcompare('2.0.5', '1.16.0')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.5', '2.0.5')).to.equal(0);\nchai.expect(semver.rcompare('1.16.0', '2.0.5')).to.equal(1);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.rcompare('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(-1);\nchai.expect(semver.rcompare('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(1);\nchai.expect(semver.rcompare('1.16.0', 'Resin OS v1.16.0')).to.equal(0);\nchai.expect(semver.rcompare('Resin OS 1.16.0', '2.0.2')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', '1.16.0')).to.equal(0);\nchai.expect(semver.rcompare('Resin OS 2.0.2', '1.16.0')).to.equal(-1);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.rcompare('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(-1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', 'Resin OS 1.16.0')).to.equal(0);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.rcompare('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(1);\nchai.expect(semver.rcompare('Linux 14.04', 'A development version')).to.equal(-1);\nchai.expect(semver.rcompare('Version B', 'Version A')).to.equal(-1);\nchai.expect(semver.rcompare('Version A', 'Version A')).to.equal(0);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.rcompare('2.0.5', null)).to.equal(-1);\nchai.expect(semver.rcompare(null, '1.16.0')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', null)).to.equal(-1);\nchai.expect(semver.rcompare(null, 'Resin OS 1.16.0')).to.equal(1);\nchai.expect(semver.rcompare('Linux 14.04', null)).to.equal(-1);\nchai.expect(semver.rcompare(null, 'Linux 14.04')).to.equal(1);\nchai.expect(semver.rcompare(null, null)).to.equal(0);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.rcompare('2.0.5', undefined)).to.equal(-1);\nchai.expect(semver.rcompare(undefined, '1.16.0')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', undefined)).to.equal(-1);\nchai.expect(semver.rcompare(undefined, 'Resin OS 1.16.0')).to.equal(1);\nchai.expect(semver.rcompare('Linux 14.04', undefined)).to.equal(-1);\nchai.expect(semver.rcompare(undefined, 'Linux 14.04')).to.equal(1);\nchai.expect(semver.rcompare(undefined, undefined)).to.equal(0);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.rcompare('2.0.0+rev6', '2.0.0+rev3')).to.equal(-1);\nchai.expect(semver.rcompare('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(1);\nchai.expect(semver.rcompare('2.0.0+rev3', '2.0.0+rev3')).to.equal(0);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.rcompare('2.0.0', '2.0.0+dev')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0', '2.0.0-dev')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0', '2.0.0.dev')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(1);\nchai.expect(semver.rcompare('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(0);\nchai.expect(semver.rcompare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(-1);\nchai.expect(semver.rcompare('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(0);\nchai.expect(semver.rcompare('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(-1);\nchai.expect(semver.rcompare('Resin OS 2.0.0.dev', '2.0.0')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(0);\n```\n\n<a name=\"resin-semver-major\"></a>\n\n<a name=\"major\"></a>\n\n## major(version) ⇒ <code>number</code> \\| <code>null</code>\nReturns the major version number in a semver string.\nIf the version is not a valid semver string, or a valid semver string cannot be\nfound, it returns null.\n\n**Kind**: global function  \n**Summary**: Return the major version number  \n**Returns**: <code>number</code> \\| <code>null</code> - - The major version number  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefine</code> | The version string to evaluate |\n\n**Example**  \nshould correctly match valid semver versions.\n\n```js\nchai.expect(semver.major('4.5.1')).to.equal(4);\n```\n\nshould correctly match resinOS prefixed versions.\n\n```js\nchai.expect(semver.major('Resin OS v2.0.5')).to.equal(2);\nchai.expect(semver.major('Resin OS 2.0.2+rev2')).to.equal(2);\nchai.expect(semver.major('Resin OS 2.0.0.rev1 (prod)')).to.equal(2);\nchai.expect(semver.major('Resin OS 2.0.0-rc5.rev1')).to.equal(2);\n```\n\nshould return null when version is `null`.\n\n```js\nchai.expect(semver.major(null)).to.equal(null);\n```\n\nshould return null when version is `undefined`.\n\n```js\nchai.expect(semver.major(undefined)).to.equal(null);\n```\n\nshould return null when the version contains no valid semver value.\n\n```js\nchai.expect(semver.major('My dev version')).to.equal(null);\nchai.expect(semver.major('Linux 14.04')).to.equal(null);\nchai.expect(semver.major('Software version 42.3.20170726.72bbcf8')).to.equal(null);\n```\n\n<a name=\"resin-semver-prerelease\"></a>\n\n<a name=\"prerelease\"></a>\n\n## prerelease(version) ⇒ <code>Array.&lt;(string\\|number)&gt;</code> \\| <code>null</code>\nReturns an array of prerelease components, or null if none exist\n\n**Kind**: global function  \n**Summary**: Return prerelease components  \n**Returns**: <code>Array.&lt;(string\\|number)&gt;</code> \\| <code>null</code> - - An array of prerelease component, or null if none exist  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to evaluate |\n\n**Example**  \nshould return an array of prerelease components when provided a semver string.\n\n```js\nchai.expect(semver.prerelease('1.16.0-alpha.1')).to.eql(['alpha', 1]);\n```\n\nshould return null when provided with a semver string that has no prerelease segment.\n\n```js\nchai.expect(semver.prerelease('1.16.0')).to.eql(null);\n```\n\nshould return an array of prerelease components when provided a resinOS prefixed version.\n\n```js\nchai.expect(semver.prerelease('Resin OS 2.0.0-rc5.rev1')).to.eql(['rc5', 'rev1']);\n```\n\nshould return null when provided a resinOS prefixed version that has no prerelease segment.\n\n```js\nchai.expect(semver.prerelease('Resin OS 2.0.0')).to.equal(null);\n```\n\nshould return null when provided with an invalid version.\n\n```js\nchai.expect(semver.prerelease('My dev version')).to.equal(null);\nchai.expect(semver.prerelease('Linux 14.04')).to.equal(null);\nchai.expect(semver.prerelease('Software version 42.3.20170726.72bbcf8')).to.equal(null);\n```\n\nshould return null when provided with a null value.\n\n```js\nchai.expect(semver.prerelease(null)).to.equal(null);\n```\n\nshould return null when provided with an undefined value.\n\n```js\nchai.expect(semver.prerelease(undefined)).to.equal(null);\n```\n\n<a name=\"resin-semver-gte\"></a>\n\n<a name=\"gte\"></a>\n\n## gte(versionA, versionB) ⇒ <code>boolean</code>\nReturns true if versionA is greater than or equal to versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.\n\n**Kind**: global function  \n**Summary**: Check if a version is greater than or equal to another  \n**Returns**: <code>boolean</code> - - true if versionA is greater than or equal to versionB, otherwise false.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare against |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare to versionA |\n\n**Example**  \nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.gte('2.0.5', '1.16.0')).to.equal(true);\nchai.expect(semver.gte('1.16.0', '2.0.5')).to.equal(false);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.gte('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.gte('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.gte('Resin OS 1.16.0', '2.0.2')).to.equal(false);\nchai.expect(semver.gte('Resin OS 1.16.0', '1.16.0')).to.equal(true);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.gte('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(true);\nchai.expect(semver.gte('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(false);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.gte('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.gte('Linux 14.04', 'A development version')).to.equal(true);\nchai.expect(semver.gte('Version B', 'Version A')).to.equal(true);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.gte('2.0.5', null)).to.equal(true);\nchai.expect(semver.gte(null, '1.16.0')).to.equal(false);\nchai.expect(semver.gte('Resin OS 1.16.0', null)).to.equal(true);\nchai.expect(semver.gte(null, 'Resin OS 1.16.0')).to.equal(false);\nchai.expect(semver.gte('Linux 14.04', null)).to.equal(true);\nchai.expect(semver.gte(null, 'Linux 14.04')).to.equal(false);\nchai.expect(semver.gte(null, null)).to.equal(true);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.gte('2.0.5', undefined)).to.equal(true);\nchai.expect(semver.gte(undefined, '1.16.0')).to.equal(false);\nchai.expect(semver.gte('Resin OS 1.16.0', undefined)).to.equal(true);\nchai.expect(semver.gte(undefined, 'Resin OS 1.16.0')).to.equal(false);\nchai.expect(semver.gte('Linux 14.04', undefined)).to.equal(true);\nchai.expect(semver.gte(undefined, 'Linux 14.04')).to.equal(false);\nchai.expect(semver.gte(undefined, undefined)).to.equal(true);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.gte('2.0.0+rev6', '2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gte('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gte('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gte('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(false);\nchai.expect(semver.gte('2.0.0+rev3', '2.0.0+rev3')).to.equal(true);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.gte('2.0.0', '2.0.0+dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0', '2.0.0-dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0', '2.0.0.dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(false);\nchai.expect(semver.gte('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(true);\nchai.expect(semver.gte('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(true);\nchai.expect(semver.gte('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.gte('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(true);\nchai.expect(semver.gte('Resin OS 2.0.0.dev', '2.0.0')).to.equal(false);\nchai.expect(semver.gte('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(true);\n```\n\n<a name=\"resin-semver-gt\"></a>\n\n<a name=\"gt\"></a>\n\n## gt(versionA, versionB) ⇒ <code>boolean</code>\nReturns true if versionA is greater than versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.\n\n**Kind**: global function  \n**Summary**: Check if a version is greater than another  \n**Returns**: <code>boolean</code> - - true if versionA is greater than versionB, otherwise false.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare against |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare to versionA |\n\n**Example**  \nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.gt('2.0.5', '1.16.0')).to.equal(true);\nchai.expect(semver.gt('1.16.0', '2.0.5')).to.equal(false);\nchai.expect(semver.gt('1.16.0', '1.16.0')).to.equal(false);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.gt('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.gt('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', '2.0.2')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', '1.16.0')).to.equal(false);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.gt('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(true);\nchai.expect(semver.gt('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', 'Resin OS 1.16.0')).to.equal(false);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.gt('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.gt('Linux 14.04', 'A development version')).to.equal(true);\nchai.expect(semver.gt('Version B', 'Version A')).to.equal(true);\nchai.expect(semver.gt('Version A', 'Version A')).to.equal(false);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.gt('2.0.5', null)).to.equal(true);\nchai.expect(semver.gt(null, '1.16.0')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', null)).to.equal(true);\nchai.expect(semver.gt(null, 'Resin OS 1.16.0')).to.equal(false);\nchai.expect(semver.gt('Linux 14.04', null)).to.equal(true);\nchai.expect(semver.gt(null, 'Linux 14.04')).to.equal(false);\nchai.expect(semver.gt(null, null)).to.equal(false);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.gt('2.0.5', undefined)).to.equal(true);\nchai.expect(semver.gt(undefined, '1.16.0')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', undefined)).to.equal(true);\nchai.expect(semver.gt(undefined, 'Resin OS 1.16.0')).to.equal(false);\nchai.expect(semver.gt('Linux 14.04', undefined)).to.equal(true);\nchai.expect(semver.gt(undefined, 'Linux 14.04')).to.equal(false);\nchai.expect(semver.gt(undefined, undefined)).to.equal(false);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.gt('2.0.0+rev6', '2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gt('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gt('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gt('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(false);\nchai.expect(semver.gt('2.0.0+rev3', '2.0.0+rev3')).to.equal(false);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.gt('2.0.0', '2.0.0+dev')).to.equal(true);\nchai.expect(semver.gt('2.0.0', '2.0.0-dev')).to.equal(true);\nchai.expect(semver.gt('2.0.0', '2.0.0.dev')).to.equal(true);\nchai.expect(semver.gt('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(true);\nchai.expect(semver.gt('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(false);\nchai.expect(semver.gt('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(false);\nchai.expect(semver.gt('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(true);\nchai.expect(semver.gt('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.gt('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(false);\nchai.expect(semver.gt('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(true);\nchai.expect(semver.gt('Resin OS 2.0.0.dev', '2.0.0')).to.equal(false);\nchai.expect(semver.gt('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(false);\n```\n\n<a name=\"resin-semver-lt\"></a>\n\n<a name=\"lt\"></a>\n\n## lt(versionA, versionB) ⇒ <code>boolean</code>\nReturns true if versionA is less than versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.\n\n**Kind**: global function  \n**Summary**: Check if a version is less than another  \n**Returns**: <code>boolean</code> - - true if versionA is less than versionB, otherwise false.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare against |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare to versionA |\n\n**Example**  \nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.lt('2.0.5', '1.16.0')).to.equal(false);\nchai.expect(semver.lt('1.16.0', '2.0.5')).to.equal(true);\nchai.expect(semver.lt('1.16.0', '1.16.0')).to.equal(false);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.lt('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.lt('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', '2.0.2')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', '1.16.0')).to.equal(false);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.lt('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(false);\nchai.expect(semver.lt('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', 'Resin OS 1.16.0')).to.equal(false);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.lt('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.lt('Linux 14.04', 'A development version')).to.equal(false);\nchai.expect(semver.lt('Version B', 'Version A')).to.equal(false);\nchai.expect(semver.lt('Version A', 'Version A')).to.equal(false);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.lt('2.0.5', null)).to.equal(false);\nchai.expect(semver.lt(null, '1.16.0')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', null)).to.equal(false);\nchai.expect(semver.lt(null, 'Resin OS 1.16.0')).to.equal(true);\nchai.expect(semver.lt('Linux 14.04', null)).to.equal(false);\nchai.expect(semver.lt(null, 'Linux 14.04')).to.equal(true);\nchai.expect(semver.lt(null, null)).to.equal(false);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.lt('2.0.5', undefined)).to.equal(false);\nchai.expect(semver.lt(undefined, '1.16.0')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', undefined)).to.equal(false);\nchai.expect(semver.lt(undefined, 'Resin OS 1.16.0')).to.equal(true);\nchai.expect(semver.lt('Linux 14.04', undefined)).to.equal(false);\nchai.expect(semver.lt(undefined, 'Linux 14.04')).to.equal(true);\nchai.expect(semver.lt(undefined, undefined)).to.equal(false);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.lt('2.0.0+rev6', '2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lt('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lt('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lt('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(true);\nchai.expect(semver.lt('2.0.0+rev3', '2.0.0+rev3')).to.equal(false);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.lt('2.0.0', '2.0.0+dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0', '2.0.0-dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0', '2.0.0.dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(true);\nchai.expect(semver.lt('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(false);\nchai.expect(semver.lt('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(false);\nchai.expect(semver.lt('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.lt('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(false);\nchai.expect(semver.lt('Resin OS 2.0.0.dev', '2.0.0')).to.equal(true);\nchai.expect(semver.lt('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(false);\n```\n\n<a name=\"resin-semver-satisfies\"></a>\n\n<a name=\"satisfies\"></a>\n\n## satisfies(version, range) ⇒ <code>boolean</code>\nReturn true if the parsed version satisfies the range.\nThis method will always return false if the provided version doesn't contain a valid semver string.\n\n**Kind**: global function  \n**Summary**: Check if a version satisfies a range  \n**Returns**: <code>boolean</code> - - True if the parsed version satisfies the range, false otherwise  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version to evaluate |\n| range | <code>string</code> | A semver range string, see the [node-semver](https://github.com/npm/node-semver#ranges) docs for details |\n\n**Example**  \nshould correctly evaluate valid semver values.\n\n```js\nchai.expect(semver.satisfies('2.0.5', '^2.0.0')).to.equal(true);\nchai.expect(semver.satisfies('1.16.0', '^2.0.0')).to.equal(false);\n```\n\nshould correctly evaluate Resin formatted versions.\n\n```js\nchai.expect(semver.satisfies('Resin OS 2.0.2+rev2', '^2.0.0')).to.equal(true);\nchai.expect(semver.satisfies('Resin OS 2.0.2 (prod)', '^2.0.0')).to.equal(true);\nchai.expect(semver.satisfies('Resin OS 1.16.0', '^2.0.0')).to.equal(false);\n```\n\nshould always return false when provided with an invalid semver value.\n\n```js\nchai.expect(semver.satisfies('Linux 14.04', '^2.0.0')).to.equal(false);\nchai.expect(semver.satisfies('A development version', '^2.0.0')).to.equal(false);\nchai.expect(semver.satisfies('Version A', '^2.0.0')).to.equal(false);\nchai.expect(semver.satisfies('Linux 14.04', '*')).to.equal(false);\nchai.expect(semver.satisfies('Linux 14.04', '< 1.0.0')).to.equal(false);\n```\n\nshould correctly evaluate null values.\n\n```js\nchai.expect(semver.satisfies(null, '^2.0.0')).to.equal(false);\n```\n\nshould correctly evaluate undefined values.\n\n```js\nchai.expect(semver.satisfies(undefined, '^2.0.0')).to.equal(false);\n```\n\n<a name=\"resin-semver-maxsatisfying\"></a>\n\n<a name=\"maxSatisfying\"></a>\n\n## maxSatisfying(versions, range) ⇒ <code>string</code> \\| <code>null</code>\nReturn the highest version in the list that satisfies the range, or null if none of them do.\nIf multiple versions are found that have equally high values, the last one in the array is returned.\nNote that only version that contain a valid semver string can satisfy a range.\n\n**Kind**: global function  \n**Summary**: Return the highest version in the list that satisfies the range  \n**Returns**: <code>string</code> \\| <code>null</code> - - The highest matching version string, or null.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versions | <code>Array.&lt;(string\\|null\\|undefined)&gt;</code> | An array of versions to evaluate |\n| range | <code>string</code> | A semver range string, see the [node-semver](https://github.com/npm/node-semver#ranges) docs for details |\n\n**Example**  \nshould return the correct version.\n\n```js\nchai.expect(semver.maxSatisfying(versions_1.versions, '1.1.*')).to.equal('Resin OS 1.1.4');\nchai.expect(semver.maxSatisfying(versions_1.versions, '^2.0.0')).to.equal('Resin OS 2.14.0');\nchai.expect(semver.maxSatisfying(versions_1.versions, '< 1.0.0')).to.equal(null);\n```\n\nshould return the first version found if multiple versions have equally high values.\n\n```js\nchai.expect(semver.maxSatisfying(['1.0.0', 'Resin OS 1.1.4', '1.1.4'], '1.1.*')).to.equal('Resin OS 1.1.4');\n```\n\nshould normalize versions used in range parameter.\n\n```js\nchai.expect(semver.maxSatisfying(versions_1.versions, '2.0.0.rev1')).to.equal('Resin OS 2.0.0+rev11');\nchai.expect(semver.maxSatisfying(versions_1.versions, '^ Resin OS 2.0.0 (prod)')).to.equal('Resin OS 2.14.0');\nchai.expect(semver.maxSatisfying(versions_1.versions, '< Resin OS v1.0.0')).to.equal(null);\nchai.expect(semver.maxSatisfying(versions_1.versions, 'Resin OS v1.1.*')).to.equal('Resin OS 1.1.4');\n```\n\n<a name=\"resin-semver-parse\"></a>\n\n<a name=\"parse\"></a>\n\n## parse(version) ⇒ <code>SemverObject</code> \\| <code>null</code>\nReturns an object representing the semver version. Returns null\nif a valid semver string can't be found.\n\n**Kind**: global function  \n**Summary**: Parse a version into an object  \n**Returns**: <code>SemverObject</code> \\| <code>null</code> - - An object representing the version string, or\nnull if a valid semver string could not be found  \n**Access**: public  \n\n| Param | Type |\n| --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | \n\n**Example**  \nshould correctly parse valid semver values.\n\n```js\nchai.expect(semver.parse('2.0.5')).to.deep.include({\n    raw: '2.0.5',\n    major: 2,\n    minor: 0,\n    patch: 5,\n    version: '2.0.5',\n    prerelease: [],\n    build: [],\n});\n```\n\nshould correctly parse Resin formatted versions.\n\n```js\nchai.expect(semver.parse('Resin OS v2.0.2+rev2')).to.deep.include({\n    raw: 'Resin OS v2.0.2+rev2',\n    major: 2,\n    minor: 0,\n    patch: 2,\n    version: '2.0.2',\n    prerelease: [],\n    build: ['rev2'],\n});\nchai.expect(semver.parse('Resin OS v2.0.2 (prod)')).to.deep.include({\n    raw: 'Resin OS v2.0.2 (prod)',\n    major: 2,\n    minor: 0,\n    patch: 2,\n    version: '2.0.2',\n    prerelease: [],\n    build: ['prod'],\n});\nchai.expect(semver.parse('Resin OS v2.0.2.prod')).to.deep.include({\n    raw: 'Resin OS v2.0.2.prod',\n    major: 2,\n    minor: 0,\n    patch: 2,\n    version: '2.0.2',\n    prerelease: [],\n    build: ['prod'],\n});\nchai.expect(semver.parse('Resin OS 2.0.0-rc5.rev1')).to.deep.include({\n    raw: 'Resin OS 2.0.0-rc5.rev1',\n    major: 2,\n    minor: 0,\n    patch: 0,\n    version: '2.0.0-rc5.rev1',\n    prerelease: ['rc5', 'rev1'],\n    build: [],\n});\nchai.expect(semver.parse('Resin OS 2.3.0+rev1.prod')).to.deep.include({\n    raw: 'Resin OS 2.3.0+rev1.prod',\n    major: 2,\n    minor: 3,\n    patch: 0,\n    version: '2.3.0',\n    prerelease: [],\n    build: ['rev1', 'prod'],\n});\nchai.expect(semver.parse('Resin OS v2.3.0-a.b.c (prod)')).to.deep.include({\n    raw: 'Resin OS v2.3.0-a.b.c (prod)',\n    major: 2,\n    minor: 3,\n    patch: 0,\n    version: '2.3.0-a.b.c',\n    prerelease: ['a', 'b', 'c'],\n    build: ['prod'],\n});\nchai.expect(semver.parse('Resin OS 2.3.0-a.b.c+d.e.f (prod)')).to.deep.include({\n    raw: 'Resin OS 2.3.0-a.b.c+d.e.f (prod)',\n    major: 2,\n    minor: 3,\n    patch: 0,\n    version: '2.3.0-a.b.c',\n    prerelease: ['a', 'b', 'c'],\n    build: ['d', 'e', 'f', 'prod'],\n});\nchai.expect(semver.parse('Resin OS 2.3.0+a.b.c (prod)')).to.deep.include({\n    raw: 'Resin OS 2.3.0+a.b.c (prod)',\n    major: 2,\n    minor: 3,\n    patch: 0,\n    version: '2.3.0',\n    prerelease: [],\n    build: ['a', 'b', 'c', 'prod'],\n});\n```\n\nshould correctly parse invalid semver values.\n\n```js\nchai.expect(semver.parse('Linux 14.04')).to.equal(null);\nchai.expect(semver.parse('A development version')).to.equal(null);\nchai.expect(semver.parse('Version A')).to.equal(null);\n```\n\nshould correctly parse null values.\n\n```js\nchai.expect(semver.parse(null)).to.equal(null);\n```\n\nshould correctly parse undefined values.\n\n```js\nchai.expect(semver.parse(undefined)).to.equal(null);\n```\n\n<a name=\"resin-semver-valid\"></a>\n\n<a name=\"valid\"></a>\n\n## valid(version) ⇒ <code>string</code> \\| <code>null</code>\nReturn the parsed version, or null if it's not valid.\n\n**Kind**: global function  \n**Summary**: Check if a version string is valid  \n**Returns**: <code>string</code> \\| <code>null</code> - - The parsed version string, or\nnull if a valid semver string could not be found  \n**Access**: public  \n\n| Param | Type |\n| --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | \n\n**Example**  \nshould return null for invalid semver values.\n\n```js\nchai.expect(semver.valid(null)).to.equal(null);\nchai.expect(semver.valid(undefined)).to.equal(null);\nchai.expect(semver.valid('')).to.equal(null);\nchai.expect(semver.valid('foobar')).to.equal(null);\nchai.expect(semver.valid('12345')).to.equal(null);\nchai.expect(semver.valid('1.2.3.4.5')).to.equal(null);\n```\n\nshould correctly parse valid values.\n\n```js\nchai.expect(semver.valid('Resin OS 1.0.0-pre')).to.equal('1.0.0-pre');\nchai.expect(semver.valid('Resin OS 1.0.5 (fido)')).to.equal('1.0.5');\nchai.expect(semver.valid('Resin OS 2.0.0-beta.8')).to.equal('2.0.0-beta.8');\nchai.expect(semver.valid('Resin OS 2.0.0-beta10.rev1')).to.equal('2.0.0-beta10.rev1');\nchai.expect(semver.valid('Resin OS 2.0.0+rev3')).to.equal('2.0.0');\nchai.expect(semver.valid('Resin OS 2.0.0.rev1 (prod)')).to.equal('2.0.0');\nchai.expect(semver.valid('Resin OS 2.0.0+rev4 (dev)')).to.equal('2.0.0');\nchai.expect(semver.valid('2.0.6+rev3.dev')).to.equal('2.0.6');\n```\n\n<a name=\"resin-semver-inc\"></a>\n\n<a name=\"inc\"></a>\n\n## inc(version, release) ⇒ <code>string</code> \\| <code>null</code>\nReturn the version incremented by the release type\n(major, premajor, minor, preminor, patch, prepatch, or prerelease), or null\nif it's not valid.\n\n**Kind**: global function  \n**Summary**: Return an incremented version  \n**Returns**: <code>string</code> \\| <code>null</code> - - The incremented version string, or\nnull if a valid semver string could not be found  \n**Access**: public  \n\n| Param | Type |\n| --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | \n| release | <code>string</code> | \n\n**Example**  \nshould return null for invalid semver values.\n\n```js\nchai.expect(semver.inc(null, 'major')).to.equal(null);\nchai.expect(semver.inc(undefined, 'major')).to.equal(null);\nchai.expect(semver.inc('', 'major')).to.equal(null);\nchai.expect(semver.inc('foobar', 'major')).to.equal(null);\nchai.expect(semver.inc('12345', 'major')).to.equal(null);\nchai.expect(semver.inc('1.2.3.4.5', 'major')).to.equal(null);\n```\n\nshould correctly increment valid values by a 'premajor' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'premajor')).to.equal('2.0.0-0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'premajor')).to.equal('2.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'premajor')).to.equal('3.0.0-0');\n```\n\nshould correctly increment valid values by a 'preminor' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'preminor')).to.equal('1.1.0-0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'preminor')).to.equal('1.1.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'preminor')).to.equal('2.1.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'preminor')).to.equal('2.1.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'preminor')).to.equal('2.1.0-0');\nchai.expect(semver.inc('Resin OS 2.1.0.rev1 (prod)', 'preminor')).to.equal('2.2.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'preminor')).to.equal('2.1.0-0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'preminor')).to.equal('2.1.0-0');\n```\n\nshould correctly increment valid values by a 'prepatch' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'prepatch')).to.equal('1.0.1-0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'prepatch')).to.equal('1.0.6-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'prepatch')).to.equal('2.0.7-0');\n```\n\nshould correctly increment valid values by a 'prerelease' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'prerelease')).to.equal('1.0.0-pre.0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'prerelease')).to.equal('1.0.6-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'prerelease')).to.equal('2.0.0-beta.9');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'prerelease')).to.equal('2.0.0-beta10.rev1.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'prerelease')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'prerelease')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'prerelease')).to.equal('2.0.1-0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'prerelease')).to.equal('2.0.7-0');\n```\n\nshould correctly increment valid values by a 'major' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'major')).to.equal('1.0.0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'major')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'major')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'major')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'major')).to.equal('3.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'major')).to.equal('3.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'major')).to.equal('3.0.0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'major')).to.equal('3.0.0');\n```\n\nshould correctly increment valid values by a 'minor' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'minor')).to.equal('1.0.0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'minor')).to.equal('1.1.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'minor')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'minor')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'minor')).to.equal('2.1.0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'minor')).to.equal('2.1.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'minor')).to.equal('2.1.0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'minor')).to.equal('2.1.0');\n```\n\nshould correctly increment valid values by a 'patch' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'patch')).to.equal('1.0.0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'patch')).to.equal('1.0.6');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'patch')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'patch')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'patch')).to.equal('2.0.1');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'patch')).to.equal('2.0.1');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'patch')).to.equal('2.0.1');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'patch')).to.equal('2.0.7');\n```\n\n\n\n\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/resin-io-modules/resin-semver/issues"},"_id":"resin-semver@1.4.1-sync-0cd30ce11fc43bfc476b00cc82fe69fb7ac4103f","_npmVersion":"6.1.0","_nodeVersion":"10.4.0","_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"dist":{"integrity":"sha512-+WReooEXEbFaLAqrwPRKeZURcxpehZw/a3q4H8t6/i73tCgr19xzduxmMICPh3rgF7rTgKGerEyNHjadqoRRUg==","shasum":"1d21193f553910251f0fcdad37df161ae738f2e7","tarball":"https://registry.npmjs.org/resin-semver/-/resin-semver-1.4.1-sync-0cd30ce11fc43bfc476b00cc82fe69fb7ac4103f.tgz","fileCount":17,"unpackedSize":130232,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcSfNeCRA9TVsSAnZWagAAJC0P/j9tEO2K7rbr5/Tzw9/J\nmxDvx5tDBFrTkc2sMRumcLuHeB1Z08j0g0f+WMQXxAqVWZw3f2iQoRWjuh3u\nqA/2g+glCn2qV0j5Cw0dsaLolY0ReakbCtVq6nEVl1SoyphKS1WcDvTTKZOx\nP9+AHoqD9+QnArKm2tBa5FhU31QfmEbdbFUOWr9JXA916DKgrTPZt2fGNQWf\ntmBAl56grfBBvj8LwtiVlL6c0L39w0233Upumq67hu0GrlR0x7qJ31Wcf3VC\nN7MfbP69JS/T32XTD7Anp9YhtH2AnIVCkDFKBQn3YdGWAE7B28qM+uwEiW8e\nKYRkTaGZdRN89lTm/xgzp1NfJLW7AiJLIUvSgfDJ2kSROG5CmKM4HJ3oc/l6\nIzg+Zw4k1g1fbAEAaNVpVQ8HsVAn4m5/UoHiF1HOkQ4gAiyEACHPjRJPePli\nPqSlCckyDoKIEkoZ1PFkEwnIzJECyin9KhZA+bVc6nNM8EVsvwPtPboWNPbV\nxK23tnmrsmpM5Z24C12Cz3UdMO5N+PTnk1aYz9lyJViui1DJCZ+m0GOFvIKG\nJIWWI3udSAvXN99zJE5KdsMSjodw3vW3StWbl8pbbxlqdrLILt470gFF6/Oo\n1fw1BFeysbKz4sKii8tYGEgpAGhxkXJwcMw6QNmGEnZw2aDQIVHtz26RMfoP\nzaL7\r\n=HZNS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDmj9kT5oJ6S4UGtNHlglDlTMkGtoUjmh1EZeZzYDI12gIgFCixukA9DLXWb69zSOXThOnxWxmtpw51gYn29XUNwFY="}]},"maintainers":[{"email":"accounts+npm@balena.io","name":"balena.io"},{"email":"accounts+npm-ci@resin.io","name":"resin-ci"},{"email":"accounts@resin.io","name":"resin.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/resin-semver_1.4.1-sync-0cd30ce11fc43bfc476b00cc82fe69fb7ac4103f_1548350301446_0.5909380564226727"},"_hasShrinkwrap":false},"1.4.1":{"name":"resin-semver","version":"1.4.1","description":"Resin.io specific semver utility methods","main":"src/index.js","typings":"src/index.ts","homepage":"https://github.com/resin-io-modules/resin-semver","repository":{"type":"git","url":"git+https://github.com/resin-io-modules/resin-semver.git"},"keywords":["resin","resin.io","semver"],"scripts":{"test":"npm run lint && ./automation/test.js","build":"tsc && npm run docs","lint":"tslint -t stylish -c tslint.json 'src/**/*.ts' 'test/**/*.ts'","docs":"./automation/docs.js","ci":"npm run build && catch-uncommitted && npm test","precommit":"lint-staged","prettify":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\""},"author":{"name":"Lucian Buzzo","email":"lucian@resin.io"},"license":"Apache-2.0","dependencies":{"@types/lodash.memoize":"^4.1.2","@types/semver":"^5.4.0","lodash.memoize":"^4.1.2","semver":"^5.3.0"},"devDependencies":{"@types/chai":"^4.0.1","@types/lodash.sortby":"^4.7.4","@types/mocha":"^2.2.41","catch-uncommitted":"^1.0.0","chai":"^4.1.0","husky":"^0.14.3","jsdoc-to-markdown":"^3.0.0","lint-staged":"^4.0.4","lodash.sortby":"^4.7.0","mocha":"^3.4.2","prettier":"^1.6.1","ts-node":"^3.2.1","tslint":"^5.5.0","typescript":"^2.4.2"},"lint-staged":{"*.ts":["prettier --write","npm run lint","npm run docs","git add"]},"gitHead":"d2babbb9799ff61c950a66b8e2e9b51ef6c0237b","bugs":{"url":"https://github.com/resin-io-modules/resin-semver/issues"},"_id":"resin-semver@1.4.1","_npmVersion":"6.1.0","_nodeVersion":"10.4.0","_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"dist":{"integrity":"sha512-aGqGnjR4VJtGfUkgaUX6Z7vKBCjxwNX7hKt5lbP5zD03dwQ+ykOrRRvD9KiRU/7fbS8Ytcg1E1NxxeTbd7BXWA==","shasum":"e36536103173c4abd03a2f2bbb862526d01673fe","tarball":"https://registry.npmjs.org/resin-semver/-/resin-semver-1.4.1.tgz","fileCount":17,"unpackedSize":130186,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcSf8pCRA9TVsSAnZWagAASIkP+gL9eOibuNSn/qzzcy2P\nIqJqmiI0ps1exQk4/aat7m7QsBoRqzR1ESRqWkNrbZtHge8WPwN0G6+MDJQV\nD2FSE54RqWv98hKrumO9+cuNpoliG0s88JXhGjvmKmRzPOxnufL1d6vsLPaS\nbfakCQnHIOPYgWb3VuZ6pmQmrK+n7jT17OFUqix7oKiFCTfFADkfged4b6TQ\nYHPwd3vNgN1DlWJ+D1pxiTENVUsXkRoRPoDu+oxle3SsJQLBFeFCE419eZdl\n7ZrUO+LKsaEEEResrmFsEVxMTUF4UIpLd/e2jgwpvn4vw3ZpC0g1dV8MTCWY\nMEcncxg4kWEv9zjyOShpDNjCCPSVvVblgivW8g+Z0GsxI5U0Lc1i2x1lxSVQ\nOdQQ4/2Vd2WHWIMGB2s7eX9cV8F8TzNhXJlj1lAbegGai3tWET4wvnzmCLKj\npyuMMpqgre8v4TG7FmuY9UTBz3nIy1rSCen5soQ0jCPD0shvDhMHWYh3w8m6\njfLbA4YWyF3BRteMsUifKqKRXqFx5z97TnWXP4CHv1gbN8mWjcG7fOXsj9A+\nFHmU4LRsbcxLixoMI2y3FUd4ikdK4aEp6YIUI0VTog0OWctFPEmZULL3frlz\nKYT+giaAryz2HWLmlxoZT+ASH+RH8IVMO3rWnn+HXwKyhOMDwuSPtI1oKWWN\nNoPm\r\n=lU6Z\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDgAb5s5AjSAd8zjwo30e7+znnGyxqL2rqc6mv6oJ1wNgIhANtotTgeRue6hmRtDtS5H6VRti9h2HsVdLNAMZz5hfn7"}]},"maintainers":[{"email":"accounts+npm@balena.io","name":"balena.io"},{"email":"accounts+npm-ci@resin.io","name":"resin-ci"},{"email":"accounts@resin.io","name":"resin.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/resin-semver_1.4.1_1548353320556_0.7002553682633454"},"_hasShrinkwrap":false,"deprecated":"resin-semver is deprecated, please use balena-semver instead"},"1.5.0-lte-a6de0135c5deebc3119a65a9eebdf28b90fc5ad0":{"name":"resin-semver","version":"1.5.0-lte-a6de0135c5deebc3119a65a9eebdf28b90fc5ad0","description":"Resin.io specific semver utility methods","main":"src/index.js","typings":"src/index.ts","homepage":"https://github.com/resin-io-modules/resin-semver","repository":{"type":"git","url":"git+https://github.com/resin-io-modules/resin-semver.git"},"keywords":["resin","resin.io","semver"],"scripts":{"test":"npm run lint && ./automation/test.js","build":"tsc && npm run docs","lint":"tslint -t stylish -c tslint.json 'src/**/*.ts' 'test/**/*.ts'","docs":"./automation/docs.js","ci":"npm run build && catch-uncommitted && npm test","precommit":"lint-staged","prettify":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\""},"author":{"name":"Lucian Buzzo","email":"lucian@resin.io"},"license":"Apache-2.0","dependencies":{"@types/lodash.memoize":"^4.1.2","@types/semver":"^5.4.0","lodash.memoize":"^4.1.2","semver":"^5.3.0"},"devDependencies":{"@types/chai":"^4.0.1","@types/lodash.sortby":"^4.7.4","@types/mocha":"^2.2.41","catch-uncommitted":"^1.0.0","chai":"^4.1.0","husky":"^0.14.3","jsdoc-to-markdown":"^3.0.0","lint-staged":"^4.0.4","lodash.sortby":"^4.7.0","mocha":"^3.4.2","prettier":"^1.6.1","ts-node":"^3.2.1","tslint":"^5.5.0","typescript":"^2.4.2"},"lint-staged":{"*.ts":["prettier --write","npm run lint","npm run docs","git add"]},"gitHead":"a6de0135c5deebc3119a65a9eebdf28b90fc5ad0","readme":"resin-semver\n============\n\n> Resin.io specific semver utility methods\n\n[![Build Status](https://travis-ci.org/resin-io-modules/resin-semver.svg?branch=master)](https://travis-ci.org/resin-io-modules/resin-semver)\n\nRole\n----\n\nThe intention of this module is to provide a collection of resin specific semver utility methods.\n\n**THIS MODULE IS LOW LEVEL AND IS NOT MEANT TO BE USED BY END USERS DIRECTLY**.\n\nUnless you know what you're doing, use the [Resin SDK](https://github.com/resin-io/resin-sdk) instead.\n\nInstallation\n------------\n\nInstall `resin-semver` by running:\n\n```sh\n$ npm install --save resin-semver\n```\n\nDocumentation\n-------------\n\n## Functions\n\n<dl>\n<dt><a href=\"#compare\">compare(versionA, versionB)</a> ⇒ <code>number</code></dt>\n<dd><p>Accepts string or null values and compares them, returning a number\nindicating sort order. Values are parsed for valid semver strings. Sorts an array\nof versions in ascending order if passed to <code>Array.sort()</code>.</p>\n</dd>\n<dt><a href=\"#rcompare\">rcompare(versionA, versionB)</a> ⇒ <code>number</code></dt>\n<dd><p>The reverse of <code>.compare()</code>. Accepts string or null values and compares\nthem, returning a number indicating sort order. Values are parsed for valid semver\nstrings. Sorts an array of versions in descending order when passed to <code>Array.sort()</code>.</p>\n</dd>\n<dt><a href=\"#major\">major(version)</a> ⇒ <code>number</code> | <code>null</code></dt>\n<dd><p>Returns the major version number in a semver string.\nIf the version is not a valid semver string, or a valid semver string cannot be\nfound, it returns null.</p>\n</dd>\n<dt><a href=\"#prerelease\">prerelease(version)</a> ⇒ <code>Array.&lt;(string|number)&gt;</code> | <code>null</code></dt>\n<dd><p>Returns an array of prerelease components, or null if none exist</p>\n</dd>\n<dt><a href=\"#gte\">gte(versionA, versionB)</a> ⇒ <code>boolean</code></dt>\n<dd><p>Returns true if versionA is greater than or equal to versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.</p>\n</dd>\n<dt><a href=\"#gt\">gt(versionA, versionB)</a> ⇒ <code>boolean</code></dt>\n<dd><p>Returns true if versionA is greater than versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.</p>\n</dd>\n<dt><a href=\"#lte\">lte(versionA, versionB)</a> ⇒ <code>boolean</code></dt>\n<dd><p>Returns true if versionA is less than or equal to versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.</p>\n</dd>\n<dt><a href=\"#lt\">lt(versionA, versionB)</a> ⇒ <code>boolean</code></dt>\n<dd><p>Returns true if versionA is less than versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.</p>\n</dd>\n<dt><a href=\"#satisfies\">satisfies(version, range)</a> ⇒ <code>boolean</code></dt>\n<dd><p>Return true if the parsed version satisfies the range.\nThis method will always return false if the provided version doesn&#39;t contain a valid semver string.</p>\n</dd>\n<dt><a href=\"#maxSatisfying\">maxSatisfying(versions, range)</a> ⇒ <code>string</code> | <code>null</code></dt>\n<dd><p>Return the highest version in the list that satisfies the range, or null if none of them do.\nIf multiple versions are found that have equally high values, the last one in the array is returned.\nNote that only version that contain a valid semver string can satisfy a range.</p>\n</dd>\n<dt><a href=\"#parse\">parse(version)</a> ⇒ <code>SemverObject</code> | <code>null</code></dt>\n<dd><p>Returns an object representing the semver version. Returns null\nif a valid semver string can&#39;t be found.</p>\n</dd>\n<dt><a href=\"#valid\">valid(version)</a> ⇒ <code>string</code> | <code>null</code></dt>\n<dd><p>Return the parsed version, or null if it&#39;s not valid.</p>\n</dd>\n<dt><a href=\"#inc\">inc(version, release)</a> ⇒ <code>string</code> | <code>null</code></dt>\n<dd><p>Return the version incremented by the release type\n(major, premajor, minor, preminor, patch, prepatch, or prerelease), or null\nif it&#39;s not valid.</p>\n</dd>\n</dl>\n\n<a name=\"compare\"></a>\n\n## compare(versionA, versionB) ⇒ <code>number</code>\nAccepts string or null values and compares them, returning a number\nindicating sort order. Values are parsed for valid semver strings. Sorts an array\nof versions in ascending order if passed to `Array.sort()`.\n\n**Kind**: global function  \n**Summary**: Compare order of versions  \n**Returns**: <code>number</code> - Returns `0` if `versionA == versionB`,\nor `1` if `versionA` is greater, or `-1` if `versionB` is greater.\nNull values are sorted before invalid semver values, and invalid semver values\nare sorted before valid semver values\nIf both values are invalid semver values, then the values are compared alphabetically.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The first version to compare |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The second version to compare |\n\n**Example**  \nshould not throw when provided with a version.\n\n```js\nversions_1.versions.forEach(function (version) {\n    chai.expect(function () { return semver.compare(version, version); }).to.not.throw();\n});\n```\n\nshould correctly sort lists of versions.\n\n```js\nchai.expect(sortBy(versions_1.versions.slice(), semver.compare)).to.eql(versions_1.versions);\n```\n\nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.compare('2.0.5', '1.16.0')).to.equal(1);\nchai.expect(semver.compare('2.0.5', '2.0.5')).to.equal(0);\nchai.expect(semver.compare('1.16.0', '2.0.5')).to.equal(-1);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.compare('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(1);\nchai.expect(semver.compare('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(-1);\nchai.expect(semver.compare('1.16.0', 'Resin OS v1.16.0')).to.equal(0);\nchai.expect(semver.compare('Resin OS 1.16.0', '2.0.2')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 1.16.0', '1.16.0')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.2', '1.16.0')).to.equal(1);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.compare('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(1);\nchai.expect(semver.compare('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 1.16.0', 'Resin OS 1.16.0')).to.equal(0);\n```\n\nshould correctly compare Balena formatted versions.\n\n```js\nchai.expect(semver.compare('balenaOS 2.0.5', 'balenaOS 2.0.2+rev2')).to.equal(1);\nchai.expect(semver.compare('balenaOS 1.16.0', 'balenaOS 2.0.2 (prod)')).to.equal(-1);\nchai.expect(semver.compare('balenaOS 1.16.0', 'balenaOS 1.16.0')).to.equal(0);\n```\n\nshould correctly compare Balena formatted versions to Resin formatted versions.\n\n```js\nchai.expect(semver.compare('balenaOS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(1);\nchai.expect(semver.compare('balenaOS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(-1);\nchai.expect(semver.compare('balenaOS 1.16.0', 'Resin OS 1.16.0')).to.equal(0);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.compare('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(-1);\nchai.expect(semver.compare('Linux 14.04', 'A development version')).to.equal(1);\nchai.expect(semver.compare('Version B', 'Version A')).to.equal(1);\nchai.expect(semver.compare('Version A', 'Version A')).to.equal(0);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.compare('2.0.5', null)).to.equal(1);\nchai.expect(semver.compare(null, '1.16.0')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 1.16.0', null)).to.equal(1);\nchai.expect(semver.compare(null, 'Resin OS 1.16.0')).to.equal(-1);\nchai.expect(semver.compare('Linux 14.04', null)).to.equal(1);\nchai.expect(semver.compare(null, 'Linux 14.04')).to.equal(-1);\nchai.expect(semver.compare(null, null)).to.equal(0);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.compare('2.0.5', undefined)).to.equal(1);\nchai.expect(semver.compare(undefined, '1.16.0')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 1.16.0', undefined)).to.equal(1);\nchai.expect(semver.compare(undefined, 'Resin OS 1.16.0')).to.equal(-1);\nchai.expect(semver.compare('Linux 14.04', undefined)).to.equal(1);\nchai.expect(semver.compare(undefined, 'Linux 14.04')).to.equal(-1);\nchai.expect(semver.compare(undefined, undefined)).to.equal(0);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.compare('2.0.0+rev6', '2.0.0+rev3')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(1);\nchai.expect(semver.compare('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(1);\nchai.expect(semver.compare('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(-1);\nchai.expect(semver.compare('2.0.0+rev3', '2.0.0+rev3')).to.equal(0);\nchai.expect(semver.compare('2.0.0+rev1', '2.0.0+rev11')).to.equal(-1);\nchai.expect(semver.compare('2.0.0+rev2', '2.0.0+rev11')).to.equal(-1);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.compare('2.0.0', '2.0.0+dev')).to.equal(1);\nchai.expect(semver.compare('2.0.0', '2.0.0-dev')).to.equal(1);\nchai.expect(semver.compare('2.0.0', '2.0.0.dev')).to.equal(1);\nchai.expect(semver.compare('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(1);\nchai.expect(semver.compare('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(-1);\nchai.expect(semver.compare('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(0);\nchai.expect(semver.compare('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0.dev', '2.0.0')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(0);\n```\n\nshould correctly compare \"(dev)\" and \"(prod)\" versions without revisions.\n\n```js\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0 (dev)')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0 (dev)', 'Resin OS 2.0.0 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0-prod')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0.prod')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0+prod')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0 (dev)', 'Resin OS 2.0.0+prod')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0.dev', 'Resin OS 2.0.0+dev')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0.dev', 'Resin OS 2.0.0 (dev)')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0+dev', 'Resin OS 2.0.0 (dev)')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0.prod', 'Resin OS 2.0.0+prod')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0.prod', 'Resin OS 2.0.0 (prod)')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0+prod', 'Resin OS 2.0.0 (prod)')).to.equal(0);\n```\n\nshould correctly compare \"(dev)\" and \"(prod)\" versions of the same revision.\n\n```js\nchai.expect(semver.compare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3 (dev)')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3 (dev)', 'Resin OS 2.0.0+rev3 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.prod')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3 (dev)', 'Resin OS 2.0.0+rev3+prod')).to.equal(1); // B is invalid\n```\n\n<a name=\"resin-semver-rcompare\"></a>\n\n<a name=\"rcompare\"></a>\n\n## rcompare(versionA, versionB) ⇒ <code>number</code>\nThe reverse of `.compare()`. Accepts string or null values and compares\nthem, returning a number indicating sort order. Values are parsed for valid semver\nstrings. Sorts an array of versions in descending order when passed to `Array.sort()`.\n\n**Kind**: global function  \n**Summary**: Compare order of versions in reverse  \n**Returns**: <code>number</code> - Returns `0` if `versionA == versionB`,\nor `-1` if `versionA` is greater, or `1` if `versionB` is greater.\nValid semver values are sorted before invalid semver values, and invalid semver values are\nsorted before null values.\nIf both values are non-null invalid semver values, then the values are compared alphabetically.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The first version to compare |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The second version to compare |\n\n**Example**  \nshould not throw when provided with a version.\n\n```js\nversions_1.versions.forEach(function (version) {\n    chai.expect(function () { return semver.rcompare(version, version); }).to.not.throw();\n});\n```\n\nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.rcompare('2.0.5', '1.16.0')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.5', '2.0.5')).to.equal(0);\nchai.expect(semver.rcompare('1.16.0', '2.0.5')).to.equal(1);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.rcompare('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(-1);\nchai.expect(semver.rcompare('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(1);\nchai.expect(semver.rcompare('1.16.0', 'Resin OS v1.16.0')).to.equal(0);\nchai.expect(semver.rcompare('Resin OS 1.16.0', '2.0.2')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', '1.16.0')).to.equal(0);\nchai.expect(semver.rcompare('Resin OS 2.0.2', '1.16.0')).to.equal(-1);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.rcompare('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(-1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', 'Resin OS 1.16.0')).to.equal(0);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.rcompare('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(1);\nchai.expect(semver.rcompare('Linux 14.04', 'A development version')).to.equal(-1);\nchai.expect(semver.rcompare('Version B', 'Version A')).to.equal(-1);\nchai.expect(semver.rcompare('Version A', 'Version A')).to.equal(0);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.rcompare('2.0.5', null)).to.equal(-1);\nchai.expect(semver.rcompare(null, '1.16.0')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', null)).to.equal(-1);\nchai.expect(semver.rcompare(null, 'Resin OS 1.16.0')).to.equal(1);\nchai.expect(semver.rcompare('Linux 14.04', null)).to.equal(-1);\nchai.expect(semver.rcompare(null, 'Linux 14.04')).to.equal(1);\nchai.expect(semver.rcompare(null, null)).to.equal(0);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.rcompare('2.0.5', undefined)).to.equal(-1);\nchai.expect(semver.rcompare(undefined, '1.16.0')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', undefined)).to.equal(-1);\nchai.expect(semver.rcompare(undefined, 'Resin OS 1.16.0')).to.equal(1);\nchai.expect(semver.rcompare('Linux 14.04', undefined)).to.equal(-1);\nchai.expect(semver.rcompare(undefined, 'Linux 14.04')).to.equal(1);\nchai.expect(semver.rcompare(undefined, undefined)).to.equal(0);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.rcompare('2.0.0+rev6', '2.0.0+rev3')).to.equal(-1);\nchai.expect(semver.rcompare('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(1);\nchai.expect(semver.rcompare('2.0.0+rev3', '2.0.0+rev3')).to.equal(0);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.rcompare('2.0.0', '2.0.0+dev')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0', '2.0.0-dev')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0', '2.0.0.dev')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(1);\nchai.expect(semver.rcompare('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(0);\nchai.expect(semver.rcompare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(-1);\nchai.expect(semver.rcompare('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(0);\nchai.expect(semver.rcompare('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(-1);\nchai.expect(semver.rcompare('Resin OS 2.0.0.dev', '2.0.0')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(0);\n```\n\n<a name=\"resin-semver-major\"></a>\n\n<a name=\"major\"></a>\n\n## major(version) ⇒ <code>number</code> \\| <code>null</code>\nReturns the major version number in a semver string.\nIf the version is not a valid semver string, or a valid semver string cannot be\nfound, it returns null.\n\n**Kind**: global function  \n**Summary**: Return the major version number  \n**Returns**: <code>number</code> \\| <code>null</code> - - The major version number  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefine</code> | The version string to evaluate |\n\n**Example**  \nshould correctly match valid semver versions.\n\n```js\nchai.expect(semver.major('4.5.1')).to.equal(4);\n```\n\nshould correctly match resinOS prefixed versions.\n\n```js\nchai.expect(semver.major('Resin OS v2.0.5')).to.equal(2);\nchai.expect(semver.major('Resin OS 2.0.2+rev2')).to.equal(2);\nchai.expect(semver.major('Resin OS 2.0.0.rev1 (prod)')).to.equal(2);\nchai.expect(semver.major('Resin OS 2.0.0-rc5.rev1')).to.equal(2);\n```\n\nshould return null when version is `null`.\n\n```js\nchai.expect(semver.major(null)).to.equal(null);\n```\n\nshould return null when version is `undefined`.\n\n```js\nchai.expect(semver.major(undefined)).to.equal(null);\n```\n\nshould return null when the version contains no valid semver value.\n\n```js\nchai.expect(semver.major('My dev version')).to.equal(null);\nchai.expect(semver.major('Linux 14.04')).to.equal(null);\nchai.expect(semver.major('Software version 42.3.20170726.72bbcf8')).to.equal(null);\n```\n\n<a name=\"resin-semver-prerelease\"></a>\n\n<a name=\"prerelease\"></a>\n\n## prerelease(version) ⇒ <code>Array.&lt;(string\\|number)&gt;</code> \\| <code>null</code>\nReturns an array of prerelease components, or null if none exist\n\n**Kind**: global function  \n**Summary**: Return prerelease components  \n**Returns**: <code>Array.&lt;(string\\|number)&gt;</code> \\| <code>null</code> - - An array of prerelease component, or null if none exist  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to evaluate |\n\n**Example**  \nshould return an array of prerelease components when provided a semver string.\n\n```js\nchai.expect(semver.prerelease('1.16.0-alpha.1')).to.eql(['alpha', 1]);\n```\n\nshould return null when provided with a semver string that has no prerelease segment.\n\n```js\nchai.expect(semver.prerelease('1.16.0')).to.eql(null);\n```\n\nshould return an array of prerelease components when provided a resinOS prefixed version.\n\n```js\nchai.expect(semver.prerelease('Resin OS 2.0.0-rc5.rev1')).to.eql(['rc5', 'rev1']);\n```\n\nshould return null when provided a resinOS prefixed version that has no prerelease segment.\n\n```js\nchai.expect(semver.prerelease('Resin OS 2.0.0')).to.equal(null);\n```\n\nshould return null when provided with an invalid version.\n\n```js\nchai.expect(semver.prerelease('My dev version')).to.equal(null);\nchai.expect(semver.prerelease('Linux 14.04')).to.equal(null);\nchai.expect(semver.prerelease('Software version 42.3.20170726.72bbcf8')).to.equal(null);\n```\n\nshould return null when provided with a null value.\n\n```js\nchai.expect(semver.prerelease(null)).to.equal(null);\n```\n\nshould return null when provided with an undefined value.\n\n```js\nchai.expect(semver.prerelease(undefined)).to.equal(null);\n```\n\n<a name=\"resin-semver-gte\"></a>\n\n<a name=\"gte\"></a>\n\n## gte(versionA, versionB) ⇒ <code>boolean</code>\nReturns true if versionA is greater than or equal to versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.\n\n**Kind**: global function  \n**Summary**: Check if a version is greater than or equal to another  \n**Returns**: <code>boolean</code> - - true if versionA is greater than or equal to versionB, otherwise false.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare against |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare to versionA |\n\n**Example**  \nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.gte('2.0.5', '1.16.0')).to.equal(true);\nchai.expect(semver.gte('1.16.0', '2.0.5')).to.equal(false);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.gte('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.gte('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.gte('Resin OS 1.16.0', '2.0.2')).to.equal(false);\nchai.expect(semver.gte('Resin OS 1.16.0', '1.16.0')).to.equal(true);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.gte('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(true);\nchai.expect(semver.gte('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(false);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.gte('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.gte('Linux 14.04', 'A development version')).to.equal(true);\nchai.expect(semver.gte('Version B', 'Version A')).to.equal(true);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.gte('2.0.5', null)).to.equal(true);\nchai.expect(semver.gte(null, '1.16.0')).to.equal(false);\nchai.expect(semver.gte('Resin OS 1.16.0', null)).to.equal(true);\nchai.expect(semver.gte(null, 'Resin OS 1.16.0')).to.equal(false);\nchai.expect(semver.gte('Linux 14.04', null)).to.equal(true);\nchai.expect(semver.gte(null, 'Linux 14.04')).to.equal(false);\nchai.expect(semver.gte(null, null)).to.equal(true);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.gte('2.0.5', undefined)).to.equal(true);\nchai.expect(semver.gte(undefined, '1.16.0')).to.equal(false);\nchai.expect(semver.gte('Resin OS 1.16.0', undefined)).to.equal(true);\nchai.expect(semver.gte(undefined, 'Resin OS 1.16.0')).to.equal(false);\nchai.expect(semver.gte('Linux 14.04', undefined)).to.equal(true);\nchai.expect(semver.gte(undefined, 'Linux 14.04')).to.equal(false);\nchai.expect(semver.gte(undefined, undefined)).to.equal(true);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.gte('2.0.0+rev6', '2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gte('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gte('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gte('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(false);\nchai.expect(semver.gte('2.0.0+rev3', '2.0.0+rev3')).to.equal(true);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.gte('2.0.0', '2.0.0+dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0', '2.0.0-dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0', '2.0.0.dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(false);\nchai.expect(semver.gte('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(true);\nchai.expect(semver.gte('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(true);\nchai.expect(semver.gte('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.gte('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(true);\nchai.expect(semver.gte('Resin OS 2.0.0.dev', '2.0.0')).to.equal(false);\nchai.expect(semver.gte('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(true);\n```\n\n<a name=\"resin-semver-gt\"></a>\n\n<a name=\"gt\"></a>\n\n## gt(versionA, versionB) ⇒ <code>boolean</code>\nReturns true if versionA is greater than versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.\n\n**Kind**: global function  \n**Summary**: Check if a version is greater than another  \n**Returns**: <code>boolean</code> - - true if versionA is greater than versionB, otherwise false.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare against |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare to versionA |\n\n**Example**  \nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.gt('2.0.5', '1.16.0')).to.equal(true);\nchai.expect(semver.gt('1.16.0', '2.0.5')).to.equal(false);\nchai.expect(semver.gt('1.16.0', '1.16.0')).to.equal(false);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.gt('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.gt('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', '2.0.2')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', '1.16.0')).to.equal(false);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.gt('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(true);\nchai.expect(semver.gt('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', 'Resin OS 1.16.0')).to.equal(false);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.gt('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.gt('Linux 14.04', 'A development version')).to.equal(true);\nchai.expect(semver.gt('Version B', 'Version A')).to.equal(true);\nchai.expect(semver.gt('Version A', 'Version A')).to.equal(false);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.gt('2.0.5', null)).to.equal(true);\nchai.expect(semver.gt(null, '1.16.0')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', null)).to.equal(true);\nchai.expect(semver.gt(null, 'Resin OS 1.16.0')).to.equal(false);\nchai.expect(semver.gt('Linux 14.04', null)).to.equal(true);\nchai.expect(semver.gt(null, 'Linux 14.04')).to.equal(false);\nchai.expect(semver.gt(null, null)).to.equal(false);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.gt('2.0.5', undefined)).to.equal(true);\nchai.expect(semver.gt(undefined, '1.16.0')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', undefined)).to.equal(true);\nchai.expect(semver.gt(undefined, 'Resin OS 1.16.0')).to.equal(false);\nchai.expect(semver.gt('Linux 14.04', undefined)).to.equal(true);\nchai.expect(semver.gt(undefined, 'Linux 14.04')).to.equal(false);\nchai.expect(semver.gt(undefined, undefined)).to.equal(false);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.gt('2.0.0+rev6', '2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gt('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gt('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gt('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(false);\nchai.expect(semver.gt('2.0.0+rev3', '2.0.0+rev3')).to.equal(false);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.gt('2.0.0', '2.0.0+dev')).to.equal(true);\nchai.expect(semver.gt('2.0.0', '2.0.0-dev')).to.equal(true);\nchai.expect(semver.gt('2.0.0', '2.0.0.dev')).to.equal(true);\nchai.expect(semver.gt('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(true);\nchai.expect(semver.gt('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(false);\nchai.expect(semver.gt('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(false);\nchai.expect(semver.gt('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(true);\nchai.expect(semver.gt('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.gt('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(false);\nchai.expect(semver.gt('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(true);\nchai.expect(semver.gt('Resin OS 2.0.0.dev', '2.0.0')).to.equal(false);\nchai.expect(semver.gt('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(false);\n```\n\n<a name=\"resin-semver-lte\"></a>\n\n<a name=\"lte\"></a>\n\n## lte(versionA, versionB) ⇒ <code>boolean</code>\nReturns true if versionA is less than or equal to versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.\n\n**Kind**: global function  \n**Summary**: Check if a version is less than or equal to another  \n**Returns**: <code>boolean</code> - - true if versionA is greater than or equal to versionB, otherwise false.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare against |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare to versionA |\n\n**Example**  \nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.lte('2.0.5', '1.16.0')).to.equal(false);\nchai.expect(semver.lte('1.16.0', '2.0.5')).to.equal(true);\nchai.expect(semver.lte('1.16.0', '1.16.0')).to.equal(true);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.lte('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.lte('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.lte('Resin OS 1.16.0', '2.0.2')).to.equal(true);\nchai.expect(semver.lte('Resin OS 1.16.0', '1.16.0')).to.equal(true);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.lte('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(false);\nchai.expect(semver.lte('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(true);\nchai.expect(semver.lte('Resin OS 1.16.0', 'Resin OS 1.16.0')).to.equal(true);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.lte('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.lte('Linux 14.04', 'A development version')).to.equal(false);\nchai.expect(semver.lte('Version B', 'Version A')).to.equal(false);\nchai.expect(semver.lte('Version A', 'Version A')).to.equal(true);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.lte('2.0.5', null)).to.equal(false);\nchai.expect(semver.lte(null, '1.16.0')).to.equal(true);\nchai.expect(semver.lte('Resin OS 1.16.0', null)).to.equal(false);\nchai.expect(semver.lte(null, 'Resin OS 1.16.0')).to.equal(true);\nchai.expect(semver.lte('Linux 14.04', null)).to.equal(false);\nchai.expect(semver.lte(null, 'Linux 14.04')).to.equal(true);\nchai.expect(semver.lte(null, null)).to.equal(true);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.lte('2.0.5', undefined)).to.equal(false);\nchai.expect(semver.lte(undefined, '1.16.0')).to.equal(true);\nchai.expect(semver.lte('Resin OS 1.16.0', undefined)).to.equal(false);\nchai.expect(semver.lte(undefined, 'Resin OS 1.16.0')).to.equal(true);\nchai.expect(semver.lte('Linux 14.04', undefined)).to.equal(false);\nchai.expect(semver.lte(undefined, 'Linux 14.04')).to.equal(true);\nchai.expect(semver.lte(undefined, undefined)).to.equal(true);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.lte('2.0.0+rev6', '2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lte('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lte('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lte('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(true);\nchai.expect(semver.lte('2.0.0+rev3', '2.0.0+rev3')).to.equal(true);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.lte('2.0.0', '2.0.0+dev')).to.equal(false);\nchai.expect(semver.lte('2.0.0', '2.0.0-dev')).to.equal(false);\nchai.expect(semver.lte('2.0.0', '2.0.0.dev')).to.equal(false);\nchai.expect(semver.lte('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(false);\nchai.expect(semver.lte('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(true);\nchai.expect(semver.lte('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(true);\nchai.expect(semver.lte('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(false);\nchai.expect(semver.lte('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.lte('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(true);\nchai.expect(semver.lte('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(false);\nchai.expect(semver.lte('Resin OS 2.0.0.dev', '2.0.0')).to.equal(true);\nchai.expect(semver.lte('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(true);\n```\n\n<a name=\"resin-semver-lt\"></a>\n\n<a name=\"lt\"></a>\n\n## lt(versionA, versionB) ⇒ <code>boolean</code>\nReturns true if versionA is less than versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.\n\n**Kind**: global function  \n**Summary**: Check if a version is less than another  \n**Returns**: <code>boolean</code> - - true if versionA is less than versionB, otherwise false.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare against |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare to versionA |\n\n**Example**  \nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.lt('2.0.5', '1.16.0')).to.equal(false);\nchai.expect(semver.lt('1.16.0', '2.0.5')).to.equal(true);\nchai.expect(semver.lt('1.16.0', '1.16.0')).to.equal(false);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.lt('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.lt('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', '2.0.2')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', '1.16.0')).to.equal(false);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.lt('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(false);\nchai.expect(semver.lt('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', 'Resin OS 1.16.0')).to.equal(false);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.lt('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.lt('Linux 14.04', 'A development version')).to.equal(false);\nchai.expect(semver.lt('Version B', 'Version A')).to.equal(false);\nchai.expect(semver.lt('Version A', 'Version A')).to.equal(false);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.lt('2.0.5', null)).to.equal(false);\nchai.expect(semver.lt(null, '1.16.0')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', null)).to.equal(false);\nchai.expect(semver.lt(null, 'Resin OS 1.16.0')).to.equal(true);\nchai.expect(semver.lt('Linux 14.04', null)).to.equal(false);\nchai.expect(semver.lt(null, 'Linux 14.04')).to.equal(true);\nchai.expect(semver.lt(null, null)).to.equal(false);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.lt('2.0.5', undefined)).to.equal(false);\nchai.expect(semver.lt(undefined, '1.16.0')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', undefined)).to.equal(false);\nchai.expect(semver.lt(undefined, 'Resin OS 1.16.0')).to.equal(true);\nchai.expect(semver.lt('Linux 14.04', undefined)).to.equal(false);\nchai.expect(semver.lt(undefined, 'Linux 14.04')).to.equal(true);\nchai.expect(semver.lt(undefined, undefined)).to.equal(false);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.lt('2.0.0+rev6', '2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lt('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lt('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lt('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(true);\nchai.expect(semver.lt('2.0.0+rev3', '2.0.0+rev3')).to.equal(false);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.lt('2.0.0', '2.0.0+dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0', '2.0.0-dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0', '2.0.0.dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(true);\nchai.expect(semver.lt('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(false);\nchai.expect(semver.lt('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(false);\nchai.expect(semver.lt('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.lt('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(false);\nchai.expect(semver.lt('Resin OS 2.0.0.dev', '2.0.0')).to.equal(true);\nchai.expect(semver.lt('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(false);\n```\n\n<a name=\"resin-semver-satisfies\"></a>\n\n<a name=\"satisfies\"></a>\n\n## satisfies(version, range) ⇒ <code>boolean</code>\nReturn true if the parsed version satisfies the range.\nThis method will always return false if the provided version doesn't contain a valid semver string.\n\n**Kind**: global function  \n**Summary**: Check if a version satisfies a range  \n**Returns**: <code>boolean</code> - - True if the parsed version satisfies the range, false otherwise  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version to evaluate |\n| range | <code>string</code> | A semver range string, see the [node-semver](https://github.com/npm/node-semver#ranges) docs for details |\n\n**Example**  \nshould correctly evaluate valid semver values.\n\n```js\nchai.expect(semver.satisfies('2.0.5', '^2.0.0')).to.equal(true);\nchai.expect(semver.satisfies('1.16.0', '^2.0.0')).to.equal(false);\n```\n\nshould correctly evaluate Resin formatted versions.\n\n```js\nchai.expect(semver.satisfies('Resin OS 2.0.2+rev2', '^2.0.0')).to.equal(true);\nchai.expect(semver.satisfies('Resin OS 2.0.2 (prod)', '^2.0.0')).to.equal(true);\nchai.expect(semver.satisfies('Resin OS 1.16.0', '^2.0.0')).to.equal(false);\n```\n\nshould always return false when provided with an invalid semver value.\n\n```js\nchai.expect(semver.satisfies('Linux 14.04', '^2.0.0')).to.equal(false);\nchai.expect(semver.satisfies('A development version', '^2.0.0')).to.equal(false);\nchai.expect(semver.satisfies('Version A', '^2.0.0')).to.equal(false);\nchai.expect(semver.satisfies('Linux 14.04', '*')).to.equal(false);\nchai.expect(semver.satisfies('Linux 14.04', '< 1.0.0')).to.equal(false);\n```\n\nshould correctly evaluate null values.\n\n```js\nchai.expect(semver.satisfies(null, '^2.0.0')).to.equal(false);\n```\n\nshould correctly evaluate undefined values.\n\n```js\nchai.expect(semver.satisfies(undefined, '^2.0.0')).to.equal(false);\n```\n\n<a name=\"resin-semver-maxsatisfying\"></a>\n\n<a name=\"maxSatisfying\"></a>\n\n## maxSatisfying(versions, range) ⇒ <code>string</code> \\| <code>null</code>\nReturn the highest version in the list that satisfies the range, or null if none of them do.\nIf multiple versions are found that have equally high values, the last one in the array is returned.\nNote that only version that contain a valid semver string can satisfy a range.\n\n**Kind**: global function  \n**Summary**: Return the highest version in the list that satisfies the range  \n**Returns**: <code>string</code> \\| <code>null</code> - - The highest matching version string, or null.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versions | <code>Array.&lt;(string\\|null\\|undefined)&gt;</code> | An array of versions to evaluate |\n| range | <code>string</code> | A semver range string, see the [node-semver](https://github.com/npm/node-semver#ranges) docs for details |\n\n**Example**  \nshould return the correct version.\n\n```js\nchai.expect(semver.maxSatisfying(versions_1.versions, '1.1.*')).to.equal('Resin OS 1.1.4');\nchai.expect(semver.maxSatisfying(versions_1.versions, '^2.0.0')).to.equal('Resin OS 2.14.0');\nchai.expect(semver.maxSatisfying(versions_1.versions, '< 1.0.0')).to.equal(null);\n```\n\nshould return the first version found if multiple versions have equally high values.\n\n```js\nchai.expect(semver.maxSatisfying(['1.0.0', 'Resin OS 1.1.4', '1.1.4'], '1.1.*')).to.equal('Resin OS 1.1.4');\n```\n\nshould normalize versions used in range parameter.\n\n```js\nchai.expect(semver.maxSatisfying(versions_1.versions, '2.0.0.rev1')).to.equal('Resin OS 2.0.0+rev11');\nchai.expect(semver.maxSatisfying(versions_1.versions, '^ Resin OS 2.0.0 (prod)')).to.equal('Resin OS 2.14.0');\nchai.expect(semver.maxSatisfying(versions_1.versions, '< Resin OS v1.0.0')).to.equal(null);\nchai.expect(semver.maxSatisfying(versions_1.versions, 'Resin OS v1.1.*')).to.equal('Resin OS 1.1.4');\n```\n\n<a name=\"resin-semver-parse\"></a>\n\n<a name=\"parse\"></a>\n\n## parse(version) ⇒ <code>SemverObject</code> \\| <code>null</code>\nReturns an object representing the semver version. Returns null\nif a valid semver string can't be found.\n\n**Kind**: global function  \n**Summary**: Parse a version into an object  \n**Returns**: <code>SemverObject</code> \\| <code>null</code> - - An object representing the version string, or\nnull if a valid semver string could not be found  \n**Access**: public  \n\n| Param | Type |\n| --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | \n\n**Example**  \nshould correctly parse valid semver values.\n\n```js\nchai.expect(semver.parse('2.0.5')).to.deep.include({\n    raw: '2.0.5',\n    major: 2,\n    minor: 0,\n    patch: 5,\n    version: '2.0.5',\n    prerelease: [],\n    build: [],\n});\n```\n\nshould correctly parse Resin formatted versions.\n\n```js\nchai.expect(semver.parse('Resin OS v2.0.2+rev2')).to.deep.include({\n    raw: 'Resin OS v2.0.2+rev2',\n    major: 2,\n    minor: 0,\n    patch: 2,\n    version: '2.0.2',\n    prerelease: [],\n    build: ['rev2'],\n});\nchai.expect(semver.parse('Resin OS v2.0.2 (prod)')).to.deep.include({\n    raw: 'Resin OS v2.0.2 (prod)',\n    major: 2,\n    minor: 0,\n    patch: 2,\n    version: '2.0.2',\n    prerelease: [],\n    build: ['prod'],\n});\nchai.expect(semver.parse('Resin OS v2.0.2.prod')).to.deep.include({\n    raw: 'Resin OS v2.0.2.prod',\n    major: 2,\n    minor: 0,\n    patch: 2,\n    version: '2.0.2',\n    prerelease: [],\n    build: ['prod'],\n});\nchai.expect(semver.parse('Resin OS 2.0.0-rc5.rev1')).to.deep.include({\n    raw: 'Resin OS 2.0.0-rc5.rev1',\n    major: 2,\n    minor: 0,\n    patch: 0,\n    version: '2.0.0-rc5.rev1',\n    prerelease: ['rc5', 'rev1'],\n    build: [],\n});\nchai.expect(semver.parse('Resin OS 2.3.0+rev1.prod')).to.deep.include({\n    raw: 'Resin OS 2.3.0+rev1.prod',\n    major: 2,\n    minor: 3,\n    patch: 0,\n    version: '2.3.0',\n    prerelease: [],\n    build: ['rev1', 'prod'],\n});\nchai.expect(semver.parse('Resin OS v2.3.0-a.b.c (prod)')).to.deep.include({\n    raw: 'Resin OS v2.3.0-a.b.c (prod)',\n    major: 2,\n    minor: 3,\n    patch: 0,\n    version: '2.3.0-a.b.c',\n    prerelease: ['a', 'b', 'c'],\n    build: ['prod'],\n});\nchai.expect(semver.parse('Resin OS 2.3.0-a.b.c+d.e.f (prod)')).to.deep.include({\n    raw: 'Resin OS 2.3.0-a.b.c+d.e.f (prod)',\n    major: 2,\n    minor: 3,\n    patch: 0,\n    version: '2.3.0-a.b.c',\n    prerelease: ['a', 'b', 'c'],\n    build: ['d', 'e', 'f', 'prod'],\n});\nchai.expect(semver.parse('Resin OS 2.3.0+a.b.c (prod)')).to.deep.include({\n    raw: 'Resin OS 2.3.0+a.b.c (prod)',\n    major: 2,\n    minor: 3,\n    patch: 0,\n    version: '2.3.0',\n    prerelease: [],\n    build: ['a', 'b', 'c', 'prod'],\n});\n```\n\nshould correctly parse invalid semver values.\n\n```js\nchai.expect(semver.parse('Linux 14.04')).to.equal(null);\nchai.expect(semver.parse('A development version')).to.equal(null);\nchai.expect(semver.parse('Version A')).to.equal(null);\n```\n\nshould correctly parse null values.\n\n```js\nchai.expect(semver.parse(null)).to.equal(null);\n```\n\nshould correctly parse undefined values.\n\n```js\nchai.expect(semver.parse(undefined)).to.equal(null);\n```\n\n<a name=\"resin-semver-valid\"></a>\n\n<a name=\"valid\"></a>\n\n## valid(version) ⇒ <code>string</code> \\| <code>null</code>\nReturn the parsed version, or null if it's not valid.\n\n**Kind**: global function  \n**Summary**: Check if a version string is valid  \n**Returns**: <code>string</code> \\| <code>null</code> - - The parsed version string, or\nnull if a valid semver string could not be found  \n**Access**: public  \n\n| Param | Type |\n| --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | \n\n**Example**  \nshould return null for invalid semver values.\n\n```js\nchai.expect(semver.valid(null)).to.equal(null);\nchai.expect(semver.valid(undefined)).to.equal(null);\nchai.expect(semver.valid('')).to.equal(null);\nchai.expect(semver.valid('foobar')).to.equal(null);\nchai.expect(semver.valid('12345')).to.equal(null);\nchai.expect(semver.valid('1.2.3.4.5')).to.equal(null);\n```\n\nshould correctly parse valid values.\n\n```js\nchai.expect(semver.valid('Resin OS 1.0.0-pre')).to.equal('1.0.0-pre');\nchai.expect(semver.valid('Resin OS 1.0.5 (fido)')).to.equal('1.0.5');\nchai.expect(semver.valid('Resin OS 2.0.0-beta.8')).to.equal('2.0.0-beta.8');\nchai.expect(semver.valid('Resin OS 2.0.0-beta10.rev1')).to.equal('2.0.0-beta10.rev1');\nchai.expect(semver.valid('Resin OS 2.0.0+rev3')).to.equal('2.0.0');\nchai.expect(semver.valid('Resin OS 2.0.0.rev1 (prod)')).to.equal('2.0.0');\nchai.expect(semver.valid('Resin OS 2.0.0+rev4 (dev)')).to.equal('2.0.0');\nchai.expect(semver.valid('2.0.6+rev3.dev')).to.equal('2.0.6');\n```\n\n<a name=\"resin-semver-inc\"></a>\n\n<a name=\"inc\"></a>\n\n## inc(version, release) ⇒ <code>string</code> \\| <code>null</code>\nReturn the version incremented by the release type\n(major, premajor, minor, preminor, patch, prepatch, or prerelease), or null\nif it's not valid.\n\n**Kind**: global function  \n**Summary**: Return an incremented version  \n**Returns**: <code>string</code> \\| <code>null</code> - - The incremented version string, or\nnull if a valid semver string could not be found  \n**Access**: public  \n\n| Param | Type |\n| --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | \n| release | <code>string</code> | \n\n**Example**  \nshould return null for invalid semver values.\n\n```js\nchai.expect(semver.inc(null, 'major')).to.equal(null);\nchai.expect(semver.inc(undefined, 'major')).to.equal(null);\nchai.expect(semver.inc('', 'major')).to.equal(null);\nchai.expect(semver.inc('foobar', 'major')).to.equal(null);\nchai.expect(semver.inc('12345', 'major')).to.equal(null);\nchai.expect(semver.inc('1.2.3.4.5', 'major')).to.equal(null);\n```\n\nshould correctly increment valid values by a 'premajor' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'premajor')).to.equal('2.0.0-0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'premajor')).to.equal('2.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'premajor')).to.equal('3.0.0-0');\n```\n\nshould correctly increment valid values by a 'preminor' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'preminor')).to.equal('1.1.0-0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'preminor')).to.equal('1.1.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'preminor')).to.equal('2.1.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'preminor')).to.equal('2.1.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'preminor')).to.equal('2.1.0-0');\nchai.expect(semver.inc('Resin OS 2.1.0.rev1 (prod)', 'preminor')).to.equal('2.2.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'preminor')).to.equal('2.1.0-0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'preminor')).to.equal('2.1.0-0');\n```\n\nshould correctly increment valid values by a 'prepatch' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'prepatch')).to.equal('1.0.1-0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'prepatch')).to.equal('1.0.6-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'prepatch')).to.equal('2.0.7-0');\n```\n\nshould correctly increment valid values by a 'prerelease' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'prerelease')).to.equal('1.0.0-pre.0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'prerelease')).to.equal('1.0.6-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'prerelease')).to.equal('2.0.0-beta.9');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'prerelease')).to.equal('2.0.0-beta10.rev1.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'prerelease')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'prerelease')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'prerelease')).to.equal('2.0.1-0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'prerelease')).to.equal('2.0.7-0');\n```\n\nshould correctly increment valid values by a 'major' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'major')).to.equal('1.0.0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'major')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'major')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'major')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'major')).to.equal('3.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'major')).to.equal('3.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'major')).to.equal('3.0.0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'major')).to.equal('3.0.0');\n```\n\nshould correctly increment valid values by a 'minor' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'minor')).to.equal('1.0.0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'minor')).to.equal('1.1.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'minor')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'minor')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'minor')).to.equal('2.1.0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'minor')).to.equal('2.1.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'minor')).to.equal('2.1.0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'minor')).to.equal('2.1.0');\n```\n\nshould correctly increment valid values by a 'patch' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'patch')).to.equal('1.0.0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'patch')).to.equal('1.0.6');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'patch')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'patch')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'patch')).to.equal('2.0.1');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'patch')).to.equal('2.0.1');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'patch')).to.equal('2.0.1');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'patch')).to.equal('2.0.7');\n```\n\n\n\n\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/resin-io-modules/resin-semver/issues"},"_id":"resin-semver@1.5.0-lte-a6de0135c5deebc3119a65a9eebdf28b90fc5ad0","_npmVersion":"6.1.0","_nodeVersion":"10.4.0","_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"dist":{"integrity":"sha512-6jdMKltoGOWQ1+BFVgIY6yADQqaBI8Oe7pFa4sqjDSUPCJ9XMJnGyQAWyDJDnOd0EKOiv+6xRT9+bqe1pNE9Bg==","shasum":"f86809a96ea8820e945e3c6e60751da01268ec6f","tarball":"https://registry.npmjs.org/resin-semver/-/resin-semver-1.5.0-lte-a6de0135c5deebc3119a65a9eebdf28b90fc5ad0.tgz","fileCount":17,"unpackedSize":140093,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcSgAACRA9TVsSAnZWagAAD5sQAIemlPKbnQP9oU8wd8Zn\nbaiIj/UDCEO+ZYjTPCERlSDdWyARDZZyiOmDiac4g5/3gztJG2f/lX4uRmce\ngTO2iRDmjhY3oTR3N8YdMusnby6MBuLR0OhUrsaSfzWBJIf6AgxywpOwkJu8\nFmm/loS6lNKkTT5XERSan3FpNNufyT7PirgtGTu76YjG53DE5B5eL2VkgZTS\n+a22JGMcpLHIDKm642xDiBdxNDN9uMrxhQ8+7n+4gkSziBpZEabCH8Z24pFt\nk1Kq9SVQdoGAldg0NYtIstRkWTLDNblpCrG89OpzV3egaq22U41E1acZH3m7\nNSreV27F98Qd8tb8Dbe3XLk0CFZHJshIaafo05YACcSg32YP5K4A5TaP6CYx\n7ihPmdcAqPUqZ2gf5MGc4a0RAe6QMdWFGPBO1FooHdmoVuWSZihsr6T7hL4r\n8IfVLfFnuG0ezL8rdRiLcQJHJ9xRkIarc6UdFc18QCw6+HggUtXXp5QP56DS\nV4gegnLl8qkCsxTezpxzGFrDAq+7xac8PiW9ae7yU3u5EP9iXc8Qr1cgT9Lo\n6NuG6BbKKeSaV7AenWCJUPT0m++wA2x9VRPAaNE1f9+E0JfkkqvJLC9oID+N\n7+TzFk1EsHXeO019lWaOETeC9dj6tlPwo9J3fye0uzHjsEMsTW6x1B8YsPCV\nqxre\r\n=/x7K\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCRvTx2ksFQpa1o0CJkqKe4hojpmrtxaBJJ7YbbfEDDjwIgHsK8R9psaD+mK8FB9EongEUGXQ0TK84pWLkltTRiQDc="}]},"maintainers":[{"email":"accounts+npm@balena.io","name":"balena.io"},{"email":"accounts+npm-ci@resin.io","name":"resin-ci"},{"email":"accounts@resin.io","name":"resin.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/resin-semver_1.5.0-lte-a6de0135c5deebc3119a65a9eebdf28b90fc5ad0_1548353535837_0.22442921048768594"},"_hasShrinkwrap":false},"1.5.0":{"name":"resin-semver","version":"1.5.0","description":"Resin.io specific semver utility methods","main":"src/index.js","typings":"src/index.ts","homepage":"https://github.com/resin-io-modules/resin-semver","repository":{"type":"git","url":"git+https://github.com/resin-io-modules/resin-semver.git"},"keywords":["resin","resin.io","semver"],"scripts":{"test":"npm run lint && ./automation/test.js","build":"tsc && npm run docs","lint":"tslint -t stylish -c tslint.json 'src/**/*.ts' 'test/**/*.ts'","docs":"./automation/docs.js","ci":"npm run build && catch-uncommitted && npm test","precommit":"lint-staged","prettify":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\""},"author":{"name":"Lucian Buzzo","email":"lucian@resin.io"},"license":"Apache-2.0","dependencies":{"@types/lodash.memoize":"^4.1.2","@types/semver":"^5.4.0","lodash.memoize":"^4.1.2","semver":"^5.3.0"},"devDependencies":{"@types/chai":"^4.0.1","@types/lodash.sortby":"^4.7.4","@types/mocha":"^2.2.41","catch-uncommitted":"^1.0.0","chai":"^4.1.0","husky":"^0.14.3","jsdoc-to-markdown":"^3.0.0","lint-staged":"^4.0.4","lodash.sortby":"^4.7.0","mocha":"^3.4.2","prettier":"^1.6.1","ts-node":"^3.2.1","tslint":"^5.5.0","typescript":"^2.4.2"},"lint-staged":{"*.ts":["prettier --write","npm run lint","npm run docs","git add"]},"gitHead":"4bc0fdd49e20c68f73c810709ae1fa6cd8c0c2e1","bugs":{"url":"https://github.com/resin-io-modules/resin-semver/issues"},"_id":"resin-semver@1.5.0","_npmVersion":"6.1.0","_nodeVersion":"10.4.0","_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"dist":{"integrity":"sha512-a4i2PSVb9uhbnwzfxF1UfpBNGt6juoBFF/sRyWPShbF9P7Vg6jiGXceHEN9FSda6tszHIblolFIgbc8ASyLuAw==","shasum":"0ce25677f1522dd4558afec2d34a4eb18932aaa8","tarball":"https://registry.npmjs.org/resin-semver/-/resin-semver-1.5.0.tgz","fileCount":17,"unpackedSize":140048,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcSzb9CRA9TVsSAnZWagAAjkcP/iw4WRQFoxBrguR18PjV\nWAuqSCyi4m+0O5HmrE/RUYV/numXsjKya5Xs9vKlEepWkeITj0kG+UiqtnVx\nsqAvR6sm4lWdDXE/NOlmVmV7lvx8TTA8JnpwfP8y7g0BpKr4kH2ITxxUk8Ol\nL9JbRNVwbgGQfUXFKGerJPu2yIJdO99Emm7sjSWl8R6qFwBrAgOlg+T9iE0k\nh050CbfKzqZ941zzayrNmhmTYsM+mALJPei5zputmR3GFO3nJ+9ygs5yoNMX\nLIqyJPbeWN2MFOrggLW504zseJFyhtXcpbyPGxse2U/ox5GOd6zIzLAAjMk0\n4aWFIQH0mGHJHIXo3pUM7oT2VDXlnjJo4LwNs7G/4EC41pPM1oD7jFtZGPgS\nT5PaKqq6D2/ZhP463Jhpok0tjPusVz3xnJ2mWOTsrWIk+IfEFmNGTQx+jocV\n1Dxnx9Ncxwfy4yiFkWtMZKRjgMLWLuTq03hV90bdXT40yRQpJMJ/yq9hrt7U\nkuSZJmasZ/quw2EL1PNOkbC2H2LmaKeLpx3qJR+T/lqUN53o7rO2u8Yk8Zjc\nna61hZz5GrV/jUptadllOmjYURSQkFYabzsuIMU+aKjfgN0z4eLeJSwi14zW\nyMWGTN3h/VdiuEsQWgHa2KFyzFKW4L8po62y5IM1FPWpv06mEOeKGeG/Z4zL\nAPx/\r\n=R+xd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA/XuNUVAnP+TcA7L2pLqb5hpOnstF3sgLLnyBJBtTrIAiEAkcvJbv4/qHlMYVgZ8xrB+obE8Atl2xLWNpzUmRPG4XE="}]},"maintainers":[{"email":"accounts+npm@balena.io","name":"balena.io"},{"email":"accounts+npm-ci@resin.io","name":"resin-ci"},{"email":"accounts@resin.io","name":"resin.io"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/resin-semver_1.5.0_1548433148376_0.7840337085673235"},"_hasShrinkwrap":false,"deprecated":"resin-semver is deprecated, please use balena-semver instead"},"1.5.1-71-lodash-imports-4dc97c051bb3dcb848a49e7bc276a675f142a4c1":{"name":"resin-semver","version":"1.5.1-71-lodash-imports-4dc97c051bb3dcb848a49e7bc276a675f142a4c1","description":"Resin.io specific semver utility methods","main":"src/index.js","typings":"src/index.ts","homepage":"https://github.com/resin-io-modules/resin-semver","repository":{"type":"git","url":"git+https://github.com/resin-io-modules/resin-semver.git"},"keywords":["resin","resin.io","semver"],"scripts":{"test":"npm run lint && ./automation/test.js","build":"tsc && npm run docs","lint":"tslint -t stylish -c tslint.json 'src/**/*.ts' 'test/**/*.ts'","docs":"./automation/docs.js","ci":"npm run build && catch-uncommitted && npm test","precommit":"lint-staged","prettify":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\""},"author":{"name":"Lucian Buzzo","email":"lucian@resin.io"},"license":"Apache-2.0","dependencies":{"@types/lodash":"^4.1.2 <=4.14.121","@types/semver":"^5.4.0","lodash":"^4.1.2","semver":"^5.3.0"},"devDependencies":{"@types/chai":"^4.0.1","@types/mocha":"^2.2.41","catch-uncommitted":"^1.0.0","chai":"^4.1.0","husky":"^0.14.3","jsdoc-to-markdown":"^3.0.0","lint-staged":"^4.0.4","mocha":"^3.4.2","prettier":"^1.6.1","ts-node":"^3.2.1","tslint":"^5.5.0","typescript":"^2.4.2"},"lint-staged":{"*.ts":["prettier --write","npm run lint","npm run docs","git add"]},"gitHead":"4dc97c051bb3dcb848a49e7bc276a675f142a4c1","readme":"resin-semver\n============\n\n> Resin.io specific semver utility methods\n\n[![Build Status](https://travis-ci.org/resin-io-modules/resin-semver.svg?branch=master)](https://travis-ci.org/resin-io-modules/resin-semver)\n\nRole\n----\n\nThe intention of this module is to provide a collection of resin specific semver utility methods.\n\n**THIS MODULE IS LOW LEVEL AND IS NOT MEANT TO BE USED BY END USERS DIRECTLY**.\n\nUnless you know what you're doing, use the [Resin SDK](https://github.com/resin-io/resin-sdk) instead.\n\nInstallation\n------------\n\nInstall `resin-semver` by running:\n\n```sh\n$ npm install --save resin-semver\n```\n\nDocumentation\n-------------\n\n## Functions\n\n<dl>\n<dt><a href=\"#compare\">compare(versionA, versionB)</a> ⇒ <code>number</code></dt>\n<dd><p>Accepts string or null values and compares them, returning a number\nindicating sort order. Values are parsed for valid semver strings. Sorts an array\nof versions in ascending order if passed to <code>Array.sort()</code>.</p>\n</dd>\n<dt><a href=\"#rcompare\">rcompare(versionA, versionB)</a> ⇒ <code>number</code></dt>\n<dd><p>The reverse of <code>.compare()</code>. Accepts string or null values and compares\nthem, returning a number indicating sort order. Values are parsed for valid semver\nstrings. Sorts an array of versions in descending order when passed to <code>Array.sort()</code>.</p>\n</dd>\n<dt><a href=\"#major\">major(version)</a> ⇒ <code>number</code> | <code>null</code></dt>\n<dd><p>Returns the major version number in a semver string.\nIf the version is not a valid semver string, or a valid semver string cannot be\nfound, it returns null.</p>\n</dd>\n<dt><a href=\"#prerelease\">prerelease(version)</a> ⇒ <code>Array.&lt;(string|number)&gt;</code> | <code>null</code></dt>\n<dd><p>Returns an array of prerelease components, or null if none exist</p>\n</dd>\n<dt><a href=\"#gte\">gte(versionA, versionB)</a> ⇒ <code>boolean</code></dt>\n<dd><p>Returns true if versionA is greater than or equal to versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.</p>\n</dd>\n<dt><a href=\"#gt\">gt(versionA, versionB)</a> ⇒ <code>boolean</code></dt>\n<dd><p>Returns true if versionA is greater than versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.</p>\n</dd>\n<dt><a href=\"#lte\">lte(versionA, versionB)</a> ⇒ <code>boolean</code></dt>\n<dd><p>Returns true if versionA is less than or equal to versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.</p>\n</dd>\n<dt><a href=\"#lt\">lt(versionA, versionB)</a> ⇒ <code>boolean</code></dt>\n<dd><p>Returns true if versionA is less than versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.</p>\n</dd>\n<dt><a href=\"#satisfies\">satisfies(version, range)</a> ⇒ <code>boolean</code></dt>\n<dd><p>Return true if the parsed version satisfies the range.\nThis method will always return false if the provided version doesn&#39;t contain a valid semver string.</p>\n</dd>\n<dt><a href=\"#maxSatisfying\">maxSatisfying(versions, range)</a> ⇒ <code>string</code> | <code>null</code></dt>\n<dd><p>Return the highest version in the list that satisfies the range, or null if none of them do.\nIf multiple versions are found that have equally high values, the last one in the array is returned.\nNote that only version that contain a valid semver string can satisfy a range.</p>\n</dd>\n<dt><a href=\"#parse\">parse(version)</a> ⇒ <code>SemverObject</code> | <code>null</code></dt>\n<dd><p>Returns an object representing the semver version. Returns null\nif a valid semver string can&#39;t be found.</p>\n</dd>\n<dt><a href=\"#valid\">valid(version)</a> ⇒ <code>string</code> | <code>null</code></dt>\n<dd><p>Return the parsed version, or null if it&#39;s not valid.</p>\n</dd>\n<dt><a href=\"#inc\">inc(version, release)</a> ⇒ <code>string</code> | <code>null</code></dt>\n<dd><p>Return the version incremented by the release type\n(major, premajor, minor, preminor, patch, prepatch, or prerelease), or null\nif it&#39;s not valid.</p>\n</dd>\n</dl>\n\n<a name=\"compare\"></a>\n\n## compare(versionA, versionB) ⇒ <code>number</code>\nAccepts string or null values and compares them, returning a number\nindicating sort order. Values are parsed for valid semver strings. Sorts an array\nof versions in ascending order if passed to `Array.sort()`.\n\n**Kind**: global function  \n**Summary**: Compare order of versions  \n**Returns**: <code>number</code> - Returns `0` if `versionA == versionB`,\nor `1` if `versionA` is greater, or `-1` if `versionB` is greater.\nNull values are sorted before invalid semver values, and invalid semver values\nare sorted before valid semver values\nIf both values are invalid semver values, then the values are compared alphabetically.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The first version to compare |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The second version to compare |\n\n**Example**  \nshould not throw when provided with a version.\n\n```js\nversions_1.versions.forEach(function (version) {\n    chai.expect(function () { return semver.compare(version, version); }).to.not.throw();\n});\n```\n\nshould correctly sort lists of versions.\n\n```js\nchai.expect(sortBy(versions_1.versions.slice(), semver.compare)).to.eql(versions_1.versions);\n```\n\nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.compare('2.0.5', '1.16.0')).to.equal(1);\nchai.expect(semver.compare('2.0.5', '2.0.5')).to.equal(0);\nchai.expect(semver.compare('1.16.0', '2.0.5')).to.equal(-1);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.compare('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(1);\nchai.expect(semver.compare('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(-1);\nchai.expect(semver.compare('1.16.0', 'Resin OS v1.16.0')).to.equal(0);\nchai.expect(semver.compare('Resin OS 1.16.0', '2.0.2')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 1.16.0', '1.16.0')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.2', '1.16.0')).to.equal(1);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.compare('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(1);\nchai.expect(semver.compare('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 1.16.0', 'Resin OS 1.16.0')).to.equal(0);\n```\n\nshould correctly compare Balena formatted versions.\n\n```js\nchai.expect(semver.compare('balenaOS 2.0.5', 'balenaOS 2.0.2+rev2')).to.equal(1);\nchai.expect(semver.compare('balenaOS 1.16.0', 'balenaOS 2.0.2 (prod)')).to.equal(-1);\nchai.expect(semver.compare('balenaOS 1.16.0', 'balenaOS 1.16.0')).to.equal(0);\n```\n\nshould correctly compare Balena formatted versions to Resin formatted versions.\n\n```js\nchai.expect(semver.compare('balenaOS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(1);\nchai.expect(semver.compare('balenaOS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(-1);\nchai.expect(semver.compare('balenaOS 1.16.0', 'Resin OS 1.16.0')).to.equal(0);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.compare('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(-1);\nchai.expect(semver.compare('Linux 14.04', 'A development version')).to.equal(1);\nchai.expect(semver.compare('Version B', 'Version A')).to.equal(1);\nchai.expect(semver.compare('Version A', 'Version A')).to.equal(0);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.compare('2.0.5', null)).to.equal(1);\nchai.expect(semver.compare(null, '1.16.0')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 1.16.0', null)).to.equal(1);\nchai.expect(semver.compare(null, 'Resin OS 1.16.0')).to.equal(-1);\nchai.expect(semver.compare('Linux 14.04', null)).to.equal(1);\nchai.expect(semver.compare(null, 'Linux 14.04')).to.equal(-1);\nchai.expect(semver.compare(null, null)).to.equal(0);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.compare('2.0.5', undefined)).to.equal(1);\nchai.expect(semver.compare(undefined, '1.16.0')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 1.16.0', undefined)).to.equal(1);\nchai.expect(semver.compare(undefined, 'Resin OS 1.16.0')).to.equal(-1);\nchai.expect(semver.compare('Linux 14.04', undefined)).to.equal(1);\nchai.expect(semver.compare(undefined, 'Linux 14.04')).to.equal(-1);\nchai.expect(semver.compare(undefined, undefined)).to.equal(0);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.compare('2.0.0+rev6', '2.0.0+rev3')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(1);\nchai.expect(semver.compare('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(1);\nchai.expect(semver.compare('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(-1);\nchai.expect(semver.compare('2.0.0+rev3', '2.0.0+rev3')).to.equal(0);\nchai.expect(semver.compare('2.0.0+rev1', '2.0.0+rev11')).to.equal(-1);\nchai.expect(semver.compare('2.0.0+rev2', '2.0.0+rev11')).to.equal(-1);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.compare('2.0.0', '2.0.0+dev')).to.equal(1);\nchai.expect(semver.compare('2.0.0', '2.0.0-dev')).to.equal(1);\nchai.expect(semver.compare('2.0.0', '2.0.0.dev')).to.equal(1);\nchai.expect(semver.compare('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(1);\nchai.expect(semver.compare('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(-1);\nchai.expect(semver.compare('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(0);\nchai.expect(semver.compare('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0.dev', '2.0.0')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(0);\n```\n\nshould correctly compare \"(dev)\" and \"(prod)\" versions without revisions.\n\n```js\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0 (dev)')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0 (dev)', 'Resin OS 2.0.0 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0-prod')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0.prod')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0+prod')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0 (dev)', 'Resin OS 2.0.0+prod')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0.dev', 'Resin OS 2.0.0+dev')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0.dev', 'Resin OS 2.0.0 (dev)')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0+dev', 'Resin OS 2.0.0 (dev)')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0.prod', 'Resin OS 2.0.0+prod')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0.prod', 'Resin OS 2.0.0 (prod)')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0+prod', 'Resin OS 2.0.0 (prod)')).to.equal(0);\n```\n\nshould correctly compare \"(dev)\" and \"(prod)\" versions of the same revision.\n\n```js\nchai.expect(semver.compare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3 (dev)')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3 (dev)', 'Resin OS 2.0.0+rev3 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.prod')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3 (dev)', 'Resin OS 2.0.0+rev3+prod')).to.equal(1); // B is invalid\n```\n\n<a name=\"resin-semver-rcompare\"></a>\n\n<a name=\"rcompare\"></a>\n\n## rcompare(versionA, versionB) ⇒ <code>number</code>\nThe reverse of `.compare()`. Accepts string or null values and compares\nthem, returning a number indicating sort order. Values are parsed for valid semver\nstrings. Sorts an array of versions in descending order when passed to `Array.sort()`.\n\n**Kind**: global function  \n**Summary**: Compare order of versions in reverse  \n**Returns**: <code>number</code> - Returns `0` if `versionA == versionB`,\nor `-1` if `versionA` is greater, or `1` if `versionB` is greater.\nValid semver values are sorted before invalid semver values, and invalid semver values are\nsorted before null values.\nIf both values are non-null invalid semver values, then the values are compared alphabetically.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The first version to compare |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The second version to compare |\n\n**Example**  \nshould not throw when provided with a version.\n\n```js\nversions_1.versions.forEach(function (version) {\n    chai.expect(function () { return semver.rcompare(version, version); }).to.not.throw();\n});\n```\n\nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.rcompare('2.0.5', '1.16.0')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.5', '2.0.5')).to.equal(0);\nchai.expect(semver.rcompare('1.16.0', '2.0.5')).to.equal(1);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.rcompare('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(-1);\nchai.expect(semver.rcompare('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(1);\nchai.expect(semver.rcompare('1.16.0', 'Resin OS v1.16.0')).to.equal(0);\nchai.expect(semver.rcompare('Resin OS 1.16.0', '2.0.2')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', '1.16.0')).to.equal(0);\nchai.expect(semver.rcompare('Resin OS 2.0.2', '1.16.0')).to.equal(-1);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.rcompare('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(-1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', 'Resin OS 1.16.0')).to.equal(0);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.rcompare('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(1);\nchai.expect(semver.rcompare('Linux 14.04', 'A development version')).to.equal(-1);\nchai.expect(semver.rcompare('Version B', 'Version A')).to.equal(-1);\nchai.expect(semver.rcompare('Version A', 'Version A')).to.equal(0);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.rcompare('2.0.5', null)).to.equal(-1);\nchai.expect(semver.rcompare(null, '1.16.0')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', null)).to.equal(-1);\nchai.expect(semver.rcompare(null, 'Resin OS 1.16.0')).to.equal(1);\nchai.expect(semver.rcompare('Linux 14.04', null)).to.equal(-1);\nchai.expect(semver.rcompare(null, 'Linux 14.04')).to.equal(1);\nchai.expect(semver.rcompare(null, null)).to.equal(0);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.rcompare('2.0.5', undefined)).to.equal(-1);\nchai.expect(semver.rcompare(undefined, '1.16.0')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', undefined)).to.equal(-1);\nchai.expect(semver.rcompare(undefined, 'Resin OS 1.16.0')).to.equal(1);\nchai.expect(semver.rcompare('Linux 14.04', undefined)).to.equal(-1);\nchai.expect(semver.rcompare(undefined, 'Linux 14.04')).to.equal(1);\nchai.expect(semver.rcompare(undefined, undefined)).to.equal(0);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.rcompare('2.0.0+rev6', '2.0.0+rev3')).to.equal(-1);\nchai.expect(semver.rcompare('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(1);\nchai.expect(semver.rcompare('2.0.0+rev3', '2.0.0+rev3')).to.equal(0);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.rcompare('2.0.0', '2.0.0+dev')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0', '2.0.0-dev')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0', '2.0.0.dev')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(1);\nchai.expect(semver.rcompare('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(0);\nchai.expect(semver.rcompare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(-1);\nchai.expect(semver.rcompare('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(0);\nchai.expect(semver.rcompare('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(-1);\nchai.expect(semver.rcompare('Resin OS 2.0.0.dev', '2.0.0')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(0);\n```\n\n<a name=\"resin-semver-major\"></a>\n\n<a name=\"major\"></a>\n\n## major(version) ⇒ <code>number</code> \\| <code>null</code>\nReturns the major version number in a semver string.\nIf the version is not a valid semver string, or a valid semver string cannot be\nfound, it returns null.\n\n**Kind**: global function  \n**Summary**: Return the major version number  \n**Returns**: <code>number</code> \\| <code>null</code> - - The major version number  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefine</code> | The version string to evaluate |\n\n**Example**  \nshould correctly match valid semver versions.\n\n```js\nchai.expect(semver.major('4.5.1')).to.equal(4);\n```\n\nshould correctly match resinOS prefixed versions.\n\n```js\nchai.expect(semver.major('Resin OS v2.0.5')).to.equal(2);\nchai.expect(semver.major('Resin OS 2.0.2+rev2')).to.equal(2);\nchai.expect(semver.major('Resin OS 2.0.0.rev1 (prod)')).to.equal(2);\nchai.expect(semver.major('Resin OS 2.0.0-rc5.rev1')).to.equal(2);\n```\n\nshould return null when version is `null`.\n\n```js\nchai.expect(semver.major(null)).to.equal(null);\n```\n\nshould return null when version is `undefined`.\n\n```js\nchai.expect(semver.major(undefined)).to.equal(null);\n```\n\nshould return null when the version contains no valid semver value.\n\n```js\nchai.expect(semver.major('My dev version')).to.equal(null);\nchai.expect(semver.major('Linux 14.04')).to.equal(null);\nchai.expect(semver.major('Software version 42.3.20170726.72bbcf8')).to.equal(null);\n```\n\n<a name=\"resin-semver-prerelease\"></a>\n\n<a name=\"prerelease\"></a>\n\n## prerelease(version) ⇒ <code>Array.&lt;(string\\|number)&gt;</code> \\| <code>null</code>\nReturns an array of prerelease components, or null if none exist\n\n**Kind**: global function  \n**Summary**: Return prerelease components  \n**Returns**: <code>Array.&lt;(string\\|number)&gt;</code> \\| <code>null</code> - - An array of prerelease component, or null if none exist  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to evaluate |\n\n**Example**  \nshould return an array of prerelease components when provided a semver string.\n\n```js\nchai.expect(semver.prerelease('1.16.0-alpha.1')).to.eql(['alpha', 1]);\n```\n\nshould return null when provided with a semver string that has no prerelease segment.\n\n```js\nchai.expect(semver.prerelease('1.16.0')).to.eql(null);\n```\n\nshould return an array of prerelease components when provided a resinOS prefixed version.\n\n```js\nchai.expect(semver.prerelease('Resin OS 2.0.0-rc5.rev1')).to.eql(['rc5', 'rev1']);\n```\n\nshould return null when provided a resinOS prefixed version that has no prerelease segment.\n\n```js\nchai.expect(semver.prerelease('Resin OS 2.0.0')).to.equal(null);\n```\n\nshould return null when provided with an invalid version.\n\n```js\nchai.expect(semver.prerelease('My dev version')).to.equal(null);\nchai.expect(semver.prerelease('Linux 14.04')).to.equal(null);\nchai.expect(semver.prerelease('Software version 42.3.20170726.72bbcf8')).to.equal(null);\n```\n\nshould return null when provided with a null value.\n\n```js\nchai.expect(semver.prerelease(null)).to.equal(null);\n```\n\nshould return null when provided with an undefined value.\n\n```js\nchai.expect(semver.prerelease(undefined)).to.equal(null);\n```\n\n<a name=\"resin-semver-gte\"></a>\n\n<a name=\"gte\"></a>\n\n## gte(versionA, versionB) ⇒ <code>boolean</code>\nReturns true if versionA is greater than or equal to versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.\n\n**Kind**: global function  \n**Summary**: Check if a version is greater than or equal to another  \n**Returns**: <code>boolean</code> - - true if versionA is greater than or equal to versionB, otherwise false.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare against |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare to versionA |\n\n**Example**  \nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.gte('2.0.5', '1.16.0')).to.equal(true);\nchai.expect(semver.gte('1.16.0', '2.0.5')).to.equal(false);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.gte('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.gte('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.gte('Resin OS 1.16.0', '2.0.2')).to.equal(false);\nchai.expect(semver.gte('Resin OS 1.16.0', '1.16.0')).to.equal(true);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.gte('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(true);\nchai.expect(semver.gte('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(false);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.gte('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.gte('Linux 14.04', 'A development version')).to.equal(true);\nchai.expect(semver.gte('Version B', 'Version A')).to.equal(true);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.gte('2.0.5', null)).to.equal(true);\nchai.expect(semver.gte(null, '1.16.0')).to.equal(false);\nchai.expect(semver.gte('Resin OS 1.16.0', null)).to.equal(true);\nchai.expect(semver.gte(null, 'Resin OS 1.16.0')).to.equal(false);\nchai.expect(semver.gte('Linux 14.04', null)).to.equal(true);\nchai.expect(semver.gte(null, 'Linux 14.04')).to.equal(false);\nchai.expect(semver.gte(null, null)).to.equal(true);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.gte('2.0.5', undefined)).to.equal(true);\nchai.expect(semver.gte(undefined, '1.16.0')).to.equal(false);\nchai.expect(semver.gte('Resin OS 1.16.0', undefined)).to.equal(true);\nchai.expect(semver.gte(undefined, 'Resin OS 1.16.0')).to.equal(false);\nchai.expect(semver.gte('Linux 14.04', undefined)).to.equal(true);\nchai.expect(semver.gte(undefined, 'Linux 14.04')).to.equal(false);\nchai.expect(semver.gte(undefined, undefined)).to.equal(true);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.gte('2.0.0+rev6', '2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gte('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gte('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gte('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(false);\nchai.expect(semver.gte('2.0.0+rev3', '2.0.0+rev3')).to.equal(true);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.gte('2.0.0', '2.0.0+dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0', '2.0.0-dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0', '2.0.0.dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(false);\nchai.expect(semver.gte('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(true);\nchai.expect(semver.gte('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(true);\nchai.expect(semver.gte('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.gte('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(true);\nchai.expect(semver.gte('Resin OS 2.0.0.dev', '2.0.0')).to.equal(false);\nchai.expect(semver.gte('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(true);\n```\n\n<a name=\"resin-semver-gt\"></a>\n\n<a name=\"gt\"></a>\n\n## gt(versionA, versionB) ⇒ <code>boolean</code>\nReturns true if versionA is greater than versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.\n\n**Kind**: global function  \n**Summary**: Check if a version is greater than another  \n**Returns**: <code>boolean</code> - - true if versionA is greater than versionB, otherwise false.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare against |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare to versionA |\n\n**Example**  \nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.gt('2.0.5', '1.16.0')).to.equal(true);\nchai.expect(semver.gt('1.16.0', '2.0.5')).to.equal(false);\nchai.expect(semver.gt('1.16.0', '1.16.0')).to.equal(false);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.gt('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.gt('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', '2.0.2')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', '1.16.0')).to.equal(false);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.gt('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(true);\nchai.expect(semver.gt('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', 'Resin OS 1.16.0')).to.equal(false);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.gt('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.gt('Linux 14.04', 'A development version')).to.equal(true);\nchai.expect(semver.gt('Version B', 'Version A')).to.equal(true);\nchai.expect(semver.gt('Version A', 'Version A')).to.equal(false);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.gt('2.0.5', null)).to.equal(true);\nchai.expect(semver.gt(null, '1.16.0')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', null)).to.equal(true);\nchai.expect(semver.gt(null, 'Resin OS 1.16.0')).to.equal(false);\nchai.expect(semver.gt('Linux 14.04', null)).to.equal(true);\nchai.expect(semver.gt(null, 'Linux 14.04')).to.equal(false);\nchai.expect(semver.gt(null, null)).to.equal(false);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.gt('2.0.5', undefined)).to.equal(true);\nchai.expect(semver.gt(undefined, '1.16.0')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', undefined)).to.equal(true);\nchai.expect(semver.gt(undefined, 'Resin OS 1.16.0')).to.equal(false);\nchai.expect(semver.gt('Linux 14.04', undefined)).to.equal(true);\nchai.expect(semver.gt(undefined, 'Linux 14.04')).to.equal(false);\nchai.expect(semver.gt(undefined, undefined)).to.equal(false);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.gt('2.0.0+rev6', '2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gt('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gt('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gt('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(false);\nchai.expect(semver.gt('2.0.0+rev3', '2.0.0+rev3')).to.equal(false);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.gt('2.0.0', '2.0.0+dev')).to.equal(true);\nchai.expect(semver.gt('2.0.0', '2.0.0-dev')).to.equal(true);\nchai.expect(semver.gt('2.0.0', '2.0.0.dev')).to.equal(true);\nchai.expect(semver.gt('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(true);\nchai.expect(semver.gt('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(false);\nchai.expect(semver.gt('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(false);\nchai.expect(semver.gt('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(true);\nchai.expect(semver.gt('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.gt('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(false);\nchai.expect(semver.gt('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(true);\nchai.expect(semver.gt('Resin OS 2.0.0.dev', '2.0.0')).to.equal(false);\nchai.expect(semver.gt('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(false);\n```\n\n<a name=\"resin-semver-lte\"></a>\n\n<a name=\"lte\"></a>\n\n## lte(versionA, versionB) ⇒ <code>boolean</code>\nReturns true if versionA is less than or equal to versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.\n\n**Kind**: global function  \n**Summary**: Check if a version is less than or equal to another  \n**Returns**: <code>boolean</code> - - true if versionA is greater than or equal to versionB, otherwise false.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare against |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare to versionA |\n\n**Example**  \nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.lte('2.0.5', '1.16.0')).to.equal(false);\nchai.expect(semver.lte('1.16.0', '2.0.5')).to.equal(true);\nchai.expect(semver.lte('1.16.0', '1.16.0')).to.equal(true);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.lte('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.lte('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.lte('Resin OS 1.16.0', '2.0.2')).to.equal(true);\nchai.expect(semver.lte('Resin OS 1.16.0', '1.16.0')).to.equal(true);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.lte('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(false);\nchai.expect(semver.lte('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(true);\nchai.expect(semver.lte('Resin OS 1.16.0', 'Resin OS 1.16.0')).to.equal(true);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.lte('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.lte('Linux 14.04', 'A development version')).to.equal(false);\nchai.expect(semver.lte('Version B', 'Version A')).to.equal(false);\nchai.expect(semver.lte('Version A', 'Version A')).to.equal(true);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.lte('2.0.5', null)).to.equal(false);\nchai.expect(semver.lte(null, '1.16.0')).to.equal(true);\nchai.expect(semver.lte('Resin OS 1.16.0', null)).to.equal(false);\nchai.expect(semver.lte(null, 'Resin OS 1.16.0')).to.equal(true);\nchai.expect(semver.lte('Linux 14.04', null)).to.equal(false);\nchai.expect(semver.lte(null, 'Linux 14.04')).to.equal(true);\nchai.expect(semver.lte(null, null)).to.equal(true);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.lte('2.0.5', undefined)).to.equal(false);\nchai.expect(semver.lte(undefined, '1.16.0')).to.equal(true);\nchai.expect(semver.lte('Resin OS 1.16.0', undefined)).to.equal(false);\nchai.expect(semver.lte(undefined, 'Resin OS 1.16.0')).to.equal(true);\nchai.expect(semver.lte('Linux 14.04', undefined)).to.equal(false);\nchai.expect(semver.lte(undefined, 'Linux 14.04')).to.equal(true);\nchai.expect(semver.lte(undefined, undefined)).to.equal(true);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.lte('2.0.0+rev6', '2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lte('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lte('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lte('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(true);\nchai.expect(semver.lte('2.0.0+rev3', '2.0.0+rev3')).to.equal(true);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.lte('2.0.0', '2.0.0+dev')).to.equal(false);\nchai.expect(semver.lte('2.0.0', '2.0.0-dev')).to.equal(false);\nchai.expect(semver.lte('2.0.0', '2.0.0.dev')).to.equal(false);\nchai.expect(semver.lte('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(false);\nchai.expect(semver.lte('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(true);\nchai.expect(semver.lte('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(true);\nchai.expect(semver.lte('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(false);\nchai.expect(semver.lte('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.lte('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(true);\nchai.expect(semver.lte('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(false);\nchai.expect(semver.lte('Resin OS 2.0.0.dev', '2.0.0')).to.equal(true);\nchai.expect(semver.lte('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(true);\n```\n\n<a name=\"resin-semver-lt\"></a>\n\n<a name=\"lt\"></a>\n\n## lt(versionA, versionB) ⇒ <code>boolean</code>\nReturns true if versionA is less than versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.\n\n**Kind**: global function  \n**Summary**: Check if a version is less than another  \n**Returns**: <code>boolean</code> - - true if versionA is less than versionB, otherwise false.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare against |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare to versionA |\n\n**Example**  \nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.lt('2.0.5', '1.16.0')).to.equal(false);\nchai.expect(semver.lt('1.16.0', '2.0.5')).to.equal(true);\nchai.expect(semver.lt('1.16.0', '1.16.0')).to.equal(false);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.lt('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.lt('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', '2.0.2')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', '1.16.0')).to.equal(false);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.lt('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(false);\nchai.expect(semver.lt('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', 'Resin OS 1.16.0')).to.equal(false);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.lt('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.lt('Linux 14.04', 'A development version')).to.equal(false);\nchai.expect(semver.lt('Version B', 'Version A')).to.equal(false);\nchai.expect(semver.lt('Version A', 'Version A')).to.equal(false);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.lt('2.0.5', null)).to.equal(false);\nchai.expect(semver.lt(null, '1.16.0')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', null)).to.equal(false);\nchai.expect(semver.lt(null, 'Resin OS 1.16.0')).to.equal(true);\nchai.expect(semver.lt('Linux 14.04', null)).to.equal(false);\nchai.expect(semver.lt(null, 'Linux 14.04')).to.equal(true);\nchai.expect(semver.lt(null, null)).to.equal(false);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.lt('2.0.5', undefined)).to.equal(false);\nchai.expect(semver.lt(undefined, '1.16.0')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', undefined)).to.equal(false);\nchai.expect(semver.lt(undefined, 'Resin OS 1.16.0')).to.equal(true);\nchai.expect(semver.lt('Linux 14.04', undefined)).to.equal(false);\nchai.expect(semver.lt(undefined, 'Linux 14.04')).to.equal(true);\nchai.expect(semver.lt(undefined, undefined)).to.equal(false);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.lt('2.0.0+rev6', '2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lt('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lt('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lt('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(true);\nchai.expect(semver.lt('2.0.0+rev3', '2.0.0+rev3')).to.equal(false);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.lt('2.0.0', '2.0.0+dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0', '2.0.0-dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0', '2.0.0.dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(true);\nchai.expect(semver.lt('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(false);\nchai.expect(semver.lt('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(false);\nchai.expect(semver.lt('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.lt('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(false);\nchai.expect(semver.lt('Resin OS 2.0.0.dev', '2.0.0')).to.equal(true);\nchai.expect(semver.lt('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(false);\n```\n\n<a name=\"resin-semver-satisfies\"></a>\n\n<a name=\"satisfies\"></a>\n\n## satisfies(version, range) ⇒ <code>boolean</code>\nReturn true if the parsed version satisfies the range.\nThis method will always return false if the provided version doesn't contain a valid semver string.\n\n**Kind**: global function  \n**Summary**: Check if a version satisfies a range  \n**Returns**: <code>boolean</code> - - True if the parsed version satisfies the range, false otherwise  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version to evaluate |\n| range | <code>string</code> | A semver range string, see the [node-semver](https://github.com/npm/node-semver#ranges) docs for details |\n\n**Example**  \nshould correctly evaluate valid semver values.\n\n```js\nchai.expect(semver.satisfies('2.0.5', '^2.0.0')).to.equal(true);\nchai.expect(semver.satisfies('1.16.0', '^2.0.0')).to.equal(false);\n```\n\nshould correctly evaluate Resin formatted versions.\n\n```js\nchai.expect(semver.satisfies('Resin OS 2.0.2+rev2', '^2.0.0')).to.equal(true);\nchai.expect(semver.satisfies('Resin OS 2.0.2 (prod)', '^2.0.0')).to.equal(true);\nchai.expect(semver.satisfies('Resin OS 1.16.0', '^2.0.0')).to.equal(false);\n```\n\nshould always return false when provided with an invalid semver value.\n\n```js\nchai.expect(semver.satisfies('Linux 14.04', '^2.0.0')).to.equal(false);\nchai.expect(semver.satisfies('A development version', '^2.0.0')).to.equal(false);\nchai.expect(semver.satisfies('Version A', '^2.0.0')).to.equal(false);\nchai.expect(semver.satisfies('Linux 14.04', '*')).to.equal(false);\nchai.expect(semver.satisfies('Linux 14.04', '< 1.0.0')).to.equal(false);\n```\n\nshould correctly evaluate null values.\n\n```js\nchai.expect(semver.satisfies(null, '^2.0.0')).to.equal(false);\n```\n\nshould correctly evaluate undefined values.\n\n```js\nchai.expect(semver.satisfies(undefined, '^2.0.0')).to.equal(false);\n```\n\n<a name=\"resin-semver-maxsatisfying\"></a>\n\n<a name=\"maxSatisfying\"></a>\n\n## maxSatisfying(versions, range) ⇒ <code>string</code> \\| <code>null</code>\nReturn the highest version in the list that satisfies the range, or null if none of them do.\nIf multiple versions are found that have equally high values, the last one in the array is returned.\nNote that only version that contain a valid semver string can satisfy a range.\n\n**Kind**: global function  \n**Summary**: Return the highest version in the list that satisfies the range  \n**Returns**: <code>string</code> \\| <code>null</code> - - The highest matching version string, or null.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versions | <code>Array.&lt;(string\\|null\\|undefined)&gt;</code> | An array of versions to evaluate |\n| range | <code>string</code> | A semver range string, see the [node-semver](https://github.com/npm/node-semver#ranges) docs for details |\n\n**Example**  \nshould return the correct version.\n\n```js\nchai.expect(semver.maxSatisfying(versions_1.versions, '1.1.*')).to.equal('Resin OS 1.1.4');\nchai.expect(semver.maxSatisfying(versions_1.versions, '^2.0.0')).to.equal('Resin OS 2.14.0');\nchai.expect(semver.maxSatisfying(versions_1.versions, '< 1.0.0')).to.equal(null);\n```\n\nshould return the first version found if multiple versions have equally high values.\n\n```js\nchai.expect(semver.maxSatisfying(['1.0.0', 'Resin OS 1.1.4', '1.1.4'], '1.1.*')).to.equal('Resin OS 1.1.4');\n```\n\nshould normalize versions used in range parameter.\n\n```js\nchai.expect(semver.maxSatisfying(versions_1.versions, '2.0.0.rev1')).to.equal('Resin OS 2.0.0+rev11');\nchai.expect(semver.maxSatisfying(versions_1.versions, '^ Resin OS 2.0.0 (prod)')).to.equal('Resin OS 2.14.0');\nchai.expect(semver.maxSatisfying(versions_1.versions, '< Resin OS v1.0.0')).to.equal(null);\nchai.expect(semver.maxSatisfying(versions_1.versions, 'Resin OS v1.1.*')).to.equal('Resin OS 1.1.4');\n```\n\n<a name=\"resin-semver-parse\"></a>\n\n<a name=\"parse\"></a>\n\n## parse(version) ⇒ <code>SemverObject</code> \\| <code>null</code>\nReturns an object representing the semver version. Returns null\nif a valid semver string can't be found.\n\n**Kind**: global function  \n**Summary**: Parse a version into an object  \n**Returns**: <code>SemverObject</code> \\| <code>null</code> - - An object representing the version string, or\nnull if a valid semver string could not be found  \n**Access**: public  \n\n| Param | Type |\n| --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | \n\n**Example**  \nshould correctly parse valid semver values.\n\n```js\nchai.expect(semver.parse('2.0.5')).to.deep.include({\n    raw: '2.0.5',\n    major: 2,\n    minor: 0,\n    patch: 5,\n    version: '2.0.5',\n    prerelease: [],\n    build: [],\n});\n```\n\nshould correctly parse Resin formatted versions.\n\n```js\nchai.expect(semver.parse('Resin OS v2.0.2+rev2')).to.deep.include({\n    raw: 'Resin OS v2.0.2+rev2',\n    major: 2,\n    minor: 0,\n    patch: 2,\n    version: '2.0.2',\n    prerelease: [],\n    build: ['rev2'],\n});\nchai.expect(semver.parse('Resin OS v2.0.2 (prod)')).to.deep.include({\n    raw: 'Resin OS v2.0.2 (prod)',\n    major: 2,\n    minor: 0,\n    patch: 2,\n    version: '2.0.2',\n    prerelease: [],\n    build: ['prod'],\n});\nchai.expect(semver.parse('Resin OS v2.0.2.prod')).to.deep.include({\n    raw: 'Resin OS v2.0.2.prod',\n    major: 2,\n    minor: 0,\n    patch: 2,\n    version: '2.0.2',\n    prerelease: [],\n    build: ['prod'],\n});\nchai.expect(semver.parse('Resin OS 2.0.0-rc5.rev1')).to.deep.include({\n    raw: 'Resin OS 2.0.0-rc5.rev1',\n    major: 2,\n    minor: 0,\n    patch: 0,\n    version: '2.0.0-rc5.rev1',\n    prerelease: ['rc5', 'rev1'],\n    build: [],\n});\nchai.expect(semver.parse('Resin OS 2.3.0+rev1.prod')).to.deep.include({\n    raw: 'Resin OS 2.3.0+rev1.prod',\n    major: 2,\n    minor: 3,\n    patch: 0,\n    version: '2.3.0',\n    prerelease: [],\n    build: ['rev1', 'prod'],\n});\nchai.expect(semver.parse('Resin OS v2.3.0-a.b.c (prod)')).to.deep.include({\n    raw: 'Resin OS v2.3.0-a.b.c (prod)',\n    major: 2,\n    minor: 3,\n    patch: 0,\n    version: '2.3.0-a.b.c',\n    prerelease: ['a', 'b', 'c'],\n    build: ['prod'],\n});\nchai.expect(semver.parse('Resin OS 2.3.0-a.b.c+d.e.f (prod)')).to.deep.include({\n    raw: 'Resin OS 2.3.0-a.b.c+d.e.f (prod)',\n    major: 2,\n    minor: 3,\n    patch: 0,\n    version: '2.3.0-a.b.c',\n    prerelease: ['a', 'b', 'c'],\n    build: ['d', 'e', 'f', 'prod'],\n});\nchai.expect(semver.parse('Resin OS 2.3.0+a.b.c (prod)')).to.deep.include({\n    raw: 'Resin OS 2.3.0+a.b.c (prod)',\n    major: 2,\n    minor: 3,\n    patch: 0,\n    version: '2.3.0',\n    prerelease: [],\n    build: ['a', 'b', 'c', 'prod'],\n});\n```\n\nshould correctly parse invalid semver values.\n\n```js\nchai.expect(semver.parse('Linux 14.04')).to.equal(null);\nchai.expect(semver.parse('A development version')).to.equal(null);\nchai.expect(semver.parse('Version A')).to.equal(null);\n```\n\nshould correctly parse null values.\n\n```js\nchai.expect(semver.parse(null)).to.equal(null);\n```\n\nshould correctly parse undefined values.\n\n```js\nchai.expect(semver.parse(undefined)).to.equal(null);\n```\n\n<a name=\"resin-semver-valid\"></a>\n\n<a name=\"valid\"></a>\n\n## valid(version) ⇒ <code>string</code> \\| <code>null</code>\nReturn the parsed version, or null if it's not valid.\n\n**Kind**: global function  \n**Summary**: Check if a version string is valid  \n**Returns**: <code>string</code> \\| <code>null</code> - - The parsed version string, or\nnull if a valid semver string could not be found  \n**Access**: public  \n\n| Param | Type |\n| --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | \n\n**Example**  \nshould return null for invalid semver values.\n\n```js\nchai.expect(semver.valid(null)).to.equal(null);\nchai.expect(semver.valid(undefined)).to.equal(null);\nchai.expect(semver.valid('')).to.equal(null);\nchai.expect(semver.valid('foobar')).to.equal(null);\nchai.expect(semver.valid('12345')).to.equal(null);\nchai.expect(semver.valid('1.2.3.4.5')).to.equal(null);\n```\n\nshould correctly parse valid values.\n\n```js\nchai.expect(semver.valid('Resin OS 1.0.0-pre')).to.equal('1.0.0-pre');\nchai.expect(semver.valid('Resin OS 1.0.5 (fido)')).to.equal('1.0.5');\nchai.expect(semver.valid('Resin OS 2.0.0-beta.8')).to.equal('2.0.0-beta.8');\nchai.expect(semver.valid('Resin OS 2.0.0-beta10.rev1')).to.equal('2.0.0-beta10.rev1');\nchai.expect(semver.valid('Resin OS 2.0.0+rev3')).to.equal('2.0.0');\nchai.expect(semver.valid('Resin OS 2.0.0.rev1 (prod)')).to.equal('2.0.0');\nchai.expect(semver.valid('Resin OS 2.0.0+rev4 (dev)')).to.equal('2.0.0');\nchai.expect(semver.valid('2.0.6+rev3.dev')).to.equal('2.0.6');\n```\n\n<a name=\"resin-semver-inc\"></a>\n\n<a name=\"inc\"></a>\n\n## inc(version, release) ⇒ <code>string</code> \\| <code>null</code>\nReturn the version incremented by the release type\n(major, premajor, minor, preminor, patch, prepatch, or prerelease), or null\nif it's not valid.\n\n**Kind**: global function  \n**Summary**: Return an incremented version  \n**Returns**: <code>string</code> \\| <code>null</code> - - The incremented version string, or\nnull if a valid semver string could not be found  \n**Access**: public  \n\n| Param | Type |\n| --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | \n| release | <code>string</code> | \n\n**Example**  \nshould return null for invalid semver values.\n\n```js\nchai.expect(semver.inc(null, 'major')).to.equal(null);\nchai.expect(semver.inc(undefined, 'major')).to.equal(null);\nchai.expect(semver.inc('', 'major')).to.equal(null);\nchai.expect(semver.inc('foobar', 'major')).to.equal(null);\nchai.expect(semver.inc('12345', 'major')).to.equal(null);\nchai.expect(semver.inc('1.2.3.4.5', 'major')).to.equal(null);\n```\n\nshould correctly increment valid values by a 'premajor' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'premajor')).to.equal('2.0.0-0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'premajor')).to.equal('2.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'premajor')).to.equal('3.0.0-0');\n```\n\nshould correctly increment valid values by a 'preminor' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'preminor')).to.equal('1.1.0-0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'preminor')).to.equal('1.1.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'preminor')).to.equal('2.1.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'preminor')).to.equal('2.1.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'preminor')).to.equal('2.1.0-0');\nchai.expect(semver.inc('Resin OS 2.1.0.rev1 (prod)', 'preminor')).to.equal('2.2.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'preminor')).to.equal('2.1.0-0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'preminor')).to.equal('2.1.0-0');\n```\n\nshould correctly increment valid values by a 'prepatch' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'prepatch')).to.equal('1.0.1-0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'prepatch')).to.equal('1.0.6-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'prepatch')).to.equal('2.0.7-0');\n```\n\nshould correctly increment valid values by a 'prerelease' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'prerelease')).to.equal('1.0.0-pre.0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'prerelease')).to.equal('1.0.6-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'prerelease')).to.equal('2.0.0-beta.9');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'prerelease')).to.equal('2.0.0-beta10.rev1.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'prerelease')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'prerelease')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'prerelease')).to.equal('2.0.1-0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'prerelease')).to.equal('2.0.7-0');\n```\n\nshould correctly increment valid values by a 'major' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'major')).to.equal('1.0.0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'major')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'major')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'major')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'major')).to.equal('3.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'major')).to.equal('3.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'major')).to.equal('3.0.0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'major')).to.equal('3.0.0');\n```\n\nshould correctly increment valid values by a 'minor' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'minor')).to.equal('1.0.0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'minor')).to.equal('1.1.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'minor')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'minor')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'minor')).to.equal('2.1.0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'minor')).to.equal('2.1.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'minor')).to.equal('2.1.0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'minor')).to.equal('2.1.0');\n```\n\nshould correctly increment valid values by a 'patch' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'patch')).to.equal('1.0.0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'patch')).to.equal('1.0.6');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'patch')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'patch')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'patch')).to.equal('2.0.1');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'patch')).to.equal('2.0.1');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'patch')).to.equal('2.0.1');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'patch')).to.equal('2.0.7');\n```\n\n\n\n\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/resin-io-modules/resin-semver/issues"},"_id":"resin-semver@1.5.1-71-lodash-imports-4dc97c051bb3dcb848a49e7bc276a675f142a4c1","_nodeVersion":"10.4.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-J9jHDKQHhguDIKPw1jr7cca6N4Wxl9GR3o8qwRBnH6CxC5/zAt1Nz0wbcfjSpc7caaD1ea481QwZWSIgH/Rgxg==","shasum":"69139cc63b49ac228ff81dd2f2afed91df343025","tarball":"https://registry.npmjs.org/resin-semver/-/resin-semver-1.5.1-71-lodash-imports-4dc97c051bb3dcb848a49e7bc276a675f142a4c1.tgz","fileCount":17,"unpackedSize":140248,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcfmkhCRA9TVsSAnZWagAAfB4P/0QV1kbUN8Yxnt+zqTve\nYDvse5DG9pudwDQXtC80rrGLp61wQKWkY+xqFfweEC2tcBAG25dMsXrb/Evr\n6NglSEExNJrn4wFfuBSVOoheTXPIdkW1S2vQComo3W5LRZWex4mLjfukL61U\n+hFtrsR5HAvrbWGZtpBN4Y6anwrfaXNCdpAiBB27QA2stMdRT+U920dniS+V\nH4c9tjFBRmMVY5+bQcp5mUtvka+nVLlXv5x7Ep0dIrCvkOpP6xLhxb3rOFCU\nJnPHRlXJOigu1KLQJWkbGwT8W2oGFmqE5zxPS+beYLauQCJNTpgvumtCzSC4\nAzgU/5Ezg7AXGasOLARhn7R1P5CSkWubWOxhXK6krQWWl6D9piHiS8G732CQ\nH6Bon8o/lSJs8neU6K/Gr+dOq7Y7fdQ97Qb/chrpKiUY42dtUVGFywZkyKQB\nTM+h+Cj/WOp0STh7jN/936yuRm/opAIl2/AFYLeGp1HNSWCahuBKi6ztwuEF\nOTV8uG31VcS3K3U+6M+JSd6808y131TJfAu2KVD74+unmCXP6SRHUSwa6QqM\nMNhtE2MCApffwd5O2qvYPSRq+dtqAhe2tL7E0/YoJAIigL3gY5PACRobgBFU\nTv09Y97NfSa675cwx1sQLZhLOC9VWEMgBeBMr4QFPwBMA11JTtra39eybUl3\n+jDG\r\n=U5GY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCuUfP3DLGZ7X4nhEvaqGDlWaGl9AL9MU8TfFd6jZ2ZPgIgKVH4aH1rHUUCLwrhzedPPhRVV8zhZ7E1ea/WO/14fek="}]},"maintainers":[{"email":"accounts+npm@balena.io","name":"balena.io"},{"email":"accounts+npm-ci@resin.io","name":"resin-ci"},{"email":"accounts@resin.io","name":"resin.io"}],"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/resin-semver_1.5.1-71-lodash-imports-4dc97c051bb3dcb848a49e7bc276a675f142a4c1_1551788321361_0.5978254774569618"},"_hasShrinkwrap":false},"1.5.1":{"name":"resin-semver","version":"1.5.1","description":"Resin.io specific semver utility methods","main":"src/index.js","typings":"src/index.ts","homepage":"https://github.com/resin-io-modules/resin-semver","repository":{"type":"git","url":"git+https://github.com/resin-io-modules/resin-semver.git"},"keywords":["resin","resin.io","semver"],"scripts":{"test":"npm run lint && ./automation/test.js","build":"tsc && npm run docs","lint":"tslint -t stylish -c tslint.json 'src/**/*.ts' 'test/**/*.ts'","docs":"./automation/docs.js","ci":"npm run build && catch-uncommitted && npm test","precommit":"lint-staged","prettify":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\""},"author":{"name":"Lucian Buzzo","email":"lucian@resin.io"},"license":"Apache-2.0","dependencies":{"@types/lodash":"^4.1.2 <=4.14.121","@types/semver":"^5.4.0","lodash":"^4.1.2","semver":"^5.3.0"},"devDependencies":{"@types/chai":"^4.0.1","@types/mocha":"^2.2.41","catch-uncommitted":"^1.0.0","chai":"^4.1.0","husky":"^0.14.3","jsdoc-to-markdown":"^3.0.0","lint-staged":"^4.0.4","mocha":"^3.4.2","prettier":"^1.6.1","ts-node":"^3.2.1","tslint":"^5.5.0","typescript":"^2.4.2"},"lint-staged":{"*.ts":["prettier --write","npm run lint","npm run docs","git add"]},"gitHead":"f7ee9c9781f58ee10e01401d2a10ef82d9e18a86","bugs":{"url":"https://github.com/resin-io-modules/resin-semver/issues"},"_id":"resin-semver@1.5.1","_nodeVersion":"10.4.0","_npmVersion":"6.7.0","dist":{"integrity":"sha512-sDAdqZ3y3uRV0K22/q4x92lhyakd9mgRjGreyE58ZsSRfDz2ODKQJJ69BWsYa7fn6vNLpdyZdQsaixYphEe7mg==","shasum":"543997bf0f5509e0931b6b16fec2afbf583da6b9","tarball":"https://registry.npmjs.org/resin-semver/-/resin-semver-1.5.1.tgz","fileCount":17,"unpackedSize":140189,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcfnZiCRA9TVsSAnZWagAAv94QAIlKp4e0/QKCjprC1LP4\nMlacVOevvLVhwv8jXrqV2kGWkpmTdqoej0kWNt8igMUy1XpwOWblFKbfzgf8\nDsre3ox0DcAhEQNOdcKUWr7xZkrOaTP42BDGdjCRylJRZUnhVUXuurjHGoCj\nvTd4aVIyMNdFtX4EqX5F2H+qfeLG3epaqk3sy78TTP5svENJ89uQwMxSfcBC\nFmVFmmfFsgCoPqoCjKlF+mpPgzTAyY5eDwUcI2PurDoc+3WQExylwmYz8tEA\n6niAVQGd5t6QwaMTMrFt/o4NSchx5rAA5DXLnzpS+VC0btW7m105wtxNE3AM\nmsGS61zL+3m7R6u6ayvZ/o57KbEbUTOcISFWfUx/QWIXSK3U1jnGepnym3hy\n61zRPrjU0picBSMXxF7vNLtOSsLltf+5/HHV5y+R06ls5B+qXCR3mdnxY6yY\nB8zDiwZq7svft+6uJ6YgIkJezeF74zctgA1FMTaTdeZsvCASMV2EyM8zCGz6\njmAulX/2e9SYQXipWn1/NV1pMN+ClXfDrHbD+Z2FB/lTswMdr57uBkspk6qJ\nKWCi+b+NYOHNC4UwB7sS9rxLvhwRFesQ7yaEqrWZEOY+E0boSJ5PtvmEiFn7\nvhNIfV0b209t+k3RcPbnO0cizOflEOnw+QIQQIfq8ZF/xqORT26Jwg31KRC/\nCKND\r\n=Kg8x\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDG/SGWeFek76j7EqKQE4OSMaYQDdWx33W40uYM5+Z5uwIgfWHG9WIqn7Ctq88u9VqRTnd/156kO8E3wmo9AkatTOw="}]},"maintainers":[{"email":"accounts+npm@balena.io","name":"balena.io"},{"email":"accounts+npm-ci@resin.io","name":"resin-ci"},{"email":"accounts@resin.io","name":"resin.io"}],"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/resin-semver_1.5.1_1551791713897_0.8948879391846623"},"_hasShrinkwrap":false,"deprecated":"resin-semver is deprecated, please use balena-semver instead"},"1.6.0-accept-leading-zeros-9d9e60eab4db423fe62ef2640e9e2ed18205fc4d":{"name":"resin-semver","version":"1.6.0-accept-leading-zeros-9d9e60eab4db423fe62ef2640e9e2ed18205fc4d","description":"Resin.io specific semver utility methods","main":"src/index.js","typings":"src/index.ts","homepage":"https://github.com/resin-io-modules/resin-semver","repository":{"type":"git","url":"git+https://github.com/resin-io-modules/resin-semver.git"},"keywords":["resin","resin.io","semver"],"scripts":{"test":"npm run lint && ./automation/test.js","build":"tsc && npm run docs","lint":"tslint -t stylish -c tslint.json 'src/**/*.ts' 'test/**/*.ts'","docs":"./automation/docs.js","ci":"npm run build && catch-uncommitted && npm test","precommit":"lint-staged","prettify":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\""},"author":{"name":"Lucian Buzzo","email":"lucian@resin.io"},"license":"Apache-2.0","dependencies":{"@types/lodash":"^4.1.2 <=4.14.121","@types/semver":"^5.4.0","lodash":"^4.1.2","semver":"^5.3.0"},"devDependencies":{"@types/chai":"^4.0.1","@types/mocha":"^2.2.41","catch-uncommitted":"^1.0.0","chai":"^4.1.0","husky":"^0.14.3","jsdoc-to-markdown":"^3.0.0","lint-staged":"^4.0.4","mocha":"^3.4.2","prettier":"^1.6.1","ts-node":"^3.2.1","tslint":"^5.5.0","typescript":"^2.4.2"},"lint-staged":{"*.ts":["prettier --write","npm run lint","npm run docs","git add"]},"gitHead":"9d9e60eab4db423fe62ef2640e9e2ed18205fc4d","readme":"resin-semver\n============\n\n> Resin.io specific semver utility methods\n\n[![Build Status](https://travis-ci.org/resin-io-modules/resin-semver.svg?branch=master)](https://travis-ci.org/resin-io-modules/resin-semver)\n\nRole\n----\n\nThe intention of this module is to provide a collection of resin specific semver utility methods.\n\n**THIS MODULE IS LOW LEVEL AND IS NOT MEANT TO BE USED BY END USERS DIRECTLY**.\n\nUnless you know what you're doing, use the [Resin SDK](https://github.com/resin-io/resin-sdk) instead.\n\nInstallation\n------------\n\nInstall `resin-semver` by running:\n\n```sh\n$ npm install --save resin-semver\n```\n\nDocumentation\n-------------\n\n## Functions\n\n<dl>\n<dt><a href=\"#compare\">compare(versionA, versionB)</a> ⇒ <code>number</code></dt>\n<dd><p>Accepts string or null values and compares them, returning a number\nindicating sort order. Values are parsed for valid semver strings. Sorts an array\nof versions in ascending order if passed to <code>Array.sort()</code>.</p>\n</dd>\n<dt><a href=\"#rcompare\">rcompare(versionA, versionB)</a> ⇒ <code>number</code></dt>\n<dd><p>The reverse of <code>.compare()</code>. Accepts string or null values and compares\nthem, returning a number indicating sort order. Values are parsed for valid semver\nstrings. Sorts an array of versions in descending order when passed to <code>Array.sort()</code>.</p>\n</dd>\n<dt><a href=\"#major\">major(version)</a> ⇒ <code>number</code> | <code>null</code></dt>\n<dd><p>Returns the major version number in a semver string.\nIf the version is not a valid semver string, or a valid semver string cannot be\nfound, it returns null.</p>\n</dd>\n<dt><a href=\"#prerelease\">prerelease(version)</a> ⇒ <code>Array.&lt;(string|number)&gt;</code> | <code>null</code></dt>\n<dd><p>Returns an array of prerelease components, or null if none exist</p>\n</dd>\n<dt><a href=\"#gte\">gte(versionA, versionB)</a> ⇒ <code>boolean</code></dt>\n<dd><p>Returns true if versionA is greater than or equal to versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.</p>\n</dd>\n<dt><a href=\"#gt\">gt(versionA, versionB)</a> ⇒ <code>boolean</code></dt>\n<dd><p>Returns true if versionA is greater than versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.</p>\n</dd>\n<dt><a href=\"#lte\">lte(versionA, versionB)</a> ⇒ <code>boolean</code></dt>\n<dd><p>Returns true if versionA is less than or equal to versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.</p>\n</dd>\n<dt><a href=\"#lt\">lt(versionA, versionB)</a> ⇒ <code>boolean</code></dt>\n<dd><p>Returns true if versionA is less than versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.</p>\n</dd>\n<dt><a href=\"#satisfies\">satisfies(version, range)</a> ⇒ <code>boolean</code></dt>\n<dd><p>Return true if the parsed version satisfies the range.\nThis method will always return false if the provided version doesn&#39;t contain a valid semver string.</p>\n</dd>\n<dt><a href=\"#maxSatisfying\">maxSatisfying(versions, range)</a> ⇒ <code>string</code> | <code>null</code></dt>\n<dd><p>Return the highest version in the list that satisfies the range, or null if none of them do.\nIf multiple versions are found that have equally high values, the last one in the array is returned.\nNote that only version that contain a valid semver string can satisfy a range.</p>\n</dd>\n<dt><a href=\"#parse\">parse(version)</a> ⇒ <code>SemverObject</code> | <code>null</code></dt>\n<dd><p>Returns an object representing the semver version. Returns null\nif a valid semver string can&#39;t be found.</p>\n</dd>\n<dt><a href=\"#valid\">valid(version)</a> ⇒ <code>string</code> | <code>null</code></dt>\n<dd><p>Return the parsed version, or null if it&#39;s not valid.</p>\n</dd>\n<dt><a href=\"#inc\">inc(version, release)</a> ⇒ <code>string</code> | <code>null</code></dt>\n<dd><p>Return the version incremented by the release type\n(major, premajor, minor, preminor, patch, prepatch, or prerelease), or null\nif it&#39;s not valid.</p>\n</dd>\n</dl>\n\n<a name=\"compare\"></a>\n\n## compare(versionA, versionB) ⇒ <code>number</code>\nAccepts string or null values and compares them, returning a number\nindicating sort order. Values are parsed for valid semver strings. Sorts an array\nof versions in ascending order if passed to `Array.sort()`.\n\n**Kind**: global function  \n**Summary**: Compare order of versions  \n**Returns**: <code>number</code> - Returns `0` if `versionA == versionB`,\nor `1` if `versionA` is greater, or `-1` if `versionB` is greater.\nNull values are sorted before invalid semver values, and invalid semver values\nare sorted before valid semver values\nIf both values are invalid semver values, then the values are compared alphabetically.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The first version to compare |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The second version to compare |\n\n**Example**  \nshould not throw when provided with a version.\n\n```js\nversions_1.versions.forEach(function (version) {\n    chai.expect(function () { return semver.compare(version, version); }).to.not.throw();\n});\n```\n\nshould correctly sort lists of versions.\n\n```js\nchai.expect(sortBy(versions_1.versions.slice(), semver.compare)).to.eql(versions_1.versions);\n```\n\nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.compare('2.0.5', '1.16.0')).to.equal(1);\nchai.expect(semver.compare('2.0.5', '2.0.5')).to.equal(0);\nchai.expect(semver.compare('1.16.0', '2.0.5')).to.equal(-1);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.compare('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(1);\nchai.expect(semver.compare('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(-1);\nchai.expect(semver.compare('1.16.0', 'Resin OS v1.16.0')).to.equal(0);\nchai.expect(semver.compare('Resin OS 1.16.0', '2.0.2')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 1.16.0', '1.16.0')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.2', '1.16.0')).to.equal(1);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.compare('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(1);\nchai.expect(semver.compare('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 1.16.0', 'Resin OS 1.16.0')).to.equal(0);\n```\n\nshould correctly compare Balena formatted versions.\n\n```js\nchai.expect(semver.compare('balenaOS 2.0.5', 'balenaOS 2.0.2+rev2')).to.equal(1);\nchai.expect(semver.compare('balenaOS 1.16.0', 'balenaOS 2.0.2 (prod)')).to.equal(-1);\nchai.expect(semver.compare('balenaOS 1.16.0', 'balenaOS 1.16.0')).to.equal(0);\n```\n\nshould correctly compare Balena formatted versions to Resin formatted versions.\n\n```js\nchai.expect(semver.compare('balenaOS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(1);\nchai.expect(semver.compare('balenaOS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(-1);\nchai.expect(semver.compare('balenaOS 1.16.0', 'Resin OS 1.16.0')).to.equal(0);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.compare('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(-1);\nchai.expect(semver.compare('Linux 14.04', 'A development version')).to.equal(1);\nchai.expect(semver.compare('Version B', 'Version A')).to.equal(1);\nchai.expect(semver.compare('Version A', 'Version A')).to.equal(0);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.compare('2.0.5', null)).to.equal(1);\nchai.expect(semver.compare(null, '1.16.0')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 1.16.0', null)).to.equal(1);\nchai.expect(semver.compare(null, 'Resin OS 1.16.0')).to.equal(-1);\nchai.expect(semver.compare('Linux 14.04', null)).to.equal(1);\nchai.expect(semver.compare(null, 'Linux 14.04')).to.equal(-1);\nchai.expect(semver.compare(null, null)).to.equal(0);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.compare('2.0.5', undefined)).to.equal(1);\nchai.expect(semver.compare(undefined, '1.16.0')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 1.16.0', undefined)).to.equal(1);\nchai.expect(semver.compare(undefined, 'Resin OS 1.16.0')).to.equal(-1);\nchai.expect(semver.compare('Linux 14.04', undefined)).to.equal(1);\nchai.expect(semver.compare(undefined, 'Linux 14.04')).to.equal(-1);\nchai.expect(semver.compare(undefined, undefined)).to.equal(0);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.compare('2.0.0+rev6', '2.0.0+rev3')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(1);\nchai.expect(semver.compare('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(1);\nchai.expect(semver.compare('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(-1);\nchai.expect(semver.compare('2.0.0+rev3', '2.0.0+rev3')).to.equal(0);\nchai.expect(semver.compare('2.0.0+rev1', '2.0.0+rev11')).to.equal(-1);\nchai.expect(semver.compare('2.0.0+rev2', '2.0.0+rev11')).to.equal(-1);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.compare('2.0.0', '2.0.0+dev')).to.equal(1);\nchai.expect(semver.compare('2.0.0', '2.0.0-dev')).to.equal(1);\nchai.expect(semver.compare('2.0.0', '2.0.0.dev')).to.equal(1);\nchai.expect(semver.compare('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(1);\nchai.expect(semver.compare('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(-1);\nchai.expect(semver.compare('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(0);\nchai.expect(semver.compare('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0.dev', '2.0.0')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(0);\n```\n\nshould correctly compare \"(dev)\" and \"(prod)\" versions without revisions.\n\n```js\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0 (dev)')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0 (dev)', 'Resin OS 2.0.0 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0-prod')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0.prod')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0+prod')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0 (dev)', 'Resin OS 2.0.0+prod')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0.dev', 'Resin OS 2.0.0+dev')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0.dev', 'Resin OS 2.0.0 (dev)')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0+dev', 'Resin OS 2.0.0 (dev)')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0.prod', 'Resin OS 2.0.0+prod')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0.prod', 'Resin OS 2.0.0 (prod)')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0+prod', 'Resin OS 2.0.0 (prod)')).to.equal(0);\n```\n\nshould correctly compare \"(dev)\" and \"(prod)\" versions of the same revision.\n\n```js\nchai.expect(semver.compare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3 (dev)')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3 (dev)', 'Resin OS 2.0.0+rev3 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.prod')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3 (dev)', 'Resin OS 2.0.0+rev3+prod')).to.equal(1); // B is invalid\n```\n\n<a name=\"resin-semver-rcompare\"></a>\n\n<a name=\"rcompare\"></a>\n\n## rcompare(versionA, versionB) ⇒ <code>number</code>\nThe reverse of `.compare()`. Accepts string or null values and compares\nthem, returning a number indicating sort order. Values are parsed for valid semver\nstrings. Sorts an array of versions in descending order when passed to `Array.sort()`.\n\n**Kind**: global function  \n**Summary**: Compare order of versions in reverse  \n**Returns**: <code>number</code> - Returns `0` if `versionA == versionB`,\nor `-1` if `versionA` is greater, or `1` if `versionB` is greater.\nValid semver values are sorted before invalid semver values, and invalid semver values are\nsorted before null values.\nIf both values are non-null invalid semver values, then the values are compared alphabetically.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The first version to compare |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The second version to compare |\n\n**Example**  \nshould not throw when provided with a version.\n\n```js\nversions_1.versions.forEach(function (version) {\n    chai.expect(function () { return semver.rcompare(version, version); }).to.not.throw();\n});\n```\n\nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.rcompare('2.0.5', '1.16.0')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.5', '2.0.5')).to.equal(0);\nchai.expect(semver.rcompare('1.16.0', '2.0.5')).to.equal(1);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.rcompare('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(-1);\nchai.expect(semver.rcompare('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(1);\nchai.expect(semver.rcompare('1.16.0', 'Resin OS v1.16.0')).to.equal(0);\nchai.expect(semver.rcompare('Resin OS 1.16.0', '2.0.2')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', '1.16.0')).to.equal(0);\nchai.expect(semver.rcompare('Resin OS 2.0.2', '1.16.0')).to.equal(-1);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.rcompare('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(-1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', 'Resin OS 1.16.0')).to.equal(0);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.rcompare('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(1);\nchai.expect(semver.rcompare('Linux 14.04', 'A development version')).to.equal(-1);\nchai.expect(semver.rcompare('Version B', 'Version A')).to.equal(-1);\nchai.expect(semver.rcompare('Version A', 'Version A')).to.equal(0);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.rcompare('2.0.5', null)).to.equal(-1);\nchai.expect(semver.rcompare(null, '1.16.0')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', null)).to.equal(-1);\nchai.expect(semver.rcompare(null, 'Resin OS 1.16.0')).to.equal(1);\nchai.expect(semver.rcompare('Linux 14.04', null)).to.equal(-1);\nchai.expect(semver.rcompare(null, 'Linux 14.04')).to.equal(1);\nchai.expect(semver.rcompare(null, null)).to.equal(0);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.rcompare('2.0.5', undefined)).to.equal(-1);\nchai.expect(semver.rcompare(undefined, '1.16.0')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', undefined)).to.equal(-1);\nchai.expect(semver.rcompare(undefined, 'Resin OS 1.16.0')).to.equal(1);\nchai.expect(semver.rcompare('Linux 14.04', undefined)).to.equal(-1);\nchai.expect(semver.rcompare(undefined, 'Linux 14.04')).to.equal(1);\nchai.expect(semver.rcompare(undefined, undefined)).to.equal(0);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.rcompare('2.0.0+rev6', '2.0.0+rev3')).to.equal(-1);\nchai.expect(semver.rcompare('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(1);\nchai.expect(semver.rcompare('2.0.0+rev3', '2.0.0+rev3')).to.equal(0);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.rcompare('2.0.0', '2.0.0+dev')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0', '2.0.0-dev')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0', '2.0.0.dev')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(1);\nchai.expect(semver.rcompare('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(0);\nchai.expect(semver.rcompare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(-1);\nchai.expect(semver.rcompare('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(0);\nchai.expect(semver.rcompare('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(-1);\nchai.expect(semver.rcompare('Resin OS 2.0.0.dev', '2.0.0')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(0);\n```\n\n<a name=\"resin-semver-major\"></a>\n\n<a name=\"major\"></a>\n\n## major(version) ⇒ <code>number</code> \\| <code>null</code>\nReturns the major version number in a semver string.\nIf the version is not a valid semver string, or a valid semver string cannot be\nfound, it returns null.\n\n**Kind**: global function  \n**Summary**: Return the major version number  \n**Returns**: <code>number</code> \\| <code>null</code> - - The major version number  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefine</code> | The version string to evaluate |\n\n**Example**  \nshould correctly match valid semver versions.\n\n```js\nchai.expect(semver.major('4.5.1')).to.equal(4);\n```\n\nshould correctly match resinOS prefixed versions.\n\n```js\nchai.expect(semver.major('Resin OS v2.0.5')).to.equal(2);\nchai.expect(semver.major('Resin OS 2.0.2+rev2')).to.equal(2);\nchai.expect(semver.major('Resin OS 2.0.0.rev1 (prod)')).to.equal(2);\nchai.expect(semver.major('Resin OS 2.0.0-rc5.rev1')).to.equal(2);\n```\n\nshould return null when version is `null`.\n\n```js\nchai.expect(semver.major(null)).to.equal(null);\n```\n\nshould return null when version is `undefined`.\n\n```js\nchai.expect(semver.major(undefined)).to.equal(null);\n```\n\nshould return null when the version contains no valid semver value.\n\n```js\nchai.expect(semver.major('My dev version')).to.equal(null);\nchai.expect(semver.major('Linux 14.04')).to.equal(null);\nchai.expect(semver.major('Software version 42.3.20170726.72bbcf8')).to.equal(null);\n```\n\n<a name=\"resin-semver-prerelease\"></a>\n\n<a name=\"prerelease\"></a>\n\n## prerelease(version) ⇒ <code>Array.&lt;(string\\|number)&gt;</code> \\| <code>null</code>\nReturns an array of prerelease components, or null if none exist\n\n**Kind**: global function  \n**Summary**: Return prerelease components  \n**Returns**: <code>Array.&lt;(string\\|number)&gt;</code> \\| <code>null</code> - - An array of prerelease component, or null if none exist  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to evaluate |\n\n**Example**  \nshould return an array of prerelease components when provided a semver string.\n\n```js\nchai.expect(semver.prerelease('1.16.0-alpha.1')).to.eql(['alpha', 1]);\n```\n\nshould return null when provided with a semver string that has no prerelease segment.\n\n```js\nchai.expect(semver.prerelease('1.16.0')).to.eql(null);\n```\n\nshould return an array of prerelease components when provided a resinOS prefixed version.\n\n```js\nchai.expect(semver.prerelease('Resin OS 2.0.0-rc5.rev1')).to.eql(['rc5', 'rev1']);\n```\n\nshould return null when provided a resinOS prefixed version that has no prerelease segment.\n\n```js\nchai.expect(semver.prerelease('Resin OS 2.0.0')).to.equal(null);\n```\n\nshould return null when provided with an invalid version.\n\n```js\nchai.expect(semver.prerelease('My dev version')).to.equal(null);\nchai.expect(semver.prerelease('Linux 14.04')).to.equal(null);\nchai.expect(semver.prerelease('Software version 42.3.20170726.72bbcf8')).to.equal(null);\n```\n\nshould return null when provided with a null value.\n\n```js\nchai.expect(semver.prerelease(null)).to.equal(null);\n```\n\nshould return null when provided with an undefined value.\n\n```js\nchai.expect(semver.prerelease(undefined)).to.equal(null);\n```\n\n<a name=\"resin-semver-gte\"></a>\n\n<a name=\"gte\"></a>\n\n## gte(versionA, versionB) ⇒ <code>boolean</code>\nReturns true if versionA is greater than or equal to versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.\n\n**Kind**: global function  \n**Summary**: Check if a version is greater than or equal to another  \n**Returns**: <code>boolean</code> - - true if versionA is greater than or equal to versionB, otherwise false.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare against |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare to versionA |\n\n**Example**  \nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.gte('2.0.5', '1.16.0')).to.equal(true);\nchai.expect(semver.gte('1.16.0', '2.0.5')).to.equal(false);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.gte('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.gte('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.gte('Resin OS 1.16.0', '2.0.2')).to.equal(false);\nchai.expect(semver.gte('Resin OS 1.16.0', '1.16.0')).to.equal(true);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.gte('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(true);\nchai.expect(semver.gte('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(false);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.gte('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.gte('Linux 14.04', 'A development version')).to.equal(true);\nchai.expect(semver.gte('Version B', 'Version A')).to.equal(true);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.gte('2.0.5', null)).to.equal(true);\nchai.expect(semver.gte(null, '1.16.0')).to.equal(false);\nchai.expect(semver.gte('Resin OS 1.16.0', null)).to.equal(true);\nchai.expect(semver.gte(null, 'Resin OS 1.16.0')).to.equal(false);\nchai.expect(semver.gte('Linux 14.04', null)).to.equal(true);\nchai.expect(semver.gte(null, 'Linux 14.04')).to.equal(false);\nchai.expect(semver.gte(null, null)).to.equal(true);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.gte('2.0.5', undefined)).to.equal(true);\nchai.expect(semver.gte(undefined, '1.16.0')).to.equal(false);\nchai.expect(semver.gte('Resin OS 1.16.0', undefined)).to.equal(true);\nchai.expect(semver.gte(undefined, 'Resin OS 1.16.0')).to.equal(false);\nchai.expect(semver.gte('Linux 14.04', undefined)).to.equal(true);\nchai.expect(semver.gte(undefined, 'Linux 14.04')).to.equal(false);\nchai.expect(semver.gte(undefined, undefined)).to.equal(true);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.gte('2.0.0+rev6', '2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gte('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gte('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gte('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(false);\nchai.expect(semver.gte('2.0.0+rev3', '2.0.0+rev3')).to.equal(true);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.gte('2.0.0', '2.0.0+dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0', '2.0.0-dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0', '2.0.0.dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(false);\nchai.expect(semver.gte('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(true);\nchai.expect(semver.gte('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(true);\nchai.expect(semver.gte('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.gte('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(true);\nchai.expect(semver.gte('Resin OS 2.0.0.dev', '2.0.0')).to.equal(false);\nchai.expect(semver.gte('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(true);\n```\n\n<a name=\"resin-semver-gt\"></a>\n\n<a name=\"gt\"></a>\n\n## gt(versionA, versionB) ⇒ <code>boolean</code>\nReturns true if versionA is greater than versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.\n\n**Kind**: global function  \n**Summary**: Check if a version is greater than another  \n**Returns**: <code>boolean</code> - - true if versionA is greater than versionB, otherwise false.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare against |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare to versionA |\n\n**Example**  \nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.gt('2.0.5', '1.16.0')).to.equal(true);\nchai.expect(semver.gt('1.16.0', '2.0.5')).to.equal(false);\nchai.expect(semver.gt('1.16.0', '1.16.0')).to.equal(false);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.gt('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.gt('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', '2.0.2')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', '1.16.0')).to.equal(false);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.gt('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(true);\nchai.expect(semver.gt('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', 'Resin OS 1.16.0')).to.equal(false);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.gt('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.gt('Linux 14.04', 'A development version')).to.equal(true);\nchai.expect(semver.gt('Version B', 'Version A')).to.equal(true);\nchai.expect(semver.gt('Version A', 'Version A')).to.equal(false);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.gt('2.0.5', null)).to.equal(true);\nchai.expect(semver.gt(null, '1.16.0')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', null)).to.equal(true);\nchai.expect(semver.gt(null, 'Resin OS 1.16.0')).to.equal(false);\nchai.expect(semver.gt('Linux 14.04', null)).to.equal(true);\nchai.expect(semver.gt(null, 'Linux 14.04')).to.equal(false);\nchai.expect(semver.gt(null, null)).to.equal(false);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.gt('2.0.5', undefined)).to.equal(true);\nchai.expect(semver.gt(undefined, '1.16.0')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', undefined)).to.equal(true);\nchai.expect(semver.gt(undefined, 'Resin OS 1.16.0')).to.equal(false);\nchai.expect(semver.gt('Linux 14.04', undefined)).to.equal(true);\nchai.expect(semver.gt(undefined, 'Linux 14.04')).to.equal(false);\nchai.expect(semver.gt(undefined, undefined)).to.equal(false);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.gt('2.0.0+rev6', '2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gt('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gt('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gt('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(false);\nchai.expect(semver.gt('2.0.0+rev3', '2.0.0+rev3')).to.equal(false);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.gt('2.0.0', '2.0.0+dev')).to.equal(true);\nchai.expect(semver.gt('2.0.0', '2.0.0-dev')).to.equal(true);\nchai.expect(semver.gt('2.0.0', '2.0.0.dev')).to.equal(true);\nchai.expect(semver.gt('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(true);\nchai.expect(semver.gt('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(false);\nchai.expect(semver.gt('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(false);\nchai.expect(semver.gt('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(true);\nchai.expect(semver.gt('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.gt('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(false);\nchai.expect(semver.gt('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(true);\nchai.expect(semver.gt('Resin OS 2.0.0.dev', '2.0.0')).to.equal(false);\nchai.expect(semver.gt('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(false);\n```\n\n<a name=\"resin-semver-lte\"></a>\n\n<a name=\"lte\"></a>\n\n## lte(versionA, versionB) ⇒ <code>boolean</code>\nReturns true if versionA is less than or equal to versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.\n\n**Kind**: global function  \n**Summary**: Check if a version is less than or equal to another  \n**Returns**: <code>boolean</code> - - true if versionA is greater than or equal to versionB, otherwise false.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare against |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare to versionA |\n\n**Example**  \nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.lte('2.0.5', '1.16.0')).to.equal(false);\nchai.expect(semver.lte('1.16.0', '2.0.5')).to.equal(true);\nchai.expect(semver.lte('1.16.0', '1.16.0')).to.equal(true);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.lte('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.lte('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.lte('Resin OS 1.16.0', '2.0.2')).to.equal(true);\nchai.expect(semver.lte('Resin OS 1.16.0', '1.16.0')).to.equal(true);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.lte('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(false);\nchai.expect(semver.lte('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(true);\nchai.expect(semver.lte('Resin OS 1.16.0', 'Resin OS 1.16.0')).to.equal(true);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.lte('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.lte('Linux 14.04', 'A development version')).to.equal(false);\nchai.expect(semver.lte('Version B', 'Version A')).to.equal(false);\nchai.expect(semver.lte('Version A', 'Version A')).to.equal(true);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.lte('2.0.5', null)).to.equal(false);\nchai.expect(semver.lte(null, '1.16.0')).to.equal(true);\nchai.expect(semver.lte('Resin OS 1.16.0', null)).to.equal(false);\nchai.expect(semver.lte(null, 'Resin OS 1.16.0')).to.equal(true);\nchai.expect(semver.lte('Linux 14.04', null)).to.equal(false);\nchai.expect(semver.lte(null, 'Linux 14.04')).to.equal(true);\nchai.expect(semver.lte(null, null)).to.equal(true);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.lte('2.0.5', undefined)).to.equal(false);\nchai.expect(semver.lte(undefined, '1.16.0')).to.equal(true);\nchai.expect(semver.lte('Resin OS 1.16.0', undefined)).to.equal(false);\nchai.expect(semver.lte(undefined, 'Resin OS 1.16.0')).to.equal(true);\nchai.expect(semver.lte('Linux 14.04', undefined)).to.equal(false);\nchai.expect(semver.lte(undefined, 'Linux 14.04')).to.equal(true);\nchai.expect(semver.lte(undefined, undefined)).to.equal(true);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.lte('2.0.0+rev6', '2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lte('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lte('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lte('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(true);\nchai.expect(semver.lte('2.0.0+rev3', '2.0.0+rev3')).to.equal(true);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.lte('2.0.0', '2.0.0+dev')).to.equal(false);\nchai.expect(semver.lte('2.0.0', '2.0.0-dev')).to.equal(false);\nchai.expect(semver.lte('2.0.0', '2.0.0.dev')).to.equal(false);\nchai.expect(semver.lte('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(false);\nchai.expect(semver.lte('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(true);\nchai.expect(semver.lte('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(true);\nchai.expect(semver.lte('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(false);\nchai.expect(semver.lte('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.lte('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(true);\nchai.expect(semver.lte('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(false);\nchai.expect(semver.lte('Resin OS 2.0.0.dev', '2.0.0')).to.equal(true);\nchai.expect(semver.lte('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(true);\n```\n\n<a name=\"resin-semver-lt\"></a>\n\n<a name=\"lt\"></a>\n\n## lt(versionA, versionB) ⇒ <code>boolean</code>\nReturns true if versionA is less than versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.\n\n**Kind**: global function  \n**Summary**: Check if a version is less than another  \n**Returns**: <code>boolean</code> - - true if versionA is less than versionB, otherwise false.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare against |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare to versionA |\n\n**Example**  \nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.lt('2.0.5', '1.16.0')).to.equal(false);\nchai.expect(semver.lt('1.16.0', '2.0.5')).to.equal(true);\nchai.expect(semver.lt('1.16.0', '1.16.0')).to.equal(false);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.lt('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.lt('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', '2.0.2')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', '1.16.0')).to.equal(false);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.lt('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(false);\nchai.expect(semver.lt('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', 'Resin OS 1.16.0')).to.equal(false);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.lt('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.lt('Linux 14.04', 'A development version')).to.equal(false);\nchai.expect(semver.lt('Version B', 'Version A')).to.equal(false);\nchai.expect(semver.lt('Version A', 'Version A')).to.equal(false);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.lt('2.0.5', null)).to.equal(false);\nchai.expect(semver.lt(null, '1.16.0')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', null)).to.equal(false);\nchai.expect(semver.lt(null, 'Resin OS 1.16.0')).to.equal(true);\nchai.expect(semver.lt('Linux 14.04', null)).to.equal(false);\nchai.expect(semver.lt(null, 'Linux 14.04')).to.equal(true);\nchai.expect(semver.lt(null, null)).to.equal(false);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.lt('2.0.5', undefined)).to.equal(false);\nchai.expect(semver.lt(undefined, '1.16.0')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', undefined)).to.equal(false);\nchai.expect(semver.lt(undefined, 'Resin OS 1.16.0')).to.equal(true);\nchai.expect(semver.lt('Linux 14.04', undefined)).to.equal(false);\nchai.expect(semver.lt(undefined, 'Linux 14.04')).to.equal(true);\nchai.expect(semver.lt(undefined, undefined)).to.equal(false);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.lt('2.0.0+rev6', '2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lt('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lt('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lt('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(true);\nchai.expect(semver.lt('2.0.0+rev3', '2.0.0+rev3')).to.equal(false);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.lt('2.0.0', '2.0.0+dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0', '2.0.0-dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0', '2.0.0.dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(true);\nchai.expect(semver.lt('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(false);\nchai.expect(semver.lt('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(false);\nchai.expect(semver.lt('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.lt('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(false);\nchai.expect(semver.lt('Resin OS 2.0.0.dev', '2.0.0')).to.equal(true);\nchai.expect(semver.lt('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(false);\n```\n\n<a name=\"resin-semver-satisfies\"></a>\n\n<a name=\"satisfies\"></a>\n\n## satisfies(version, range) ⇒ <code>boolean</code>\nReturn true if the parsed version satisfies the range.\nThis method will always return false if the provided version doesn't contain a valid semver string.\n\n**Kind**: global function  \n**Summary**: Check if a version satisfies a range  \n**Returns**: <code>boolean</code> - - True if the parsed version satisfies the range, false otherwise  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version to evaluate |\n| range | <code>string</code> | A semver range string, see the [node-semver](https://github.com/npm/node-semver#ranges) docs for details |\n\n**Example**  \nshould correctly evaluate valid semver values.\n\n```js\nchai.expect(semver.satisfies('2.0.5', '^2.0.0')).to.equal(true);\nchai.expect(semver.satisfies('1.16.0', '^2.0.0')).to.equal(false);\n```\n\nshould correctly evaluate Resin formatted versions.\n\n```js\nchai.expect(semver.satisfies('Resin OS 2.0.2+rev2', '^2.0.0')).to.equal(true);\nchai.expect(semver.satisfies('Resin OS 2.0.2 (prod)', '^2.0.0')).to.equal(true);\nchai.expect(semver.satisfies('Resin OS 1.16.0', '^2.0.0')).to.equal(false);\n```\n\nshould always return false when provided with an invalid semver value.\n\n```js\nchai.expect(semver.satisfies('Linux 14.04', '^2.0.0')).to.equal(false);\nchai.expect(semver.satisfies('A development version', '^2.0.0')).to.equal(false);\nchai.expect(semver.satisfies('Version A', '^2.0.0')).to.equal(false);\nchai.expect(semver.satisfies('Linux 14.04', '*')).to.equal(false);\nchai.expect(semver.satisfies('Linux 14.04', '< 1.0.0')).to.equal(false);\n```\n\nshould correctly evaluate null values.\n\n```js\nchai.expect(semver.satisfies(null, '^2.0.0')).to.equal(false);\n```\n\nshould correctly evaluate undefined values.\n\n```js\nchai.expect(semver.satisfies(undefined, '^2.0.0')).to.equal(false);\n```\n\n<a name=\"resin-semver-maxsatisfying\"></a>\n\n<a name=\"maxSatisfying\"></a>\n\n## maxSatisfying(versions, range) ⇒ <code>string</code> \\| <code>null</code>\nReturn the highest version in the list that satisfies the range, or null if none of them do.\nIf multiple versions are found that have equally high values, the last one in the array is returned.\nNote that only version that contain a valid semver string can satisfy a range.\n\n**Kind**: global function  \n**Summary**: Return the highest version in the list that satisfies the range  \n**Returns**: <code>string</code> \\| <code>null</code> - - The highest matching version string, or null.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versions | <code>Array.&lt;(string\\|null\\|undefined)&gt;</code> | An array of versions to evaluate |\n| range | <code>string</code> | A semver range string, see the [node-semver](https://github.com/npm/node-semver#ranges) docs for details |\n\n**Example**  \nshould return the correct version.\n\n```js\nchai.expect(semver.maxSatisfying(versions_1.versions, '1.1.*')).to.equal('Resin OS 1.1.4');\nchai.expect(semver.maxSatisfying(versions_1.versions, '^2.0.0')).to.equal('Resin OS 2.14.0');\nchai.expect(semver.maxSatisfying(versions_1.versions, '< 1.0.0')).to.equal(null);\n```\n\nshould return the first version found if multiple versions have equally high values.\n\n```js\nchai.expect(semver.maxSatisfying(['1.0.0', 'Resin OS 1.1.4', '1.1.4'], '1.1.*')).to.equal('Resin OS 1.1.4');\n```\n\nshould normalize versions used in range parameter.\n\n```js\nchai.expect(semver.maxSatisfying(versions_1.versions, '2.0.0.rev1')).to.equal('Resin OS 2.0.0+rev11');\nchai.expect(semver.maxSatisfying(versions_1.versions, '^ Resin OS 2.0.0 (prod)')).to.equal('Resin OS 2.14.0');\nchai.expect(semver.maxSatisfying(versions_1.versions, '< Resin OS v1.0.0')).to.equal(null);\nchai.expect(semver.maxSatisfying(versions_1.versions, 'Resin OS v1.1.*')).to.equal('Resin OS 1.1.4');\n```\n\n<a name=\"resin-semver-parse\"></a>\n\n<a name=\"parse\"></a>\n\n## parse(version) ⇒ <code>SemverObject</code> \\| <code>null</code>\nReturns an object representing the semver version. Returns null\nif a valid semver string can't be found.\n\n**Kind**: global function  \n**Summary**: Parse a version into an object  \n**Returns**: <code>SemverObject</code> \\| <code>null</code> - - An object representing the version string, or\nnull if a valid semver string could not be found  \n**Access**: public  \n\n| Param | Type |\n| --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | \n\n**Example**  \nshould correctly parse valid semver values.\n\n```js\nchai.expect(semver.parse('2.0.5')).to.deep.include({\n    raw: '2.0.5',\n    major: 2,\n    minor: 0,\n    patch: 5,\n    version: '2.0.5',\n    prerelease: [],\n    build: [],\n});\n```\n\nshould correctly parse Resin formatted versions.\n\n```js\nchai.expect(semver.parse('Resin OS v2.0.2+rev2')).to.deep.include({\n    raw: 'Resin OS v2.0.2+rev2',\n    major: 2,\n    minor: 0,\n    patch: 2,\n    version: '2.0.2',\n    prerelease: [],\n    build: ['rev2'],\n});\nchai.expect(semver.parse('Resin OS v2.0.2 (prod)')).to.deep.include({\n    raw: 'Resin OS v2.0.2 (prod)',\n    major: 2,\n    minor: 0,\n    patch: 2,\n    version: '2.0.2',\n    prerelease: [],\n    build: ['prod'],\n});\nchai.expect(semver.parse('Resin OS v2.0.2.prod')).to.deep.include({\n    raw: 'Resin OS v2.0.2.prod',\n    major: 2,\n    minor: 0,\n    patch: 2,\n    version: '2.0.2',\n    prerelease: [],\n    build: ['prod'],\n});\nchai.expect(semver.parse('Resin OS 2.0.0-rc5.rev1')).to.deep.include({\n    raw: 'Resin OS 2.0.0-rc5.rev1',\n    major: 2,\n    minor: 0,\n    patch: 0,\n    version: '2.0.0-rc5.rev1',\n    prerelease: ['rc5', 'rev1'],\n    build: [],\n});\nchai.expect(semver.parse('Resin OS 2.3.0+rev1.prod')).to.deep.include({\n    raw: 'Resin OS 2.3.0+rev1.prod',\n    major: 2,\n    minor: 3,\n    patch: 0,\n    version: '2.3.0',\n    prerelease: [],\n    build: ['rev1', 'prod'],\n});\nchai.expect(semver.parse('Resin OS v2.3.0-a.b.c (prod)')).to.deep.include({\n    raw: 'Resin OS v2.3.0-a.b.c (prod)',\n    major: 2,\n    minor: 3,\n    patch: 0,\n    version: '2.3.0-a.b.c',\n    prerelease: ['a', 'b', 'c'],\n    build: ['prod'],\n});\nchai.expect(semver.parse('Resin OS 2.3.0-a.b.c+d.e.f (prod)')).to.deep.include({\n    raw: 'Resin OS 2.3.0-a.b.c+d.e.f (prod)',\n    major: 2,\n    minor: 3,\n    patch: 0,\n    version: '2.3.0-a.b.c',\n    prerelease: ['a', 'b', 'c'],\n    build: ['d', 'e', 'f', 'prod'],\n});\nchai.expect(semver.parse('Resin OS 2.3.0+a.b.c (prod)')).to.deep.include({\n    raw: 'Resin OS 2.3.0+a.b.c (prod)',\n    major: 2,\n    minor: 3,\n    patch: 0,\n    version: '2.3.0',\n    prerelease: [],\n    build: ['a', 'b', 'c', 'prod'],\n});\n```\n\nshould correctly parse invalid semver values.\n\n```js\nchai.expect(semver.parse('Linux 14.04')).to.equal(null);\nchai.expect(semver.parse('A development version')).to.equal(null);\nchai.expect(semver.parse('Version A')).to.equal(null);\n```\n\nshould correctly parse null values.\n\n```js\nchai.expect(semver.parse(null)).to.equal(null);\n```\n\nshould correctly parse undefined values.\n\n```js\nchai.expect(semver.parse(undefined)).to.equal(null);\n```\n\n<a name=\"resin-semver-valid\"></a>\n\n<a name=\"valid\"></a>\n\n## valid(version) ⇒ <code>string</code> \\| <code>null</code>\nReturn the parsed version, or null if it's not valid.\n\n**Kind**: global function  \n**Summary**: Check if a version string is valid  \n**Returns**: <code>string</code> \\| <code>null</code> - - The parsed version string, or\nnull if a valid semver string could not be found  \n**Access**: public  \n\n| Param | Type |\n| --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | \n\n**Example**  \nshould return null for invalid semver values.\n\n```js\nchai.expect(semver.valid(null)).to.equal(null);\nchai.expect(semver.valid(undefined)).to.equal(null);\nchai.expect(semver.valid('')).to.equal(null);\nchai.expect(semver.valid('foobar')).to.equal(null);\nchai.expect(semver.valid('12345')).to.equal(null);\nchai.expect(semver.valid('1.2.3.4.5')).to.equal(null);\n```\n\nshould correctly parse valid values.\n\n```js\nchai.expect(semver.valid('Resin OS 1.0.0-pre')).to.equal('1.0.0-pre');\nchai.expect(semver.valid('Resin OS 1.0.5 (fido)')).to.equal('1.0.5');\nchai.expect(semver.valid('Resin OS 2.0.0-beta.8')).to.equal('2.0.0-beta.8');\nchai.expect(semver.valid('Resin OS 2.0.0-beta10.rev1')).to.equal('2.0.0-beta10.rev1');\nchai.expect(semver.valid('Resin OS 2.0.0+rev3')).to.equal('2.0.0');\nchai.expect(semver.valid('Resin OS 2.0.0.rev1 (prod)')).to.equal('2.0.0');\nchai.expect(semver.valid('Resin OS 2.0.0+rev4 (dev)')).to.equal('2.0.0');\nchai.expect(semver.valid('2.0.6+rev3.dev')).to.equal('2.0.6');\n```\n\n<a name=\"resin-semver-inc\"></a>\n\n<a name=\"inc\"></a>\n\n## inc(version, release) ⇒ <code>string</code> \\| <code>null</code>\nReturn the version incremented by the release type\n(major, premajor, minor, preminor, patch, prepatch, or prerelease), or null\nif it's not valid.\n\n**Kind**: global function  \n**Summary**: Return an incremented version  \n**Returns**: <code>string</code> \\| <code>null</code> - - The incremented version string, or\nnull if a valid semver string could not be found  \n**Access**: public  \n\n| Param | Type |\n| --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | \n| release | <code>string</code> | \n\n**Example**  \nshould return null for invalid semver values.\n\n```js\nchai.expect(semver.inc(null, 'major')).to.equal(null);\nchai.expect(semver.inc(undefined, 'major')).to.equal(null);\nchai.expect(semver.inc('', 'major')).to.equal(null);\nchai.expect(semver.inc('foobar', 'major')).to.equal(null);\nchai.expect(semver.inc('12345', 'major')).to.equal(null);\nchai.expect(semver.inc('1.2.3.4.5', 'major')).to.equal(null);\n```\n\nshould correctly increment valid values by a 'premajor' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'premajor')).to.equal('2.0.0-0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'premajor')).to.equal('2.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'premajor')).to.equal('3.0.0-0');\n```\n\nshould correctly increment valid values by a 'preminor' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'preminor')).to.equal('1.1.0-0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'preminor')).to.equal('1.1.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'preminor')).to.equal('2.1.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'preminor')).to.equal('2.1.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'preminor')).to.equal('2.1.0-0');\nchai.expect(semver.inc('Resin OS 2.1.0.rev1 (prod)', 'preminor')).to.equal('2.2.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'preminor')).to.equal('2.1.0-0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'preminor')).to.equal('2.1.0-0');\n```\n\nshould correctly increment valid values by a 'prepatch' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'prepatch')).to.equal('1.0.1-0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'prepatch')).to.equal('1.0.6-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'prepatch')).to.equal('2.0.7-0');\n```\n\nshould correctly increment valid values by a 'prerelease' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'prerelease')).to.equal('1.0.0-pre.0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'prerelease')).to.equal('1.0.6-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'prerelease')).to.equal('2.0.0-beta.9');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'prerelease')).to.equal('2.0.0-beta10.rev1.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'prerelease')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'prerelease')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'prerelease')).to.equal('2.0.1-0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'prerelease')).to.equal('2.0.7-0');\n```\n\nshould correctly increment valid values by a 'major' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'major')).to.equal('1.0.0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'major')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'major')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'major')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'major')).to.equal('3.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'major')).to.equal('3.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'major')).to.equal('3.0.0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'major')).to.equal('3.0.0');\n```\n\nshould correctly increment valid values by a 'minor' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'minor')).to.equal('1.0.0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'minor')).to.equal('1.1.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'minor')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'minor')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'minor')).to.equal('2.1.0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'minor')).to.equal('2.1.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'minor')).to.equal('2.1.0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'minor')).to.equal('2.1.0');\n```\n\nshould correctly increment valid values by a 'patch' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'patch')).to.equal('1.0.0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'patch')).to.equal('1.0.6');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'patch')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'patch')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'patch')).to.equal('2.0.1');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'patch')).to.equal('2.0.1');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'patch')).to.equal('2.0.1');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'patch')).to.equal('2.0.7');\n```\n\n\n\n\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/resin-io-modules/resin-semver/issues"},"_id":"resin-semver@1.6.0-accept-leading-zeros-9d9e60eab4db423fe62ef2640e9e2ed18205fc4d","_nodeVersion":"10.4.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-Fmvd+J+boq18TjOlhxYoogmCHcrPs9ItEI3K9iTai43IT+HnT4DFT3bYVwXlFb0vdrzTizjAerVQkrWcm6FFSQ==","shasum":"61ba508c1d92f270028c1bb7598cc31e14c453ee","tarball":"https://registry.npmjs.org/resin-semver/-/resin-semver-1.6.0-accept-leading-zeros-9d9e60eab4db423fe62ef2640e9e2ed18205fc4d.tgz","fileCount":17,"unpackedSize":141020,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcxrrqCRA9TVsSAnZWagAAWAwP/2PHYmPT/sq3/QdrDhgr\nke9636pJm1etfER5SkF7QPaKN+cgqDmbCJdAJzdEdYFM5nSGb42mBb0u2TUE\nA9wf8Udh6zsgKJCqagDDkMREq+EXIWS8d913AQebDa/Ugcna78oUbgUFNoHq\nTBDwZn/+jTwLuyN9HQUwjiw+uH3u8Qw3yIpAYGuQnUyY+azJcfnZGZgRnchl\nY46lIzx+t2JiCfXCWhRNOCP8RyhdcrMLP8F2uMplWOLQk3iip6QVWWjogKPD\nfB7uLnOX5DvbtIX7hDvf92vLWq0K5bl4kKcBeCN2CK69IHqC2J5H3Nmu8zX8\nvLnjENCPnxIEqajqhQ2BXcU7OljTCK1DRvgbpl2OZRjMs9mxhT5UDluD3Mmv\nolWFO/q5KRENl0xix2Hov3AHtzYLeoPGqZ7NX+yadxK80/w1KxIcNKXsn0BI\n9tCA67IzV2LCjTPI4G9KH0ssn10Xul/mgcqssWEcd5cqSpsNRJ2VpLJxJAHS\n8FwruoT+mT+FAY6wLbKRZfAMyMKfzJcDA1ZR3HECYYuymu8crIQuAMRx7GBw\n/5c90eUcM8f/ieRCVfhiNUcw22FuxoHdJe2f9+A1TRgD0zuLloEpuQ9hvRol\n3Rej/8DMBmuo9j+KB0jew1APpvU2tfgfU6XYrwYueWvLwgzXbn37th/fNIY2\nQfXP\r\n=/blu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCGNzpHz1+l0Mpd0vS+kF4mtL2dqz1rjIVSovejKYE/NgIgdR/0z9eT+WydC+4ivBmCYytXDXgnNNOQ0RZq2g98sYI="}]},"maintainers":[{"email":"accounts+npm@balena.io","name":"balena.io"}],"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/resin-semver_1.6.0-accept-leading-zeros-9d9e60eab4db423fe62ef2640e9e2ed18205fc4d_1556527850121_0.32185736664808684"},"_hasShrinkwrap":false},"1.6.0-accept-leading-zeros-a43104e9f03d78dc92a70def977d40f5cdb49398":{"name":"resin-semver","version":"1.6.0-accept-leading-zeros-a43104e9f03d78dc92a70def977d40f5cdb49398","description":"Resin.io specific semver utility methods","main":"src/index.js","typings":"src/index.ts","homepage":"https://github.com/resin-io-modules/resin-semver","repository":{"type":"git","url":"git+https://github.com/resin-io-modules/resin-semver.git"},"keywords":["resin","resin.io","semver"],"scripts":{"test":"npm run lint && ./automation/test.js","build":"tsc && npm run docs","lint":"tslint -t stylish -c tslint.json 'src/**/*.ts' 'test/**/*.ts'","docs":"./automation/docs.js","ci":"npm run build && catch-uncommitted && npm test","precommit":"lint-staged","prettify":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\""},"author":{"name":"Lucian Buzzo","email":"lucian@resin.io"},"license":"Apache-2.0","dependencies":{"@types/lodash":"^4.1.2 <=4.14.121","@types/semver":"^5.4.0","lodash":"^4.1.2","semver":"^5.3.0"},"devDependencies":{"@types/chai":"^4.0.1","@types/mocha":"^2.2.41","catch-uncommitted":"^1.0.0","chai":"^4.1.0","husky":"^0.14.3","jsdoc-to-markdown":"^3.0.0","lint-staged":"^4.0.4","mocha":"^3.4.2","prettier":"^1.6.1","ts-node":"^3.2.1","tslint":"^5.5.0","typescript":"^2.4.2"},"lint-staged":{"*.ts":["prettier --write","npm run lint","npm run docs","git add"]},"gitHead":"a43104e9f03d78dc92a70def977d40f5cdb49398","readme":"resin-semver\n============\n\n> Resin.io specific semver utility methods\n\n[![Build Status](https://travis-ci.org/resin-io-modules/resin-semver.svg?branch=master)](https://travis-ci.org/resin-io-modules/resin-semver)\n\nRole\n----\n\nThe intention of this module is to provide a collection of resin specific semver utility methods.\n\n**THIS MODULE IS LOW LEVEL AND IS NOT MEANT TO BE USED BY END USERS DIRECTLY**.\n\nUnless you know what you're doing, use the [Resin SDK](https://github.com/resin-io/resin-sdk) instead.\n\nInstallation\n------------\n\nInstall `resin-semver` by running:\n\n```sh\n$ npm install --save resin-semver\n```\n\nDocumentation\n-------------\n\n## Functions\n\n<dl>\n<dt><a href=\"#compare\">compare(versionA, versionB)</a> ⇒ <code>number</code></dt>\n<dd><p>Accepts string or null values and compares them, returning a number\nindicating sort order. Values are parsed for valid semver strings. Sorts an array\nof versions in ascending order if passed to <code>Array.sort()</code>.</p>\n</dd>\n<dt><a href=\"#rcompare\">rcompare(versionA, versionB)</a> ⇒ <code>number</code></dt>\n<dd><p>The reverse of <code>.compare()</code>. Accepts string or null values and compares\nthem, returning a number indicating sort order. Values are parsed for valid semver\nstrings. Sorts an array of versions in descending order when passed to <code>Array.sort()</code>.</p>\n</dd>\n<dt><a href=\"#major\">major(version)</a> ⇒ <code>number</code> | <code>null</code></dt>\n<dd><p>Returns the major version number in a semver string.\nIf the version is not a valid semver string, or a valid semver string cannot be\nfound, it returns null.</p>\n</dd>\n<dt><a href=\"#prerelease\">prerelease(version)</a> ⇒ <code>Array.&lt;(string|number)&gt;</code> | <code>null</code></dt>\n<dd><p>Returns an array of prerelease components, or null if none exist</p>\n</dd>\n<dt><a href=\"#gte\">gte(versionA, versionB)</a> ⇒ <code>boolean</code></dt>\n<dd><p>Returns true if versionA is greater than or equal to versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.</p>\n</dd>\n<dt><a href=\"#gt\">gt(versionA, versionB)</a> ⇒ <code>boolean</code></dt>\n<dd><p>Returns true if versionA is greater than versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.</p>\n</dd>\n<dt><a href=\"#lte\">lte(versionA, versionB)</a> ⇒ <code>boolean</code></dt>\n<dd><p>Returns true if versionA is less than or equal to versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.</p>\n</dd>\n<dt><a href=\"#lt\">lt(versionA, versionB)</a> ⇒ <code>boolean</code></dt>\n<dd><p>Returns true if versionA is less than versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.</p>\n</dd>\n<dt><a href=\"#satisfies\">satisfies(version, range)</a> ⇒ <code>boolean</code></dt>\n<dd><p>Return true if the parsed version satisfies the range.\nThis method will always return false if the provided version doesn&#39;t contain a valid semver string.</p>\n</dd>\n<dt><a href=\"#maxSatisfying\">maxSatisfying(versions, range)</a> ⇒ <code>string</code> | <code>null</code></dt>\n<dd><p>Return the highest version in the list that satisfies the range, or null if none of them do.\nIf multiple versions are found that have equally high values, the last one in the array is returned.\nNote that only version that contain a valid semver string can satisfy a range.</p>\n</dd>\n<dt><a href=\"#parse\">parse(version)</a> ⇒ <code>SemverObject</code> | <code>null</code></dt>\n<dd><p>Returns an object representing the semver version. Returns null\nif a valid semver string can&#39;t be found.</p>\n</dd>\n<dt><a href=\"#valid\">valid(version)</a> ⇒ <code>string</code> | <code>null</code></dt>\n<dd><p>Return the parsed version, or null if it&#39;s not valid.</p>\n</dd>\n<dt><a href=\"#inc\">inc(version, release)</a> ⇒ <code>string</code> | <code>null</code></dt>\n<dd><p>Return the version incremented by the release type\n(major, premajor, minor, preminor, patch, prepatch, or prerelease), or null\nif it&#39;s not valid.</p>\n</dd>\n</dl>\n\n<a name=\"compare\"></a>\n\n## compare(versionA, versionB) ⇒ <code>number</code>\nAccepts string or null values and compares them, returning a number\nindicating sort order. Values are parsed for valid semver strings. Sorts an array\nof versions in ascending order if passed to `Array.sort()`.\n\n**Kind**: global function  \n**Summary**: Compare order of versions  \n**Returns**: <code>number</code> - Returns `0` if `versionA == versionB`,\nor `1` if `versionA` is greater, or `-1` if `versionB` is greater.\nNull values are sorted before invalid semver values, and invalid semver values\nare sorted before valid semver values\nIf both values are invalid semver values, then the values are compared alphabetically.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The first version to compare |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The second version to compare |\n\n**Example**  \nshould not throw when provided with a version.\n\n```js\nversions_1.versions.forEach(function (version) {\n    chai.expect(function () { return semver.compare(version, version); }).to.not.throw();\n});\n```\n\nshould correctly sort lists of versions.\n\n```js\nchai.expect(sortBy(versions_1.versions.slice(), semver.compare)).to.eql(versions_1.versions);\n```\n\nshould correctly compare versions with leading 0s.\n\n```js\nchai.expect(semver.compare('18.04.1', '18.4.1')).to.equal(0);\nchai.expect(semver.compare('18.04.2', '18.4.1')).to.equal(1);\nchai.expect(semver.compare('18.04.1', '18.4.2')).to.equal(-1);\n```\n\nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.compare('2.0.5', '1.16.0')).to.equal(1);\nchai.expect(semver.compare('2.0.5', '2.0.5')).to.equal(0);\nchai.expect(semver.compare('1.16.0', '2.0.5')).to.equal(-1);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.compare('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(1);\nchai.expect(semver.compare('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(-1);\nchai.expect(semver.compare('1.16.0', 'Resin OS v1.16.0')).to.equal(0);\nchai.expect(semver.compare('Resin OS 1.16.0', '2.0.2')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 1.16.0', '1.16.0')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.2', '1.16.0')).to.equal(1);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.compare('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(1);\nchai.expect(semver.compare('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 1.16.0', 'Resin OS 1.16.0')).to.equal(0);\n```\n\nshould correctly compare Balena formatted versions.\n\n```js\nchai.expect(semver.compare('balenaOS 2.0.5', 'balenaOS 2.0.2+rev2')).to.equal(1);\nchai.expect(semver.compare('balenaOS 1.16.0', 'balenaOS 2.0.2 (prod)')).to.equal(-1);\nchai.expect(semver.compare('balenaOS 1.16.0', 'balenaOS 1.16.0')).to.equal(0);\n```\n\nshould correctly compare Balena formatted versions to Resin formatted versions.\n\n```js\nchai.expect(semver.compare('balenaOS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(1);\nchai.expect(semver.compare('balenaOS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(-1);\nchai.expect(semver.compare('balenaOS 1.16.0', 'Resin OS 1.16.0')).to.equal(0);\n```\n\nshould correctly compare Balena formatted versions with leading 0s.\n\n```js\nchai.expect(semver.compare('balenaOS v2.0.2+rev2', 'balenaOS v2.0.2+rev02')).to.equal(0);\nchai.expect(semver.compare('balenaOS v2.0.2+rev01', 'balenaOS v2.0.2+rev02')).to.equal(-1);\nchai.expect(semver.compare('balenaOS v2.0.02+rev2', 'balenaOS v2.0.2+rev1')).to.equal(1);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.compare('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(-1);\nchai.expect(semver.compare('Linux 14.04', 'A development version')).to.equal(1);\nchai.expect(semver.compare('Version B', 'Version A')).to.equal(1);\nchai.expect(semver.compare('Version A', 'Version A')).to.equal(0);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.compare('2.0.5', null)).to.equal(1);\nchai.expect(semver.compare(null, '1.16.0')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 1.16.0', null)).to.equal(1);\nchai.expect(semver.compare(null, 'Resin OS 1.16.0')).to.equal(-1);\nchai.expect(semver.compare('Linux 14.04', null)).to.equal(1);\nchai.expect(semver.compare(null, 'Linux 14.04')).to.equal(-1);\nchai.expect(semver.compare(null, null)).to.equal(0);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.compare('2.0.5', undefined)).to.equal(1);\nchai.expect(semver.compare(undefined, '1.16.0')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 1.16.0', undefined)).to.equal(1);\nchai.expect(semver.compare(undefined, 'Resin OS 1.16.0')).to.equal(-1);\nchai.expect(semver.compare('Linux 14.04', undefined)).to.equal(1);\nchai.expect(semver.compare(undefined, 'Linux 14.04')).to.equal(-1);\nchai.expect(semver.compare(undefined, undefined)).to.equal(0);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.compare('2.0.0+rev6', '2.0.0+rev3')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(1);\nchai.expect(semver.compare('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(1);\nchai.expect(semver.compare('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(-1);\nchai.expect(semver.compare('2.0.0+rev3', '2.0.0+rev3')).to.equal(0);\nchai.expect(semver.compare('2.0.0+rev1', '2.0.0+rev11')).to.equal(-1);\nchai.expect(semver.compare('2.0.0+rev2', '2.0.0+rev11')).to.equal(-1);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.compare('2.0.0', '2.0.0+dev')).to.equal(1);\nchai.expect(semver.compare('2.0.0', '2.0.0-dev')).to.equal(1);\nchai.expect(semver.compare('2.0.0', '2.0.0.dev')).to.equal(1);\nchai.expect(semver.compare('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(1);\nchai.expect(semver.compare('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(-1);\nchai.expect(semver.compare('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(0);\nchai.expect(semver.compare('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0.dev', '2.0.0')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(0);\n```\n\nshould correctly compare \"(dev)\" and \"(prod)\" versions without revisions.\n\n```js\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0 (dev)')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0 (dev)', 'Resin OS 2.0.0 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0-prod')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0.prod')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0+prod')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0 (dev)', 'Resin OS 2.0.0+prod')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0.dev', 'Resin OS 2.0.0+dev')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0.dev', 'Resin OS 2.0.0 (dev)')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0+dev', 'Resin OS 2.0.0 (dev)')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0.prod', 'Resin OS 2.0.0+prod')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0.prod', 'Resin OS 2.0.0 (prod)')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0+prod', 'Resin OS 2.0.0 (prod)')).to.equal(0);\n```\n\nshould correctly compare \"(dev)\" and \"(prod)\" versions of the same revision.\n\n```js\nchai.expect(semver.compare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3 (dev)')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3 (dev)', 'Resin OS 2.0.0+rev3 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.prod')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3 (dev)', 'Resin OS 2.0.0+rev3+prod')).to.equal(1); // B is invalid\n```\n\n<a name=\"resin-semver-rcompare\"></a>\n\n<a name=\"rcompare\"></a>\n\n## rcompare(versionA, versionB) ⇒ <code>number</code>\nThe reverse of `.compare()`. Accepts string or null values and compares\nthem, returning a number indicating sort order. Values are parsed for valid semver\nstrings. Sorts an array of versions in descending order when passed to `Array.sort()`.\n\n**Kind**: global function  \n**Summary**: Compare order of versions in reverse  \n**Returns**: <code>number</code> - Returns `0` if `versionA == versionB`,\nor `-1` if `versionA` is greater, or `1` if `versionB` is greater.\nValid semver values are sorted before invalid semver values, and invalid semver values are\nsorted before null values.\nIf both values are non-null invalid semver values, then the values are compared alphabetically.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The first version to compare |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The second version to compare |\n\n**Example**  \nshould not throw when provided with a version.\n\n```js\nversions_1.versions.forEach(function (version) {\n    chai.expect(function () { return semver.rcompare(version, version); }).to.not.throw();\n});\n```\n\nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.rcompare('2.0.5', '1.16.0')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.5', '2.0.5')).to.equal(0);\nchai.expect(semver.rcompare('1.16.0', '2.0.5')).to.equal(1);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.rcompare('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(-1);\nchai.expect(semver.rcompare('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(1);\nchai.expect(semver.rcompare('1.16.0', 'Resin OS v1.16.0')).to.equal(0);\nchai.expect(semver.rcompare('Resin OS 1.16.0', '2.0.2')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', '1.16.0')).to.equal(0);\nchai.expect(semver.rcompare('Resin OS 2.0.2', '1.16.0')).to.equal(-1);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.rcompare('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(-1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', 'Resin OS 1.16.0')).to.equal(0);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.rcompare('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(1);\nchai.expect(semver.rcompare('Linux 14.04', 'A development version')).to.equal(-1);\nchai.expect(semver.rcompare('Version B', 'Version A')).to.equal(-1);\nchai.expect(semver.rcompare('Version A', 'Version A')).to.equal(0);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.rcompare('2.0.5', null)).to.equal(-1);\nchai.expect(semver.rcompare(null, '1.16.0')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', null)).to.equal(-1);\nchai.expect(semver.rcompare(null, 'Resin OS 1.16.0')).to.equal(1);\nchai.expect(semver.rcompare('Linux 14.04', null)).to.equal(-1);\nchai.expect(semver.rcompare(null, 'Linux 14.04')).to.equal(1);\nchai.expect(semver.rcompare(null, null)).to.equal(0);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.rcompare('2.0.5', undefined)).to.equal(-1);\nchai.expect(semver.rcompare(undefined, '1.16.0')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', undefined)).to.equal(-1);\nchai.expect(semver.rcompare(undefined, 'Resin OS 1.16.0')).to.equal(1);\nchai.expect(semver.rcompare('Linux 14.04', undefined)).to.equal(-1);\nchai.expect(semver.rcompare(undefined, 'Linux 14.04')).to.equal(1);\nchai.expect(semver.rcompare(undefined, undefined)).to.equal(0);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.rcompare('2.0.0+rev6', '2.0.0+rev3')).to.equal(-1);\nchai.expect(semver.rcompare('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(1);\nchai.expect(semver.rcompare('2.0.0+rev3', '2.0.0+rev3')).to.equal(0);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.rcompare('2.0.0', '2.0.0+dev')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0', '2.0.0-dev')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0', '2.0.0.dev')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(1);\nchai.expect(semver.rcompare('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(0);\nchai.expect(semver.rcompare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(-1);\nchai.expect(semver.rcompare('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(0);\nchai.expect(semver.rcompare('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(-1);\nchai.expect(semver.rcompare('Resin OS 2.0.0.dev', '2.0.0')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(0);\n```\n\n<a name=\"resin-semver-major\"></a>\n\n<a name=\"major\"></a>\n\n## major(version) ⇒ <code>number</code> \\| <code>null</code>\nReturns the major version number in a semver string.\nIf the version is not a valid semver string, or a valid semver string cannot be\nfound, it returns null.\n\n**Kind**: global function  \n**Summary**: Return the major version number  \n**Returns**: <code>number</code> \\| <code>null</code> - - The major version number  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefine</code> | The version string to evaluate |\n\n**Example**  \nshould correctly match valid semver versions.\n\n```js\nchai.expect(semver.major('4.5.1')).to.equal(4);\n```\n\nshould correctly match resinOS prefixed versions.\n\n```js\nchai.expect(semver.major('Resin OS v2.0.5')).to.equal(2);\nchai.expect(semver.major('Resin OS 2.0.2+rev2')).to.equal(2);\nchai.expect(semver.major('Resin OS 2.0.0.rev1 (prod)')).to.equal(2);\nchai.expect(semver.major('Resin OS 2.0.0-rc5.rev1')).to.equal(2);\n```\n\nshould return null when version is `null`.\n\n```js\nchai.expect(semver.major(null)).to.equal(null);\n```\n\nshould return null when version is `undefined`.\n\n```js\nchai.expect(semver.major(undefined)).to.equal(null);\n```\n\nshould return null when the version contains no valid semver value.\n\n```js\nchai.expect(semver.major('My dev version')).to.equal(null);\nchai.expect(semver.major('Linux 14.04')).to.equal(null);\nchai.expect(semver.major('Software version 42.3.20170726.72bbcf8')).to.equal(null);\n```\n\n<a name=\"resin-semver-prerelease\"></a>\n\n<a name=\"prerelease\"></a>\n\n## prerelease(version) ⇒ <code>Array.&lt;(string\\|number)&gt;</code> \\| <code>null</code>\nReturns an array of prerelease components, or null if none exist\n\n**Kind**: global function  \n**Summary**: Return prerelease components  \n**Returns**: <code>Array.&lt;(string\\|number)&gt;</code> \\| <code>null</code> - - An array of prerelease component, or null if none exist  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to evaluate |\n\n**Example**  \nshould return an array of prerelease components when provided a semver string.\n\n```js\nchai.expect(semver.prerelease('1.16.0-alpha.1')).to.eql(['alpha', 1]);\n```\n\nshould return null when provided with a semver string that has no prerelease segment.\n\n```js\nchai.expect(semver.prerelease('1.16.0')).to.eql(null);\n```\n\nshould return an array of prerelease components when provided a resinOS prefixed version.\n\n```js\nchai.expect(semver.prerelease('Resin OS 2.0.0-rc5.rev1')).to.eql(['rc5', 'rev1']);\n```\n\nshould return null when provided a resinOS prefixed version that has no prerelease segment.\n\n```js\nchai.expect(semver.prerelease('Resin OS 2.0.0')).to.equal(null);\n```\n\nshould return null when provided with an invalid version.\n\n```js\nchai.expect(semver.prerelease('My dev version')).to.equal(null);\nchai.expect(semver.prerelease('Linux 14.04')).to.equal(null);\nchai.expect(semver.prerelease('Software version 42.3.20170726.72bbcf8')).to.equal(null);\n```\n\nshould return null when provided with a null value.\n\n```js\nchai.expect(semver.prerelease(null)).to.equal(null);\n```\n\nshould return null when provided with an undefined value.\n\n```js\nchai.expect(semver.prerelease(undefined)).to.equal(null);\n```\n\n<a name=\"resin-semver-gte\"></a>\n\n<a name=\"gte\"></a>\n\n## gte(versionA, versionB) ⇒ <code>boolean</code>\nReturns true if versionA is greater than or equal to versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.\n\n**Kind**: global function  \n**Summary**: Check if a version is greater than or equal to another  \n**Returns**: <code>boolean</code> - - true if versionA is greater than or equal to versionB, otherwise false.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare against |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare to versionA |\n\n**Example**  \nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.gte('2.0.5', '1.16.0')).to.equal(true);\nchai.expect(semver.gte('1.16.0', '2.0.5')).to.equal(false);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.gte('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.gte('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.gte('Resin OS 1.16.0', '2.0.2')).to.equal(false);\nchai.expect(semver.gte('Resin OS 1.16.0', '1.16.0')).to.equal(true);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.gte('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(true);\nchai.expect(semver.gte('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(false);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.gte('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.gte('Linux 14.04', 'A development version')).to.equal(true);\nchai.expect(semver.gte('Version B', 'Version A')).to.equal(true);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.gte('2.0.5', null)).to.equal(true);\nchai.expect(semver.gte(null, '1.16.0')).to.equal(false);\nchai.expect(semver.gte('Resin OS 1.16.0', null)).to.equal(true);\nchai.expect(semver.gte(null, 'Resin OS 1.16.0')).to.equal(false);\nchai.expect(semver.gte('Linux 14.04', null)).to.equal(true);\nchai.expect(semver.gte(null, 'Linux 14.04')).to.equal(false);\nchai.expect(semver.gte(null, null)).to.equal(true);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.gte('2.0.5', undefined)).to.equal(true);\nchai.expect(semver.gte(undefined, '1.16.0')).to.equal(false);\nchai.expect(semver.gte('Resin OS 1.16.0', undefined)).to.equal(true);\nchai.expect(semver.gte(undefined, 'Resin OS 1.16.0')).to.equal(false);\nchai.expect(semver.gte('Linux 14.04', undefined)).to.equal(true);\nchai.expect(semver.gte(undefined, 'Linux 14.04')).to.equal(false);\nchai.expect(semver.gte(undefined, undefined)).to.equal(true);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.gte('2.0.0+rev6', '2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gte('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gte('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gte('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(false);\nchai.expect(semver.gte('2.0.0+rev3', '2.0.0+rev3')).to.equal(true);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.gte('2.0.0', '2.0.0+dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0', '2.0.0-dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0', '2.0.0.dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(false);\nchai.expect(semver.gte('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(true);\nchai.expect(semver.gte('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(true);\nchai.expect(semver.gte('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.gte('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(true);\nchai.expect(semver.gte('Resin OS 2.0.0.dev', '2.0.0')).to.equal(false);\nchai.expect(semver.gte('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(true);\n```\n\n<a name=\"resin-semver-gt\"></a>\n\n<a name=\"gt\"></a>\n\n## gt(versionA, versionB) ⇒ <code>boolean</code>\nReturns true if versionA is greater than versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.\n\n**Kind**: global function  \n**Summary**: Check if a version is greater than another  \n**Returns**: <code>boolean</code> - - true if versionA is greater than versionB, otherwise false.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare against |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare to versionA |\n\n**Example**  \nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.gt('2.0.5', '1.16.0')).to.equal(true);\nchai.expect(semver.gt('1.16.0', '2.0.5')).to.equal(false);\nchai.expect(semver.gt('1.16.0', '1.16.0')).to.equal(false);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.gt('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.gt('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', '2.0.2')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', '1.16.0')).to.equal(false);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.gt('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(true);\nchai.expect(semver.gt('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', 'Resin OS 1.16.0')).to.equal(false);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.gt('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.gt('Linux 14.04', 'A development version')).to.equal(true);\nchai.expect(semver.gt('Version B', 'Version A')).to.equal(true);\nchai.expect(semver.gt('Version A', 'Version A')).to.equal(false);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.gt('2.0.5', null)).to.equal(true);\nchai.expect(semver.gt(null, '1.16.0')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', null)).to.equal(true);\nchai.expect(semver.gt(null, 'Resin OS 1.16.0')).to.equal(false);\nchai.expect(semver.gt('Linux 14.04', null)).to.equal(true);\nchai.expect(semver.gt(null, 'Linux 14.04')).to.equal(false);\nchai.expect(semver.gt(null, null)).to.equal(false);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.gt('2.0.5', undefined)).to.equal(true);\nchai.expect(semver.gt(undefined, '1.16.0')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', undefined)).to.equal(true);\nchai.expect(semver.gt(undefined, 'Resin OS 1.16.0')).to.equal(false);\nchai.expect(semver.gt('Linux 14.04', undefined)).to.equal(true);\nchai.expect(semver.gt(undefined, 'Linux 14.04')).to.equal(false);\nchai.expect(semver.gt(undefined, undefined)).to.equal(false);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.gt('2.0.0+rev6', '2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gt('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gt('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gt('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(false);\nchai.expect(semver.gt('2.0.0+rev3', '2.0.0+rev3')).to.equal(false);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.gt('2.0.0', '2.0.0+dev')).to.equal(true);\nchai.expect(semver.gt('2.0.0', '2.0.0-dev')).to.equal(true);\nchai.expect(semver.gt('2.0.0', '2.0.0.dev')).to.equal(true);\nchai.expect(semver.gt('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(true);\nchai.expect(semver.gt('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(false);\nchai.expect(semver.gt('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(false);\nchai.expect(semver.gt('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(true);\nchai.expect(semver.gt('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.gt('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(false);\nchai.expect(semver.gt('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(true);\nchai.expect(semver.gt('Resin OS 2.0.0.dev', '2.0.0')).to.equal(false);\nchai.expect(semver.gt('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(false);\n```\n\n<a name=\"resin-semver-lte\"></a>\n\n<a name=\"lte\"></a>\n\n## lte(versionA, versionB) ⇒ <code>boolean</code>\nReturns true if versionA is less than or equal to versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.\n\n**Kind**: global function  \n**Summary**: Check if a version is less than or equal to another  \n**Returns**: <code>boolean</code> - - true if versionA is greater than or equal to versionB, otherwise false.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare against |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare to versionA |\n\n**Example**  \nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.lte('2.0.5', '1.16.0')).to.equal(false);\nchai.expect(semver.lte('1.16.0', '2.0.5')).to.equal(true);\nchai.expect(semver.lte('1.16.0', '1.16.0')).to.equal(true);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.lte('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.lte('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.lte('Resin OS 1.16.0', '2.0.2')).to.equal(true);\nchai.expect(semver.lte('Resin OS 1.16.0', '1.16.0')).to.equal(true);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.lte('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(false);\nchai.expect(semver.lte('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(true);\nchai.expect(semver.lte('Resin OS 1.16.0', 'Resin OS 1.16.0')).to.equal(true);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.lte('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.lte('Linux 14.04', 'A development version')).to.equal(false);\nchai.expect(semver.lte('Version B', 'Version A')).to.equal(false);\nchai.expect(semver.lte('Version A', 'Version A')).to.equal(true);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.lte('2.0.5', null)).to.equal(false);\nchai.expect(semver.lte(null, '1.16.0')).to.equal(true);\nchai.expect(semver.lte('Resin OS 1.16.0', null)).to.equal(false);\nchai.expect(semver.lte(null, 'Resin OS 1.16.0')).to.equal(true);\nchai.expect(semver.lte('Linux 14.04', null)).to.equal(false);\nchai.expect(semver.lte(null, 'Linux 14.04')).to.equal(true);\nchai.expect(semver.lte(null, null)).to.equal(true);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.lte('2.0.5', undefined)).to.equal(false);\nchai.expect(semver.lte(undefined, '1.16.0')).to.equal(true);\nchai.expect(semver.lte('Resin OS 1.16.0', undefined)).to.equal(false);\nchai.expect(semver.lte(undefined, 'Resin OS 1.16.0')).to.equal(true);\nchai.expect(semver.lte('Linux 14.04', undefined)).to.equal(false);\nchai.expect(semver.lte(undefined, 'Linux 14.04')).to.equal(true);\nchai.expect(semver.lte(undefined, undefined)).to.equal(true);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.lte('2.0.0+rev6', '2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lte('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lte('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lte('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(true);\nchai.expect(semver.lte('2.0.0+rev3', '2.0.0+rev3')).to.equal(true);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.lte('2.0.0', '2.0.0+dev')).to.equal(false);\nchai.expect(semver.lte('2.0.0', '2.0.0-dev')).to.equal(false);\nchai.expect(semver.lte('2.0.0', '2.0.0.dev')).to.equal(false);\nchai.expect(semver.lte('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(false);\nchai.expect(semver.lte('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(true);\nchai.expect(semver.lte('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(true);\nchai.expect(semver.lte('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(false);\nchai.expect(semver.lte('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.lte('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(true);\nchai.expect(semver.lte('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(false);\nchai.expect(semver.lte('Resin OS 2.0.0.dev', '2.0.0')).to.equal(true);\nchai.expect(semver.lte('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(true);\n```\n\n<a name=\"resin-semver-lt\"></a>\n\n<a name=\"lt\"></a>\n\n## lt(versionA, versionB) ⇒ <code>boolean</code>\nReturns true if versionA is less than versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.\n\n**Kind**: global function  \n**Summary**: Check if a version is less than another  \n**Returns**: <code>boolean</code> - - true if versionA is less than versionB, otherwise false.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare against |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare to versionA |\n\n**Example**  \nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.lt('2.0.5', '1.16.0')).to.equal(false);\nchai.expect(semver.lt('1.16.0', '2.0.5')).to.equal(true);\nchai.expect(semver.lt('1.16.0', '1.16.0')).to.equal(false);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.lt('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.lt('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', '2.0.2')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', '1.16.0')).to.equal(false);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.lt('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(false);\nchai.expect(semver.lt('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', 'Resin OS 1.16.0')).to.equal(false);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.lt('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.lt('Linux 14.04', 'A development version')).to.equal(false);\nchai.expect(semver.lt('Version B', 'Version A')).to.equal(false);\nchai.expect(semver.lt('Version A', 'Version A')).to.equal(false);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.lt('2.0.5', null)).to.equal(false);\nchai.expect(semver.lt(null, '1.16.0')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', null)).to.equal(false);\nchai.expect(semver.lt(null, 'Resin OS 1.16.0')).to.equal(true);\nchai.expect(semver.lt('Linux 14.04', null)).to.equal(false);\nchai.expect(semver.lt(null, 'Linux 14.04')).to.equal(true);\nchai.expect(semver.lt(null, null)).to.equal(false);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.lt('2.0.5', undefined)).to.equal(false);\nchai.expect(semver.lt(undefined, '1.16.0')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', undefined)).to.equal(false);\nchai.expect(semver.lt(undefined, 'Resin OS 1.16.0')).to.equal(true);\nchai.expect(semver.lt('Linux 14.04', undefined)).to.equal(false);\nchai.expect(semver.lt(undefined, 'Linux 14.04')).to.equal(true);\nchai.expect(semver.lt(undefined, undefined)).to.equal(false);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.lt('2.0.0+rev6', '2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lt('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lt('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lt('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(true);\nchai.expect(semver.lt('2.0.0+rev3', '2.0.0+rev3')).to.equal(false);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.lt('2.0.0', '2.0.0+dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0', '2.0.0-dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0', '2.0.0.dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(true);\nchai.expect(semver.lt('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(false);\nchai.expect(semver.lt('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(false);\nchai.expect(semver.lt('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.lt('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(false);\nchai.expect(semver.lt('Resin OS 2.0.0.dev', '2.0.0')).to.equal(true);\nchai.expect(semver.lt('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(false);\n```\n\n<a name=\"resin-semver-satisfies\"></a>\n\n<a name=\"satisfies\"></a>\n\n## satisfies(version, range) ⇒ <code>boolean</code>\nReturn true if the parsed version satisfies the range.\nThis method will always return false if the provided version doesn't contain a valid semver string.\n\n**Kind**: global function  \n**Summary**: Check if a version satisfies a range  \n**Returns**: <code>boolean</code> - - True if the parsed version satisfies the range, false otherwise  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version to evaluate |\n| range | <code>string</code> | A semver range string, see the [node-semver](https://github.com/npm/node-semver#ranges) docs for details |\n\n**Example**  \nshould correctly evaluate valid semver values.\n\n```js\nchai.expect(semver.satisfies('2.0.5', '^2.0.0')).to.equal(true);\nchai.expect(semver.satisfies('1.16.0', '^2.0.0')).to.equal(false);\n```\n\nshould correctly evaluate Resin formatted versions.\n\n```js\nchai.expect(semver.satisfies('Resin OS 2.0.2+rev2', '^2.0.0')).to.equal(true);\nchai.expect(semver.satisfies('Resin OS 2.0.2 (prod)', '^2.0.0')).to.equal(true);\nchai.expect(semver.satisfies('Resin OS 1.16.0', '^2.0.0')).to.equal(false);\n```\n\nshould always return false when provided with an invalid semver value.\n\n```js\nchai.expect(semver.satisfies('Linux 14.04', '^2.0.0')).to.equal(false);\nchai.expect(semver.satisfies('A development version', '^2.0.0')).to.equal(false);\nchai.expect(semver.satisfies('Version A', '^2.0.0')).to.equal(false);\nchai.expect(semver.satisfies('Linux 14.04', '*')).to.equal(false);\nchai.expect(semver.satisfies('Linux 14.04', '< 1.0.0')).to.equal(false);\n```\n\nshould correctly evaluate null values.\n\n```js\nchai.expect(semver.satisfies(null, '^2.0.0')).to.equal(false);\n```\n\nshould correctly evaluate undefined values.\n\n```js\nchai.expect(semver.satisfies(undefined, '^2.0.0')).to.equal(false);\n```\n\n<a name=\"resin-semver-maxsatisfying\"></a>\n\n<a name=\"maxSatisfying\"></a>\n\n## maxSatisfying(versions, range) ⇒ <code>string</code> \\| <code>null</code>\nReturn the highest version in the list that satisfies the range, or null if none of them do.\nIf multiple versions are found that have equally high values, the last one in the array is returned.\nNote that only version that contain a valid semver string can satisfy a range.\n\n**Kind**: global function  \n**Summary**: Return the highest version in the list that satisfies the range  \n**Returns**: <code>string</code> \\| <code>null</code> - - The highest matching version string, or null.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versions | <code>Array.&lt;(string\\|null\\|undefined)&gt;</code> | An array of versions to evaluate |\n| range | <code>string</code> | A semver range string, see the [node-semver](https://github.com/npm/node-semver#ranges) docs for details |\n\n**Example**  \nshould return the correct version.\n\n```js\nchai.expect(semver.maxSatisfying(versions_1.versions, '1.1.*')).to.equal('Resin OS 1.1.4');\nchai.expect(semver.maxSatisfying(versions_1.versions, '^2.0.0')).to.equal('Resin OS 2.14.0');\nchai.expect(semver.maxSatisfying(versions_1.versions, '< 1.0.0')).to.equal(null);\n```\n\nshould return the first version found if multiple versions have equally high values.\n\n```js\nchai.expect(semver.maxSatisfying(['1.0.0', 'Resin OS 1.1.4', '1.1.4'], '1.1.*')).to.equal('Resin OS 1.1.4');\n```\n\nshould normalize versions used in range parameter.\n\n```js\nchai.expect(semver.maxSatisfying(versions_1.versions, '2.0.0.rev1')).to.equal('Resin OS 2.0.0+rev11');\nchai.expect(semver.maxSatisfying(versions_1.versions, '^ Resin OS 2.0.0 (prod)')).to.equal('Resin OS 2.14.0');\nchai.expect(semver.maxSatisfying(versions_1.versions, '< Resin OS v1.0.0')).to.equal(null);\nchai.expect(semver.maxSatisfying(versions_1.versions, 'Resin OS v1.1.*')).to.equal('Resin OS 1.1.4');\n```\n\n<a name=\"resin-semver-parse\"></a>\n\n<a name=\"parse\"></a>\n\n## parse(version) ⇒ <code>SemverObject</code> \\| <code>null</code>\nReturns an object representing the semver version. Returns null\nif a valid semver string can't be found.\n\n**Kind**: global function  \n**Summary**: Parse a version into an object  \n**Returns**: <code>SemverObject</code> \\| <code>null</code> - - An object representing the version string, or\nnull if a valid semver string could not be found  \n**Access**: public  \n\n| Param | Type |\n| --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | \n\n**Example**  \nshould correctly parse valid semver values.\n\n```js\nchai.expect(semver.parse('2.0.5')).to.deep.include({\n    raw: '2.0.5',\n    major: 2,\n    minor: 0,\n    patch: 5,\n    version: '2.0.5',\n    prerelease: [],\n    build: [],\n});\n```\n\nshould correctly parse Resin formatted versions.\n\n```js\nchai.expect(semver.parse('Resin OS v2.0.2+rev2')).to.deep.include({\n    raw: 'Resin OS v2.0.2+rev2',\n    major: 2,\n    minor: 0,\n    patch: 2,\n    version: '2.0.2',\n    prerelease: [],\n    build: ['rev2'],\n});\nchai.expect(semver.parse('Resin OS v2.0.2 (prod)')).to.deep.include({\n    raw: 'Resin OS v2.0.2 (prod)',\n    major: 2,\n    minor: 0,\n    patch: 2,\n    version: '2.0.2',\n    prerelease: [],\n    build: ['prod'],\n});\nchai.expect(semver.parse('Resin OS v2.0.2.prod')).to.deep.include({\n    raw: 'Resin OS v2.0.2.prod',\n    major: 2,\n    minor: 0,\n    patch: 2,\n    version: '2.0.2',\n    prerelease: [],\n    build: ['prod'],\n});\nchai.expect(semver.parse('Resin OS 2.0.0-rc5.rev1')).to.deep.include({\n    raw: 'Resin OS 2.0.0-rc5.rev1',\n    major: 2,\n    minor: 0,\n    patch: 0,\n    version: '2.0.0-rc5.rev1',\n    prerelease: ['rc5', 'rev1'],\n    build: [],\n});\nchai.expect(semver.parse('Resin OS 2.3.0+rev1.prod')).to.deep.include({\n    raw: 'Resin OS 2.3.0+rev1.prod',\n    major: 2,\n    minor: 3,\n    patch: 0,\n    version: '2.3.0',\n    prerelease: [],\n    build: ['rev1', 'prod'],\n});\nchai.expect(semver.parse('Resin OS v2.3.0-a.b.c (prod)')).to.deep.include({\n    raw: 'Resin OS v2.3.0-a.b.c (prod)',\n    major: 2,\n    minor: 3,\n    patch: 0,\n    version: '2.3.0-a.b.c',\n    prerelease: ['a', 'b', 'c'],\n    build: ['prod'],\n});\nchai.expect(semver.parse('Resin OS 2.3.0-a.b.c+d.e.f (prod)')).to.deep.include({\n    raw: 'Resin OS 2.3.0-a.b.c+d.e.f (prod)',\n    major: 2,\n    minor: 3,\n    patch: 0,\n    version: '2.3.0-a.b.c',\n    prerelease: ['a', 'b', 'c'],\n    build: ['d', 'e', 'f', 'prod'],\n});\nchai.expect(semver.parse('Resin OS 2.3.0+a.b.c (prod)')).to.deep.include({\n    raw: 'Resin OS 2.3.0+a.b.c (prod)',\n    major: 2,\n    minor: 3,\n    patch: 0,\n    version: '2.3.0',\n    prerelease: [],\n    build: ['a', 'b', 'c', 'prod'],\n});\n```\n\nshould correctly parse invalid semver values.\n\n```js\nchai.expect(semver.parse('Linux 14.04')).to.equal(null);\nchai.expect(semver.parse('A development version')).to.equal(null);\nchai.expect(semver.parse('Version A')).to.equal(null);\n```\n\nshould correctly parse null values.\n\n```js\nchai.expect(semver.parse(null)).to.equal(null);\n```\n\nshould correctly parse undefined values.\n\n```js\nchai.expect(semver.parse(undefined)).to.equal(null);\n```\n\n<a name=\"resin-semver-valid\"></a>\n\n<a name=\"valid\"></a>\n\n## valid(version) ⇒ <code>string</code> \\| <code>null</code>\nReturn the parsed version, or null if it's not valid.\n\n**Kind**: global function  \n**Summary**: Check if a version string is valid  \n**Returns**: <code>string</code> \\| <code>null</code> - - The parsed version string, or\nnull if a valid semver string could not be found  \n**Access**: public  \n\n| Param | Type |\n| --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | \n\n**Example**  \nshould return null for invalid semver values.\n\n```js\nchai.expect(semver.valid(null)).to.equal(null);\nchai.expect(semver.valid(undefined)).to.equal(null);\nchai.expect(semver.valid('')).to.equal(null);\nchai.expect(semver.valid('foobar')).to.equal(null);\nchai.expect(semver.valid('12345')).to.equal(null);\nchai.expect(semver.valid('1.2.3.4.5')).to.equal(null);\n```\n\nshould correctly parse valid values.\n\n```js\nchai.expect(semver.valid('Resin OS 1.0.0-pre')).to.equal('1.0.0-pre');\nchai.expect(semver.valid('Resin OS 1.0.5 (fido)')).to.equal('1.0.5');\nchai.expect(semver.valid('Resin OS 2.0.0-beta.8')).to.equal('2.0.0-beta.8');\nchai.expect(semver.valid('Resin OS 2.0.0-beta10.rev1')).to.equal('2.0.0-beta10.rev1');\nchai.expect(semver.valid('Resin OS 2.0.0+rev3')).to.equal('2.0.0');\nchai.expect(semver.valid('Resin OS 2.0.0.rev1 (prod)')).to.equal('2.0.0');\nchai.expect(semver.valid('Resin OS 2.0.0+rev4 (dev)')).to.equal('2.0.0');\nchai.expect(semver.valid('2.0.6+rev3.dev')).to.equal('2.0.6');\n```\n\n<a name=\"resin-semver-inc\"></a>\n\n<a name=\"inc\"></a>\n\n## inc(version, release) ⇒ <code>string</code> \\| <code>null</code>\nReturn the version incremented by the release type\n(major, premajor, minor, preminor, patch, prepatch, or prerelease), or null\nif it's not valid.\n\n**Kind**: global function  \n**Summary**: Return an incremented version  \n**Returns**: <code>string</code> \\| <code>null</code> - - The incremented version string, or\nnull if a valid semver string could not be found  \n**Access**: public  \n\n| Param | Type |\n| --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | \n| release | <code>string</code> | \n\n**Example**  \nshould return null for invalid semver values.\n\n```js\nchai.expect(semver.inc(null, 'major')).to.equal(null);\nchai.expect(semver.inc(undefined, 'major')).to.equal(null);\nchai.expect(semver.inc('', 'major')).to.equal(null);\nchai.expect(semver.inc('foobar', 'major')).to.equal(null);\nchai.expect(semver.inc('12345', 'major')).to.equal(null);\nchai.expect(semver.inc('1.2.3.4.5', 'major')).to.equal(null);\n```\n\nshould correctly increment valid values by a 'premajor' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'premajor')).to.equal('2.0.0-0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'premajor')).to.equal('2.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'premajor')).to.equal('3.0.0-0');\n```\n\nshould correctly increment valid values by a 'preminor' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'preminor')).to.equal('1.1.0-0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'preminor')).to.equal('1.1.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'preminor')).to.equal('2.1.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'preminor')).to.equal('2.1.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'preminor')).to.equal('2.1.0-0');\nchai.expect(semver.inc('Resin OS 2.1.0.rev1 (prod)', 'preminor')).to.equal('2.2.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'preminor')).to.equal('2.1.0-0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'preminor')).to.equal('2.1.0-0');\n```\n\nshould correctly increment valid values by a 'prepatch' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'prepatch')).to.equal('1.0.1-0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'prepatch')).to.equal('1.0.6-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'prepatch')).to.equal('2.0.7-0');\n```\n\nshould correctly increment valid values by a 'prerelease' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'prerelease')).to.equal('1.0.0-pre.0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'prerelease')).to.equal('1.0.6-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'prerelease')).to.equal('2.0.0-beta.9');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'prerelease')).to.equal('2.0.0-beta10.rev1.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'prerelease')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'prerelease')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'prerelease')).to.equal('2.0.1-0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'prerelease')).to.equal('2.0.7-0');\n```\n\nshould correctly increment valid values by a 'major' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'major')).to.equal('1.0.0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'major')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'major')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'major')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'major')).to.equal('3.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'major')).to.equal('3.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'major')).to.equal('3.0.0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'major')).to.equal('3.0.0');\n```\n\nshould correctly increment valid values by a 'minor' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'minor')).to.equal('1.0.0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'minor')).to.equal('1.1.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'minor')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'minor')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'minor')).to.equal('2.1.0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'minor')).to.equal('2.1.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'minor')).to.equal('2.1.0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'minor')).to.equal('2.1.0');\n```\n\nshould correctly increment valid values by a 'patch' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'patch')).to.equal('1.0.0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'patch')).to.equal('1.0.6');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'patch')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'patch')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'patch')).to.equal('2.0.1');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'patch')).to.equal('2.0.1');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'patch')).to.equal('2.0.1');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'patch')).to.equal('2.0.7');\n```\n\n\n\n\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/resin-io-modules/resin-semver/issues"},"_id":"resin-semver@1.6.0-accept-leading-zeros-a43104e9f03d78dc92a70def977d40f5cdb49398","_nodeVersion":"10.4.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-kck/IalzVUhNahqzjI5YHqA0WO4Fs+rbQj4i/f86fJNGm87Fj6++PWbDVrZMMIiJ2zC7Ae9Rz4AgzMhDxnAviQ==","shasum":"af79235157f7baa30d0c2052a5bee66f6d003952","tarball":"https://registry.npmjs.org/resin-semver/-/resin-semver-1.6.0-accept-leading-zeros-a43104e9f03d78dc92a70def977d40f5cdb49398.tgz","fileCount":17,"unpackedSize":141706,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcxtpACRA9TVsSAnZWagAAut4P/2j/zlR7XSXRsCcLhVZz\nsCmnYMn06RLHW/gHVyJrbU7MlbPWDgACXMRVL4TuP9ZIWNxeO19/IxXjsr4W\nCtv0RTLqJCskcm3Q1rAqSIi3fB+9CQxpZJzKp6PGI6G00OavkC9O97dwEDTE\nuzr7wrxtag55Jkn/USGFnAgAEFf7Pzx41JbdtXsxRJw2bmgOqhDwnUjqv6WE\nC2T62YvlMMlt/K+gio3uhYP7M5n1OPGxfBU5abLLWhhoVWBOLaWs68YFqH25\nrhLI827vBEwDvDfzKesYO4/LRAibsLdmWLlwoQXXlGegdRBoPAGwmGYlBb3A\nsSoIJxvjlNSabyBEetns6fIPphOv8dJq1hwljOahJ+QCeNZ4J1BhiwFlWe+w\nz56+bnz7BSFKHi2HZbswm0dUrVwK93hjRsinHRTTzvnQG+2cpj3mGq0hDCu4\nS3udwLxTorStjucADyHgo0MFY/ObGmMBtUFJNOyr41Mzc2upxH3c/PL5XvaV\nxl/zUIxI3tRPci5cT70tPegZCdX7FNWxMhNrFFZ3Devh4g9ppLvy8OcNj5As\n7mPd38hIfn7btsV1hOsiApKPSUmYmN4222KcahUUrEa0hsBYJRY4Xla50Bbj\n5TX0GzxYzrjeJom3avbeHunRrCXpjjFhDtEZaptjROD0maBAVvMbdg1GRKx6\n6wQs\r\n=IAOJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICbNcINtYummjXi1bwH+EtQtferUDmKmytsnffKnbIQgAiAsCyARx4Jr07s31ZnbzdamS6MXYTZG9TFNDg5ptojRuA=="}]},"maintainers":[{"email":"accounts+npm@balena.io","name":"balena.io"}],"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/resin-semver_1.6.0-accept-leading-zeros-a43104e9f03d78dc92a70def977d40f5cdb49398_1556535871456_0.44550958580382205"},"_hasShrinkwrap":false},"1.6.0-accept-leading-zeros-540e5b757b5d8e47e70aea0d2f7025297e37bbab":{"name":"resin-semver","version":"1.6.0-accept-leading-zeros-540e5b757b5d8e47e70aea0d2f7025297e37bbab","description":"Resin.io specific semver utility methods","main":"src/index.js","typings":"src/index.ts","homepage":"https://github.com/resin-io-modules/resin-semver","repository":{"type":"git","url":"git+https://github.com/resin-io-modules/resin-semver.git"},"keywords":["resin","resin.io","semver"],"scripts":{"test":"npm run lint && ./automation/test.js","build":"tsc && npm run docs","lint":"tslint -t stylish -c tslint.json 'src/**/*.ts' 'test/**/*.ts'","docs":"./automation/docs.js","ci":"npm run build && catch-uncommitted && npm test","precommit":"lint-staged","prettify":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\""},"author":{"name":"Lucian Buzzo","email":"lucian@resin.io"},"license":"Apache-2.0","dependencies":{"@types/lodash":"^4.1.2 <=4.14.121","@types/semver":"^5.4.0","lodash":"^4.1.2","semver":"^5.3.0"},"devDependencies":{"@types/chai":"^4.0.1","@types/mocha":"^2.2.41","catch-uncommitted":"^1.0.0","chai":"^4.1.0","husky":"^0.14.3","jsdoc-to-markdown":"^3.0.0","lint-staged":"^4.0.4","mocha":"^3.4.2","prettier":"^1.6.1","ts-node":"^3.2.1","tslint":"^5.5.0","typescript":"^2.4.2"},"lint-staged":{"*.ts":["prettier --write","npm run lint","npm run docs","git add"]},"gitHead":"540e5b757b5d8e47e70aea0d2f7025297e37bbab","readme":"resin-semver\n============\n\n> Resin.io specific semver utility methods\n\n[![Build Status](https://travis-ci.org/resin-io-modules/resin-semver.svg?branch=master)](https://travis-ci.org/resin-io-modules/resin-semver)\n\nRole\n----\n\nThe intention of this module is to provide a collection of resin specific semver utility methods.\n\n**THIS MODULE IS LOW LEVEL AND IS NOT MEANT TO BE USED BY END USERS DIRECTLY**.\n\nUnless you know what you're doing, use the [Resin SDK](https://github.com/resin-io/resin-sdk) instead.\n\nInstallation\n------------\n\nInstall `resin-semver` by running:\n\n```sh\n$ npm install --save resin-semver\n```\n\nDocumentation\n-------------\n\n## Functions\n\n<dl>\n<dt><a href=\"#compare\">compare(versionA, versionB)</a> ⇒ <code>number</code></dt>\n<dd><p>Accepts string or null values and compares them, returning a number\nindicating sort order. Values are parsed for valid semver strings. Sorts an array\nof versions in ascending order if passed to <code>Array.sort()</code>.</p>\n</dd>\n<dt><a href=\"#rcompare\">rcompare(versionA, versionB)</a> ⇒ <code>number</code></dt>\n<dd><p>The reverse of <code>.compare()</code>. Accepts string or null values and compares\nthem, returning a number indicating sort order. Values are parsed for valid semver\nstrings. Sorts an array of versions in descending order when passed to <code>Array.sort()</code>.</p>\n</dd>\n<dt><a href=\"#major\">major(version)</a> ⇒ <code>number</code> | <code>null</code></dt>\n<dd><p>Returns the major version number in a semver string.\nIf the version is not a valid semver string, or a valid semver string cannot be\nfound, it returns null.</p>\n</dd>\n<dt><a href=\"#prerelease\">prerelease(version)</a> ⇒ <code>Array.&lt;(string|number)&gt;</code> | <code>null</code></dt>\n<dd><p>Returns an array of prerelease components, or null if none exist</p>\n</dd>\n<dt><a href=\"#gte\">gte(versionA, versionB)</a> ⇒ <code>boolean</code></dt>\n<dd><p>Returns true if versionA is greater than or equal to versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.</p>\n</dd>\n<dt><a href=\"#gt\">gt(versionA, versionB)</a> ⇒ <code>boolean</code></dt>\n<dd><p>Returns true if versionA is greater than versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.</p>\n</dd>\n<dt><a href=\"#lte\">lte(versionA, versionB)</a> ⇒ <code>boolean</code></dt>\n<dd><p>Returns true if versionA is less than or equal to versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.</p>\n</dd>\n<dt><a href=\"#lt\">lt(versionA, versionB)</a> ⇒ <code>boolean</code></dt>\n<dd><p>Returns true if versionA is less than versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.</p>\n</dd>\n<dt><a href=\"#satisfies\">satisfies(version, range)</a> ⇒ <code>boolean</code></dt>\n<dd><p>Return true if the parsed version satisfies the range.\nThis method will always return false if the provided version doesn&#39;t contain a valid semver string.</p>\n</dd>\n<dt><a href=\"#maxSatisfying\">maxSatisfying(versions, range)</a> ⇒ <code>string</code> | <code>null</code></dt>\n<dd><p>Return the highest version in the list that satisfies the range, or null if none of them do.\nIf multiple versions are found that have equally high values, the last one in the array is returned.\nNote that only version that contain a valid semver string can satisfy a range.</p>\n</dd>\n<dt><a href=\"#parse\">parse(version)</a> ⇒ <code>SemverObject</code> | <code>null</code></dt>\n<dd><p>Returns an object representing the semver version. Returns null\nif a valid semver string can&#39;t be found.</p>\n</dd>\n<dt><a href=\"#valid\">valid(version)</a> ⇒ <code>string</code> | <code>null</code></dt>\n<dd><p>Return the parsed version, or null if it&#39;s not valid.</p>\n</dd>\n<dt><a href=\"#inc\">inc(version, release)</a> ⇒ <code>string</code> | <code>null</code></dt>\n<dd><p>Return the version incremented by the release type\n(major, premajor, minor, preminor, patch, prepatch, or prerelease), or null\nif it&#39;s not valid.</p>\n</dd>\n</dl>\n\n<a name=\"compare\"></a>\n\n## compare(versionA, versionB) ⇒ <code>number</code>\nAccepts string or null values and compares them, returning a number\nindicating sort order. Values are parsed for valid semver strings. Sorts an array\nof versions in ascending order if passed to `Array.sort()`.\n\n**Kind**: global function  \n**Summary**: Compare order of versions  \n**Returns**: <code>number</code> - Returns `0` if `versionA == versionB`,\nor `1` if `versionA` is greater, or `-1` if `versionB` is greater.\nNull values are sorted before invalid semver values, and invalid semver values\nare sorted before valid semver values\nIf both values are invalid semver values, then the values are compared alphabetically.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The first version to compare |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The second version to compare |\n\n**Example**  \nshould not throw when provided with a version.\n\n```js\nversions_1.versions.forEach(function (version) {\n    chai.expect(function () { return semver.compare(version, version); }).to.not.throw();\n});\n```\n\nshould correctly sort lists of versions.\n\n```js\nchai.expect(sortBy(versions_1.versions.slice(), semver.compare)).to.eql(versions_1.versions);\n```\n\nshould correctly compare versions with leading 0s.\n\n```js\nchai.expect(semver.compare('18.04.1', '18.4.1')).to.equal(0);\nchai.expect(semver.compare('18.04.2', '18.4.1')).to.equal(1);\nchai.expect(semver.compare('18.04.1', '18.4.2')).to.equal(-1);\n```\n\nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.compare('2.0.5', '1.16.0')).to.equal(1);\nchai.expect(semver.compare('2.0.5', '2.0.5')).to.equal(0);\nchai.expect(semver.compare('1.16.0', '2.0.5')).to.equal(-1);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.compare('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(1);\nchai.expect(semver.compare('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(-1);\nchai.expect(semver.compare('1.16.0', 'Resin OS v1.16.0')).to.equal(0);\nchai.expect(semver.compare('Resin OS 1.16.0', '2.0.2')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 1.16.0', '1.16.0')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.2', '1.16.0')).to.equal(1);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.compare('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(1);\nchai.expect(semver.compare('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 1.16.0', 'Resin OS 1.16.0')).to.equal(0);\n```\n\nshould correctly compare Balena formatted versions.\n\n```js\nchai.expect(semver.compare('balenaOS 2.0.5', 'balenaOS 2.0.2+rev2')).to.equal(1);\nchai.expect(semver.compare('balenaOS 1.16.0', 'balenaOS 2.0.2 (prod)')).to.equal(-1);\nchai.expect(semver.compare('balenaOS 1.16.0', 'balenaOS 1.16.0')).to.equal(0);\n```\n\nshould correctly compare Balena formatted versions to Resin formatted versions.\n\n```js\nchai.expect(semver.compare('balenaOS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(1);\nchai.expect(semver.compare('balenaOS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(-1);\nchai.expect(semver.compare('balenaOS 1.16.0', 'Resin OS 1.16.0')).to.equal(0);\n```\n\nshould correctly compare Balena formatted versions with leading 0s.\n\n```js\nchai.expect(semver.compare('balenaOS v2.0.2+rev2', 'balenaOS v2.0.2+rev02')).to.equal(0);\nchai.expect(semver.compare('balenaOS v2.0.2+rev01', 'balenaOS v2.0.2+rev02')).to.equal(-1);\nchai.expect(semver.compare('balenaOS v2.0.02+rev2', 'balenaOS v2.0.2+rev1')).to.equal(1);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.compare('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(-1);\nchai.expect(semver.compare('Linux 14.04', 'A development version')).to.equal(1);\nchai.expect(semver.compare('Version B', 'Version A')).to.equal(1);\nchai.expect(semver.compare('Version A', 'Version A')).to.equal(0);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.compare('2.0.5', null)).to.equal(1);\nchai.expect(semver.compare(null, '1.16.0')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 1.16.0', null)).to.equal(1);\nchai.expect(semver.compare(null, 'Resin OS 1.16.0')).to.equal(-1);\nchai.expect(semver.compare('Linux 14.04', null)).to.equal(1);\nchai.expect(semver.compare(null, 'Linux 14.04')).to.equal(-1);\nchai.expect(semver.compare(null, null)).to.equal(0);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.compare('2.0.5', undefined)).to.equal(1);\nchai.expect(semver.compare(undefined, '1.16.0')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 1.16.0', undefined)).to.equal(1);\nchai.expect(semver.compare(undefined, 'Resin OS 1.16.0')).to.equal(-1);\nchai.expect(semver.compare('Linux 14.04', undefined)).to.equal(1);\nchai.expect(semver.compare(undefined, 'Linux 14.04')).to.equal(-1);\nchai.expect(semver.compare(undefined, undefined)).to.equal(0);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.compare('2.0.0+rev6', '2.0.0+rev3')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(1);\nchai.expect(semver.compare('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(1);\nchai.expect(semver.compare('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(-1);\nchai.expect(semver.compare('2.0.0+rev3', '2.0.0+rev3')).to.equal(0);\nchai.expect(semver.compare('2.0.0+rev1', '2.0.0+rev11')).to.equal(-1);\nchai.expect(semver.compare('2.0.0+rev2', '2.0.0+rev11')).to.equal(-1);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.compare('2.0.0', '2.0.0+dev')).to.equal(1);\nchai.expect(semver.compare('2.0.0', '2.0.0-dev')).to.equal(1);\nchai.expect(semver.compare('2.0.0', '2.0.0.dev')).to.equal(1);\nchai.expect(semver.compare('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(1);\nchai.expect(semver.compare('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(-1);\nchai.expect(semver.compare('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(0);\nchai.expect(semver.compare('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0.dev', '2.0.0')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(0);\n```\n\nshould correctly compare \"(dev)\" and \"(prod)\" versions without revisions.\n\n```js\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0 (dev)')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0 (dev)', 'Resin OS 2.0.0 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0-prod')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0.prod')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0+prod')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0 (dev)', 'Resin OS 2.0.0+prod')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0.dev', 'Resin OS 2.0.0+dev')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0.dev', 'Resin OS 2.0.0 (dev)')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0+dev', 'Resin OS 2.0.0 (dev)')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0.prod', 'Resin OS 2.0.0+prod')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0.prod', 'Resin OS 2.0.0 (prod)')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0+prod', 'Resin OS 2.0.0 (prod)')).to.equal(0);\n```\n\nshould correctly compare \"(dev)\" and \"(prod)\" versions of the same revision.\n\n```js\nchai.expect(semver.compare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3 (dev)')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3 (dev)', 'Resin OS 2.0.0+rev3 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.prod')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3 (dev)', 'Resin OS 2.0.0+rev3+prod')).to.equal(1); // B is invalid\n```\n\n<a name=\"resin-semver-rcompare\"></a>\n\n<a name=\"rcompare\"></a>\n\n## rcompare(versionA, versionB) ⇒ <code>number</code>\nThe reverse of `.compare()`. Accepts string or null values and compares\nthem, returning a number indicating sort order. Values are parsed for valid semver\nstrings. Sorts an array of versions in descending order when passed to `Array.sort()`.\n\n**Kind**: global function  \n**Summary**: Compare order of versions in reverse  \n**Returns**: <code>number</code> - Returns `0` if `versionA == versionB`,\nor `-1` if `versionA` is greater, or `1` if `versionB` is greater.\nValid semver values are sorted before invalid semver values, and invalid semver values are\nsorted before null values.\nIf both values are non-null invalid semver values, then the values are compared alphabetically.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The first version to compare |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The second version to compare |\n\n**Example**  \nshould not throw when provided with a version.\n\n```js\nversions_1.versions.forEach(function (version) {\n    chai.expect(function () { return semver.rcompare(version, version); }).to.not.throw();\n});\n```\n\nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.rcompare('2.0.5', '1.16.0')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.5', '2.0.5')).to.equal(0);\nchai.expect(semver.rcompare('1.16.0', '2.0.5')).to.equal(1);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.rcompare('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(-1);\nchai.expect(semver.rcompare('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(1);\nchai.expect(semver.rcompare('1.16.0', 'Resin OS v1.16.0')).to.equal(0);\nchai.expect(semver.rcompare('Resin OS 1.16.0', '2.0.2')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', '1.16.0')).to.equal(0);\nchai.expect(semver.rcompare('Resin OS 2.0.2', '1.16.0')).to.equal(-1);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.rcompare('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(-1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', 'Resin OS 1.16.0')).to.equal(0);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.rcompare('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(1);\nchai.expect(semver.rcompare('Linux 14.04', 'A development version')).to.equal(-1);\nchai.expect(semver.rcompare('Version B', 'Version A')).to.equal(-1);\nchai.expect(semver.rcompare('Version A', 'Version A')).to.equal(0);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.rcompare('2.0.5', null)).to.equal(-1);\nchai.expect(semver.rcompare(null, '1.16.0')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', null)).to.equal(-1);\nchai.expect(semver.rcompare(null, 'Resin OS 1.16.0')).to.equal(1);\nchai.expect(semver.rcompare('Linux 14.04', null)).to.equal(-1);\nchai.expect(semver.rcompare(null, 'Linux 14.04')).to.equal(1);\nchai.expect(semver.rcompare(null, null)).to.equal(0);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.rcompare('2.0.5', undefined)).to.equal(-1);\nchai.expect(semver.rcompare(undefined, '1.16.0')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', undefined)).to.equal(-1);\nchai.expect(semver.rcompare(undefined, 'Resin OS 1.16.0')).to.equal(1);\nchai.expect(semver.rcompare('Linux 14.04', undefined)).to.equal(-1);\nchai.expect(semver.rcompare(undefined, 'Linux 14.04')).to.equal(1);\nchai.expect(semver.rcompare(undefined, undefined)).to.equal(0);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.rcompare('2.0.0+rev6', '2.0.0+rev3')).to.equal(-1);\nchai.expect(semver.rcompare('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(1);\nchai.expect(semver.rcompare('2.0.0+rev3', '2.0.0+rev3')).to.equal(0);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.rcompare('2.0.0', '2.0.0+dev')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0', '2.0.0-dev')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0', '2.0.0.dev')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(1);\nchai.expect(semver.rcompare('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(0);\nchai.expect(semver.rcompare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(-1);\nchai.expect(semver.rcompare('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(0);\nchai.expect(semver.rcompare('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(-1);\nchai.expect(semver.rcompare('Resin OS 2.0.0.dev', '2.0.0')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(0);\n```\n\n<a name=\"resin-semver-major\"></a>\n\n<a name=\"major\"></a>\n\n## major(version) ⇒ <code>number</code> \\| <code>null</code>\nReturns the major version number in a semver string.\nIf the version is not a valid semver string, or a valid semver string cannot be\nfound, it returns null.\n\n**Kind**: global function  \n**Summary**: Return the major version number  \n**Returns**: <code>number</code> \\| <code>null</code> - - The major version number  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefine</code> | The version string to evaluate |\n\n**Example**  \nshould correctly match valid semver versions.\n\n```js\nchai.expect(semver.major('4.5.1')).to.equal(4);\n```\n\nshould correctly match resinOS prefixed versions.\n\n```js\nchai.expect(semver.major('Resin OS v2.0.5')).to.equal(2);\nchai.expect(semver.major('Resin OS 2.0.2+rev2')).to.equal(2);\nchai.expect(semver.major('Resin OS 2.0.0.rev1 (prod)')).to.equal(2);\nchai.expect(semver.major('Resin OS 2.0.0-rc5.rev1')).to.equal(2);\n```\n\nshould return null when version is `null`.\n\n```js\nchai.expect(semver.major(null)).to.equal(null);\n```\n\nshould return null when version is `undefined`.\n\n```js\nchai.expect(semver.major(undefined)).to.equal(null);\n```\n\nshould return null when the version contains no valid semver value.\n\n```js\nchai.expect(semver.major('My dev version')).to.equal(null);\nchai.expect(semver.major('Linux 14.04')).to.equal(null);\nchai.expect(semver.major('Software version 42.3.20170726.72bbcf8')).to.equal(null);\n```\n\n<a name=\"resin-semver-prerelease\"></a>\n\n<a name=\"prerelease\"></a>\n\n## prerelease(version) ⇒ <code>Array.&lt;(string\\|number)&gt;</code> \\| <code>null</code>\nReturns an array of prerelease components, or null if none exist\n\n**Kind**: global function  \n**Summary**: Return prerelease components  \n**Returns**: <code>Array.&lt;(string\\|number)&gt;</code> \\| <code>null</code> - - An array of prerelease component, or null if none exist  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to evaluate |\n\n**Example**  \nshould return an array of prerelease components when provided a semver string.\n\n```js\nchai.expect(semver.prerelease('1.16.0-alpha.1')).to.eql(['alpha', 1]);\n```\n\nshould return null when provided with a semver string that has no prerelease segment.\n\n```js\nchai.expect(semver.prerelease('1.16.0')).to.eql(null);\n```\n\nshould return an array of prerelease components when provided a resinOS prefixed version.\n\n```js\nchai.expect(semver.prerelease('Resin OS 2.0.0-rc5.rev1')).to.eql(['rc5', 'rev1']);\n```\n\nshould return null when provided a resinOS prefixed version that has no prerelease segment.\n\n```js\nchai.expect(semver.prerelease('Resin OS 2.0.0')).to.equal(null);\n```\n\nshould return null when provided with an invalid version.\n\n```js\nchai.expect(semver.prerelease('My dev version')).to.equal(null);\nchai.expect(semver.prerelease('Linux 14.04')).to.equal(null);\nchai.expect(semver.prerelease('Software version 42.3.20170726.72bbcf8')).to.equal(null);\n```\n\nshould return null when provided with a null value.\n\n```js\nchai.expect(semver.prerelease(null)).to.equal(null);\n```\n\nshould return null when provided with an undefined value.\n\n```js\nchai.expect(semver.prerelease(undefined)).to.equal(null);\n```\n\n<a name=\"resin-semver-gte\"></a>\n\n<a name=\"gte\"></a>\n\n## gte(versionA, versionB) ⇒ <code>boolean</code>\nReturns true if versionA is greater than or equal to versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.\n\n**Kind**: global function  \n**Summary**: Check if a version is greater than or equal to another  \n**Returns**: <code>boolean</code> - - true if versionA is greater than or equal to versionB, otherwise false.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare against |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare to versionA |\n\n**Example**  \nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.gte('2.0.5', '1.16.0')).to.equal(true);\nchai.expect(semver.gte('1.16.0', '2.0.5')).to.equal(false);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.gte('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.gte('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.gte('Resin OS 1.16.0', '2.0.2')).to.equal(false);\nchai.expect(semver.gte('Resin OS 1.16.0', '1.16.0')).to.equal(true);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.gte('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(true);\nchai.expect(semver.gte('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(false);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.gte('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.gte('Linux 14.04', 'A development version')).to.equal(true);\nchai.expect(semver.gte('Version B', 'Version A')).to.equal(true);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.gte('2.0.5', null)).to.equal(true);\nchai.expect(semver.gte(null, '1.16.0')).to.equal(false);\nchai.expect(semver.gte('Resin OS 1.16.0', null)).to.equal(true);\nchai.expect(semver.gte(null, 'Resin OS 1.16.0')).to.equal(false);\nchai.expect(semver.gte('Linux 14.04', null)).to.equal(true);\nchai.expect(semver.gte(null, 'Linux 14.04')).to.equal(false);\nchai.expect(semver.gte(null, null)).to.equal(true);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.gte('2.0.5', undefined)).to.equal(true);\nchai.expect(semver.gte(undefined, '1.16.0')).to.equal(false);\nchai.expect(semver.gte('Resin OS 1.16.0', undefined)).to.equal(true);\nchai.expect(semver.gte(undefined, 'Resin OS 1.16.0')).to.equal(false);\nchai.expect(semver.gte('Linux 14.04', undefined)).to.equal(true);\nchai.expect(semver.gte(undefined, 'Linux 14.04')).to.equal(false);\nchai.expect(semver.gte(undefined, undefined)).to.equal(true);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.gte('2.0.0+rev6', '2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gte('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gte('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gte('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(false);\nchai.expect(semver.gte('2.0.0+rev3', '2.0.0+rev3')).to.equal(true);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.gte('2.0.0', '2.0.0+dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0', '2.0.0-dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0', '2.0.0.dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(false);\nchai.expect(semver.gte('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(true);\nchai.expect(semver.gte('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(true);\nchai.expect(semver.gte('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.gte('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(true);\nchai.expect(semver.gte('Resin OS 2.0.0.dev', '2.0.0')).to.equal(false);\nchai.expect(semver.gte('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(true);\n```\n\n<a name=\"resin-semver-gt\"></a>\n\n<a name=\"gt\"></a>\n\n## gt(versionA, versionB) ⇒ <code>boolean</code>\nReturns true if versionA is greater than versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.\n\n**Kind**: global function  \n**Summary**: Check if a version is greater than another  \n**Returns**: <code>boolean</code> - - true if versionA is greater than versionB, otherwise false.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare against |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare to versionA |\n\n**Example**  \nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.gt('2.0.5', '1.16.0')).to.equal(true);\nchai.expect(semver.gt('1.16.0', '2.0.5')).to.equal(false);\nchai.expect(semver.gt('1.16.0', '1.16.0')).to.equal(false);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.gt('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.gt('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', '2.0.2')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', '1.16.0')).to.equal(false);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.gt('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(true);\nchai.expect(semver.gt('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', 'Resin OS 1.16.0')).to.equal(false);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.gt('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.gt('Linux 14.04', 'A development version')).to.equal(true);\nchai.expect(semver.gt('Version B', 'Version A')).to.equal(true);\nchai.expect(semver.gt('Version A', 'Version A')).to.equal(false);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.gt('2.0.5', null)).to.equal(true);\nchai.expect(semver.gt(null, '1.16.0')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', null)).to.equal(true);\nchai.expect(semver.gt(null, 'Resin OS 1.16.0')).to.equal(false);\nchai.expect(semver.gt('Linux 14.04', null)).to.equal(true);\nchai.expect(semver.gt(null, 'Linux 14.04')).to.equal(false);\nchai.expect(semver.gt(null, null)).to.equal(false);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.gt('2.0.5', undefined)).to.equal(true);\nchai.expect(semver.gt(undefined, '1.16.0')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', undefined)).to.equal(true);\nchai.expect(semver.gt(undefined, 'Resin OS 1.16.0')).to.equal(false);\nchai.expect(semver.gt('Linux 14.04', undefined)).to.equal(true);\nchai.expect(semver.gt(undefined, 'Linux 14.04')).to.equal(false);\nchai.expect(semver.gt(undefined, undefined)).to.equal(false);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.gt('2.0.0+rev6', '2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gt('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gt('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gt('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(false);\nchai.expect(semver.gt('2.0.0+rev3', '2.0.0+rev3')).to.equal(false);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.gt('2.0.0', '2.0.0+dev')).to.equal(true);\nchai.expect(semver.gt('2.0.0', '2.0.0-dev')).to.equal(true);\nchai.expect(semver.gt('2.0.0', '2.0.0.dev')).to.equal(true);\nchai.expect(semver.gt('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(true);\nchai.expect(semver.gt('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(false);\nchai.expect(semver.gt('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(false);\nchai.expect(semver.gt('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(true);\nchai.expect(semver.gt('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.gt('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(false);\nchai.expect(semver.gt('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(true);\nchai.expect(semver.gt('Resin OS 2.0.0.dev', '2.0.0')).to.equal(false);\nchai.expect(semver.gt('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(false);\n```\n\n<a name=\"resin-semver-lte\"></a>\n\n<a name=\"lte\"></a>\n\n## lte(versionA, versionB) ⇒ <code>boolean</code>\nReturns true if versionA is less than or equal to versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.\n\n**Kind**: global function  \n**Summary**: Check if a version is less than or equal to another  \n**Returns**: <code>boolean</code> - - true if versionA is greater than or equal to versionB, otherwise false.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare against |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare to versionA |\n\n**Example**  \nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.lte('2.0.5', '1.16.0')).to.equal(false);\nchai.expect(semver.lte('1.16.0', '2.0.5')).to.equal(true);\nchai.expect(semver.lte('1.16.0', '1.16.0')).to.equal(true);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.lte('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.lte('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.lte('Resin OS 1.16.0', '2.0.2')).to.equal(true);\nchai.expect(semver.lte('Resin OS 1.16.0', '1.16.0')).to.equal(true);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.lte('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(false);\nchai.expect(semver.lte('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(true);\nchai.expect(semver.lte('Resin OS 1.16.0', 'Resin OS 1.16.0')).to.equal(true);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.lte('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.lte('Linux 14.04', 'A development version')).to.equal(false);\nchai.expect(semver.lte('Version B', 'Version A')).to.equal(false);\nchai.expect(semver.lte('Version A', 'Version A')).to.equal(true);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.lte('2.0.5', null)).to.equal(false);\nchai.expect(semver.lte(null, '1.16.0')).to.equal(true);\nchai.expect(semver.lte('Resin OS 1.16.0', null)).to.equal(false);\nchai.expect(semver.lte(null, 'Resin OS 1.16.0')).to.equal(true);\nchai.expect(semver.lte('Linux 14.04', null)).to.equal(false);\nchai.expect(semver.lte(null, 'Linux 14.04')).to.equal(true);\nchai.expect(semver.lte(null, null)).to.equal(true);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.lte('2.0.5', undefined)).to.equal(false);\nchai.expect(semver.lte(undefined, '1.16.0')).to.equal(true);\nchai.expect(semver.lte('Resin OS 1.16.0', undefined)).to.equal(false);\nchai.expect(semver.lte(undefined, 'Resin OS 1.16.0')).to.equal(true);\nchai.expect(semver.lte('Linux 14.04', undefined)).to.equal(false);\nchai.expect(semver.lte(undefined, 'Linux 14.04')).to.equal(true);\nchai.expect(semver.lte(undefined, undefined)).to.equal(true);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.lte('2.0.0+rev6', '2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lte('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lte('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lte('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(true);\nchai.expect(semver.lte('2.0.0+rev3', '2.0.0+rev3')).to.equal(true);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.lte('2.0.0', '2.0.0+dev')).to.equal(false);\nchai.expect(semver.lte('2.0.0', '2.0.0-dev')).to.equal(false);\nchai.expect(semver.lte('2.0.0', '2.0.0.dev')).to.equal(false);\nchai.expect(semver.lte('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(false);\nchai.expect(semver.lte('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(true);\nchai.expect(semver.lte('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(true);\nchai.expect(semver.lte('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(false);\nchai.expect(semver.lte('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.lte('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(true);\nchai.expect(semver.lte('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(false);\nchai.expect(semver.lte('Resin OS 2.0.0.dev', '2.0.0')).to.equal(true);\nchai.expect(semver.lte('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(true);\n```\n\n<a name=\"resin-semver-lt\"></a>\n\n<a name=\"lt\"></a>\n\n## lt(versionA, versionB) ⇒ <code>boolean</code>\nReturns true if versionA is less than versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.\n\n**Kind**: global function  \n**Summary**: Check if a version is less than another  \n**Returns**: <code>boolean</code> - - true if versionA is less than versionB, otherwise false.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare against |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare to versionA |\n\n**Example**  \nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.lt('2.0.5', '1.16.0')).to.equal(false);\nchai.expect(semver.lt('1.16.0', '2.0.5')).to.equal(true);\nchai.expect(semver.lt('1.16.0', '1.16.0')).to.equal(false);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.lt('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.lt('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', '2.0.2')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', '1.16.0')).to.equal(false);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.lt('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(false);\nchai.expect(semver.lt('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', 'Resin OS 1.16.0')).to.equal(false);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.lt('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.lt('Linux 14.04', 'A development version')).to.equal(false);\nchai.expect(semver.lt('Version B', 'Version A')).to.equal(false);\nchai.expect(semver.lt('Version A', 'Version A')).to.equal(false);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.lt('2.0.5', null)).to.equal(false);\nchai.expect(semver.lt(null, '1.16.0')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', null)).to.equal(false);\nchai.expect(semver.lt(null, 'Resin OS 1.16.0')).to.equal(true);\nchai.expect(semver.lt('Linux 14.04', null)).to.equal(false);\nchai.expect(semver.lt(null, 'Linux 14.04')).to.equal(true);\nchai.expect(semver.lt(null, null)).to.equal(false);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.lt('2.0.5', undefined)).to.equal(false);\nchai.expect(semver.lt(undefined, '1.16.0')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', undefined)).to.equal(false);\nchai.expect(semver.lt(undefined, 'Resin OS 1.16.0')).to.equal(true);\nchai.expect(semver.lt('Linux 14.04', undefined)).to.equal(false);\nchai.expect(semver.lt(undefined, 'Linux 14.04')).to.equal(true);\nchai.expect(semver.lt(undefined, undefined)).to.equal(false);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.lt('2.0.0+rev6', '2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lt('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lt('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lt('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(true);\nchai.expect(semver.lt('2.0.0+rev3', '2.0.0+rev3')).to.equal(false);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.lt('2.0.0', '2.0.0+dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0', '2.0.0-dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0', '2.0.0.dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(true);\nchai.expect(semver.lt('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(false);\nchai.expect(semver.lt('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(false);\nchai.expect(semver.lt('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.lt('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(false);\nchai.expect(semver.lt('Resin OS 2.0.0.dev', '2.0.0')).to.equal(true);\nchai.expect(semver.lt('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(false);\n```\n\n<a name=\"resin-semver-satisfies\"></a>\n\n<a name=\"satisfies\"></a>\n\n## satisfies(version, range) ⇒ <code>boolean</code>\nReturn true if the parsed version satisfies the range.\nThis method will always return false if the provided version doesn't contain a valid semver string.\n\n**Kind**: global function  \n**Summary**: Check if a version satisfies a range  \n**Returns**: <code>boolean</code> - - True if the parsed version satisfies the range, false otherwise  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version to evaluate |\n| range | <code>string</code> | A semver range string, see the [node-semver](https://github.com/npm/node-semver#ranges) docs for details |\n\n**Example**  \nshould correctly evaluate valid semver values.\n\n```js\nchai.expect(semver.satisfies('2.0.5', '^2.0.0')).to.equal(true);\nchai.expect(semver.satisfies('1.16.0', '^2.0.0')).to.equal(false);\n```\n\nshould correctly evaluate Resin formatted versions.\n\n```js\nchai.expect(semver.satisfies('Resin OS 2.0.2+rev2', '^2.0.0')).to.equal(true);\nchai.expect(semver.satisfies('Resin OS 2.0.2 (prod)', '^2.0.0')).to.equal(true);\nchai.expect(semver.satisfies('Resin OS 1.16.0', '^2.0.0')).to.equal(false);\n```\n\nshould always return false when provided with an invalid semver value.\n\n```js\nchai.expect(semver.satisfies('Linux 14.04', '^2.0.0')).to.equal(false);\nchai.expect(semver.satisfies('A development version', '^2.0.0')).to.equal(false);\nchai.expect(semver.satisfies('Version A', '^2.0.0')).to.equal(false);\nchai.expect(semver.satisfies('Linux 14.04', '*')).to.equal(false);\nchai.expect(semver.satisfies('Linux 14.04', '< 1.0.0')).to.equal(false);\n```\n\nshould correctly evaluate null values.\n\n```js\nchai.expect(semver.satisfies(null, '^2.0.0')).to.equal(false);\n```\n\nshould correctly evaluate undefined values.\n\n```js\nchai.expect(semver.satisfies(undefined, '^2.0.0')).to.equal(false);\n```\n\n<a name=\"resin-semver-maxsatisfying\"></a>\n\n<a name=\"maxSatisfying\"></a>\n\n## maxSatisfying(versions, range) ⇒ <code>string</code> \\| <code>null</code>\nReturn the highest version in the list that satisfies the range, or null if none of them do.\nIf multiple versions are found that have equally high values, the last one in the array is returned.\nNote that only version that contain a valid semver string can satisfy a range.\n\n**Kind**: global function  \n**Summary**: Return the highest version in the list that satisfies the range  \n**Returns**: <code>string</code> \\| <code>null</code> - - The highest matching version string, or null.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versions | <code>Array.&lt;(string\\|null\\|undefined)&gt;</code> | An array of versions to evaluate |\n| range | <code>string</code> | A semver range string, see the [node-semver](https://github.com/npm/node-semver#ranges) docs for details |\n\n**Example**  \nshould return the correct version.\n\n```js\nchai.expect(semver.maxSatisfying(versions_1.versions, '1.1.*')).to.equal('Resin OS 1.1.4');\nchai.expect(semver.maxSatisfying(versions_1.versions, '^2.0.0')).to.equal('Resin OS 2.14.0');\nchai.expect(semver.maxSatisfying(versions_1.versions, '< 1.0.0')).to.equal(null);\n```\n\nshould return the first version found if multiple versions have equally high values.\n\n```js\nchai.expect(semver.maxSatisfying(['1.0.0', 'Resin OS 1.1.4', '1.1.4'], '1.1.*')).to.equal('Resin OS 1.1.4');\n```\n\nshould normalize versions used in range parameter.\n\n```js\nchai.expect(semver.maxSatisfying(versions_1.versions, '2.0.0.rev1')).to.equal('Resin OS 2.0.0+rev11');\nchai.expect(semver.maxSatisfying(versions_1.versions, '^ Resin OS 2.0.0 (prod)')).to.equal('Resin OS 2.14.0');\nchai.expect(semver.maxSatisfying(versions_1.versions, '< Resin OS v1.0.0')).to.equal(null);\nchai.expect(semver.maxSatisfying(versions_1.versions, 'Resin OS v1.1.*')).to.equal('Resin OS 1.1.4');\n```\n\n<a name=\"resin-semver-parse\"></a>\n\n<a name=\"parse\"></a>\n\n## parse(version) ⇒ <code>SemverObject</code> \\| <code>null</code>\nReturns an object representing the semver version. Returns null\nif a valid semver string can't be found.\n\n**Kind**: global function  \n**Summary**: Parse a version into an object  \n**Returns**: <code>SemverObject</code> \\| <code>null</code> - - An object representing the version string, or\nnull if a valid semver string could not be found  \n**Access**: public  \n\n| Param | Type |\n| --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | \n\n**Example**  \nshould correctly parse valid semver values.\n\n```js\nchai.expect(semver.parse('2.0.5')).to.deep.include({\n    raw: '2.0.5',\n    major: 2,\n    minor: 0,\n    patch: 5,\n    version: '2.0.5',\n    prerelease: [],\n    build: [],\n});\n```\n\nshould correctly parse Resin formatted versions.\n\n```js\nchai.expect(semver.parse('Resin OS v2.0.2+rev2')).to.deep.include({\n    raw: 'Resin OS v2.0.2+rev2',\n    major: 2,\n    minor: 0,\n    patch: 2,\n    version: '2.0.2',\n    prerelease: [],\n    build: ['rev2'],\n});\nchai.expect(semver.parse('Resin OS v2.0.2 (prod)')).to.deep.include({\n    raw: 'Resin OS v2.0.2 (prod)',\n    major: 2,\n    minor: 0,\n    patch: 2,\n    version: '2.0.2',\n    prerelease: [],\n    build: ['prod'],\n});\nchai.expect(semver.parse('Resin OS v2.0.2.prod')).to.deep.include({\n    raw: 'Resin OS v2.0.2.prod',\n    major: 2,\n    minor: 0,\n    patch: 2,\n    version: '2.0.2',\n    prerelease: [],\n    build: ['prod'],\n});\nchai.expect(semver.parse('Resin OS 2.0.0-rc5.rev1')).to.deep.include({\n    raw: 'Resin OS 2.0.0-rc5.rev1',\n    major: 2,\n    minor: 0,\n    patch: 0,\n    version: '2.0.0-rc5.rev1',\n    prerelease: ['rc5', 'rev1'],\n    build: [],\n});\nchai.expect(semver.parse('Resin OS 2.3.0+rev1.prod')).to.deep.include({\n    raw: 'Resin OS 2.3.0+rev1.prod',\n    major: 2,\n    minor: 3,\n    patch: 0,\n    version: '2.3.0',\n    prerelease: [],\n    build: ['rev1', 'prod'],\n});\nchai.expect(semver.parse('Resin OS v2.3.0-a.b.c (prod)')).to.deep.include({\n    raw: 'Resin OS v2.3.0-a.b.c (prod)',\n    major: 2,\n    minor: 3,\n    patch: 0,\n    version: '2.3.0-a.b.c',\n    prerelease: ['a', 'b', 'c'],\n    build: ['prod'],\n});\nchai.expect(semver.parse('Resin OS 2.3.0-a.b.c+d.e.f (prod)')).to.deep.include({\n    raw: 'Resin OS 2.3.0-a.b.c+d.e.f (prod)',\n    major: 2,\n    minor: 3,\n    patch: 0,\n    version: '2.3.0-a.b.c',\n    prerelease: ['a', 'b', 'c'],\n    build: ['d', 'e', 'f', 'prod'],\n});\nchai.expect(semver.parse('Resin OS 2.3.0+a.b.c (prod)')).to.deep.include({\n    raw: 'Resin OS 2.3.0+a.b.c (prod)',\n    major: 2,\n    minor: 3,\n    patch: 0,\n    version: '2.3.0',\n    prerelease: [],\n    build: ['a', 'b', 'c', 'prod'],\n});\n```\n\nshould correctly parse invalid semver values.\n\n```js\nchai.expect(semver.parse('Linux 14.04')).to.equal(null);\nchai.expect(semver.parse('A development version')).to.equal(null);\nchai.expect(semver.parse('Version A')).to.equal(null);\n```\n\nshould correctly parse null values.\n\n```js\nchai.expect(semver.parse(null)).to.equal(null);\n```\n\nshould correctly parse undefined values.\n\n```js\nchai.expect(semver.parse(undefined)).to.equal(null);\n```\n\n<a name=\"resin-semver-valid\"></a>\n\n<a name=\"valid\"></a>\n\n## valid(version) ⇒ <code>string</code> \\| <code>null</code>\nReturn the parsed version, or null if it's not valid.\n\n**Kind**: global function  \n**Summary**: Check if a version string is valid  \n**Returns**: <code>string</code> \\| <code>null</code> - - The parsed version string, or\nnull if a valid semver string could not be found  \n**Access**: public  \n\n| Param | Type |\n| --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | \n\n**Example**  \nshould return null for invalid semver values.\n\n```js\nchai.expect(semver.valid(null)).to.equal(null);\nchai.expect(semver.valid(undefined)).to.equal(null);\nchai.expect(semver.valid('')).to.equal(null);\nchai.expect(semver.valid('foobar')).to.equal(null);\nchai.expect(semver.valid('12345')).to.equal(null);\nchai.expect(semver.valid('1.2.3.4.5')).to.equal(null);\n```\n\nshould correctly parse valid values.\n\n```js\nchai.expect(semver.valid('Resin OS 1.0.0-pre')).to.equal('1.0.0-pre');\nchai.expect(semver.valid('Resin OS 1.0.5 (fido)')).to.equal('1.0.5');\nchai.expect(semver.valid('Resin OS 2.0.0-beta.8')).to.equal('2.0.0-beta.8');\nchai.expect(semver.valid('Resin OS 2.0.0-beta10.rev1')).to.equal('2.0.0-beta10.rev1');\nchai.expect(semver.valid('Resin OS 2.0.0+rev3')).to.equal('2.0.0');\nchai.expect(semver.valid('Resin OS 2.0.0.rev1 (prod)')).to.equal('2.0.0');\nchai.expect(semver.valid('Resin OS 2.0.0+rev4 (dev)')).to.equal('2.0.0');\nchai.expect(semver.valid('2.0.6+rev3.dev')).to.equal('2.0.6');\n```\n\n<a name=\"resin-semver-inc\"></a>\n\n<a name=\"inc\"></a>\n\n## inc(version, release) ⇒ <code>string</code> \\| <code>null</code>\nReturn the version incremented by the release type\n(major, premajor, minor, preminor, patch, prepatch, or prerelease), or null\nif it's not valid.\n\n**Kind**: global function  \n**Summary**: Return an incremented version  \n**Returns**: <code>string</code> \\| <code>null</code> - - The incremented version string, or\nnull if a valid semver string could not be found  \n**Access**: public  \n\n| Param | Type |\n| --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | \n| release | <code>string</code> | \n\n**Example**  \nshould return null for invalid semver values.\n\n```js\nchai.expect(semver.inc(null, 'major')).to.equal(null);\nchai.expect(semver.inc(undefined, 'major')).to.equal(null);\nchai.expect(semver.inc('', 'major')).to.equal(null);\nchai.expect(semver.inc('foobar', 'major')).to.equal(null);\nchai.expect(semver.inc('12345', 'major')).to.equal(null);\nchai.expect(semver.inc('1.2.3.4.5', 'major')).to.equal(null);\n```\n\nshould correctly increment valid values by a 'premajor' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'premajor')).to.equal('2.0.0-0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'premajor')).to.equal('2.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'premajor')).to.equal('3.0.0-0');\n```\n\nshould correctly increment valid values by a 'preminor' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'preminor')).to.equal('1.1.0-0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'preminor')).to.equal('1.1.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'preminor')).to.equal('2.1.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'preminor')).to.equal('2.1.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'preminor')).to.equal('2.1.0-0');\nchai.expect(semver.inc('Resin OS 2.1.0.rev1 (prod)', 'preminor')).to.equal('2.2.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'preminor')).to.equal('2.1.0-0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'preminor')).to.equal('2.1.0-0');\n```\n\nshould correctly increment valid values by a 'prepatch' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'prepatch')).to.equal('1.0.1-0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'prepatch')).to.equal('1.0.6-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'prepatch')).to.equal('2.0.7-0');\n```\n\nshould correctly increment valid values by a 'prerelease' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'prerelease')).to.equal('1.0.0-pre.0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'prerelease')).to.equal('1.0.6-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'prerelease')).to.equal('2.0.0-beta.9');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'prerelease')).to.equal('2.0.0-beta10.rev1.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'prerelease')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'prerelease')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'prerelease')).to.equal('2.0.1-0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'prerelease')).to.equal('2.0.7-0');\n```\n\nshould correctly increment valid values by a 'major' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'major')).to.equal('1.0.0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'major')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'major')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'major')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'major')).to.equal('3.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'major')).to.equal('3.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'major')).to.equal('3.0.0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'major')).to.equal('3.0.0');\n```\n\nshould correctly increment valid values by a 'minor' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'minor')).to.equal('1.0.0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'minor')).to.equal('1.1.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'minor')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'minor')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'minor')).to.equal('2.1.0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'minor')).to.equal('2.1.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'minor')).to.equal('2.1.0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'minor')).to.equal('2.1.0');\n```\n\nshould correctly increment valid values by a 'patch' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'patch')).to.equal('1.0.0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'patch')).to.equal('1.0.6');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'patch')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'patch')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'patch')).to.equal('2.0.1');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'patch')).to.equal('2.0.1');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'patch')).to.equal('2.0.1');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'patch')).to.equal('2.0.7');\n```\n\n\n\n\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/resin-io-modules/resin-semver/issues"},"_id":"resin-semver@1.6.0-accept-leading-zeros-540e5b757b5d8e47e70aea0d2f7025297e37bbab","_nodeVersion":"10.4.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-r9ckRfJHjTjRtaFgfX/NxnkXLG0NStPOiBVE44DWm0dxZmadRsDrW1quLyNuzCrh4rFfO10EBzJNL5kQvf/iag==","shasum":"cd0a9b6135dbea3cdf9ac1d56626923114bf3602","tarball":"https://registry.npmjs.org/resin-semver/-/resin-semver-1.6.0-accept-leading-zeros-540e5b757b5d8e47e70aea0d2f7025297e37bbab.tgz","fileCount":17,"unpackedSize":141912,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcxtwKCRA9TVsSAnZWagAAD9UQAJmfLwxIVm0xbIOGNTvq\nGSIP87CHRnXOmIc5qhQEbj6BnCPnsLHUvkn6B5HXOhbPNeGpTBScTSkrnq3S\nbxebl9RIQi2Bkkz4ZIPvzaXhj8H6XAfTOi8vzYILZsrq9Ipz72yx8ox5t0TD\nuOBfsjh0D4NggKVuARwF7VQwqOmovtdehBks3bf5Nm1Abkq7/7d0Etlz0Gjj\nqicEtqFajykrLP+Hv/dLhyoRtzOmhtFKCm5NEjgOS7gl0hg30/6BqFO4M0s6\n7AJS4NtyKDkfLg8IJn3X2HLhlZVk5RNLBw5Cy9XamtUzuxapXSh4u9Bk+N58\nipdRTLzqpUamfgcrH/L0SvSMbNegtb04XUxS/Bd2hWN1jMN7CZdMMrtfZ92u\nzU+GBLfXVksWMHOrZAkahSZ5OT+VaeUbhqGxfCUd82whRmgKterhXAKI68PD\nFUBtLL53Ul/+YZ9UEopw+ToSevNTRkwiTzvwU/+DZDs4Q8yVNKCRQbNdcaK5\nPMrNyxCWXnK5SxT7qFbGvbd7pIviU7OZ0dOA2q59hQfDZZTTr3wnQc7cmdU+\n8ar8r2iYZ97jiE4hVRL+hQU1MX8mOamXZM53TOAQpsI9vnmZ0Es3KWVbNQmx\ntN7Dx0zqOzn9angNazI5P5TEoVfAeHcsoGohsntv8NHwE8cvCZ9zQLVYJX0Z\nF0Eq\r\n=za4C\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCVjt+Q05FZNv+L3p7pHOnAy5EFnJ0df/43ouB2b/Cj4gIhAOqEJ7NHH0EWXN6Br4xTZ40l4Upet7xeI2Dh6gSTUd6t"}]},"maintainers":[{"email":"accounts+npm@balena.io","name":"balena.io"}],"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/resin-semver_1.6.0-accept-leading-zeros-540e5b757b5d8e47e70aea0d2f7025297e37bbab_1556536329743_0.9048891922594351"},"_hasShrinkwrap":false},"1.6.0":{"name":"resin-semver","version":"1.6.0","description":"Resin.io specific semver utility methods","main":"src/index.js","typings":"src/index.ts","homepage":"https://github.com/resin-io-modules/resin-semver","repository":{"type":"git","url":"git+https://github.com/resin-io-modules/resin-semver.git"},"keywords":["resin","resin.io","semver"],"scripts":{"test":"npm run lint && ./automation/test.js","build":"tsc && npm run docs","lint":"tslint -t stylish -c tslint.json 'src/**/*.ts' 'test/**/*.ts'","docs":"./automation/docs.js","ci":"npm run build && catch-uncommitted && npm test","precommit":"lint-staged","prettify":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\""},"author":{"name":"Lucian Buzzo","email":"lucian@resin.io"},"license":"Apache-2.0","dependencies":{"@types/lodash":"^4.1.2 <=4.14.121","@types/semver":"^5.4.0","lodash":"^4.1.2","semver":"^5.3.0"},"devDependencies":{"@types/chai":"^4.0.1","@types/mocha":"^2.2.41","catch-uncommitted":"^1.0.0","chai":"^4.1.0","husky":"^0.14.3","jsdoc-to-markdown":"^3.0.0","lint-staged":"^4.0.4","mocha":"^3.4.2","prettier":"^1.6.1","ts-node":"^3.2.1","tslint":"^5.5.0","typescript":"^2.4.2"},"lint-staged":{"*.ts":["prettier --write","npm run lint","npm run docs","git add"]},"gitHead":"c1f217d14e7ef60e6f01020dd45439e136c10bd6","bugs":{"url":"https://github.com/resin-io-modules/resin-semver/issues"},"_id":"resin-semver@1.6.0","_nodeVersion":"10.4.0","_npmVersion":"6.9.0","dist":{"integrity":"sha512-iTlFdaValM2WvNXie9tNMCxeoI7vcMS2REQ1T59cxs9IufCk5+K7W0MbK4xK/wDFz3iGdy0+7KZL71FBkCL6xw==","shasum":"b64a6dafe9dec9404fa59b24f1ea1c350a473b47","tarball":"https://registry.npmjs.org/resin-semver/-/resin-semver-1.6.0.tgz","fileCount":17,"unpackedSize":141850,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcxv+CCRA9TVsSAnZWagAAJrsP/08+adzntoyLs3S8aFgW\nvqAyLwqXOGm8zKH8xg9Om6vivnOHX+THmbMln+JGCFFBapmT3oedMeUa7HBk\n7NQUYxtDWsj7UUdCT/818MMAs27IfBPTImGRYNBKJHUbPBUZ/I24ePFl8Ov4\nYeJstwa/7iJwcwvuABlHQuDNjhJViywlbPxeUWUApf0nEUbTtMOLp11oAk2B\nr039OBluZfX5mv0HiTOrMiWjkj7RXJHZXtSQ+XhpnwfvHK9L9WVNfPRgNg//\nJJOf1Oa2kyjqUIZ7VNWAjDF/Mqk6rtg+AUhg0wR7TNy8DNTyzMC4KoxbafmW\n36KDOcAbTgprIKyk/CnT8G2hPsy++uAqCKqjaocpfRcHTkkCM/k6Qy1noX9u\n28PfaTEOGrrlEVY94SazXa4OOpkmJAnEac0rbY9w6nwGHv8sr0nt8KnsIV5/\n+ijj7aZWSajlye8/XgWBoGSFSP2WRuMd4zMHKO84jXn4fDNoRVhMvrtbhjBL\n++4U/P/KDw11k7BFJ69mSMqbomdpCH8HtcIB4t4hA6bKckHE1v1zikEeRBC3\nYE4QbT/dhwI3xNvNTwYrf5+CfiuqnUNqrWhExwsPqZF1vybv167UozjgGirA\n73xQRIgqFq+kg0BHElfsXuQndi0tRnZ0TdF+kvH42VchoNPnnc6PH96nRDen\n/KX4\r\n=Lh3/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBKeT8zpnpKmKf8VoOl9adHDApQmUYzDuAh28LqKBcWzAiBG9nqxcKDY1w36UvqiLemZ38vukcWQlHYBEKm4rDmjgw=="}]},"maintainers":[{"email":"accounts+npm@balena.io","name":"balena.io"}],"_npmUser":{"name":"balena.io","email":"accounts+npm@balena.io"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/resin-semver_1.6.0_1556545409632_0.12389481023116455"},"_hasShrinkwrap":false,"deprecated":"resin-semver is deprecated, please use balena-semver instead"}},"readme":"resin-semver\n============\n\n> Resin.io specific semver utility methods\n\n[![Build Status](https://travis-ci.org/resin-io-modules/resin-semver.svg?branch=master)](https://travis-ci.org/resin-io-modules/resin-semver)\n\nRole\n----\n\nThe intention of this module is to provide a collection of resin specific semver utility methods.\n\n**THIS MODULE IS LOW LEVEL AND IS NOT MEANT TO BE USED BY END USERS DIRECTLY**.\n\nUnless you know what you're doing, use the [Resin SDK](https://github.com/resin-io/resin-sdk) instead.\n\nInstallation\n------------\n\nInstall `resin-semver` by running:\n\n```sh\n$ npm install --save resin-semver\n```\n\nDocumentation\n-------------\n\n## Functions\n\n<dl>\n<dt><a href=\"#compare\">compare(versionA, versionB)</a> ⇒ <code>number</code></dt>\n<dd><p>Accepts string or null values and compares them, returning a number\nindicating sort order. Values are parsed for valid semver strings. Sorts an array\nof versions in ascending order if passed to <code>Array.sort()</code>.</p>\n</dd>\n<dt><a href=\"#rcompare\">rcompare(versionA, versionB)</a> ⇒ <code>number</code></dt>\n<dd><p>The reverse of <code>.compare()</code>. Accepts string or null values and compares\nthem, returning a number indicating sort order. Values are parsed for valid semver\nstrings. Sorts an array of versions in descending order when passed to <code>Array.sort()</code>.</p>\n</dd>\n<dt><a href=\"#major\">major(version)</a> ⇒ <code>number</code> | <code>null</code></dt>\n<dd><p>Returns the major version number in a semver string.\nIf the version is not a valid semver string, or a valid semver string cannot be\nfound, it returns null.</p>\n</dd>\n<dt><a href=\"#prerelease\">prerelease(version)</a> ⇒ <code>Array.&lt;(string|number)&gt;</code> | <code>null</code></dt>\n<dd><p>Returns an array of prerelease components, or null if none exist</p>\n</dd>\n<dt><a href=\"#gte\">gte(versionA, versionB)</a> ⇒ <code>boolean</code></dt>\n<dd><p>Returns true if versionA is greater than or equal to versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.</p>\n</dd>\n<dt><a href=\"#gt\">gt(versionA, versionB)</a> ⇒ <code>boolean</code></dt>\n<dd><p>Returns true if versionA is greater than versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.</p>\n</dd>\n<dt><a href=\"#lte\">lte(versionA, versionB)</a> ⇒ <code>boolean</code></dt>\n<dd><p>Returns true if versionA is less than or equal to versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.</p>\n</dd>\n<dt><a href=\"#lt\">lt(versionA, versionB)</a> ⇒ <code>boolean</code></dt>\n<dd><p>Returns true if versionA is less than versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.</p>\n</dd>\n<dt><a href=\"#satisfies\">satisfies(version, range)</a> ⇒ <code>boolean</code></dt>\n<dd><p>Return true if the parsed version satisfies the range.\nThis method will always return false if the provided version doesn&#39;t contain a valid semver string.</p>\n</dd>\n<dt><a href=\"#maxSatisfying\">maxSatisfying(versions, range)</a> ⇒ <code>string</code> | <code>null</code></dt>\n<dd><p>Return the highest version in the list that satisfies the range, or null if none of them do.\nIf multiple versions are found that have equally high values, the last one in the array is returned.\nNote that only version that contain a valid semver string can satisfy a range.</p>\n</dd>\n<dt><a href=\"#parse\">parse(version)</a> ⇒ <code>SemverObject</code> | <code>null</code></dt>\n<dd><p>Returns an object representing the semver version. Returns null\nif a valid semver string can&#39;t be found.</p>\n</dd>\n<dt><a href=\"#valid\">valid(version)</a> ⇒ <code>string</code> | <code>null</code></dt>\n<dd><p>Return the parsed version, or null if it&#39;s not valid.</p>\n</dd>\n<dt><a href=\"#inc\">inc(version, release)</a> ⇒ <code>string</code> | <code>null</code></dt>\n<dd><p>Return the version incremented by the release type\n(major, premajor, minor, preminor, patch, prepatch, or prerelease), or null\nif it&#39;s not valid.</p>\n</dd>\n</dl>\n\n<a name=\"compare\"></a>\n\n## compare(versionA, versionB) ⇒ <code>number</code>\nAccepts string or null values and compares them, returning a number\nindicating sort order. Values are parsed for valid semver strings. Sorts an array\nof versions in ascending order if passed to `Array.sort()`.\n\n**Kind**: global function  \n**Summary**: Compare order of versions  \n**Returns**: <code>number</code> - Returns `0` if `versionA == versionB`,\nor `1` if `versionA` is greater, or `-1` if `versionB` is greater.\nNull values are sorted before invalid semver values, and invalid semver values\nare sorted before valid semver values\nIf both values are invalid semver values, then the values are compared alphabetically.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The first version to compare |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The second version to compare |\n\n**Example**  \nshould not throw when provided with a version.\n\n```js\nversions_1.versions.forEach(function (version) {\n    chai.expect(function () { return semver.compare(version, version); }).to.not.throw();\n});\n```\n\nshould correctly sort lists of versions.\n\n```js\nchai.expect(sortBy(versions_1.versions.slice(), semver.compare)).to.eql(versions_1.versions);\n```\n\nshould correctly compare versions with leading 0s.\n\n```js\nchai.expect(semver.compare('18.04.1', '18.4.1')).to.equal(0);\nchai.expect(semver.compare('18.04.2', '18.4.1')).to.equal(1);\nchai.expect(semver.compare('18.04.1', '18.4.2')).to.equal(-1);\n```\n\nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.compare('2.0.5', '1.16.0')).to.equal(1);\nchai.expect(semver.compare('2.0.5', '2.0.5')).to.equal(0);\nchai.expect(semver.compare('1.16.0', '2.0.5')).to.equal(-1);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.compare('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(1);\nchai.expect(semver.compare('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(-1);\nchai.expect(semver.compare('1.16.0', 'Resin OS v1.16.0')).to.equal(0);\nchai.expect(semver.compare('Resin OS 1.16.0', '2.0.2')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 1.16.0', '1.16.0')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.2', '1.16.0')).to.equal(1);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.compare('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(1);\nchai.expect(semver.compare('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 1.16.0', 'Resin OS 1.16.0')).to.equal(0);\n```\n\nshould correctly compare Balena formatted versions.\n\n```js\nchai.expect(semver.compare('balenaOS 2.0.5', 'balenaOS 2.0.2+rev2')).to.equal(1);\nchai.expect(semver.compare('balenaOS 1.16.0', 'balenaOS 2.0.2 (prod)')).to.equal(-1);\nchai.expect(semver.compare('balenaOS 1.16.0', 'balenaOS 1.16.0')).to.equal(0);\n```\n\nshould correctly compare Balena formatted versions to Resin formatted versions.\n\n```js\nchai.expect(semver.compare('balenaOS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(1);\nchai.expect(semver.compare('balenaOS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(-1);\nchai.expect(semver.compare('balenaOS 1.16.0', 'Resin OS 1.16.0')).to.equal(0);\n```\n\nshould correctly compare Balena formatted versions with leading 0s.\n\n```js\nchai.expect(semver.compare('balenaOS v2.0.2+rev2', 'balenaOS v2.0.2+rev02')).to.equal(0);\nchai.expect(semver.compare('balenaOS v2.0.2+rev01', 'balenaOS v2.0.2+rev02')).to.equal(-1);\nchai.expect(semver.compare('balenaOS v2.0.02+rev2', 'balenaOS v2.0.2+rev1')).to.equal(1);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.compare('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(-1);\nchai.expect(semver.compare('Linux 14.04', 'A development version')).to.equal(1);\nchai.expect(semver.compare('Version B', 'Version A')).to.equal(1);\nchai.expect(semver.compare('Version A', 'Version A')).to.equal(0);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.compare('2.0.5', null)).to.equal(1);\nchai.expect(semver.compare(null, '1.16.0')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 1.16.0', null)).to.equal(1);\nchai.expect(semver.compare(null, 'Resin OS 1.16.0')).to.equal(-1);\nchai.expect(semver.compare('Linux 14.04', null)).to.equal(1);\nchai.expect(semver.compare(null, 'Linux 14.04')).to.equal(-1);\nchai.expect(semver.compare(null, null)).to.equal(0);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.compare('2.0.5', undefined)).to.equal(1);\nchai.expect(semver.compare(undefined, '1.16.0')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 1.16.0', undefined)).to.equal(1);\nchai.expect(semver.compare(undefined, 'Resin OS 1.16.0')).to.equal(-1);\nchai.expect(semver.compare('Linux 14.04', undefined)).to.equal(1);\nchai.expect(semver.compare(undefined, 'Linux 14.04')).to.equal(-1);\nchai.expect(semver.compare(undefined, undefined)).to.equal(0);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.compare('2.0.0+rev6', '2.0.0+rev3')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(1);\nchai.expect(semver.compare('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(1);\nchai.expect(semver.compare('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(-1);\nchai.expect(semver.compare('2.0.0+rev3', '2.0.0+rev3')).to.equal(0);\nchai.expect(semver.compare('2.0.0+rev1', '2.0.0+rev11')).to.equal(-1);\nchai.expect(semver.compare('2.0.0+rev2', '2.0.0+rev11')).to.equal(-1);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.compare('2.0.0', '2.0.0+dev')).to.equal(1);\nchai.expect(semver.compare('2.0.0', '2.0.0-dev')).to.equal(1);\nchai.expect(semver.compare('2.0.0', '2.0.0.dev')).to.equal(1);\nchai.expect(semver.compare('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(1);\nchai.expect(semver.compare('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(-1);\nchai.expect(semver.compare('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(0);\nchai.expect(semver.compare('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0.dev', '2.0.0')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(0);\n```\n\nshould correctly compare \"(dev)\" and \"(prod)\" versions without revisions.\n\n```js\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0 (dev)')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0 (dev)', 'Resin OS 2.0.0 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0-prod')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0.prod')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0', 'Resin OS 2.0.0+prod')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0 (dev)', 'Resin OS 2.0.0+prod')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0.dev', 'Resin OS 2.0.0+dev')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0.dev', 'Resin OS 2.0.0 (dev)')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0+dev', 'Resin OS 2.0.0 (dev)')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0.prod', 'Resin OS 2.0.0+prod')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0.prod', 'Resin OS 2.0.0 (prod)')).to.equal(0);\nchai.expect(semver.compare('Resin OS 2.0.0+prod', 'Resin OS 2.0.0 (prod)')).to.equal(0);\n```\n\nshould correctly compare \"(dev)\" and \"(prod)\" versions of the same revision.\n\n```js\nchai.expect(semver.compare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3 (dev)')).to.equal(1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3 (dev)', 'Resin OS 2.0.0+rev3 (prod)')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.prod')).to.equal(-1);\nchai.expect(semver.compare('Resin OS 2.0.0+rev3 (dev)', 'Resin OS 2.0.0+rev3+prod')).to.equal(1); // B is invalid\n```\n\n<a name=\"resin-semver-rcompare\"></a>\n\n<a name=\"rcompare\"></a>\n\n## rcompare(versionA, versionB) ⇒ <code>number</code>\nThe reverse of `.compare()`. Accepts string or null values and compares\nthem, returning a number indicating sort order. Values are parsed for valid semver\nstrings. Sorts an array of versions in descending order when passed to `Array.sort()`.\n\n**Kind**: global function  \n**Summary**: Compare order of versions in reverse  \n**Returns**: <code>number</code> - Returns `0` if `versionA == versionB`,\nor `-1` if `versionA` is greater, or `1` if `versionB` is greater.\nValid semver values are sorted before invalid semver values, and invalid semver values are\nsorted before null values.\nIf both values are non-null invalid semver values, then the values are compared alphabetically.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The first version to compare |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The second version to compare |\n\n**Example**  \nshould not throw when provided with a version.\n\n```js\nversions_1.versions.forEach(function (version) {\n    chai.expect(function () { return semver.rcompare(version, version); }).to.not.throw();\n});\n```\n\nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.rcompare('2.0.5', '1.16.0')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.5', '2.0.5')).to.equal(0);\nchai.expect(semver.rcompare('1.16.0', '2.0.5')).to.equal(1);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.rcompare('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(-1);\nchai.expect(semver.rcompare('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(1);\nchai.expect(semver.rcompare('1.16.0', 'Resin OS v1.16.0')).to.equal(0);\nchai.expect(semver.rcompare('Resin OS 1.16.0', '2.0.2')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', '1.16.0')).to.equal(0);\nchai.expect(semver.rcompare('Resin OS 2.0.2', '1.16.0')).to.equal(-1);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.rcompare('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(-1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', 'Resin OS 1.16.0')).to.equal(0);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.rcompare('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(1);\nchai.expect(semver.rcompare('Linux 14.04', 'A development version')).to.equal(-1);\nchai.expect(semver.rcompare('Version B', 'Version A')).to.equal(-1);\nchai.expect(semver.rcompare('Version A', 'Version A')).to.equal(0);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.rcompare('2.0.5', null)).to.equal(-1);\nchai.expect(semver.rcompare(null, '1.16.0')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', null)).to.equal(-1);\nchai.expect(semver.rcompare(null, 'Resin OS 1.16.0')).to.equal(1);\nchai.expect(semver.rcompare('Linux 14.04', null)).to.equal(-1);\nchai.expect(semver.rcompare(null, 'Linux 14.04')).to.equal(1);\nchai.expect(semver.rcompare(null, null)).to.equal(0);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.rcompare('2.0.5', undefined)).to.equal(-1);\nchai.expect(semver.rcompare(undefined, '1.16.0')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 1.16.0', undefined)).to.equal(-1);\nchai.expect(semver.rcompare(undefined, 'Resin OS 1.16.0')).to.equal(1);\nchai.expect(semver.rcompare('Linux 14.04', undefined)).to.equal(-1);\nchai.expect(semver.rcompare(undefined, 'Linux 14.04')).to.equal(1);\nchai.expect(semver.rcompare(undefined, undefined)).to.equal(0);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.rcompare('2.0.0+rev6', '2.0.0+rev3')).to.equal(-1);\nchai.expect(semver.rcompare('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(1);\nchai.expect(semver.rcompare('2.0.0+rev3', '2.0.0+rev3')).to.equal(0);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.rcompare('2.0.0', '2.0.0+dev')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0', '2.0.0-dev')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0', '2.0.0.dev')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(-1);\nchai.expect(semver.rcompare('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(1);\nchai.expect(semver.rcompare('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(0);\nchai.expect(semver.rcompare('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(-1);\nchai.expect(semver.rcompare('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(0);\nchai.expect(semver.rcompare('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(-1);\nchai.expect(semver.rcompare('Resin OS 2.0.0.dev', '2.0.0')).to.equal(1);\nchai.expect(semver.rcompare('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(0);\n```\n\n<a name=\"resin-semver-major\"></a>\n\n<a name=\"major\"></a>\n\n## major(version) ⇒ <code>number</code> \\| <code>null</code>\nReturns the major version number in a semver string.\nIf the version is not a valid semver string, or a valid semver string cannot be\nfound, it returns null.\n\n**Kind**: global function  \n**Summary**: Return the major version number  \n**Returns**: <code>number</code> \\| <code>null</code> - - The major version number  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefine</code> | The version string to evaluate |\n\n**Example**  \nshould correctly match valid semver versions.\n\n```js\nchai.expect(semver.major('4.5.1')).to.equal(4);\n```\n\nshould correctly match resinOS prefixed versions.\n\n```js\nchai.expect(semver.major('Resin OS v2.0.5')).to.equal(2);\nchai.expect(semver.major('Resin OS 2.0.2+rev2')).to.equal(2);\nchai.expect(semver.major('Resin OS 2.0.0.rev1 (prod)')).to.equal(2);\nchai.expect(semver.major('Resin OS 2.0.0-rc5.rev1')).to.equal(2);\n```\n\nshould return null when version is `null`.\n\n```js\nchai.expect(semver.major(null)).to.equal(null);\n```\n\nshould return null when version is `undefined`.\n\n```js\nchai.expect(semver.major(undefined)).to.equal(null);\n```\n\nshould return null when the version contains no valid semver value.\n\n```js\nchai.expect(semver.major('My dev version')).to.equal(null);\nchai.expect(semver.major('Linux 14.04')).to.equal(null);\nchai.expect(semver.major('Software version 42.3.20170726.72bbcf8')).to.equal(null);\n```\n\n<a name=\"resin-semver-prerelease\"></a>\n\n<a name=\"prerelease\"></a>\n\n## prerelease(version) ⇒ <code>Array.&lt;(string\\|number)&gt;</code> \\| <code>null</code>\nReturns an array of prerelease components, or null if none exist\n\n**Kind**: global function  \n**Summary**: Return prerelease components  \n**Returns**: <code>Array.&lt;(string\\|number)&gt;</code> \\| <code>null</code> - - An array of prerelease component, or null if none exist  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to evaluate |\n\n**Example**  \nshould return an array of prerelease components when provided a semver string.\n\n```js\nchai.expect(semver.prerelease('1.16.0-alpha.1')).to.eql(['alpha', 1]);\n```\n\nshould return null when provided with a semver string that has no prerelease segment.\n\n```js\nchai.expect(semver.prerelease('1.16.0')).to.eql(null);\n```\n\nshould return an array of prerelease components when provided a resinOS prefixed version.\n\n```js\nchai.expect(semver.prerelease('Resin OS 2.0.0-rc5.rev1')).to.eql(['rc5', 'rev1']);\n```\n\nshould return null when provided a resinOS prefixed version that has no prerelease segment.\n\n```js\nchai.expect(semver.prerelease('Resin OS 2.0.0')).to.equal(null);\n```\n\nshould return null when provided with an invalid version.\n\n```js\nchai.expect(semver.prerelease('My dev version')).to.equal(null);\nchai.expect(semver.prerelease('Linux 14.04')).to.equal(null);\nchai.expect(semver.prerelease('Software version 42.3.20170726.72bbcf8')).to.equal(null);\n```\n\nshould return null when provided with a null value.\n\n```js\nchai.expect(semver.prerelease(null)).to.equal(null);\n```\n\nshould return null when provided with an undefined value.\n\n```js\nchai.expect(semver.prerelease(undefined)).to.equal(null);\n```\n\n<a name=\"resin-semver-gte\"></a>\n\n<a name=\"gte\"></a>\n\n## gte(versionA, versionB) ⇒ <code>boolean</code>\nReturns true if versionA is greater than or equal to versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.\n\n**Kind**: global function  \n**Summary**: Check if a version is greater than or equal to another  \n**Returns**: <code>boolean</code> - - true if versionA is greater than or equal to versionB, otherwise false.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare against |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare to versionA |\n\n**Example**  \nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.gte('2.0.5', '1.16.0')).to.equal(true);\nchai.expect(semver.gte('1.16.0', '2.0.5')).to.equal(false);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.gte('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.gte('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.gte('Resin OS 1.16.0', '2.0.2')).to.equal(false);\nchai.expect(semver.gte('Resin OS 1.16.0', '1.16.0')).to.equal(true);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.gte('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(true);\nchai.expect(semver.gte('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(false);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.gte('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.gte('Linux 14.04', 'A development version')).to.equal(true);\nchai.expect(semver.gte('Version B', 'Version A')).to.equal(true);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.gte('2.0.5', null)).to.equal(true);\nchai.expect(semver.gte(null, '1.16.0')).to.equal(false);\nchai.expect(semver.gte('Resin OS 1.16.0', null)).to.equal(true);\nchai.expect(semver.gte(null, 'Resin OS 1.16.0')).to.equal(false);\nchai.expect(semver.gte('Linux 14.04', null)).to.equal(true);\nchai.expect(semver.gte(null, 'Linux 14.04')).to.equal(false);\nchai.expect(semver.gte(null, null)).to.equal(true);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.gte('2.0.5', undefined)).to.equal(true);\nchai.expect(semver.gte(undefined, '1.16.0')).to.equal(false);\nchai.expect(semver.gte('Resin OS 1.16.0', undefined)).to.equal(true);\nchai.expect(semver.gte(undefined, 'Resin OS 1.16.0')).to.equal(false);\nchai.expect(semver.gte('Linux 14.04', undefined)).to.equal(true);\nchai.expect(semver.gte(undefined, 'Linux 14.04')).to.equal(false);\nchai.expect(semver.gte(undefined, undefined)).to.equal(true);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.gte('2.0.0+rev6', '2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gte('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gte('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gte('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(false);\nchai.expect(semver.gte('2.0.0+rev3', '2.0.0+rev3')).to.equal(true);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.gte('2.0.0', '2.0.0+dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0', '2.0.0-dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0', '2.0.0.dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(false);\nchai.expect(semver.gte('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(true);\nchai.expect(semver.gte('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(true);\nchai.expect(semver.gte('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.gte('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(true);\nchai.expect(semver.gte('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(true);\nchai.expect(semver.gte('Resin OS 2.0.0.dev', '2.0.0')).to.equal(false);\nchai.expect(semver.gte('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(true);\n```\n\n<a name=\"resin-semver-gt\"></a>\n\n<a name=\"gt\"></a>\n\n## gt(versionA, versionB) ⇒ <code>boolean</code>\nReturns true if versionA is greater than versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.\n\n**Kind**: global function  \n**Summary**: Check if a version is greater than another  \n**Returns**: <code>boolean</code> - - true if versionA is greater than versionB, otherwise false.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare against |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare to versionA |\n\n**Example**  \nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.gt('2.0.5', '1.16.0')).to.equal(true);\nchai.expect(semver.gt('1.16.0', '2.0.5')).to.equal(false);\nchai.expect(semver.gt('1.16.0', '1.16.0')).to.equal(false);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.gt('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.gt('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', '2.0.2')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', '1.16.0')).to.equal(false);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.gt('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(true);\nchai.expect(semver.gt('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', 'Resin OS 1.16.0')).to.equal(false);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.gt('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.gt('Linux 14.04', 'A development version')).to.equal(true);\nchai.expect(semver.gt('Version B', 'Version A')).to.equal(true);\nchai.expect(semver.gt('Version A', 'Version A')).to.equal(false);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.gt('2.0.5', null)).to.equal(true);\nchai.expect(semver.gt(null, '1.16.0')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', null)).to.equal(true);\nchai.expect(semver.gt(null, 'Resin OS 1.16.0')).to.equal(false);\nchai.expect(semver.gt('Linux 14.04', null)).to.equal(true);\nchai.expect(semver.gt(null, 'Linux 14.04')).to.equal(false);\nchai.expect(semver.gt(null, null)).to.equal(false);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.gt('2.0.5', undefined)).to.equal(true);\nchai.expect(semver.gt(undefined, '1.16.0')).to.equal(false);\nchai.expect(semver.gt('Resin OS 1.16.0', undefined)).to.equal(true);\nchai.expect(semver.gt(undefined, 'Resin OS 1.16.0')).to.equal(false);\nchai.expect(semver.gt('Linux 14.04', undefined)).to.equal(true);\nchai.expect(semver.gt(undefined, 'Linux 14.04')).to.equal(false);\nchai.expect(semver.gt(undefined, undefined)).to.equal(false);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.gt('2.0.0+rev6', '2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gt('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gt('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.gt('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(false);\nchai.expect(semver.gt('2.0.0+rev3', '2.0.0+rev3')).to.equal(false);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.gt('2.0.0', '2.0.0+dev')).to.equal(true);\nchai.expect(semver.gt('2.0.0', '2.0.0-dev')).to.equal(true);\nchai.expect(semver.gt('2.0.0', '2.0.0.dev')).to.equal(true);\nchai.expect(semver.gt('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(true);\nchai.expect(semver.gt('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(false);\nchai.expect(semver.gt('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(false);\nchai.expect(semver.gt('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(true);\nchai.expect(semver.gt('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.gt('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(false);\nchai.expect(semver.gt('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(true);\nchai.expect(semver.gt('Resin OS 2.0.0.dev', '2.0.0')).to.equal(false);\nchai.expect(semver.gt('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(false);\n```\n\n<a name=\"resin-semver-lte\"></a>\n\n<a name=\"lte\"></a>\n\n## lte(versionA, versionB) ⇒ <code>boolean</code>\nReturns true if versionA is less than or equal to versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.\n\n**Kind**: global function  \n**Summary**: Check if a version is less than or equal to another  \n**Returns**: <code>boolean</code> - - true if versionA is greater than or equal to versionB, otherwise false.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare against |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare to versionA |\n\n**Example**  \nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.lte('2.0.5', '1.16.0')).to.equal(false);\nchai.expect(semver.lte('1.16.0', '2.0.5')).to.equal(true);\nchai.expect(semver.lte('1.16.0', '1.16.0')).to.equal(true);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.lte('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.lte('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.lte('Resin OS 1.16.0', '2.0.2')).to.equal(true);\nchai.expect(semver.lte('Resin OS 1.16.0', '1.16.0')).to.equal(true);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.lte('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(false);\nchai.expect(semver.lte('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(true);\nchai.expect(semver.lte('Resin OS 1.16.0', 'Resin OS 1.16.0')).to.equal(true);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.lte('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.lte('Linux 14.04', 'A development version')).to.equal(false);\nchai.expect(semver.lte('Version B', 'Version A')).to.equal(false);\nchai.expect(semver.lte('Version A', 'Version A')).to.equal(true);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.lte('2.0.5', null)).to.equal(false);\nchai.expect(semver.lte(null, '1.16.0')).to.equal(true);\nchai.expect(semver.lte('Resin OS 1.16.0', null)).to.equal(false);\nchai.expect(semver.lte(null, 'Resin OS 1.16.0')).to.equal(true);\nchai.expect(semver.lte('Linux 14.04', null)).to.equal(false);\nchai.expect(semver.lte(null, 'Linux 14.04')).to.equal(true);\nchai.expect(semver.lte(null, null)).to.equal(true);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.lte('2.0.5', undefined)).to.equal(false);\nchai.expect(semver.lte(undefined, '1.16.0')).to.equal(true);\nchai.expect(semver.lte('Resin OS 1.16.0', undefined)).to.equal(false);\nchai.expect(semver.lte(undefined, 'Resin OS 1.16.0')).to.equal(true);\nchai.expect(semver.lte('Linux 14.04', undefined)).to.equal(false);\nchai.expect(semver.lte(undefined, 'Linux 14.04')).to.equal(true);\nchai.expect(semver.lte(undefined, undefined)).to.equal(true);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.lte('2.0.0+rev6', '2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lte('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lte('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lte('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(true);\nchai.expect(semver.lte('2.0.0+rev3', '2.0.0+rev3')).to.equal(true);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.lte('2.0.0', '2.0.0+dev')).to.equal(false);\nchai.expect(semver.lte('2.0.0', '2.0.0-dev')).to.equal(false);\nchai.expect(semver.lte('2.0.0', '2.0.0.dev')).to.equal(false);\nchai.expect(semver.lte('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(false);\nchai.expect(semver.lte('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(true);\nchai.expect(semver.lte('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(true);\nchai.expect(semver.lte('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(false);\nchai.expect(semver.lte('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.lte('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(true);\nchai.expect(semver.lte('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(false);\nchai.expect(semver.lte('Resin OS 2.0.0.dev', '2.0.0')).to.equal(true);\nchai.expect(semver.lte('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(true);\n```\n\n<a name=\"resin-semver-lt\"></a>\n\n<a name=\"lt\"></a>\n\n## lt(versionA, versionB) ⇒ <code>boolean</code>\nReturns true if versionA is less than versionB.\nValid semver versions are always weighted above non semver strings.\nNon-semver strings are compared alphabetically.\n\n**Kind**: global function  \n**Summary**: Check if a version is less than another  \n**Returns**: <code>boolean</code> - - true if versionA is less than versionB, otherwise false.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versionA | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare against |\n| versionB | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version string to compare to versionA |\n\n**Example**  \nshould correctly compare valid semver values.\n\n```js\nchai.expect(semver.lt('2.0.5', '1.16.0')).to.equal(false);\nchai.expect(semver.lt('1.16.0', '2.0.5')).to.equal(true);\nchai.expect(semver.lt('1.16.0', '1.16.0')).to.equal(false);\n```\n\nshould correctly compare valid semver values to Resin formatted versions.\n\n```js\nchai.expect(semver.lt('2.0.5', 'Resin OS v2.0.2+rev2')).to.equal(false);\nchai.expect(semver.lt('1.16.0', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', '2.0.2')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', '1.16.0')).to.equal(false);\n```\n\nshould correctly compare Resin formatted versions.\n\n```js\nchai.expect(semver.lt('Resin OS 2.0.5', 'Resin OS 2.0.2+rev2')).to.equal(false);\nchai.expect(semver.lt('Resin OS 1.16.0', 'Resin OS 2.0.2 (prod)')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', 'Resin OS 1.16.0')).to.equal(false);\n```\n\nshould correctly compare invalid semver values.\n\n```js\nchai.expect(semver.lt('Linux 14.04', 'Resin OS v2.0.2+rev2')).to.equal(true);\nchai.expect(semver.lt('Linux 14.04', 'A development version')).to.equal(false);\nchai.expect(semver.lt('Version B', 'Version A')).to.equal(false);\nchai.expect(semver.lt('Version A', 'Version A')).to.equal(false);\n```\n\nshould correctly compare null values.\n\n```js\nchai.expect(semver.lt('2.0.5', null)).to.equal(false);\nchai.expect(semver.lt(null, '1.16.0')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', null)).to.equal(false);\nchai.expect(semver.lt(null, 'Resin OS 1.16.0')).to.equal(true);\nchai.expect(semver.lt('Linux 14.04', null)).to.equal(false);\nchai.expect(semver.lt(null, 'Linux 14.04')).to.equal(true);\nchai.expect(semver.lt(null, null)).to.equal(false);\n```\n\nshould correctly compare undefined values.\n\n```js\nchai.expect(semver.lt('2.0.5', undefined)).to.equal(false);\nchai.expect(semver.lt(undefined, '1.16.0')).to.equal(true);\nchai.expect(semver.lt('Resin OS 1.16.0', undefined)).to.equal(false);\nchai.expect(semver.lt(undefined, 'Resin OS 1.16.0')).to.equal(true);\nchai.expect(semver.lt('Linux 14.04', undefined)).to.equal(false);\nchai.expect(semver.lt(undefined, 'Linux 14.04')).to.equal(true);\nchai.expect(semver.lt(undefined, undefined)).to.equal(false);\n```\n\nshould correctly compare \"rev\" values.\n\n```js\nchai.expect(semver.lt('2.0.0+rev6', '2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lt('Resin OS 2.0.0+rev4', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lt('2.0.0+rev6', 'Resin OS 2.0.0+rev3')).to.equal(false);\nchai.expect(semver.lt('2.0.0+rev2', 'Resin OS 2.0.0+rev5')).to.equal(true);\nchai.expect(semver.lt('2.0.0+rev3', '2.0.0+rev3')).to.equal(false);\n```\n\nshould correctly compare \".dev\" versions.\n\n```js\nchai.expect(semver.lt('2.0.0', '2.0.0+dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0', '2.0.0-dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0', '2.0.0.dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0+rev6', '2.0.0+rev6.dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0+rev6.dev', '2.0.0+rev6')).to.equal(true);\nchai.expect(semver.lt('2.0.0+rev6.dev', '2.0.0+rev6.dev')).to.equal(false);\nchai.expect(semver.lt('Resin OS 2.0.0+rev3', 'Resin OS 2.0.0+rev3.dev')).to.equal(false);\nchai.expect(semver.lt('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3')).to.equal(true);\nchai.expect(semver.lt('Resin OS 2.0.0+rev3.dev', 'Resin OS 2.0.0+rev3.dev')).to.equal(false);\nchai.expect(semver.lt('2.0.0', 'Resin OS 2.0.0.dev')).to.equal(false);\nchai.expect(semver.lt('Resin OS 2.0.0.dev', '2.0.0')).to.equal(true);\nchai.expect(semver.lt('Resin OS 2.0.0.dev', '2.0.0.dev')).to.equal(false);\n```\n\n<a name=\"resin-semver-satisfies\"></a>\n\n<a name=\"satisfies\"></a>\n\n## satisfies(version, range) ⇒ <code>boolean</code>\nReturn true if the parsed version satisfies the range.\nThis method will always return false if the provided version doesn't contain a valid semver string.\n\n**Kind**: global function  \n**Summary**: Check if a version satisfies a range  \n**Returns**: <code>boolean</code> - - True if the parsed version satisfies the range, false otherwise  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | The version to evaluate |\n| range | <code>string</code> | A semver range string, see the [node-semver](https://github.com/npm/node-semver#ranges) docs for details |\n\n**Example**  \nshould correctly evaluate valid semver values.\n\n```js\nchai.expect(semver.satisfies('2.0.5', '^2.0.0')).to.equal(true);\nchai.expect(semver.satisfies('1.16.0', '^2.0.0')).to.equal(false);\n```\n\nshould correctly evaluate Resin formatted versions.\n\n```js\nchai.expect(semver.satisfies('Resin OS 2.0.2+rev2', '^2.0.0')).to.equal(true);\nchai.expect(semver.satisfies('Resin OS 2.0.2 (prod)', '^2.0.0')).to.equal(true);\nchai.expect(semver.satisfies('Resin OS 1.16.0', '^2.0.0')).to.equal(false);\n```\n\nshould always return false when provided with an invalid semver value.\n\n```js\nchai.expect(semver.satisfies('Linux 14.04', '^2.0.0')).to.equal(false);\nchai.expect(semver.satisfies('A development version', '^2.0.0')).to.equal(false);\nchai.expect(semver.satisfies('Version A', '^2.0.0')).to.equal(false);\nchai.expect(semver.satisfies('Linux 14.04', '*')).to.equal(false);\nchai.expect(semver.satisfies('Linux 14.04', '< 1.0.0')).to.equal(false);\n```\n\nshould correctly evaluate null values.\n\n```js\nchai.expect(semver.satisfies(null, '^2.0.0')).to.equal(false);\n```\n\nshould correctly evaluate undefined values.\n\n```js\nchai.expect(semver.satisfies(undefined, '^2.0.0')).to.equal(false);\n```\n\n<a name=\"resin-semver-maxsatisfying\"></a>\n\n<a name=\"maxSatisfying\"></a>\n\n## maxSatisfying(versions, range) ⇒ <code>string</code> \\| <code>null</code>\nReturn the highest version in the list that satisfies the range, or null if none of them do.\nIf multiple versions are found that have equally high values, the last one in the array is returned.\nNote that only version that contain a valid semver string can satisfy a range.\n\n**Kind**: global function  \n**Summary**: Return the highest version in the list that satisfies the range  \n**Returns**: <code>string</code> \\| <code>null</code> - - The highest matching version string, or null.  \n**Access**: public  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| versions | <code>Array.&lt;(string\\|null\\|undefined)&gt;</code> | An array of versions to evaluate |\n| range | <code>string</code> | A semver range string, see the [node-semver](https://github.com/npm/node-semver#ranges) docs for details |\n\n**Example**  \nshould return the correct version.\n\n```js\nchai.expect(semver.maxSatisfying(versions_1.versions, '1.1.*')).to.equal('Resin OS 1.1.4');\nchai.expect(semver.maxSatisfying(versions_1.versions, '^2.0.0')).to.equal('Resin OS 2.14.0');\nchai.expect(semver.maxSatisfying(versions_1.versions, '< 1.0.0')).to.equal(null);\n```\n\nshould return the first version found if multiple versions have equally high values.\n\n```js\nchai.expect(semver.maxSatisfying(['1.0.0', 'Resin OS 1.1.4', '1.1.4'], '1.1.*')).to.equal('Resin OS 1.1.4');\n```\n\nshould normalize versions used in range parameter.\n\n```js\nchai.expect(semver.maxSatisfying(versions_1.versions, '2.0.0.rev1')).to.equal('Resin OS 2.0.0+rev11');\nchai.expect(semver.maxSatisfying(versions_1.versions, '^ Resin OS 2.0.0 (prod)')).to.equal('Resin OS 2.14.0');\nchai.expect(semver.maxSatisfying(versions_1.versions, '< Resin OS v1.0.0')).to.equal(null);\nchai.expect(semver.maxSatisfying(versions_1.versions, 'Resin OS v1.1.*')).to.equal('Resin OS 1.1.4');\n```\n\n<a name=\"resin-semver-parse\"></a>\n\n<a name=\"parse\"></a>\n\n## parse(version) ⇒ <code>SemverObject</code> \\| <code>null</code>\nReturns an object representing the semver version. Returns null\nif a valid semver string can't be found.\n\n**Kind**: global function  \n**Summary**: Parse a version into an object  \n**Returns**: <code>SemverObject</code> \\| <code>null</code> - - An object representing the version string, or\nnull if a valid semver string could not be found  \n**Access**: public  \n\n| Param | Type |\n| --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | \n\n**Example**  \nshould correctly parse valid semver values.\n\n```js\nchai.expect(semver.parse('2.0.5')).to.deep.include({\n    raw: '2.0.5',\n    major: 2,\n    minor: 0,\n    patch: 5,\n    version: '2.0.5',\n    prerelease: [],\n    build: [],\n});\n```\n\nshould correctly parse Resin formatted versions.\n\n```js\nchai.expect(semver.parse('Resin OS v2.0.2+rev2')).to.deep.include({\n    raw: 'Resin OS v2.0.2+rev2',\n    major: 2,\n    minor: 0,\n    patch: 2,\n    version: '2.0.2',\n    prerelease: [],\n    build: ['rev2'],\n});\nchai.expect(semver.parse('Resin OS v2.0.2 (prod)')).to.deep.include({\n    raw: 'Resin OS v2.0.2 (prod)',\n    major: 2,\n    minor: 0,\n    patch: 2,\n    version: '2.0.2',\n    prerelease: [],\n    build: ['prod'],\n});\nchai.expect(semver.parse('Resin OS v2.0.2.prod')).to.deep.include({\n    raw: 'Resin OS v2.0.2.prod',\n    major: 2,\n    minor: 0,\n    patch: 2,\n    version: '2.0.2',\n    prerelease: [],\n    build: ['prod'],\n});\nchai.expect(semver.parse('Resin OS 2.0.0-rc5.rev1')).to.deep.include({\n    raw: 'Resin OS 2.0.0-rc5.rev1',\n    major: 2,\n    minor: 0,\n    patch: 0,\n    version: '2.0.0-rc5.rev1',\n    prerelease: ['rc5', 'rev1'],\n    build: [],\n});\nchai.expect(semver.parse('Resin OS 2.3.0+rev1.prod')).to.deep.include({\n    raw: 'Resin OS 2.3.0+rev1.prod',\n    major: 2,\n    minor: 3,\n    patch: 0,\n    version: '2.3.0',\n    prerelease: [],\n    build: ['rev1', 'prod'],\n});\nchai.expect(semver.parse('Resin OS v2.3.0-a.b.c (prod)')).to.deep.include({\n    raw: 'Resin OS v2.3.0-a.b.c (prod)',\n    major: 2,\n    minor: 3,\n    patch: 0,\n    version: '2.3.0-a.b.c',\n    prerelease: ['a', 'b', 'c'],\n    build: ['prod'],\n});\nchai.expect(semver.parse('Resin OS 2.3.0-a.b.c+d.e.f (prod)')).to.deep.include({\n    raw: 'Resin OS 2.3.0-a.b.c+d.e.f (prod)',\n    major: 2,\n    minor: 3,\n    patch: 0,\n    version: '2.3.0-a.b.c',\n    prerelease: ['a', 'b', 'c'],\n    build: ['d', 'e', 'f', 'prod'],\n});\nchai.expect(semver.parse('Resin OS 2.3.0+a.b.c (prod)')).to.deep.include({\n    raw: 'Resin OS 2.3.0+a.b.c (prod)',\n    major: 2,\n    minor: 3,\n    patch: 0,\n    version: '2.3.0',\n    prerelease: [],\n    build: ['a', 'b', 'c', 'prod'],\n});\n```\n\nshould correctly parse invalid semver values.\n\n```js\nchai.expect(semver.parse('Linux 14.04')).to.equal(null);\nchai.expect(semver.parse('A development version')).to.equal(null);\nchai.expect(semver.parse('Version A')).to.equal(null);\n```\n\nshould correctly parse null values.\n\n```js\nchai.expect(semver.parse(null)).to.equal(null);\n```\n\nshould correctly parse undefined values.\n\n```js\nchai.expect(semver.parse(undefined)).to.equal(null);\n```\n\n<a name=\"resin-semver-valid\"></a>\n\n<a name=\"valid\"></a>\n\n## valid(version) ⇒ <code>string</code> \\| <code>null</code>\nReturn the parsed version, or null if it's not valid.\n\n**Kind**: global function  \n**Summary**: Check if a version string is valid  \n**Returns**: <code>string</code> \\| <code>null</code> - - The parsed version string, or\nnull if a valid semver string could not be found  \n**Access**: public  \n\n| Param | Type |\n| --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | \n\n**Example**  \nshould return null for invalid semver values.\n\n```js\nchai.expect(semver.valid(null)).to.equal(null);\nchai.expect(semver.valid(undefined)).to.equal(null);\nchai.expect(semver.valid('')).to.equal(null);\nchai.expect(semver.valid('foobar')).to.equal(null);\nchai.expect(semver.valid('12345')).to.equal(null);\nchai.expect(semver.valid('1.2.3.4.5')).to.equal(null);\n```\n\nshould correctly parse valid values.\n\n```js\nchai.expect(semver.valid('Resin OS 1.0.0-pre')).to.equal('1.0.0-pre');\nchai.expect(semver.valid('Resin OS 1.0.5 (fido)')).to.equal('1.0.5');\nchai.expect(semver.valid('Resin OS 2.0.0-beta.8')).to.equal('2.0.0-beta.8');\nchai.expect(semver.valid('Resin OS 2.0.0-beta10.rev1')).to.equal('2.0.0-beta10.rev1');\nchai.expect(semver.valid('Resin OS 2.0.0+rev3')).to.equal('2.0.0');\nchai.expect(semver.valid('Resin OS 2.0.0.rev1 (prod)')).to.equal('2.0.0');\nchai.expect(semver.valid('Resin OS 2.0.0+rev4 (dev)')).to.equal('2.0.0');\nchai.expect(semver.valid('2.0.6+rev3.dev')).to.equal('2.0.6');\n```\n\n<a name=\"resin-semver-inc\"></a>\n\n<a name=\"inc\"></a>\n\n## inc(version, release) ⇒ <code>string</code> \\| <code>null</code>\nReturn the version incremented by the release type\n(major, premajor, minor, preminor, patch, prepatch, or prerelease), or null\nif it's not valid.\n\n**Kind**: global function  \n**Summary**: Return an incremented version  \n**Returns**: <code>string</code> \\| <code>null</code> - - The incremented version string, or\nnull if a valid semver string could not be found  \n**Access**: public  \n\n| Param | Type |\n| --- | --- |\n| version | <code>string</code> \\| <code>null</code> \\| <code>undefined</code> | \n| release | <code>string</code> | \n\n**Example**  \nshould return null for invalid semver values.\n\n```js\nchai.expect(semver.inc(null, 'major')).to.equal(null);\nchai.expect(semver.inc(undefined, 'major')).to.equal(null);\nchai.expect(semver.inc('', 'major')).to.equal(null);\nchai.expect(semver.inc('foobar', 'major')).to.equal(null);\nchai.expect(semver.inc('12345', 'major')).to.equal(null);\nchai.expect(semver.inc('1.2.3.4.5', 'major')).to.equal(null);\n```\n\nshould correctly increment valid values by a 'premajor' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'premajor')).to.equal('2.0.0-0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'premajor')).to.equal('2.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'premajor')).to.equal('3.0.0-0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'premajor')).to.equal('3.0.0-0');\n```\n\nshould correctly increment valid values by a 'preminor' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'preminor')).to.equal('1.1.0-0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'preminor')).to.equal('1.1.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'preminor')).to.equal('2.1.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'preminor')).to.equal('2.1.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'preminor')).to.equal('2.1.0-0');\nchai.expect(semver.inc('Resin OS 2.1.0.rev1 (prod)', 'preminor')).to.equal('2.2.0-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'preminor')).to.equal('2.1.0-0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'preminor')).to.equal('2.1.0-0');\n```\n\nshould correctly increment valid values by a 'prepatch' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'prepatch')).to.equal('1.0.1-0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'prepatch')).to.equal('1.0.6-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'prepatch')).to.equal('2.0.1-0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'prepatch')).to.equal('2.0.7-0');\n```\n\nshould correctly increment valid values by a 'prerelease' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'prerelease')).to.equal('1.0.0-pre.0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'prerelease')).to.equal('1.0.6-0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'prerelease')).to.equal('2.0.0-beta.9');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'prerelease')).to.equal('2.0.0-beta10.rev1.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'prerelease')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'prerelease')).to.equal('2.0.1-0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'prerelease')).to.equal('2.0.1-0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'prerelease')).to.equal('2.0.7-0');\n```\n\nshould correctly increment valid values by a 'major' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'major')).to.equal('1.0.0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'major')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'major')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'major')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'major')).to.equal('3.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'major')).to.equal('3.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'major')).to.equal('3.0.0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'major')).to.equal('3.0.0');\n```\n\nshould correctly increment valid values by a 'minor' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'minor')).to.equal('1.0.0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'minor')).to.equal('1.1.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'minor')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'minor')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'minor')).to.equal('2.1.0');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'minor')).to.equal('2.1.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'minor')).to.equal('2.1.0');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'minor')).to.equal('2.1.0');\n```\n\nshould correctly increment valid values by a 'patch' release.\n\n```js\nchai.expect(semver.inc('Resin OS 1.0.0-pre', 'patch')).to.equal('1.0.0');\nchai.expect(semver.inc('Resin OS 1.0.5 (fido)', 'patch')).to.equal('1.0.6');\nchai.expect(semver.inc('Resin OS 2.0.0-beta.8', 'patch')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0-beta10.rev1', 'patch')).to.equal('2.0.0');\nchai.expect(semver.inc('Resin OS 2.0.0+rev3', 'patch')).to.equal('2.0.1');\nchai.expect(semver.inc('Resin OS 2.0.0.rev1 (prod)', 'patch')).to.equal('2.0.1');\nchai.expect(semver.inc('Resin OS 2.0.0+rev4 (dev)', 'patch')).to.equal('2.0.1');\nchai.expect(semver.inc('2.0.6+rev3.dev', 'patch')).to.equal('2.0.7');\n```\n\n\n\n\n","maintainers":[{"email":"accounts+npm@balena.io","name":"balena.io"}],"time":{"modified":"2022-06-26T11:49:44.742Z","created":"2017-08-01T13:50:09.129Z","0.6.0":"2017-08-01T13:50:09.129Z","0.6.1":"2017-08-01T15:53:43.887Z","0.8.0":"2017-08-07T09:46:39.025Z","0.9.0":"2017-08-16T09:02:17.027Z","0.9.1":"2017-08-18T09:45:47.348Z","0.9.2":"2017-08-18T10:47:35.902Z","0.10.0":"2017-09-12T12:30:44.525Z","0.12.0":"2017-09-13T08:52:02.186Z","0.12.1":"2017-09-14T12:55:28.778Z","1.0.0":"2017-09-14T15:32:04.760Z","1.0.1":"2017-09-14T15:38:15.215Z","1.1.0":"2017-09-14T15:47:41.427Z","1.1.1":"2017-09-14T16:03:41.247Z","1.2.0":"2017-09-15T15:29:23.479Z","1.2.1":"2017-10-06T09:37:19.482Z","1.2.2":"2018-02-16T10:06:55.410Z","1.3.0-balena-aa6e151197858e1ca22df0987850db324ff672b7":"2018-09-14T11:25:47.884Z","1.3.0-balena-ceeaf7100b2dffa3ad42867599a10dc5f1ea5706":"2018-09-18T12:01:16.293Z","1.3.0":"2018-09-18T12:11:29.537Z","1.4.0-balenaos-fc88a50891d2cd949592e2fbd4ee0b112a26de38":"2018-10-17T15:44:48.141Z","1.4.0":"2018-10-18T06:39:56.361Z","1.4.1-sync-0cd30ce11fc43bfc476b00cc82fe69fb7ac4103f":"2019-01-24T17:18:21.571Z","1.4.1":"2019-01-24T18:08:40.786Z","1.5.0-lte-a6de0135c5deebc3119a65a9eebdf28b90fc5ad0":"2019-01-24T18:12:15.967Z","1.5.0":"2019-01-25T16:19:08.557Z","1.5.1-71-lodash-imports-4dc97c051bb3dcb848a49e7bc276a675f142a4c1":"2019-03-05T12:18:41.479Z","1.5.1":"2019-03-05T13:15:14.043Z","1.6.0-accept-leading-zeros-9d9e60eab4db423fe62ef2640e9e2ed18205fc4d":"2019-04-29T08:50:50.342Z","1.6.0-accept-leading-zeros-a43104e9f03d78dc92a70def977d40f5cdb49398":"2019-04-29T11:04:31.575Z","1.6.0-accept-leading-zeros-540e5b757b5d8e47e70aea0d2f7025297e37bbab":"2019-04-29T11:12:09.858Z","1.6.0":"2019-04-29T13:43:29.819Z"},"author":{"name":"Lucian Buzzo","email":"lucian@resin.io"},"license":"Apache-2.0","readmeFilename":"README.md","homepage":"https://github.com/resin-io-modules/resin-semver","keywords":["resin","resin.io","semver"],"repository":{"type":"git","url":"git+https://github.com/resin-io-modules/resin-semver.git"},"bugs":{"url":"https://github.com/resin-io-modules/resin-semver/issues"}}