Sha256: 9120ea55b47227123790fc401f7496a60d85791d010a4311bb34d071f8718456

Contents?: true

Size: 1.31 KB

Versions: 136

Compression:

Stored size: 1.31 KB

Contents

// given a set of versions and a range, create a "simplified" range
// that includes the same versions that the original range does
// If the original range is shorter than the simplified one, return that.
const satisfies = require('../functions/satisfies.js')
const compare = require('../functions/compare.js')
module.exports = (versions, range, options) => {
  const set = []
  let first = null
  let prev = null
  const v = versions.sort((a, b) => compare(a, b, options))
  for (const version of v) {
    const included = satisfies(version, range, options)
    if (included) {
      prev = version
      if (!first) {
        first = version
      }
    } else {
      if (prev) {
        set.push([first, prev])
      }
      prev = null
      first = null
    }
  }
  if (first) {
    set.push([first, null])
  }

  const ranges = []
  for (const [min, max] of set) {
    if (min === max) {
      ranges.push(min)
    } else if (!max && min === v[0]) {
      ranges.push('*')
    } else if (!max) {
      ranges.push(`>=${min}`)
    } else if (min === v[0]) {
      ranges.push(`<=${max}`)
    } else {
      ranges.push(`${min} - ${max}`)
    }
  }
  const simplified = ranges.join(' || ')
  const original = typeof range.raw === 'string' ? range.raw : String(range)
  return simplified.length < original.length ? simplified : range
}

Version data entries

136 entries across 62 versions & 5 rubygems

Version Path
immosquare-cleaner-0.1.68 node_modules/semver/ranges/simplify.js
immosquare-cleaner-0.1.67 node_modules/semver/ranges/simplify.js
immosquare-cleaner-0.1.66 node_modules/semver/ranges/simplify.js
immosquare-cleaner-0.1.65 node_modules/semver/ranges/simplify.js
immosquare-cleaner-0.1.64 node_modules/semver/ranges/simplify.js
immosquare-cleaner-0.1.63 node_modules/semver/ranges/simplify.js
rapid_stack-0.2.0 templates/frontend/node_modules/semver/ranges/simplify.js
rapid_stack-0.1.1 templates/FrontEnd/node_modules/semver/ranges/simplify.js
rapid_stack-0.1.0 templates/FrontEnd/node_modules/semver/ranges/simplify.js
immosquare-cleaner-0.1.62 node_modules/semver/ranges/simplify.js
immosquare-cleaner-0.1.61 node_modules/semver/ranges/simplify.js
immosquare-cleaner-0.1.60 node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree/node_modules/semver/ranges/simplify.js
immosquare-cleaner-0.1.60 node_modules/@typescript-eslint/typescript-estree/node_modules/semver/ranges/simplify.js
immosquare-cleaner-0.1.60 node_modules/semver/ranges/simplify.js
immosquare-cleaner-0.1.60 node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree/node_modules/semver/ranges/simplify.js
immosquare-cleaner-0.1.60 node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree/node_modules/semver/ranges/simplify.js
immosquare-cleaner-0.1.60 node_modules/vue-eslint-parser/node_modules/semver/ranges/simplify.js
immosquare-cleaner-0.1.59 node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree/node_modules/semver/ranges/simplify.js
immosquare-cleaner-0.1.59 node_modules/@typescript-eslint/typescript-estree/node_modules/semver/ranges/simplify.js
immosquare-cleaner-0.1.59 node_modules/semver/ranges/simplify.js