source: node_modules/semver/ranges/simplify.js

main
Last change on this file was d24f17c, checked in by Aleksandar Panovski <apano77@…>, 15 months ago

Initial commit

  • Property mode set to 100644
File size: 1.3 KB
Line 
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.
4const satisfies = require('../functions/satisfies.js')
5const compare = require('../functions/compare.js')
6module.exports = (versions, range, options) => {
7 const set = []
8 let first = 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 (!first) {
16 first = version
17 }
18 } else {
19 if (prev) {
20 set.push([first, prev])
21 }
22 prev = null
23 first = null
24 }
25 }
26 if (first) {
27 set.push([first, null])
28 }
29
30 const ranges = []
31 for (const [min, max] of set) {
32 if (min === max) {
33 ranges.push(min)
34 } else if (!max && min === v[0]) {
35 ranges.push('*')
36 } else if (!max) {
37 ranges.push(`>=${min}`)
38 } else if (min === v[0]) {
39 ranges.push(`<=${max}`)
40 } else {
41 ranges.push(`${min} - ${max}`)
42 }
43 }
44 const simplified = ranges.join(' || ')
45 const original = typeof range.raw === 'string' ? range.raw : String(range)
46 return simplified.length < original.length ? simplified : range
47}
Note: See TracBrowser for help on using the repository browser.