text: const {MAX_LENGTH} = require('../internal/constants')
  const { re, t } = require('../internal/re')
  const SemVer = require('../classes/semver')
  
  const parseOptions = require('../internal/parse-options')
  const parse = (version, options) => {
    options = parseOptions(options)
  
    if (version instanceof SemVer) {
      return version
    }
  
    if (typeof version !== 'string') {
      return null
    }
  
    if (version.length > MAX_LENGTH) {
      return null
    }
  
    const r = options.loose ? re[t.LOOSE] : re[t.FULL]
    if (!r.test(version)) {
      return null
    }
  
    try {
      return new SemVer(version, options)
    } catch (er) {
      return null
    }
  }
  
  module.exports = parse
  