function rangeStart(v) {
  const range = new semver.Range(v, /* loose */ true)
  return range.set[0][0].semver.version
}
Returns the start of the range that matches a given version string.

@param {string} v - A version string that follows the Semantic Versioning specification. The function will accept and coerce invalid versions into valid ones.
@returns {string} The start of the range that matches the given version string, or null if no match is found.
@throws {TypeError} If v is an invalid semver range
@example
rangeStart('^1.2.3') // returns '1.2.3'
rangeStart('>=2.0.0') // returns '2.0.0'
rangeStart('1.x || >=2.5.0 || 5.0.0 - 7.2.3') // returns '1.0.0'
rangeStart('1.2.x') // returns '1.2.0'
rangeStart('1.2.*') // returns '1.2.0-0'
rangeStart(null) // throws TypeError: Invalid Version: null
rangeStart('') // throws TypeError: Invalid Version: