semver 7.1.1 → 7.2.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/README.md +64 -0
- package/functions/diff.js +3 -5
- package/index.js +46 -63
- package/package.json +6 -6
- package/preload.js +2 -46
- package/ranges/simplify.js +44 -0
package/README.md
CHANGED
|
@@ -25,6 +25,62 @@ semver.valid(semver.coerce('v2')) // '2.0.0'
|
|
|
25
25
|
semver.valid(semver.coerce('42.6.7.9.3-alpha')) // '42.6.7'
|
|
26
26
|
```
|
|
27
27
|
|
|
28
|
+
You can also just load the module for the function that you care about, if
|
|
29
|
+
you'd like to minimize your footprint.
|
|
30
|
+
|
|
31
|
+
```js
|
|
32
|
+
// load the whole API at once in a single object
|
|
33
|
+
const semver = require('semver')
|
|
34
|
+
|
|
35
|
+
// or just load the bits you need
|
|
36
|
+
// all of them listed here, just pick and choose what you want
|
|
37
|
+
|
|
38
|
+
// classes
|
|
39
|
+
const SemVer = require('semver/classes/semver')
|
|
40
|
+
const Comparator = require('semver/classes/comparator')
|
|
41
|
+
const Range = require('semver/classes/range')
|
|
42
|
+
|
|
43
|
+
// functions for working with versions
|
|
44
|
+
const semverParse = require('semver/functions/parse')
|
|
45
|
+
const semverValid = require('semver/functions/valid')
|
|
46
|
+
const semverClean = require('semver/functions/clean')
|
|
47
|
+
const semverInc = require('semver/functions/inc')
|
|
48
|
+
const semverDiff = require('semver/functions/diff')
|
|
49
|
+
const semverMajor = require('semver/functions/major')
|
|
50
|
+
const semverMinor = require('semver/functions/minor')
|
|
51
|
+
const semverPatch = require('semver/functions/patch')
|
|
52
|
+
const semverPrerelease = require('semver/functions/prerelease')
|
|
53
|
+
const semverCompare = require('semver/functions/compare')
|
|
54
|
+
const semverRcompare = require('semver/functions/rcompare')
|
|
55
|
+
const semverCompareLoose = require('semver/functions/compare-loose')
|
|
56
|
+
const semverCompareBuild = require('semver/functions/compare-build')
|
|
57
|
+
const semverSort = require('semver/functions/sort')
|
|
58
|
+
const semverRsort = require('semver/functions/rsort')
|
|
59
|
+
|
|
60
|
+
// low-level comparators between versions
|
|
61
|
+
const semverGt = require('semver/functions/gt')
|
|
62
|
+
const semverLt = require('semver/functions/lt')
|
|
63
|
+
const semverEq = require('semver/functions/eq')
|
|
64
|
+
const semverNeq = require('semver/functions/neq')
|
|
65
|
+
const semverGte = require('semver/functions/gte')
|
|
66
|
+
const semverLte = require('semver/functions/lte')
|
|
67
|
+
const semverCmp = require('semver/functions/cmp')
|
|
68
|
+
const semverCoerce = require('semver/functions/coerce')
|
|
69
|
+
|
|
70
|
+
// working with ranges
|
|
71
|
+
const semverSatisfies = require('semver/functions/satisfies')
|
|
72
|
+
const semverMaxSatisfying = require('semver/ranges/max-satisfying')
|
|
73
|
+
const semverMinSatisfying = require('semver/ranges/min-satisfying')
|
|
74
|
+
const semverToComparators = require('semver/ranges/to-comparators')
|
|
75
|
+
const semverMinVersion = require('semver/ranges/min-version')
|
|
76
|
+
const semverValidRange = require('semver/ranges/valid')
|
|
77
|
+
const semverOutside = require('semver/ranges/outside')
|
|
78
|
+
const semverGtr = require('semver/ranges/gtr')
|
|
79
|
+
const semverLtr = require('semver/ranges/ltr')
|
|
80
|
+
const semverIntersects = require('semver/ranges/intersects')
|
|
81
|
+
const simplifyRange = require('semver/ranges/simplify')
|
|
82
|
+
```
|
|
83
|
+
|
|
28
84
|
As a command-line utility:
|
|
29
85
|
|
|
30
86
|
```
|
|
@@ -391,6 +447,14 @@ strings that they parse.
|
|
|
391
447
|
`hilo` argument must be either the string `'>'` or `'<'`. (This is
|
|
392
448
|
the function called by `gtr` and `ltr`.)
|
|
393
449
|
* `intersects(range)`: Return true if any of the ranges comparators intersect
|
|
450
|
+
* `simplifyRange(versions, range)`: Return a "simplified" range that
|
|
451
|
+
matches the same items in `versions` list as the range specified. Note
|
|
452
|
+
that it does *not* guarantee that it would match the same versions in all
|
|
453
|
+
cases, only for the set of versions provided. This is useful when
|
|
454
|
+
generating ranges by joining together multiple versions with `||`
|
|
455
|
+
programmatically, to provide the user with something a bit more
|
|
456
|
+
ergonomic. If the provided range is shorter in string-length than the
|
|
457
|
+
generated range, then that is returned.
|
|
394
458
|
|
|
395
459
|
Note that, since ranges may be non-contiguous, a version might not be
|
|
396
460
|
greater than a range, less than a range, *or* satisfy a range! For
|
package/functions/diff.js
CHANGED
|
@@ -7,11 +7,9 @@ const diff = (version1, version2) => {
|
|
|
7
7
|
} else {
|
|
8
8
|
const v1 = parse(version1)
|
|
9
9
|
const v2 = parse(version2)
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
var defaultResult = 'prerelease'
|
|
14
|
-
}
|
|
10
|
+
const hasPre = v1.prerelease.length || v2.prerelease.length
|
|
11
|
+
const prefix = hasPre ? 'pre' : ''
|
|
12
|
+
const defaultResult = hasPre ? 'prerelease' : ''
|
|
15
13
|
for (const key in v1) {
|
|
16
14
|
if (key === 'major' || key === 'minor' || key === 'patch') {
|
|
17
15
|
if (v1[key] !== v2[key]) {
|
package/index.js
CHANGED
|
@@ -1,64 +1,47 @@
|
|
|
1
|
-
|
|
2
|
-
const
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
// just pre-load all the stuff that index.js lazily exports
|
|
2
|
+
const internalRe = require('./internal/re')
|
|
3
|
+
module.exports = {
|
|
4
|
+
re: internalRe.re,
|
|
5
|
+
src: internalRe.src,
|
|
6
|
+
tokens: internalRe.t,
|
|
7
|
+
SEMVER_SPEC_VERSION: require('./internal/constants').SEMVER_SPEC_VERSION,
|
|
8
|
+
SemVer: require('./classes/semver'),
|
|
9
|
+
compareIdentifiers: require('./internal/identifiers').compareIdentifiers,
|
|
10
|
+
rcompareIdentifiers: require('./internal/identifiers').rcompareIdentifiers,
|
|
11
|
+
parse: require('./functions/parse'),
|
|
12
|
+
valid: require('./functions/valid'),
|
|
13
|
+
clean: require('./functions/clean'),
|
|
14
|
+
inc: require('./functions/inc'),
|
|
15
|
+
diff: require('./functions/diff'),
|
|
16
|
+
major: require('./functions/major'),
|
|
17
|
+
minor: require('./functions/minor'),
|
|
18
|
+
patch: require('./functions/patch'),
|
|
19
|
+
prerelease: require('./functions/prerelease'),
|
|
20
|
+
compare: require('./functions/compare'),
|
|
21
|
+
rcompare: require('./functions/rcompare'),
|
|
22
|
+
compareLoose: require('./functions/compare-loose'),
|
|
23
|
+
compareBuild: require('./functions/compare-build'),
|
|
24
|
+
sort: require('./functions/sort'),
|
|
25
|
+
rsort: require('./functions/rsort'),
|
|
26
|
+
gt: require('./functions/gt'),
|
|
27
|
+
lt: require('./functions/lt'),
|
|
28
|
+
eq: require('./functions/eq'),
|
|
29
|
+
neq: require('./functions/neq'),
|
|
30
|
+
gte: require('./functions/gte'),
|
|
31
|
+
lte: require('./functions/lte'),
|
|
32
|
+
cmp: require('./functions/cmp'),
|
|
33
|
+
coerce: require('./functions/coerce'),
|
|
34
|
+
Comparator: require('./classes/comparator'),
|
|
35
|
+
Range: require('./classes/range'),
|
|
36
|
+
satisfies: require('./functions/satisfies'),
|
|
37
|
+
toComparators: require('./ranges/to-comparators'),
|
|
38
|
+
maxSatisfying: require('./ranges/max-satisfying'),
|
|
39
|
+
minSatisfying: require('./ranges/min-satisfying'),
|
|
40
|
+
minVersion: require('./ranges/min-version'),
|
|
41
|
+
validRange: require('./ranges/valid'),
|
|
42
|
+
outside: require('./ranges/outside'),
|
|
43
|
+
gtr: require('./ranges/gtr'),
|
|
44
|
+
ltr: require('./ranges/ltr'),
|
|
45
|
+
intersects: require('./ranges/intersects'),
|
|
46
|
+
simplifyRange: require('./ranges/simplify'),
|
|
5
47
|
}
|
|
6
|
-
|
|
7
|
-
const lazyExport = (key, path, subkey) => {
|
|
8
|
-
Object.defineProperty(exports, key, {
|
|
9
|
-
get: () => {
|
|
10
|
-
const res = lazyRequire(path, subkey)
|
|
11
|
-
Object.defineProperty(exports, key, {
|
|
12
|
-
value: res,
|
|
13
|
-
enumerable: true,
|
|
14
|
-
configurable: true
|
|
15
|
-
})
|
|
16
|
-
return res
|
|
17
|
-
},
|
|
18
|
-
configurable: true,
|
|
19
|
-
enumerable: true
|
|
20
|
-
})
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
lazyExport('re', './internal/re', 're')
|
|
24
|
-
lazyExport('src', './internal/re', 'src')
|
|
25
|
-
lazyExport('tokens', './internal/re', 't')
|
|
26
|
-
lazyExport('SEMVER_SPEC_VERSION', './internal/constants', 'SEMVER_SPEC_VERSION')
|
|
27
|
-
lazyExport('SemVer', './classes/semver')
|
|
28
|
-
lazyExport('compareIdentifiers', './internal/identifiers', 'compareIdentifiers')
|
|
29
|
-
lazyExport('rcompareIdentifiers', './internal/identifiers', 'rcompareIdentifiers')
|
|
30
|
-
lazyExport('parse', './functions/parse')
|
|
31
|
-
lazyExport('valid', './functions/valid')
|
|
32
|
-
lazyExport('clean', './functions/clean')
|
|
33
|
-
lazyExport('inc', './functions/inc')
|
|
34
|
-
lazyExport('diff', './functions/diff')
|
|
35
|
-
lazyExport('major', './functions/major')
|
|
36
|
-
lazyExport('minor', './functions/minor')
|
|
37
|
-
lazyExport('patch', './functions/patch')
|
|
38
|
-
lazyExport('prerelease', './functions/prerelease')
|
|
39
|
-
lazyExport('compare', './functions/compare')
|
|
40
|
-
lazyExport('rcompare', './functions/rcompare')
|
|
41
|
-
lazyExport('compareLoose', './functions/compare-loose')
|
|
42
|
-
lazyExport('compareBuild', './functions/compare-build')
|
|
43
|
-
lazyExport('sort', './functions/sort')
|
|
44
|
-
lazyExport('rsort', './functions/rsort')
|
|
45
|
-
lazyExport('gt', './functions/gt')
|
|
46
|
-
lazyExport('lt', './functions/lt')
|
|
47
|
-
lazyExport('eq', './functions/eq')
|
|
48
|
-
lazyExport('neq', './functions/neq')
|
|
49
|
-
lazyExport('gte', './functions/gte')
|
|
50
|
-
lazyExport('lte', './functions/lte')
|
|
51
|
-
lazyExport('cmp', './functions/cmp')
|
|
52
|
-
lazyExport('coerce', './functions/coerce')
|
|
53
|
-
lazyExport('Comparator', './classes/comparator')
|
|
54
|
-
lazyExport('Range', './classes/range')
|
|
55
|
-
lazyExport('satisfies', './functions/satisfies')
|
|
56
|
-
lazyExport('toComparators', './ranges/to-comparators')
|
|
57
|
-
lazyExport('maxSatisfying', './ranges/max-satisfying')
|
|
58
|
-
lazyExport('minSatisfying', './ranges/min-satisfying')
|
|
59
|
-
lazyExport('minVersion', './ranges/min-version')
|
|
60
|
-
lazyExport('validRange', './ranges/valid')
|
|
61
|
-
lazyExport('outside', './ranges/outside')
|
|
62
|
-
lazyExport('gtr', './ranges/gtr')
|
|
63
|
-
lazyExport('ltr', './ranges/ltr')
|
|
64
|
-
lazyExport('intersects', './ranges/intersects')
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "semver",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.2.1",
|
|
4
4
|
"description": "The semantic version parser used by npm.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -19,12 +19,12 @@
|
|
|
19
19
|
"semver": "./bin/semver.js"
|
|
20
20
|
},
|
|
21
21
|
"files": [
|
|
22
|
-
"bin",
|
|
22
|
+
"bin/**/*.js",
|
|
23
23
|
"range.bnf",
|
|
24
|
-
"classes",
|
|
25
|
-
"functions",
|
|
26
|
-
"internal",
|
|
27
|
-
"ranges",
|
|
24
|
+
"classes/**/*.js",
|
|
25
|
+
"functions/**/*.js",
|
|
26
|
+
"internal/**/*.js",
|
|
27
|
+
"ranges/**/*.js",
|
|
28
28
|
"index.js",
|
|
29
29
|
"preload.js"
|
|
30
30
|
],
|
package/preload.js
CHANGED
|
@@ -1,46 +1,2 @@
|
|
|
1
|
-
//
|
|
2
|
-
|
|
3
|
-
module.exports = {
|
|
4
|
-
re: internalRe.re,
|
|
5
|
-
src: internalRe.src,
|
|
6
|
-
tokens: internalRe.t,
|
|
7
|
-
SEMVER_SPEC_VERSION: require('./internal/constants').SEMVER_SPEC_VERSION,
|
|
8
|
-
SemVer: require('./classes/semver'),
|
|
9
|
-
compareIdentifiers: require('./internal/identifiers').compareIdentifiers,
|
|
10
|
-
rcompareIdentifiers: require('./internal/identifiers').rcompareIdentifiers,
|
|
11
|
-
parse: require('./functions/parse'),
|
|
12
|
-
valid: require('./functions/valid'),
|
|
13
|
-
clean: require('./functions/clean'),
|
|
14
|
-
inc: require('./functions/inc'),
|
|
15
|
-
diff: require('./functions/diff'),
|
|
16
|
-
major: require('./functions/major'),
|
|
17
|
-
minor: require('./functions/minor'),
|
|
18
|
-
patch: require('./functions/patch'),
|
|
19
|
-
prerelease: require('./functions/prerelease'),
|
|
20
|
-
compare: require('./functions/compare'),
|
|
21
|
-
rcompare: require('./functions/rcompare'),
|
|
22
|
-
compareLoose: require('./functions/compare-loose'),
|
|
23
|
-
compareBuild: require('./functions/compare-build'),
|
|
24
|
-
sort: require('./functions/sort'),
|
|
25
|
-
rsort: require('./functions/rsort'),
|
|
26
|
-
gt: require('./functions/gt'),
|
|
27
|
-
lt: require('./functions/lt'),
|
|
28
|
-
eq: require('./functions/eq'),
|
|
29
|
-
neq: require('./functions/neq'),
|
|
30
|
-
gte: require('./functions/gte'),
|
|
31
|
-
lte: require('./functions/lte'),
|
|
32
|
-
cmp: require('./functions/cmp'),
|
|
33
|
-
coerce: require('./functions/coerce'),
|
|
34
|
-
Comparator: require('./classes/comparator'),
|
|
35
|
-
Range: require('./classes/range'),
|
|
36
|
-
satisfies: require('./functions/satisfies'),
|
|
37
|
-
toComparators: require('./ranges/to-comparators'),
|
|
38
|
-
maxSatisfying: require('./ranges/max-satisfying'),
|
|
39
|
-
minSatisfying: require('./ranges/min-satisfying'),
|
|
40
|
-
minVersion: require('./ranges/min-version'),
|
|
41
|
-
validRange: require('./ranges/valid'),
|
|
42
|
-
outside: require('./ranges/outside'),
|
|
43
|
-
gtr: require('./ranges/gtr'),
|
|
44
|
-
ltr: require('./ranges/ltr'),
|
|
45
|
-
intersects: require('./ranges/intersects'),
|
|
46
|
-
}
|
|
1
|
+
// XXX remove in v8 or beyond
|
|
2
|
+
module.exports = require('./index.js')
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// given a set of versions and a range, create a "simplified" range
|
|
2
|
+
// that includes the same versions that the original range does
|
|
3
|
+
// If the original range is shorter than the simplified one, return that.
|
|
4
|
+
const satisfies = require('../functions/satisfies.js')
|
|
5
|
+
const compare = require('../functions/compare.js')
|
|
6
|
+
module.exports = (versions, range, options) => {
|
|
7
|
+
const set = []
|
|
8
|
+
let min = null
|
|
9
|
+
let prev = null
|
|
10
|
+
const v = versions.sort((a, b) => compare(a, b, options))
|
|
11
|
+
for (const version of v) {
|
|
12
|
+
const included = satisfies(version, range, options)
|
|
13
|
+
if (included) {
|
|
14
|
+
prev = version
|
|
15
|
+
if (!min)
|
|
16
|
+
min = version
|
|
17
|
+
} else {
|
|
18
|
+
if (prev) {
|
|
19
|
+
set.push([min, prev])
|
|
20
|
+
}
|
|
21
|
+
prev = null
|
|
22
|
+
min = null
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (min)
|
|
26
|
+
set.push([min, null])
|
|
27
|
+
|
|
28
|
+
const ranges = []
|
|
29
|
+
for (const [min, max] of set) {
|
|
30
|
+
if (min === max)
|
|
31
|
+
ranges.push(min)
|
|
32
|
+
else if (!max && min === v[0])
|
|
33
|
+
ranges.push('*')
|
|
34
|
+
else if (!max)
|
|
35
|
+
ranges.push(`>=${min}`)
|
|
36
|
+
else if (min === v[0])
|
|
37
|
+
ranges.push(`<=${max}`)
|
|
38
|
+
else
|
|
39
|
+
ranges.push(`${min} - ${max}`)
|
|
40
|
+
}
|
|
41
|
+
const simplified = ranges.join(' || ')
|
|
42
|
+
const original = typeof range.raw === 'string' ? range.raw : String(range)
|
|
43
|
+
return simplified.length < original.length ? simplified : range
|
|
44
|
+
}
|