@betternpm/semver v1.0.0
๐ List of Contest
Install
NPM
npm install @betternpm/semver
PNPM
pnpm add @betternpm/semver
Yarn
yarn add @betternpm/semver
TLDR (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/semver
package 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 B
Links: [๐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 B
Links: [๐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.0
Links: [๐File] [๐TESTS]
increase
Increase semver `major/minor/patch/prerelease/buildmetadata/premajor/preminor/premajor
!IMPORTANT
Atprerelease
andbuildmetadata
always 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.1
Links: [๐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]
9 months ago
9 months ago