• Home
Name Date Size #Lines LOC

..--

bin/12-May-2024-198157

classes/12-May-2024-991763

functions/12-May-2024-307227

internal/12-May-2024-299176

node_modules/lru-cache/12-May-2024-386306

ranges/12-May-2024-529399

LICENSED12-May-2024765 1612

README.mdD12-May-202423.1 KiB637509

index.jsD12-May-20242.6 KiB9088

package.jsonD12-May-20241.7 KiB8887

preload.jsD12-May-202469 31

range.bnfD12-May-2024619 1716

README.md

1semver(1) -- The semantic versioner for npm
2===========================================
3
4## Install
5
6```bash
7npm install semver
8````
9
10## Usage
11
12As a node module:
13
14```js
15const semver = require('semver')
16
17semver.valid('1.2.3') // '1.2.3'
18semver.valid('a.b.c') // null
19semver.clean('  =v1.2.3   ') // '1.2.3'
20semver.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') // true
21semver.gt('1.2.3', '9.8.7') // false
22semver.lt('1.2.3', '9.8.7') // true
23semver.minVersion('>=1.0.0') // '1.0.0'
24semver.valid(semver.coerce('v2')) // '2.0.0'
25semver.valid(semver.coerce('42.6.7.9.3-alpha')) // '42.6.7'
26```
27
28You can also just load the module for the function that you care about, if
29you'd like to minimize your footprint.
30
31```js
32// load the whole API at once in a single object
33const 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
39const SemVer = require('semver/classes/semver')
40const Comparator = require('semver/classes/comparator')
41const Range = require('semver/classes/range')
42
43// functions for working with versions
44const semverParse = require('semver/functions/parse')
45const semverValid = require('semver/functions/valid')
46const semverClean = require('semver/functions/clean')
47const semverInc = require('semver/functions/inc')
48const semverDiff = require('semver/functions/diff')
49const semverMajor = require('semver/functions/major')
50const semverMinor = require('semver/functions/minor')
51const semverPatch = require('semver/functions/patch')
52const semverPrerelease = require('semver/functions/prerelease')
53const semverCompare = require('semver/functions/compare')
54const semverRcompare = require('semver/functions/rcompare')
55const semverCompareLoose = require('semver/functions/compare-loose')
56const semverCompareBuild = require('semver/functions/compare-build')
57const semverSort = require('semver/functions/sort')
58const semverRsort = require('semver/functions/rsort')
59
60// low-level comparators between versions
61const semverGt = require('semver/functions/gt')
62const semverLt = require('semver/functions/lt')
63const semverEq = require('semver/functions/eq')
64const semverNeq = require('semver/functions/neq')
65const semverGte = require('semver/functions/gte')
66const semverLte = require('semver/functions/lte')
67const semverCmp = require('semver/functions/cmp')
68const semverCoerce = require('semver/functions/coerce')
69
70// working with ranges
71const semverSatisfies = require('semver/functions/satisfies')
72const semverMaxSatisfying = require('semver/ranges/max-satisfying')
73const semverMinSatisfying = require('semver/ranges/min-satisfying')
74const semverToComparators = require('semver/ranges/to-comparators')
75const semverMinVersion = require('semver/ranges/min-version')
76const semverValidRange = require('semver/ranges/valid')
77const semverOutside = require('semver/ranges/outside')
78const semverGtr = require('semver/ranges/gtr')
79const semverLtr = require('semver/ranges/ltr')
80const semverIntersects = require('semver/ranges/intersects')
81const simplifyRange = require('semver/ranges/simplify')
82const rangeSubset = require('semver/ranges/subset')
83```
84
85As a command-line utility:
86
87```
88$ semver -h
89
90A JavaScript implementation of the https://semver.org/ specification
91Copyright Isaac Z. Schlueter
92
93Usage: semver [options] <version> [<version> [...]]
94Prints valid versions sorted by SemVer precedence
95
96Options:
97-r --range <range>
98        Print versions that match the specified range.
99
100-i --increment [<level>]
101        Increment a version by the specified level.  Level can
102        be one of: major, minor, patch, premajor, preminor,
103        prepatch, or prerelease.  Default level is 'patch'.
104        Only one version may be specified.
105
106--preid <identifier>
107        Identifier to be used to prefix premajor, preminor,
108        prepatch or prerelease version increments.
109
110-l --loose
111        Interpret versions and ranges loosely
112
113-n <0|1>
114        This is the base to be used for the prerelease identifier.
115
116-p --include-prerelease
117        Always include prerelease versions in range matching
118
119-c --coerce
120        Coerce a string into SemVer if possible
121        (does not imply --loose)
122
123--rtl
124        Coerce version strings right to left
125
126--ltr
127        Coerce version strings left to right (default)
128
129Program exits successfully if any valid version satisfies
130all supplied ranges, and prints all satisfying versions.
131
132If no satisfying versions are found, then exits failure.
133
134Versions are printed in ascending order, so supplying
135multiple versions to the utility will just sort them.
136```
137
138## Versions
139
140A "version" is described by the `v2.0.0` specification found at
141<https://semver.org/>.
142
143A leading `"="` or `"v"` character is stripped off and ignored.
144
145## Ranges
146
147A `version range` is a set of `comparators` which specify versions
148that satisfy the range.
149
150A `comparator` is composed of an `operator` and a `version`.  The set
151of primitive `operators` is:
152
153* `<` Less than
154* `<=` Less than or equal to
155* `>` Greater than
156* `>=` Greater than or equal to
157* `=` Equal.  If no operator is specified, then equality is assumed,
158  so this operator is optional, but MAY be included.
159
160For example, the comparator `>=1.2.7` would match the versions
161`1.2.7`, `1.2.8`, `2.5.3`, and `1.3.9`, but not the versions `1.2.6`
162or `1.1.0`. The comparator `>1` is equivalent to `>=2.0.0` and
163would match the versions `2.0.0` and `3.1.0`, but not the versions
164`1.0.1` or `1.1.0`.
165
166Comparators can be joined by whitespace to form a `comparator set`,
167which is satisfied by the **intersection** of all of the comparators
168it includes.
169
170A range is composed of one or more comparator sets, joined by `||`.  A
171version matches a range if and only if every comparator in at least
172one of the `||`-separated comparator sets is satisfied by the version.
173
174For example, the range `>=1.2.7 <1.3.0` would match the versions
175`1.2.7`, `1.2.8`, and `1.2.99`, but not the versions `1.2.6`, `1.3.0`,
176or `1.1.0`.
177
178The range `1.2.7 || >=1.2.9 <2.0.0` would match the versions `1.2.7`,
179`1.2.9`, and `1.4.6`, but not the versions `1.2.8` or `2.0.0`.
180
181### Prerelease Tags
182
183If a version has a prerelease tag (for example, `1.2.3-alpha.3`) then
184it will only be allowed to satisfy comparator sets if at least one
185comparator with the same `[major, minor, patch]` tuple also has a
186prerelease tag.
187
188For example, the range `>1.2.3-alpha.3` would be allowed to match the
189version `1.2.3-alpha.7`, but it would *not* be satisfied by
190`3.4.5-alpha.9`, even though `3.4.5-alpha.9` is technically "greater
191than" `1.2.3-alpha.3` according to the SemVer sort rules.  The version
192range only accepts prerelease tags on the `1.2.3` version.  The
193version `3.4.5` *would* satisfy the range, because it does not have a
194prerelease flag, and `3.4.5` is greater than `1.2.3-alpha.7`.
195
196The purpose for this behavior is twofold.  First, prerelease versions
197frequently are updated very quickly, and contain many breaking changes
198that are (by the author's design) not yet fit for public consumption.
199Therefore, by default, they are excluded from range matching
200semantics.
201
202Second, a user who has opted into using a prerelease version has
203clearly indicated the intent to use *that specific* set of
204alpha/beta/rc versions.  By including a prerelease tag in the range,
205the user is indicating that they are aware of the risk.  However, it
206is still not appropriate to assume that they have opted into taking a
207similar risk on the *next* set of prerelease versions.
208
209Note that this behavior can be suppressed (treating all prerelease
210versions as if they were normal versions, for the purpose of range
211matching) by setting the `includePrerelease` flag on the options
212object to any
213[functions](https://github.com/npm/node-semver#functions) that do
214range matching.
215
216#### Prerelease Identifiers
217
218The method `.inc` takes an additional `identifier` string argument that
219will append the value of the string as a prerelease identifier:
220
221```javascript
222semver.inc('1.2.3', 'prerelease', 'beta')
223// '1.2.4-beta.0'
224```
225
226command-line example:
227
228```bash
229$ semver 1.2.3 -i prerelease --preid beta
2301.2.4-beta.0
231```
232
233Which then can be used to increment further:
234
235```bash
236$ semver 1.2.4-beta.0 -i prerelease
2371.2.4-beta.1
238```
239
240#### Prerelease Identifier Base
241
242The method `.inc` takes an optional parameter 'identifierBase' string
243that will let you let your prerelease number as zero-based or one-based.
244Set to `false` to omit the prerelease number altogether.
245If you do not specify this parameter, it will default to zero-based.
246
247```javascript
248semver.inc('1.2.3', 'prerelease', 'beta', '1')
249// '1.2.4-beta.1'
250```
251
252```javascript
253semver.inc('1.2.3', 'prerelease', 'beta', false)
254// '1.2.4-beta'
255```
256
257command-line example:
258
259```bash
260$ semver 1.2.3 -i prerelease --preid beta -n 1
2611.2.4-beta.1
262```
263
264```bash
265$ semver 1.2.3 -i prerelease --preid beta -n false
2661.2.4-beta
267```
268
269### Advanced Range Syntax
270
271Advanced range syntax desugars to primitive comparators in
272deterministic ways.
273
274Advanced ranges may be combined in the same way as primitive
275comparators using white space or `||`.
276
277#### Hyphen Ranges `X.Y.Z - A.B.C`
278
279Specifies an inclusive set.
280
281* `1.2.3 - 2.3.4` := `>=1.2.3 <=2.3.4`
282
283If a partial version is provided as the first version in the inclusive
284range, then the missing pieces are replaced with zeroes.
285
286* `1.2 - 2.3.4` := `>=1.2.0 <=2.3.4`
287
288If a partial version is provided as the second version in the
289inclusive range, then all versions that start with the supplied parts
290of the tuple are accepted, but nothing that would be greater than the
291provided tuple parts.
292
293* `1.2.3 - 2.3` := `>=1.2.3 <2.4.0-0`
294* `1.2.3 - 2` := `>=1.2.3 <3.0.0-0`
295
296#### X-Ranges `1.2.x` `1.X` `1.2.*` `*`
297
298Any of `X`, `x`, or `*` may be used to "stand in" for one of the
299numeric values in the `[major, minor, patch]` tuple.
300
301* `*` := `>=0.0.0` (Any non-prerelease version satisfies, unless
302  `includePrerelease` is specified, in which case any version at all
303  satisfies)
304* `1.x` := `>=1.0.0 <2.0.0-0` (Matching major version)
305* `1.2.x` := `>=1.2.0 <1.3.0-0` (Matching major and minor versions)
306
307A partial version range is treated as an X-Range, so the special
308character is in fact optional.
309
310* `""` (empty string) := `*` := `>=0.0.0`
311* `1` := `1.x.x` := `>=1.0.0 <2.0.0-0`
312* `1.2` := `1.2.x` := `>=1.2.0 <1.3.0-0`
313
314#### Tilde Ranges `~1.2.3` `~1.2` `~1`
315
316Allows patch-level changes if a minor version is specified on the
317comparator.  Allows minor-level changes if not.
318
319* `~1.2.3` := `>=1.2.3 <1.(2+1).0` := `>=1.2.3 <1.3.0-0`
320* `~1.2` := `>=1.2.0 <1.(2+1).0` := `>=1.2.0 <1.3.0-0` (Same as `1.2.x`)
321* `~1` := `>=1.0.0 <(1+1).0.0` := `>=1.0.0 <2.0.0-0` (Same as `1.x`)
322* `~0.2.3` := `>=0.2.3 <0.(2+1).0` := `>=0.2.3 <0.3.0-0`
323* `~0.2` := `>=0.2.0 <0.(2+1).0` := `>=0.2.0 <0.3.0-0` (Same as `0.2.x`)
324* `~0` := `>=0.0.0 <(0+1).0.0` := `>=0.0.0 <1.0.0-0` (Same as `0.x`)
325* `~1.2.3-beta.2` := `>=1.2.3-beta.2 <1.3.0-0` Note that prereleases in
326  the `1.2.3` version will be allowed, if they are greater than or
327  equal to `beta.2`.  So, `1.2.3-beta.4` would be allowed, but
328  `1.2.4-beta.2` would not, because it is a prerelease of a
329  different `[major, minor, patch]` tuple.
330
331#### Caret Ranges `^1.2.3` `^0.2.5` `^0.0.4`
332
333Allows changes that do not modify the left-most non-zero element in the
334`[major, minor, patch]` tuple.  In other words, this allows patch and
335minor updates for versions `1.0.0` and above, patch updates for
336versions `0.X >=0.1.0`, and *no* updates for versions `0.0.X`.
337
338Many authors treat a `0.x` version as if the `x` were the major
339"breaking-change" indicator.
340
341Caret ranges are ideal when an author may make breaking changes
342between `0.2.4` and `0.3.0` releases, which is a common practice.
343However, it presumes that there will *not* be breaking changes between
344`0.2.4` and `0.2.5`.  It allows for changes that are presumed to be
345additive (but non-breaking), according to commonly observed practices.
346
347* `^1.2.3` := `>=1.2.3 <2.0.0-0`
348* `^0.2.3` := `>=0.2.3 <0.3.0-0`
349* `^0.0.3` := `>=0.0.3 <0.0.4-0`
350* `^1.2.3-beta.2` := `>=1.2.3-beta.2 <2.0.0-0` Note that prereleases in
351  the `1.2.3` version will be allowed, if they are greater than or
352  equal to `beta.2`.  So, `1.2.3-beta.4` would be allowed, but
353  `1.2.4-beta.2` would not, because it is a prerelease of a
354  different `[major, minor, patch]` tuple.
355* `^0.0.3-beta` := `>=0.0.3-beta <0.0.4-0`  Note that prereleases in the
356  `0.0.3` version *only* will be allowed, if they are greater than or
357  equal to `beta`.  So, `0.0.3-pr.2` would be allowed.
358
359When parsing caret ranges, a missing `patch` value desugars to the
360number `0`, but will allow flexibility within that value, even if the
361major and minor versions are both `0`.
362
363* `^1.2.x` := `>=1.2.0 <2.0.0-0`
364* `^0.0.x` := `>=0.0.0 <0.1.0-0`
365* `^0.0` := `>=0.0.0 <0.1.0-0`
366
367A missing `minor` and `patch` values will desugar to zero, but also
368allow flexibility within those values, even if the major version is
369zero.
370
371* `^1.x` := `>=1.0.0 <2.0.0-0`
372* `^0.x` := `>=0.0.0 <1.0.0-0`
373
374### Range Grammar
375
376Putting all this together, here is a Backus-Naur grammar for ranges,
377for the benefit of parser authors:
378
379```bnf
380range-set  ::= range ( logical-or range ) *
381logical-or ::= ( ' ' ) * '||' ( ' ' ) *
382range      ::= hyphen | simple ( ' ' simple ) * | ''
383hyphen     ::= partial ' - ' partial
384simple     ::= primitive | partial | tilde | caret
385primitive  ::= ( '<' | '>' | '>=' | '<=' | '=' ) partial
386partial    ::= xr ( '.' xr ( '.' xr qualifier ? )? )?
387xr         ::= 'x' | 'X' | '*' | nr
388nr         ::= '0' | ['1'-'9'] ( ['0'-'9'] ) *
389tilde      ::= '~' partial
390caret      ::= '^' partial
391qualifier  ::= ( '-' pre )? ( '+' build )?
392pre        ::= parts
393build      ::= parts
394parts      ::= part ( '.' part ) *
395part       ::= nr | [-0-9A-Za-z]+
396```
397
398## Functions
399
400All methods and classes take a final `options` object argument.  All
401options in this object are `false` by default.  The options supported
402are:
403
404- `loose`  Be more forgiving about not-quite-valid semver strings.
405  (Any resulting output will always be 100% strict compliant, of
406  course.)  For backwards compatibility reasons, if the `options`
407  argument is a boolean value instead of an object, it is interpreted
408  to be the `loose` param.
409- `includePrerelease`  Set to suppress the [default
410  behavior](https://github.com/npm/node-semver#prerelease-tags) of
411  excluding prerelease tagged versions from ranges unless they are
412  explicitly opted into.
413
414Strict-mode Comparators and Ranges will be strict about the SemVer
415strings that they parse.
416
417* `valid(v)`: Return the parsed version, or null if it's not valid.
418* `inc(v, release)`: Return the version incremented by the release
419  type (`major`,   `premajor`, `minor`, `preminor`, `patch`,
420  `prepatch`, or `prerelease`), or null if it's not valid
421  * `premajor` in one call will bump the version up to the next major
422    version and down to a prerelease of that major version.
423    `preminor`, and `prepatch` work the same way.
424  * If called from a non-prerelease version, the `prerelease` will work the
425    same as `prepatch`. It increments the patch version, then makes a
426    prerelease. If the input version is already a prerelease it simply
427    increments it.
428* `prerelease(v)`: Returns an array of prerelease components, or null
429  if none exist. Example: `prerelease('1.2.3-alpha.1') -> ['alpha', 1]`
430* `major(v)`: Return the major version number.
431* `minor(v)`: Return the minor version number.
432* `patch(v)`: Return the patch version number.
433* `intersects(r1, r2, loose)`: Return true if the two supplied ranges
434  or comparators intersect.
435* `parse(v)`: Attempt to parse a string as a semantic version, returning either
436  a `SemVer` object or `null`.
437
438### Comparison
439
440* `gt(v1, v2)`: `v1 > v2`
441* `gte(v1, v2)`: `v1 >= v2`
442* `lt(v1, v2)`: `v1 < v2`
443* `lte(v1, v2)`: `v1 <= v2`
444* `eq(v1, v2)`: `v1 == v2` This is true if they're logically equivalent,
445  even if they're not the exact same string.  You already know how to
446  compare strings.
447* `neq(v1, v2)`: `v1 != v2` The opposite of `eq`.
448* `cmp(v1, comparator, v2)`: Pass in a comparison string, and it'll call
449  the corresponding function above.  `"==="` and `"!=="` do simple
450  string comparison, but are included for completeness.  Throws if an
451  invalid comparison string is provided.
452* `compare(v1, v2)`: Return `0` if `v1 == v2`, or `1` if `v1` is greater, or `-1` if
453  `v2` is greater.  Sorts in ascending order if passed to `Array.sort()`.
454* `rcompare(v1, v2)`: The reverse of compare.  Sorts an array of versions
455  in descending order when passed to `Array.sort()`.
456* `compareBuild(v1, v2)`: The same as `compare` but considers `build` when two versions
457  are equal.  Sorts in ascending order if passed to `Array.sort()`.
458  `v2` is greater.  Sorts in ascending order if passed to `Array.sort()`.
459* `diff(v1, v2)`: Returns difference between two versions by the release type
460  (`major`, `premajor`, `minor`, `preminor`, `patch`, `prepatch`, or `prerelease`),
461  or null if the versions are the same.
462
463### Comparators
464
465* `intersects(comparator)`: Return true if the comparators intersect
466
467### Ranges
468
469* `validRange(range)`: Return the valid range or null if it's not valid
470* `satisfies(version, range)`: Return true if the version satisfies the
471  range.
472* `maxSatisfying(versions, range)`: Return the highest version in the list
473  that satisfies the range, or `null` if none of them do.
474* `minSatisfying(versions, range)`: Return the lowest version in the list
475  that satisfies the range, or `null` if none of them do.
476* `minVersion(range)`: Return the lowest version that can possibly match
477  the given range.
478* `gtr(version, range)`: Return `true` if version is greater than all the
479  versions possible in the range.
480* `ltr(version, range)`: Return `true` if version is less than all the
481  versions possible in the range.
482* `outside(version, range, hilo)`: Return true if the version is outside
483  the bounds of the range in either the high or low direction.  The
484  `hilo` argument must be either the string `'>'` or `'<'`.  (This is
485  the function called by `gtr` and `ltr`.)
486* `intersects(range)`: Return true if any of the ranges comparators intersect
487* `simplifyRange(versions, range)`: Return a "simplified" range that
488  matches the same items in `versions` list as the range specified.  Note
489  that it does *not* guarantee that it would match the same versions in all
490  cases, only for the set of versions provided.  This is useful when
491  generating ranges by joining together multiple versions with `||`
492  programmatically, to provide the user with something a bit more
493  ergonomic.  If the provided range is shorter in string-length than the
494  generated range, then that is returned.
495* `subset(subRange, superRange)`: Return `true` if the `subRange` range is
496  entirely contained by the `superRange` range.
497
498Note that, since ranges may be non-contiguous, a version might not be
499greater than a range, less than a range, *or* satisfy a range!  For
500example, the range `1.2 <1.2.9 || >2.0.0` would have a hole from `1.2.9`
501until `2.0.0`, so the version `1.2.10` would not be greater than the
502range (because `2.0.1` satisfies, which is higher), nor less than the
503range (since `1.2.8` satisfies, which is lower), and it also does not
504satisfy the range.
505
506If you want to know if a version satisfies or does not satisfy a
507range, use the `satisfies(version, range)` function.
508
509### Coercion
510
511* `coerce(version, options)`: Coerces a string to semver if possible
512
513This aims to provide a very forgiving translation of a non-semver string to
514semver. It looks for the first digit in a string, and consumes all
515remaining characters which satisfy at least a partial semver (e.g., `1`,
516`1.2`, `1.2.3`) up to the max permitted length (256 characters).  Longer
517versions are simply truncated (`4.6.3.9.2-alpha2` becomes `4.6.3`).  All
518surrounding text is simply ignored (`v3.4 replaces v3.3.1` becomes
519`3.4.0`).  Only text which lacks digits will fail coercion (`version one`
520is not valid).  The maximum  length for any semver component considered for
521coercion is 16 characters; longer components will be ignored
522(`10000000000000000.4.7.4` becomes `4.7.4`).  The maximum value for any
523semver component is `Number.MAX_SAFE_INTEGER || (2**53 - 1)`; higher value
524components are invalid (`9999999999999999.4.7.4` is likely invalid).
525
526If the `options.rtl` flag is set, then `coerce` will return the right-most
527coercible tuple that does not share an ending index with a longer coercible
528tuple.  For example, `1.2.3.4` will return `2.3.4` in rtl mode, not
529`4.0.0`.  `1.2.3/4` will return `4.0.0`, because the `4` is not a part of
530any other overlapping SemVer tuple.
531
532### Clean
533
534* `clean(version)`: Clean a string to be a valid semver if possible
535
536This will return a cleaned and trimmed semver version. If the provided
537version is not valid a null will be returned. This does not work for
538ranges.
539
540ex.
541* `s.clean(' = v 2.1.5foo')`: `null`
542* `s.clean(' = v 2.1.5foo', { loose: true })`: `'2.1.5-foo'`
543* `s.clean(' = v 2.1.5-foo')`: `null`
544* `s.clean(' = v 2.1.5-foo', { loose: true })`: `'2.1.5-foo'`
545* `s.clean('=v2.1.5')`: `'2.1.5'`
546* `s.clean('  =v2.1.5')`: `2.1.5`
547* `s.clean('      2.1.5   ')`: `'2.1.5'`
548* `s.clean('~1.0.0')`: `null`
549
550## Constants
551
552As a convenience, helper constants are exported to provide information about what `node-semver` supports:
553
554### `RELEASE_TYPES`
555
556- major
557- premajor
558- minor
559- preminor
560- patch
561- prepatch
562- prerelease
563
564```
565const semver = require('semver');
566
567if (semver.RELEASE_TYPES.includes(arbitraryUserInput)) {
568  console.log('This is a valid release type!');
569} else {
570  console.warn('This is NOT a valid release type!');
571}
572```
573
574### `SEMVER_SPEC_VERSION`
575
5762.0.0
577
578```
579const semver = require('semver');
580
581console.log('We are currently using the semver specification version:', semver.SEMVER_SPEC_VERSION);
582```
583
584## Exported Modules
585
586<!--
587TODO: Make sure that all of these items are documented (classes aren't,
588eg), and then pull the module name into the documentation for that specific
589thing.
590-->
591
592You may pull in just the part of this semver utility that you need, if you
593are sensitive to packing and tree-shaking concerns.  The main
594`require('semver')` export uses getter functions to lazily load the parts
595of the API that are used.
596
597The following modules are available:
598
599* `require('semver')`
600* `require('semver/classes')`
601* `require('semver/classes/comparator')`
602* `require('semver/classes/range')`
603* `require('semver/classes/semver')`
604* `require('semver/functions/clean')`
605* `require('semver/functions/cmp')`
606* `require('semver/functions/coerce')`
607* `require('semver/functions/compare')`
608* `require('semver/functions/compare-build')`
609* `require('semver/functions/compare-loose')`
610* `require('semver/functions/diff')`
611* `require('semver/functions/eq')`
612* `require('semver/functions/gt')`
613* `require('semver/functions/gte')`
614* `require('semver/functions/inc')`
615* `require('semver/functions/lt')`
616* `require('semver/functions/lte')`
617* `require('semver/functions/major')`
618* `require('semver/functions/minor')`
619* `require('semver/functions/neq')`
620* `require('semver/functions/parse')`
621* `require('semver/functions/patch')`
622* `require('semver/functions/prerelease')`
623* `require('semver/functions/rcompare')`
624* `require('semver/functions/rsort')`
625* `require('semver/functions/satisfies')`
626* `require('semver/functions/sort')`
627* `require('semver/functions/valid')`
628* `require('semver/ranges/gtr')`
629* `require('semver/ranges/intersects')`
630* `require('semver/ranges/ltr')`
631* `require('semver/ranges/max-satisfying')`
632* `require('semver/ranges/min-satisfying')`
633* `require('semver/ranges/min-version')`
634* `require('semver/ranges/outside')`
635* `require('semver/ranges/to-comparators')`
636* `require('semver/ranges/valid')`
637