1.0.0 โ€ข Published 9 months ago

@betternpm/semver v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
9 months ago

image

๐Ÿ“œ List of Contest

Install

NPM

npm install @betternpm/semver

PNPM

pnpm add @betternpm/semver

Yarn

yarn add @betternpm/semver

TLDR (Only Most Important!)

Functions

NameDescription
parseSemVerParse and validate into semver object
compareSemverCompare versions and return result 1 \| 0 \| -1
satisfiesCheck that version pass range ex >=1.0.0 \|\| 0.5.0
increaseIncrease semver major/minor/patch/prerelease/buildmetadata/premajor/preminor/premajor
differenceShow most important differenceerence between versions
minVersionShow minimum version which pass range.
simplifyRangeSimplify Range for inputed versions

Classes

NameDescription
SemVerRepresents a class SemVer version with methods.

Types

NameDescription
TReleasesRepresents a release types.

Variables

NameDescription
RELEASE_TYPESRepresents 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

EmojiMeaning
โœ…Completed
โธ๏ธPaused
๐ŸŸงexist/you can use differenceerent function / no alias
โŒAborted
๐Ÿ› ๏ธIn Progress
๐Ÿ’คNot Yet Started
โ„น๏ธAdditional Comment

Table

ExportProgress 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]

Scroll to List of Contest

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]

Scroll to List of Contest

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]

Scroll to List of Contest

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]

Scroll to List of Contest

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]

Scroll to List of Contest

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]

Scroll to List of Contest

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]

Scroll to List of Contest

increase

Increase semver `major/minor/patch/prerelease/buildmetadata/premajor/preminor/premajor

!IMPORTANT
At prerelease and buildmetadata 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]

Scroll to List of Contest

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]

Scroll to List of Contest

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]

Scroll to List of Contest

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]

Scroll to List of Contest

Types

TReleases

type with every possible release (from variable RELEASE_TYPES)

Links: [๐Ÿ“„File] [๐Ÿ’TESTS]

Scroll to List of Contest

Variables

PATTERNS

NameDescription
PATTERN_STRICT_SEMVERRegEx Pattern used for strict semver
PATTERN_LOOSE_SEMVERRegEx Pattern used for loose semver
PATTERN_RANGE_MODERegEx Pattern used for range semver

Links: [๐Ÿ“„File]

Scroll to List of Contest

RELEASE_TYPES

Array with every possible

Links: [๐Ÿ“„File] [๐Ÿ’TESTS]

Scroll to List of Contest

1.0.0

9 months ago

1.0.0-prerelease

9 months ago