@based/schema 5.0.0 → 5.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/parse/assert.d.ts +1 -1
- package/dist/parse/assert.js +1 -1
- package/dist/parse/index.js +4 -1
- package/dist/parse/semver/_constants.d.ts +12 -0
- package/dist/parse/semver/_constants.js +21 -0
- package/dist/parse/semver/_shared.d.ts +44 -0
- package/dist/parse/semver/_shared.js +165 -0
- package/dist/parse/semver/_test_comparator_set.d.ts +3 -0
- package/dist/parse/semver/_test_comparator_set.js +60 -0
- package/dist/parse/semver/can_parse.d.ts +17 -0
- package/dist/parse/semver/can_parse.js +28 -0
- package/dist/parse/semver/compare.d.ts +28 -0
- package/dist/parse/semver/compare.js +36 -0
- package/dist/parse/semver/difference.d.ts +27 -0
- package/dist/parse/semver/difference.js +41 -0
- package/dist/parse/semver/equals.d.ts +24 -0
- package/dist/parse/semver/equals.js +28 -0
- package/dist/parse/semver/format.d.ts +22 -0
- package/dist/parse/semver/format.js +33 -0
- package/dist/parse/semver/format_range.d.ts +18 -0
- package/dist/parse/semver/format_range.js +29 -0
- package/dist/parse/semver/greater_or_equal.d.ts +25 -0
- package/dist/parse/semver/greater_or_equal.js +27 -0
- package/dist/parse/semver/greater_than.d.ts +25 -0
- package/dist/parse/semver/greater_than.js +29 -0
- package/dist/parse/semver/greater_than_range.d.ts +23 -0
- package/dist/parse/semver/greater_than_range.js +59 -0
- package/dist/parse/semver/increment.d.ts +51 -0
- package/dist/parse/semver/increment.js +175 -0
- package/dist/parse/semver/is_range.d.ts +23 -0
- package/dist/parse/semver/is_range.js +39 -0
- package/dist/parse/semver/is_semver.d.ts +34 -0
- package/dist/parse/semver/is_semver.js +54 -0
- package/dist/parse/semver/less_or_equal.d.ts +25 -0
- package/dist/parse/semver/less_or_equal.js +27 -0
- package/dist/parse/semver/less_than.d.ts +25 -0
- package/dist/parse/semver/less_than.js +27 -0
- package/dist/parse/semver/less_than_range.d.ts +23 -0
- package/dist/parse/semver/less_than_range.js +59 -0
- package/dist/parse/semver/max_satisfying.d.ts +22 -0
- package/dist/parse/semver/max_satisfying.js +31 -0
- package/dist/parse/semver/min_satisfying.d.ts +22 -0
- package/dist/parse/semver/min_satisfying.js +31 -0
- package/dist/parse/semver/mod.d.ts +298 -0
- package/dist/parse/semver/mod.js +301 -0
- package/dist/parse/semver/not_equals.d.ts +24 -0
- package/dist/parse/semver/not_equals.js +26 -0
- package/dist/parse/semver/parse.d.ts +25 -0
- package/dist/parse/semver/parse.js +43 -0
- package/dist/parse/semver/parse_range.d.ts +27 -0
- package/dist/parse/semver/parse_range.js +361 -0
- package/dist/parse/semver/range_intersects.d.ts +25 -0
- package/dist/parse/semver/range_intersects.js +83 -0
- package/dist/parse/semver/satisfies.d.ts +24 -0
- package/dist/parse/semver/satisfies.js +28 -0
- package/dist/parse/semver/try_parse.d.ts +21 -0
- package/dist/parse/semver/try_parse.js +28 -0
- package/dist/parse/semver/try_parse_range.d.ts +23 -0
- package/dist/parse/semver/try_parse_range.js +34 -0
- package/dist/parse/semver/types.d.ts +58 -0
- package/dist/parse/semver/types.js +4 -0
- package/package.json +1 -2
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// Copyright 2018-2025 the Deno authors. MIT license.
|
|
2
|
+
// This module is browser compatible.
|
|
3
|
+
import { format } from './format.js';
|
|
4
|
+
import { isWildcardComparator } from './_shared.js';
|
|
5
|
+
function formatComparator(comparator) {
|
|
6
|
+
const { operator } = comparator;
|
|
7
|
+
return `${operator === undefined ? '' : operator}${isWildcardComparator(comparator) ? '*' : format(comparator)}`;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Formats the SemVerrange into a string.
|
|
11
|
+
*
|
|
12
|
+
* @example Usage
|
|
13
|
+
* ```ts
|
|
14
|
+
* import { formatRange, parseRange } from "@std/semver";
|
|
15
|
+
* import { assertEquals } from "@std/assert";
|
|
16
|
+
*
|
|
17
|
+
* const range = parseRange(">=1.2.3 <1.2.4");
|
|
18
|
+
* assertEquals(formatRange(range), ">=1.2.3 <1.2.4");
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* @param range The range to format
|
|
22
|
+
* @returns A string representation of the SemVer range
|
|
23
|
+
*/
|
|
24
|
+
export function formatRange(range) {
|
|
25
|
+
return range
|
|
26
|
+
.map((c) => c.map((c) => formatComparator(c)).join(' '))
|
|
27
|
+
.join('||');
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=format_range.js.map
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { SemVer } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Greater than or equal to comparison for two SemVers.
|
|
4
|
+
*
|
|
5
|
+
* This is equal to `compare(version1, version2) >= 0`.
|
|
6
|
+
*
|
|
7
|
+
* @example Usage
|
|
8
|
+
* ```ts
|
|
9
|
+
* import { parse, greaterOrEqual } from "@std/semver";
|
|
10
|
+
* import { assert } from "@std/assert";
|
|
11
|
+
*
|
|
12
|
+
* const version1 = parse("1.2.3");
|
|
13
|
+
* const version2 = parse("1.2.4");
|
|
14
|
+
*
|
|
15
|
+
* assert(greaterOrEqual(version2, version1));
|
|
16
|
+
* assert(!greaterOrEqual(version1, version2));
|
|
17
|
+
* assert(greaterOrEqual(version1, version1));
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* @param version1 The first version to compare
|
|
21
|
+
* @param version2 The second version to compare
|
|
22
|
+
* @returns `true` if `version1` is greater than or equal to `version2`, `false` otherwise
|
|
23
|
+
*/
|
|
24
|
+
export declare function greaterOrEqual(version1: SemVer, version2: SemVer): boolean;
|
|
25
|
+
//# sourceMappingURL=greater_or_equal.d.ts.map
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { compare } from './compare.js';
|
|
2
|
+
/**
|
|
3
|
+
* Greater than or equal to comparison for two SemVers.
|
|
4
|
+
*
|
|
5
|
+
* This is equal to `compare(version1, version2) >= 0`.
|
|
6
|
+
*
|
|
7
|
+
* @example Usage
|
|
8
|
+
* ```ts
|
|
9
|
+
* import { parse, greaterOrEqual } from "@std/semver";
|
|
10
|
+
* import { assert } from "@std/assert";
|
|
11
|
+
*
|
|
12
|
+
* const version1 = parse("1.2.3");
|
|
13
|
+
* const version2 = parse("1.2.4");
|
|
14
|
+
*
|
|
15
|
+
* assert(greaterOrEqual(version2, version1));
|
|
16
|
+
* assert(!greaterOrEqual(version1, version2));
|
|
17
|
+
* assert(greaterOrEqual(version1, version1));
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* @param version1 The first version to compare
|
|
21
|
+
* @param version2 The second version to compare
|
|
22
|
+
* @returns `true` if `version1` is greater than or equal to `version2`, `false` otherwise
|
|
23
|
+
*/
|
|
24
|
+
export function greaterOrEqual(version1, version2) {
|
|
25
|
+
return compare(version1, version2) >= 0;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=greater_or_equal.js.map
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { SemVer } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Greater than comparison for two SemVers.
|
|
4
|
+
*
|
|
5
|
+
* This is equal to `compare(version1, version2) > 0`.
|
|
6
|
+
*
|
|
7
|
+
* @example Usage
|
|
8
|
+
* ```ts
|
|
9
|
+
* import { parse, greaterThan } from "@std/semver";
|
|
10
|
+
* import { assert } from "@std/assert";
|
|
11
|
+
*
|
|
12
|
+
* const version1 = parse("1.2.3");
|
|
13
|
+
* const version2 = parse("1.2.4");
|
|
14
|
+
*
|
|
15
|
+
* assert(greaterThan(version2, version1));
|
|
16
|
+
* assert(!greaterThan(version1, version2));
|
|
17
|
+
* assert(!greaterThan(version1, version1));
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* @param version1 The first version to compare
|
|
21
|
+
* @param version2 The second version to compare
|
|
22
|
+
* @returns `true` if `version1` is greater than `version2`, `false` otherwise
|
|
23
|
+
*/
|
|
24
|
+
export declare function greaterThan(version1: SemVer, version2: SemVer): boolean;
|
|
25
|
+
//# sourceMappingURL=greater_than.d.ts.map
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// Copyright 2018-2025 the Deno authors. MIT license.
|
|
2
|
+
// This module is browser compatible.
|
|
3
|
+
import { compare } from './compare.js';
|
|
4
|
+
/**
|
|
5
|
+
* Greater than comparison for two SemVers.
|
|
6
|
+
*
|
|
7
|
+
* This is equal to `compare(version1, version2) > 0`.
|
|
8
|
+
*
|
|
9
|
+
* @example Usage
|
|
10
|
+
* ```ts
|
|
11
|
+
* import { parse, greaterThan } from "@std/semver";
|
|
12
|
+
* import { assert } from "@std/assert";
|
|
13
|
+
*
|
|
14
|
+
* const version1 = parse("1.2.3");
|
|
15
|
+
* const version2 = parse("1.2.4");
|
|
16
|
+
*
|
|
17
|
+
* assert(greaterThan(version2, version1));
|
|
18
|
+
* assert(!greaterThan(version1, version2));
|
|
19
|
+
* assert(!greaterThan(version1, version1));
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* @param version1 The first version to compare
|
|
23
|
+
* @param version2 The second version to compare
|
|
24
|
+
* @returns `true` if `version1` is greater than `version2`, `false` otherwise
|
|
25
|
+
*/
|
|
26
|
+
export function greaterThan(version1, version2) {
|
|
27
|
+
return compare(version1, version2) > 0;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=greater_than.js.map
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Range, SemVer } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Check if the SemVer is greater than the range.
|
|
4
|
+
*
|
|
5
|
+
* @example Usage
|
|
6
|
+
* ```ts
|
|
7
|
+
* import { parse, parseRange, greaterThanRange } from "@std/semver";
|
|
8
|
+
* import { assert } from "@std/assert";
|
|
9
|
+
*
|
|
10
|
+
* const version1 = parse("1.2.3");
|
|
11
|
+
* const version2 = parse("1.2.4");
|
|
12
|
+
* const range = parseRange(">=1.2.3 <1.2.4");
|
|
13
|
+
*
|
|
14
|
+
* assert(!greaterThanRange(version1, range));
|
|
15
|
+
* assert(greaterThanRange(version2, range));
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* @param version The version to check.
|
|
19
|
+
* @param range The range to check against.
|
|
20
|
+
* @returns `true` if the semver is greater than the range, `false` otherwise.
|
|
21
|
+
*/
|
|
22
|
+
export declare function greaterThanRange(version: SemVer, range: Range): boolean;
|
|
23
|
+
//# sourceMappingURL=greater_than_range.d.ts.map
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
// Copyright 2018-2025 the Deno authors. MIT license.
|
|
2
|
+
// This module is browser compatible.
|
|
3
|
+
import { testComparatorSet } from './_test_comparator_set.js';
|
|
4
|
+
import { isWildcardComparator } from './_shared.js';
|
|
5
|
+
import { compare } from './compare.js';
|
|
6
|
+
/**
|
|
7
|
+
* Check if the SemVer is greater than the range.
|
|
8
|
+
*
|
|
9
|
+
* @example Usage
|
|
10
|
+
* ```ts
|
|
11
|
+
* import { parse, parseRange, greaterThanRange } from "@std/semver";
|
|
12
|
+
* import { assert } from "@std/assert";
|
|
13
|
+
*
|
|
14
|
+
* const version1 = parse("1.2.3");
|
|
15
|
+
* const version2 = parse("1.2.4");
|
|
16
|
+
* const range = parseRange(">=1.2.3 <1.2.4");
|
|
17
|
+
*
|
|
18
|
+
* assert(!greaterThanRange(version1, range));
|
|
19
|
+
* assert(greaterThanRange(version2, range));
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* @param version The version to check.
|
|
23
|
+
* @param range The range to check against.
|
|
24
|
+
* @returns `true` if the semver is greater than the range, `false` otherwise.
|
|
25
|
+
*/
|
|
26
|
+
export function greaterThanRange(version, range) {
|
|
27
|
+
return range.every((comparatorSet) => greaterThanComparatorSet(version, comparatorSet));
|
|
28
|
+
}
|
|
29
|
+
function greaterThanComparatorSet(version, comparatorSet) {
|
|
30
|
+
// If the comparator set contains wildcard, then the semver is not greater than the range.
|
|
31
|
+
if (comparatorSet.some(isWildcardComparator))
|
|
32
|
+
return false;
|
|
33
|
+
// If the semver satisfies the comparator set, then it's not greater than the range.
|
|
34
|
+
if (testComparatorSet(version, comparatorSet))
|
|
35
|
+
return false;
|
|
36
|
+
// If the semver is less than any of the comparator set, then it's not greater than the range.
|
|
37
|
+
if (comparatorSet.some((comparator) => lessThanComparator(version, comparator)))
|
|
38
|
+
return false;
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
function lessThanComparator(version, comparator) {
|
|
42
|
+
const cmp = compare(version, comparator);
|
|
43
|
+
switch (comparator.operator) {
|
|
44
|
+
case '=':
|
|
45
|
+
case undefined:
|
|
46
|
+
return cmp < 0;
|
|
47
|
+
case '!=':
|
|
48
|
+
return false;
|
|
49
|
+
case '>':
|
|
50
|
+
return cmp <= 0;
|
|
51
|
+
case '<':
|
|
52
|
+
return false;
|
|
53
|
+
case '>=':
|
|
54
|
+
return cmp < 0;
|
|
55
|
+
case '<=':
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=greater_than_range.js.map
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { ReleaseType, SemVer } from './types.js';
|
|
2
|
+
/** Options for {@linkcode increment}. */
|
|
3
|
+
export interface IncrementOptions {
|
|
4
|
+
/** The pre-release metadata of the new version. */
|
|
5
|
+
prerelease?: string;
|
|
6
|
+
/** The build metadata of the new version. */
|
|
7
|
+
build?: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Returns the new SemVer resulting from an increment by release type.
|
|
11
|
+
*
|
|
12
|
+
* `premajor`, `preminor` and `prepatch` will bump the version up to the next version,
|
|
13
|
+
* based on the type, and will also add prerelease metadata.
|
|
14
|
+
*
|
|
15
|
+
* If called from a non-prerelease version, the `prerelease` will work the same as
|
|
16
|
+
* `prepatch`. The patch version is incremented and then is made into a prerelease. If
|
|
17
|
+
* the input version is already a prerelease it will simply increment the prerelease
|
|
18
|
+
* metadata.
|
|
19
|
+
*
|
|
20
|
+
* If a prerelease identifier is specified without a number then a number will be added.
|
|
21
|
+
* For example `pre` will result in `pre.0`. If the existing version already has a
|
|
22
|
+
* prerelease with a number and its the same prerelease identifier then the number
|
|
23
|
+
* will be incremented. If the identifier differs from the new identifier then the new
|
|
24
|
+
* identifier is applied and the number is reset to `0`.
|
|
25
|
+
*
|
|
26
|
+
* If the input version has build metadata it will be preserved on the resulting version
|
|
27
|
+
* unless a new build parameter is specified. Specifying `""` will unset existing build
|
|
28
|
+
* metadata.
|
|
29
|
+
*
|
|
30
|
+
* @example Usage
|
|
31
|
+
* ```ts
|
|
32
|
+
* import { increment, parse } from "@std/semver";
|
|
33
|
+
* import { assertEquals } from "@std/assert";
|
|
34
|
+
*
|
|
35
|
+
* const version = parse("1.2.3");
|
|
36
|
+
* assertEquals(increment(version, "major"), parse("2.0.0"));
|
|
37
|
+
* assertEquals(increment(version, "minor"), parse("1.3.0"));
|
|
38
|
+
* assertEquals(increment(version, "patch"), parse("1.2.4"));
|
|
39
|
+
* assertEquals(increment(version, "prerelease"), parse("1.2.4-0"));
|
|
40
|
+
*
|
|
41
|
+
* const prerelease = parse("1.2.3-beta.0");
|
|
42
|
+
* assertEquals(increment(prerelease, "prerelease"), parse("1.2.3-beta.1"));
|
|
43
|
+
* ```
|
|
44
|
+
*
|
|
45
|
+
* @param version The version to increment
|
|
46
|
+
* @param release The type of increment to perform
|
|
47
|
+
* @param options Additional options
|
|
48
|
+
* @returns The new version
|
|
49
|
+
*/
|
|
50
|
+
export declare function increment(version: SemVer, release: ReleaseType, options?: IncrementOptions): SemVer;
|
|
51
|
+
//# sourceMappingURL=increment.d.ts.map
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
// Copyright 2018-2025 the Deno authors. MIT license.
|
|
2
|
+
// This module is browser compatible.
|
|
3
|
+
import { parseBuild } from './_shared.js';
|
|
4
|
+
function bumpPrereleaseNumber(prerelease = []) {
|
|
5
|
+
const values = [...prerelease];
|
|
6
|
+
let index = values.length;
|
|
7
|
+
while (index >= 0) {
|
|
8
|
+
const value = values[index];
|
|
9
|
+
if (typeof value === 'number') {
|
|
10
|
+
values[index] = value + 1;
|
|
11
|
+
break;
|
|
12
|
+
}
|
|
13
|
+
index -= 1;
|
|
14
|
+
}
|
|
15
|
+
// if no number was bumped
|
|
16
|
+
if (index === -1)
|
|
17
|
+
values.push(0);
|
|
18
|
+
return values;
|
|
19
|
+
}
|
|
20
|
+
function bumpPrerelease(prerelease = [], identifier) {
|
|
21
|
+
let values = bumpPrereleaseNumber(prerelease);
|
|
22
|
+
if (!identifier)
|
|
23
|
+
return values;
|
|
24
|
+
// 1.2.0-beta.1 bumps to 1.2.0-beta.2,
|
|
25
|
+
// 1.2.0-beta.foobar or 1.2.0-beta bumps to 1.2.0-beta.0
|
|
26
|
+
if (values[0] !== identifier || isNaN(values[1])) {
|
|
27
|
+
values = [identifier, 0];
|
|
28
|
+
}
|
|
29
|
+
return values;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Returns the new SemVer resulting from an increment by release type.
|
|
33
|
+
*
|
|
34
|
+
* `premajor`, `preminor` and `prepatch` will bump the version up to the next version,
|
|
35
|
+
* based on the type, and will also add prerelease metadata.
|
|
36
|
+
*
|
|
37
|
+
* If called from a non-prerelease version, the `prerelease` will work the same as
|
|
38
|
+
* `prepatch`. The patch version is incremented and then is made into a prerelease. If
|
|
39
|
+
* the input version is already a prerelease it will simply increment the prerelease
|
|
40
|
+
* metadata.
|
|
41
|
+
*
|
|
42
|
+
* If a prerelease identifier is specified without a number then a number will be added.
|
|
43
|
+
* For example `pre` will result in `pre.0`. If the existing version already has a
|
|
44
|
+
* prerelease with a number and its the same prerelease identifier then the number
|
|
45
|
+
* will be incremented. If the identifier differs from the new identifier then the new
|
|
46
|
+
* identifier is applied and the number is reset to `0`.
|
|
47
|
+
*
|
|
48
|
+
* If the input version has build metadata it will be preserved on the resulting version
|
|
49
|
+
* unless a new build parameter is specified. Specifying `""` will unset existing build
|
|
50
|
+
* metadata.
|
|
51
|
+
*
|
|
52
|
+
* @example Usage
|
|
53
|
+
* ```ts
|
|
54
|
+
* import { increment, parse } from "@std/semver";
|
|
55
|
+
* import { assertEquals } from "@std/assert";
|
|
56
|
+
*
|
|
57
|
+
* const version = parse("1.2.3");
|
|
58
|
+
* assertEquals(increment(version, "major"), parse("2.0.0"));
|
|
59
|
+
* assertEquals(increment(version, "minor"), parse("1.3.0"));
|
|
60
|
+
* assertEquals(increment(version, "patch"), parse("1.2.4"));
|
|
61
|
+
* assertEquals(increment(version, "prerelease"), parse("1.2.4-0"));
|
|
62
|
+
*
|
|
63
|
+
* const prerelease = parse("1.2.3-beta.0");
|
|
64
|
+
* assertEquals(increment(prerelease, "prerelease"), parse("1.2.3-beta.1"));
|
|
65
|
+
* ```
|
|
66
|
+
*
|
|
67
|
+
* @param version The version to increment
|
|
68
|
+
* @param release The type of increment to perform
|
|
69
|
+
* @param options Additional options
|
|
70
|
+
* @returns The new version
|
|
71
|
+
*/
|
|
72
|
+
export function increment(version, release, options = {}) {
|
|
73
|
+
const build = options.build !== undefined
|
|
74
|
+
? parseBuild(options.build)
|
|
75
|
+
: (version.build ?? []);
|
|
76
|
+
switch (release) {
|
|
77
|
+
case 'premajor':
|
|
78
|
+
return {
|
|
79
|
+
major: version.major + 1,
|
|
80
|
+
minor: 0,
|
|
81
|
+
patch: 0,
|
|
82
|
+
prerelease: bumpPrerelease(version.prerelease, options.prerelease),
|
|
83
|
+
build,
|
|
84
|
+
};
|
|
85
|
+
case 'preminor':
|
|
86
|
+
return {
|
|
87
|
+
major: version.major,
|
|
88
|
+
minor: version.minor + 1,
|
|
89
|
+
patch: 0,
|
|
90
|
+
prerelease: bumpPrerelease(version.prerelease, options.prerelease),
|
|
91
|
+
build,
|
|
92
|
+
};
|
|
93
|
+
case 'prepatch':
|
|
94
|
+
return {
|
|
95
|
+
major: version.major,
|
|
96
|
+
minor: version.minor,
|
|
97
|
+
patch: version.patch + 1,
|
|
98
|
+
prerelease: bumpPrerelease(version.prerelease, options.prerelease),
|
|
99
|
+
build,
|
|
100
|
+
};
|
|
101
|
+
case 'prerelease': {
|
|
102
|
+
// If the input is a non-prerelease version, this acts the same as prepatch.
|
|
103
|
+
const isPrerelease = (version.prerelease ?? []).length === 0;
|
|
104
|
+
const patch = isPrerelease ? version.patch + 1 : version.patch;
|
|
105
|
+
return {
|
|
106
|
+
major: version.major,
|
|
107
|
+
minor: version.minor,
|
|
108
|
+
patch,
|
|
109
|
+
prerelease: bumpPrerelease(version.prerelease, options.prerelease),
|
|
110
|
+
build,
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
case 'major': {
|
|
114
|
+
// If this is a pre-major version, bump up to the same major version. Otherwise increment major.
|
|
115
|
+
// 1.0.0-5 bumps to 1.0.0
|
|
116
|
+
// 1.1.0 bumps to 2.0.0
|
|
117
|
+
const isPrerelease = (version.prerelease ?? []).length === 0;
|
|
118
|
+
const major = isPrerelease || version.minor !== 0 || version.patch !== 0
|
|
119
|
+
? version.major + 1
|
|
120
|
+
: version.major;
|
|
121
|
+
return {
|
|
122
|
+
major,
|
|
123
|
+
minor: 0,
|
|
124
|
+
patch: 0,
|
|
125
|
+
prerelease: [],
|
|
126
|
+
build,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
case 'minor': {
|
|
130
|
+
// If this is a pre-minor version, bump up to the same minor version. Otherwise increment minor.
|
|
131
|
+
// 1.2.0-5 bumps to 1.2.0
|
|
132
|
+
// 1.2.1 bumps to 1.3.0
|
|
133
|
+
const isPrerelease = (version.prerelease ?? []).length === 0;
|
|
134
|
+
const minor = isPrerelease || version.patch !== 0 ? version.minor + 1 : version.minor;
|
|
135
|
+
return {
|
|
136
|
+
major: version.major,
|
|
137
|
+
minor,
|
|
138
|
+
patch: 0,
|
|
139
|
+
prerelease: [],
|
|
140
|
+
build,
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
case 'patch': {
|
|
144
|
+
// If this is not a pre-release version, it will increment the patch.
|
|
145
|
+
// If it is a pre-release it will bump up to the same patch version.
|
|
146
|
+
// 1.2.0-5 patches to 1.2.0
|
|
147
|
+
// 1.2.0 patches to 1.2.1
|
|
148
|
+
const isPrerelease = (version.prerelease ?? []).length === 0;
|
|
149
|
+
const patch = isPrerelease ? version.patch + 1 : version.patch;
|
|
150
|
+
return {
|
|
151
|
+
major: version.major,
|
|
152
|
+
minor: version.minor,
|
|
153
|
+
patch,
|
|
154
|
+
prerelease: [],
|
|
155
|
+
build,
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
case 'pre': {
|
|
159
|
+
// 1.0.0 "pre" would become 1.0.0-0
|
|
160
|
+
// 1.0.0-0 would become 1.0.0-1
|
|
161
|
+
// 1.0.0-beta.0 would be come 1.0.0-beta.1
|
|
162
|
+
// switching the pre identifier resets the number to 0
|
|
163
|
+
return {
|
|
164
|
+
major: version.major,
|
|
165
|
+
minor: version.minor,
|
|
166
|
+
patch: version.patch,
|
|
167
|
+
prerelease: bumpPrerelease(version.prerelease, options.prerelease),
|
|
168
|
+
build,
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
default:
|
|
172
|
+
throw new TypeError(`Cannot increment version: invalid argument ${release}`);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=increment.js.map
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Range } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Does a deep check on the object to determine if its a valid range.
|
|
4
|
+
*
|
|
5
|
+
* Objects with extra fields are still considered valid if they have at
|
|
6
|
+
* least the correct fields.
|
|
7
|
+
*
|
|
8
|
+
* Adds a type assertion if true.
|
|
9
|
+
*
|
|
10
|
+
* @example Usage
|
|
11
|
+
* ```ts
|
|
12
|
+
* import { isRange } from "@std/semver/is-range";
|
|
13
|
+
* import { assert } from "@std/assert";
|
|
14
|
+
*
|
|
15
|
+
* const range = [[{ major: 1, minor: 2, patch: 3 }]];
|
|
16
|
+
* assert(isRange(range));
|
|
17
|
+
* assert(!isRange({}));
|
|
18
|
+
* ```
|
|
19
|
+
* @param value The value to check if its a valid Range
|
|
20
|
+
* @returns True if its a valid Range otherwise false.
|
|
21
|
+
*/
|
|
22
|
+
export declare function isRange(value: unknown): value is Range;
|
|
23
|
+
//# sourceMappingURL=is_range.d.ts.map
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { OPERATORS } from './_constants.js';
|
|
2
|
+
import { ALL } from './_constants.js';
|
|
3
|
+
import { isSemVer } from './is_semver.js';
|
|
4
|
+
function isComparator(value) {
|
|
5
|
+
if (value === null ||
|
|
6
|
+
value === undefined ||
|
|
7
|
+
Array.isArray(value) ||
|
|
8
|
+
typeof value !== 'object')
|
|
9
|
+
return false;
|
|
10
|
+
if (value === ALL)
|
|
11
|
+
return true;
|
|
12
|
+
const { operator } = value;
|
|
13
|
+
return ((operator === undefined || OPERATORS.includes(operator)) && isSemVer(value));
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Does a deep check on the object to determine if its a valid range.
|
|
17
|
+
*
|
|
18
|
+
* Objects with extra fields are still considered valid if they have at
|
|
19
|
+
* least the correct fields.
|
|
20
|
+
*
|
|
21
|
+
* Adds a type assertion if true.
|
|
22
|
+
*
|
|
23
|
+
* @example Usage
|
|
24
|
+
* ```ts
|
|
25
|
+
* import { isRange } from "@std/semver/is-range";
|
|
26
|
+
* import { assert } from "@std/assert";
|
|
27
|
+
*
|
|
28
|
+
* const range = [[{ major: 1, minor: 2, patch: 3 }]];
|
|
29
|
+
* assert(isRange(range));
|
|
30
|
+
* assert(!isRange({}));
|
|
31
|
+
* ```
|
|
32
|
+
* @param value The value to check if its a valid Range
|
|
33
|
+
* @returns True if its a valid Range otherwise false.
|
|
34
|
+
*/
|
|
35
|
+
export function isRange(value) {
|
|
36
|
+
return (Array.isArray(value) &&
|
|
37
|
+
value.every((r) => Array.isArray(r) && r.every((c) => isComparator(c))));
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=is_range.js.map
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { SemVer } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Checks to see if value is a valid SemVer object. It does a check
|
|
4
|
+
* into each field including prerelease and build.
|
|
5
|
+
*
|
|
6
|
+
* Some invalid SemVer sentinels can still return true such as ANY and INVALID.
|
|
7
|
+
* An object which has the same value as a sentinel but isn't reference equal
|
|
8
|
+
* will still fail.
|
|
9
|
+
*
|
|
10
|
+
* Objects which are valid SemVer objects but have _extra_ fields are still
|
|
11
|
+
* considered SemVer objects and this will return true.
|
|
12
|
+
*
|
|
13
|
+
* A type assertion is added to the value.
|
|
14
|
+
*
|
|
15
|
+
* @example Usage
|
|
16
|
+
* ```ts
|
|
17
|
+
* import { isSemVer } from "@std/semver/is-semver";
|
|
18
|
+
* import { assert } from "@std/assert";
|
|
19
|
+
*
|
|
20
|
+
* const value = {
|
|
21
|
+
* major: 1,
|
|
22
|
+
* minor: 2,
|
|
23
|
+
* patch: 3,
|
|
24
|
+
* };
|
|
25
|
+
*
|
|
26
|
+
* assert(isSemVer(value));
|
|
27
|
+
* assert(!isSemVer({ major: 1, minor: 2 }));
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* @param value The value to check to see if its a valid SemVer object
|
|
31
|
+
* @returns True if value is a valid SemVer otherwise false
|
|
32
|
+
*/
|
|
33
|
+
export declare function isSemVer(value: unknown): value is SemVer;
|
|
34
|
+
//# sourceMappingURL=is_semver.d.ts.map
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
// Copyright 2018-2025 the Deno authors. MIT license.
|
|
2
|
+
// This module is browser compatible.
|
|
3
|
+
import { ANY } from './_constants.js';
|
|
4
|
+
import { isValidNumber, isValidString } from './_shared.js';
|
|
5
|
+
/**
|
|
6
|
+
* Checks to see if value is a valid SemVer object. It does a check
|
|
7
|
+
* into each field including prerelease and build.
|
|
8
|
+
*
|
|
9
|
+
* Some invalid SemVer sentinels can still return true such as ANY and INVALID.
|
|
10
|
+
* An object which has the same value as a sentinel but isn't reference equal
|
|
11
|
+
* will still fail.
|
|
12
|
+
*
|
|
13
|
+
* Objects which are valid SemVer objects but have _extra_ fields are still
|
|
14
|
+
* considered SemVer objects and this will return true.
|
|
15
|
+
*
|
|
16
|
+
* A type assertion is added to the value.
|
|
17
|
+
*
|
|
18
|
+
* @example Usage
|
|
19
|
+
* ```ts
|
|
20
|
+
* import { isSemVer } from "@std/semver/is-semver";
|
|
21
|
+
* import { assert } from "@std/assert";
|
|
22
|
+
*
|
|
23
|
+
* const value = {
|
|
24
|
+
* major: 1,
|
|
25
|
+
* minor: 2,
|
|
26
|
+
* patch: 3,
|
|
27
|
+
* };
|
|
28
|
+
*
|
|
29
|
+
* assert(isSemVer(value));
|
|
30
|
+
* assert(!isSemVer({ major: 1, minor: 2 }));
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* @param value The value to check to see if its a valid SemVer object
|
|
34
|
+
* @returns True if value is a valid SemVer otherwise false
|
|
35
|
+
*/
|
|
36
|
+
export function isSemVer(value) {
|
|
37
|
+
if (value === null || value === undefined)
|
|
38
|
+
return false;
|
|
39
|
+
if (Array.isArray(value))
|
|
40
|
+
return false;
|
|
41
|
+
if (typeof value !== 'object')
|
|
42
|
+
return false;
|
|
43
|
+
if (value === ANY)
|
|
44
|
+
return true;
|
|
45
|
+
const { major, minor, patch, build = [], prerelease = [], } = value;
|
|
46
|
+
return (isValidNumber(major) &&
|
|
47
|
+
isValidNumber(minor) &&
|
|
48
|
+
isValidNumber(patch) &&
|
|
49
|
+
Array.isArray(prerelease) &&
|
|
50
|
+
prerelease.every((v) => isValidString(v) || isValidNumber(v)) &&
|
|
51
|
+
Array.isArray(build) &&
|
|
52
|
+
build.every(isValidString));
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=is_semver.js.map
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { SemVer } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Less than or equal to comparison for two SemVers.
|
|
4
|
+
*
|
|
5
|
+
* This is equal to `compare(version1, version2) <= 0`.
|
|
6
|
+
*
|
|
7
|
+
* @example Usage
|
|
8
|
+
* ```ts
|
|
9
|
+
* import { parse, lessOrEqual } from "@std/semver";
|
|
10
|
+
* import { assert } from "@std/assert";
|
|
11
|
+
*
|
|
12
|
+
* const version1 = parse("1.2.3");
|
|
13
|
+
* const version2 = parse("1.2.4");
|
|
14
|
+
*
|
|
15
|
+
* assert(lessOrEqual(version1, version2));
|
|
16
|
+
* assert(!lessOrEqual(version2, version1));
|
|
17
|
+
* assert(lessOrEqual(version1, version1));
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* @param version1 the first version to compare
|
|
21
|
+
* @param version2 the second version to compare
|
|
22
|
+
* @returns `true` if `version1` is less than or equal to `version2`, `false` otherwise
|
|
23
|
+
*/
|
|
24
|
+
export declare function lessOrEqual(version1: SemVer, version2: SemVer): boolean;
|
|
25
|
+
//# sourceMappingURL=less_or_equal.d.ts.map
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { compare } from './compare.js';
|
|
2
|
+
/**
|
|
3
|
+
* Less than or equal to comparison for two SemVers.
|
|
4
|
+
*
|
|
5
|
+
* This is equal to `compare(version1, version2) <= 0`.
|
|
6
|
+
*
|
|
7
|
+
* @example Usage
|
|
8
|
+
* ```ts
|
|
9
|
+
* import { parse, lessOrEqual } from "@std/semver";
|
|
10
|
+
* import { assert } from "@std/assert";
|
|
11
|
+
*
|
|
12
|
+
* const version1 = parse("1.2.3");
|
|
13
|
+
* const version2 = parse("1.2.4");
|
|
14
|
+
*
|
|
15
|
+
* assert(lessOrEqual(version1, version2));
|
|
16
|
+
* assert(!lessOrEqual(version2, version1));
|
|
17
|
+
* assert(lessOrEqual(version1, version1));
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* @param version1 the first version to compare
|
|
21
|
+
* @param version2 the second version to compare
|
|
22
|
+
* @returns `true` if `version1` is less than or equal to `version2`, `false` otherwise
|
|
23
|
+
*/
|
|
24
|
+
export function lessOrEqual(version1, version2) {
|
|
25
|
+
return compare(version1, version2) <= 0;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=less_or_equal.js.map
|