@betternpm/semver v1.0.0
๐ List of Contest
Install
NPM
npm install @betternpm/semverPNPM
pnpm add @betternpm/semverYarn
yarn add @betternpm/semverTLDR (Only Most Important!)
Functions
| Name | Description |
|---|---|
| parseSemVer | Parse and validate into semver object |
| compareSemver | Compare versions and return result 1 \| 0 \| -1 |
| satisfies | Check that version pass range ex >=1.0.0 \|\| 0.5.0 |
| increase | Increase semver major/minor/patch/prerelease/buildmetadata/premajor/preminor/premajor |
| difference | Show most important differenceerence between versions |
| minVersion | Show minimum version which pass range. |
| simplifyRange | Simplify Range for inputed versions |
Classes
| Name | Description |
|---|---|
| SemVer | Represents a class SemVer version with methods. |
Types
| Name | Description |
|---|---|
| TReleases | Represents a release types. |
Variables
| Name | Description |
|---|---|
| RELEASE_TYPES | Represents a release type as Array. |
Table of Compatibility
Table of compatibility of functionalities with the official list of exports from the npm package semver with day of
commit.
!IMPORTANT
There you not gonna find all@betternpm/semverpackage functions!
Status
| Emoji | Meaning |
|---|---|
| โ | Completed |
| โธ๏ธ | Paused |
| ๐ง | exist/you can use differenceerent function / no alias |
| โ | Aborted |
| ๐ ๏ธ | In Progress |
| ๐ค | Not Yet Started |
| โน๏ธ | Additional Comment |
Table
| Export | Progress Status |
|---|---|
| parse | โ ๐ง parseSemVer |
| valid | โ ๐ง parseSemVer |
| clean | ๐ง SemVer.format |
| inc | ๐ง increase |
| difference | โ |
| major | โ๐ง parseSemVer |
| minor | โ๐ง parseSemVer |
| patch | โ๐ง parseSemVer |
| prerelease | โ๐ง parseSemVer |
| compare | โ |
| rcompare | โ๐ง compareSemver) |
| compareLoose | โ๐ง compareSemver) |
| compareBuild | โ |
| sort | โ โน๏ธ You can do it with sort algo using compareSemver |
| rsort | โ |
| gt | โ๐ง compareSemver |
| lt | โ๐ง compareSemver |
| eq | โ๐ง compareSemver |
| neq | โ๐ง compareSemver |
| gte | โ๐ง compareSemver |
| lte | โ๐ง compareSemver |
| cmp | โ๐ง compareSemver |
| coerce | โ๐ง parseSemVer |
| Comparator | โ |
| Range | โ |
| satisfies | โ |
| toComparators | โ |
| maxSatisfying | โโน๏ธ You can do this with loop and satisfies |
| minSatisfying | โโน๏ธ You can do this with loop and satisfies |
| minVersion | โ |
| validRange | โ๐ง parseSemVer with rangeMode at options |
| outside | โ๐ง satisfies |
| gtr | โ๐ง compareSemver |
| ltr | โ๐ง compareSemver |
| intersects | โ๐ง satisfies |
| simplifyRange | โ |
| subset | โโน๏ธ (Didn't see need of this, maybe add in future) |
| SemVer | โ |
| re | โโน๏ธ (Didn't see need of this) |
| src | โโน๏ธ (Didn't see need of this) |
| tokens | โโน๏ธ (Didn't see need of this) |
| SEMVER_SPEC_VERSION | โ |
| RELEASE_TYPES | โ |
| compareIdentifiers | โ๐ง compareSemver |
| rcompareIdentifiers | โ๐ง compareSemver |
Classes
SemVer
Class creating SemVer object which has own methods.
Links: [๐File] [๐TESTS]
Functions
parseSemVer
Parses a semantic version string or range (options).
import { parseSemVer } from "@betternpm/semver";
const version = parseSemVer("1.2.3-prerelease.0+20241025");
console.log(version.major); // 1
console.log(version.minor); // 2
console.log(version.patch); // 3
console.log(version.prerelease); // ["prerelease",0]
console.log(version.buildmetadata); // [20241025]
console.log(version.version()); // "1.2.3-prerelease.0+20241025"Links: [๐File] [๐TESTS]
compareSemver
Compare A to B in full scope.
import { compareSemver } from "@betternpm/semver";
console.log(compareSemver("1.3.0", "1.2.3")); // 1 - because A is bigger than B
console.log(compareSemver("1.3.0", "1.3.0")); // 0 - because A is same as B
console.log(compareSemver("1.2.3", "1.3.0")); // -1 - because A is smaller than BLinks: [๐File] [๐TESTS]
compareMinorMajorPatch
Compare A to B but ONLY in Major/Minor/Patch scope.
import { compareMinorMajorPatch } from "@betternpm/semver";
console.log(compareMinorMajorPatch("1.3.0", "1.2.3")); // 1 - because A is bigger than B
console.log(compareMinorMajorPatch("1.3.0-alpha", "1.3.0")); // 0 - because A is same as B (We care only about MMP)
console.log(compareMinorMajorPatch("1.2.3", "1.3.0")); // -1 - because A is smaller than BLinks: [๐File] [๐TESTS]
comparePrerelease
Compare A to B but ONLY in prerelease scope.
import { comparePrerelease } from "@betternpm/semver";
// am > alpha.1 > alpha.0 > alpha
console.log(comparePrerelease("1.3.0-alpha.1", "1.2.3-alpha.0")); // 1 - because A is bigger than B
console.log(comparePrerelease("1.3.0-alpha", "1.2.0-alpha")); // 0 - because A is same as B (We care only about MMP)
console.log(comparePrerelease("1.3.0-alpha", "1.2.0")); // -1 - because A is smaller than B (no prereleases > prereleases)
console.log(comparePrerelease("1.3.0-alpha", "1.2.0-am")); // -1 - In this case just comparing them to first differenceerence v1[i] > v2[i].
console.log(comparePrerelease("1.3.0-alpha", "1.2.0-alphaa")); // -1 - Same as above but ends at last element in v1 or v2 (longer one).Links: [๐File] [๐TESTS]
compareBuild
Compare A to B but ONLY in buildmetadata.
import { compareBuild } from "@betternpm/semver";
console.log(compareBuild("1.3.0+124", "1.2.3+123")); // 1 - because A is bigger than B
console.log(compareBuild("1.3.0+123", "1.2.0+123")); // 0 - because A is same as B (We care only about MMP)
console.log(compareBuild("1.3.0+1.2.2", "1.2.0+123")); // -1 - because A is smaller than B (no prereleases > prerelease)
console.log(compareBuild("1.3.0", "1.2.0+123")); // -1 - because A is smaller than B (no prereleases > prerelease)
console.log(compareBuild("1.3.0+a", "1.2.0+b")); // -1 In this case just comparing them to first differenceerence v1[i] > v2[i].
console.log(compareBuild("1.3.0+a", "1.2.0+aa")); // -1 - Same as above but comparing to last element in v1 or v2 (longer one).Links: [๐File] [๐TESTS]
satisfies
Checks that version pass range ex >=1.0.0 || 0.5.0
import { satisfies } from "@betternpm/semver";
console.log(satisfies("1.2.3", ">=1.0.0 || 0.5.0")); // true - Must be equal or higher than 1.0.0 or equal 0.5.0
console.log(satisfies("0.5.0", ">=1.0.0 || 0.5.0")); // true - Must be equal or higher than 1.0.0 or equal 0.5.0
console.log(satisfies("0.4.0", ">=1.0.0 || 0.5.0")); // false - Must be equal or higher than 1.0.0 or equal 0.5.0
console.log(satisfies("0.1.3", ">2.0.0")); // false - Must be higher than 2.0.0Links: [๐File] [๐TESTS]
increase
Increase semver `major/minor/patch/prerelease/buildmetadata/premajor/preminor/premajor
!IMPORTANT
Atprereleaseandbuildmetadataalways increase last found number.
import { increase } from "@betternpm/semver";
console.log(increase("1.2.3", "major", "string")); // 2.0.0
console.log(increase("1.2.3", "minor", "string")); // 1.3.0
console.log(increase("1.2.3", "patch", "string")); // 1.2.4
console.log(increase("1.2.3", "prerelease", "string")); //1.2.3-0
console.log(increase("1.2.3-0", "prerelease", "string")); //1.2.3-1
console.log(increase("1.2.3", "prerelease", "string", { value: "alpha" })); // 1.2.3-alpha
console.log(increase("1.2.3-alpha", "prerelease", "string")); // 1.2.3-alpha.0
console.log(increase("1.2.3", "buildmetadata", "string")); //1.2.3+0
console.log(increase("1.2.3+0", "buildmetadata", "string")); //1.2.3+1
console.log(increase("1.2.3", "buildmetadata", "string", { value: "build" })); // 1.2.3+build
console.log(increase("1.2.3+build", "buildmetadata", "string")); // 1.2.3+build.0
console.log(increase("1.2.3", "premajor", "string")); // 2.0.0-0
console.log(increase("1.2.3", "preminor", "string")); // 1.3.0-0
console.log(increase("1.2.3", "premajor", "string")); // 1.2.4-0
// etc...Links: [๐File] [๐TESTS]
difference
Show most important differenceerence between versions
import { difference } from "@betternpm/semver";
console.log(difference("1.0.0", "2.5.0")); // "major"
console.log(difference("1.1.0", "1.2.0")); // "minor"
console.log(difference("1.1.1", "1.1.2")); // "patch"
console.log(difference("0.0.0", "0.0.0")); // undefined
console.log(difference("1.0.0", "2.0.0-prerelease")); // "premajor"
console.log(difference("1.0.0", "1.1.0-prerelease")); // "preminor"
console.log(difference("1.0.0", "1.0.1-prerelease")); // "prepatch"
console.log(difference("1.0.0-alpha", "1.0.0-beta")); // "prerelease"Links: [๐File] [๐TESTS]
minVersion
Show minimum version which pass range.
import { minVersion } from "@betternpm/semver";
console.log(minVersion(">=1.0.0 || 0.5.0")); // 0.5.0
console.log(minVersion(">=1.0.0")); // 1.0.0
console.log(minVersion("<=1.0.0")); // 0.0.0
console.log(minVersion(">2.0.0")); // 2.0.1Links: [๐File] [๐TESTS]
simplifyRange
Simplify Range for inputed versions
import { simplifyRange } from "@betternpm/semver";
console.log(simplifyRange(["0.0.0", "1.0.0", "0.5.0", "2.0.1"], ">=1.0.0 || 0.5.0")); // >=0.5.0
console.log(simplifyRange(["0.0.0", "1.0.0", "0.5.0", "2.0.1"], ">=1.0.0")); // >=1.0.0
console.log(simplifyRange(["0.0.0", "1.0.0", "0.5.0", "2.0.1"], "<=1.0.0")); // <=1.0.0
console.log(simplifyRange(["2.0.1"], ">2.0.0")); // *Links: [๐File] [๐TESTS]
Types
TReleases
type with every possible release (from variable RELEASE_TYPES)
Links: [๐File] [๐TESTS]
Variables
PATTERNS
| Name | Description |
|---|---|
| PATTERN_STRICT_SEMVER | RegEx Pattern used for strict semver |
| PATTERN_LOOSE_SEMVER | RegEx Pattern used for loose semver |
| PATTERN_RANGE_MODE | RegEx Pattern used for range semver |
Links: [๐File]
RELEASE_TYPES
Array with every possible
Links: [๐File] [๐TESTS]
1 year ago
1 year ago