{"mappings":"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","sources":["src/lib.ts","src/version.ts","src/parse.ts","src/error.ts","src/version_req.ts","src/display.ts","src/eval.ts","src/order.ts"],"sourcesContent":["//! A parser and evaluator for Cargo's flavor of Semantic Versioning.\n//!\n//! Semantic Versioning (see <https://semver.org>) is a guideline for how\n//! version numbers are assigned and incremented. It is widely followed within\n//! the Cargo/crates.io ecosystem for Rust.\n//!\n//! <br>\n//!\n//! # Example\n//!\n//! ```\n//! use semver::{BuildMetadata, Prerelease, Version, VersionReq};\n//!\n//! fn main() {\n//!     let req = VersionReq::parse(\">=1.2.3, <1.8.0\").unwrap();\n//!\n//!     // Check whether this requirement matches version 1.2.3-alpha.1 (no)\n//!     let version = Version {\n//!         major: 1,\n//!         minor: 2,\n//!         patch: 3,\n//!         pre: Prerelease::new(\"alpha.1\").unwrap(),\n//!         build: BuildMetadata::EMPTY,\n//!     };\n//!     assert!(!req.matches(&version));\n//!\n//!     // Check whether it matches 1.3.0 (yes it does)\n//!     let version = Version::parse(\"1.3.0\").unwrap();\n//!     assert!(req.matches(&version));\n//! }\n//! ```\n//!\n//! <br><br>\n//!\n//! # Scope of this crate\n//!\n//! Besides Cargo, several other package ecosystems and package managers for\n//! other languages also use SemVer:&ensp;RubyGems/Bundler for Ruby, npm for\n//! JavaScript, Composer for PHP, CocoaPods for Objective-C...\n//!\n//! The `semver` crate is specifically intended to implement Cargo's\n//! interpretation of Semantic Versioning.\n//!\n//! Where the various tools differ in their interpretation or implementation of\n//! the spec, this crate follows the implementation choices made by Cargo. If\n//! you are operating on version numbers from some other package ecosystem, you\n//! will want to use a different semver library which is appropriate to that\n//! ecosystem.\n//!\n//! The extent of Cargo's SemVer support is documented in the *[Specifying\n//! Dependencies]* chapter of the Cargo reference.\n//!\n//! [Specifying Dependencies]: https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html\n\nexport { default as Version } from './version';\nexport { default as VersionReq, Comparator } from './version_req';\n","import { parse_version } from './parse';\nimport { compareBuild, comparePre } from './order';\nimport { format_version } from './display';\n\n/**\n * **SemVer version** as defined by <https://semver.org>.\n *\n * # Syntax\n *\n * - The major, minor, and patch numbers may be any integer 0 through u64::MAX.\n *   When representing a SemVer version as a string, each number is written as\n *   a base 10 integer. For example, `1.0.119`.\n *\n * - Leading zeros are forbidden in those positions. For example `1.01.00` is\n *   invalid as a SemVer version.\n *\n * - The pre-release identifier, if present, must conform to the syntax\n *   documented for [`Prerelease`].\n *\n * - The build metadata, if present, must conform to the syntax documented for\n *   [`BuildMetadata`].\n *\n * - Whitespace is not allowed anywhere in the version.\n *\n * # Total ordering\n *\n * Given any two SemVer versions, one is less than, greater than, or equal to\n * the other. Versions may be compared against one another using Rust's usual\n * comparison operators.\n *\n * - The major, minor, and patch number are compared numerically from left to\n * right, lexicographically ordered as a 3-tuple of integers. So for example\n * version `1.5.0` is less than version `1.19.0`, despite the fact that\n * \"1.19.0\" &lt; \"1.5.0\" as ASCIIbetically compared strings and 1.19 &lt; 1.5\n * as real numbers.\n *\n * - When major, minor, and patch are equal, a pre-release version is\n *   considered less than the ordinary release:&ensp;version `1.0.0-alpha.1` is\n *   less than version `1.0.0`.\n *\n * - Two pre-releases of the same major, minor, patch are compared by\n *   lexicographic ordering of dot-separated components of the pre-release\n *   string.\n *\n *   - Identifiers consisting of only digits are compared\n *     numerically:&ensp;`1.0.0-pre.8` is less than `1.0.0-pre.12`.\n *\n *   - Identifiers that contain a letter or hyphen are compared in ASCII sort\n *     order:&ensp;`1.0.0-pre12` is less than `1.0.0-pre8`.\n *\n *   - Any numeric identifier is always less than any non-numeric\n *     identifier:&ensp;`1.0.0-pre.1` is less than `1.0.0-pre.x`.\n *\n * Example:&ensp;`1.0.0-alpha`&ensp;&lt;&ensp;`1.0.0-alpha.1`&ensp;&lt;&ensp;`1.0.0-alpha.beta`&ensp;&lt;&ensp;`1.0.0-beta`&ensp;&lt;&ensp;`1.0.0-beta.2`&ensp;&lt;&ensp;`1.0.0-beta.11`&ensp;&lt;&ensp;`1.0.0-rc.1`&ensp;&lt;&ensp;`1.0.0`\n */\nexport default class Version {\n  public major: number;\n  public minor: number;\n  public patch: number;\n  public pre: string;\n  public build: string;\n\n  constructor(\n    major: number,\n    minor: number,\n    patch: number,\n    pre = '',\n    build = ''\n  ) {\n    this.major = major;\n    this.minor = minor;\n    this.patch = patch;\n    this.pre = pre;\n    this.build = build;\n  }\n\n  /**\n   * Create `Version` by parsing from string representation.\n   *\n   * # Errors\n   *\n   * Possible reasons for the parse to fail include:\n   *\n   * - `1.0` &mdash; too few numeric components. A SemVer version must have\n   *   exactly three. If you are looking at something that has fewer than\n   *   three numbers in it, it's possible it is a `VersionReq` instead (with\n   *   an implicit default `^` comparison operator).\n   *\n   * - `1.0.01` &mdash; a numeric component has a leading zero.\n   *\n   * - `1.0.unknown` &mdash; unexpected character in one of the components.\n   *\n   * - `1.0.0-` or `1.0.0+` &mdash; the pre-release or build metadata are\n   *   indicated present but empty.\n   *\n   * - `1.0.0-alpha_123` &mdash; pre-release or build metadata have something\n   *   outside the allowed characters, which are `0-9`, `A-Z`, `a-z`, `-`,\n   *   and `.` (dot).\n   *\n   * - `23456789999999999999.0.0` &mdash; overflow of a u64.\n   */\n  static parse(text: string): Version {\n    return parse_version(text);\n  }\n\n  toString(): string {\n    return format_version(this);\n  }\n\n  compare(other: Version): number {\n    if (this.major > other.major) return 1;\n    if (this.major < other.major) return -1;\n\n    if (this.minor > other.minor) return 1;\n    if (this.minor < other.minor) return -1;\n\n    if (this.patch > other.patch) return 1;\n    if (this.patch < other.patch) return -1;\n\n    const preCompare = comparePre(this.pre, other.pre);\n    if (preCompare !== 0) return preCompare;\n\n    return compareBuild(this.build, other.build);\n  }\n\n  eq(other: Version): boolean {\n    return this.compare(other) === 0;\n  }\n\n  lt(other: Version): boolean {\n    return this.compare(other) < 0;\n  }\n\n  lte(other: Version): boolean {\n    return this.compare(other) <= 0;\n  }\n\n  gt(other: Version): boolean {\n    return this.compare(other) > 0;\n  }\n\n  gte(other: Version): boolean {\n    return this.compare(other) >= 0;\n  }\n}\n//\n","import {\n  EmptySegmentError,\n  ExcessiveComparatorsError,\n  ExpectedCommaFoundError,\n  LeadingZeroError,\n  Position,\n  UnexpectedAfterWildcardError,\n  UnexpectedChar,\n  UnexpectedCharAfterError,\n  UnexpectedEndError,\n  WildcardNotTheOnlyComparatorError,\n} from './error';\nimport Version from './version';\nimport VersionReq, { Comparator, Op } from './version_req';\n\nexport function parse_version(text: string): Version {\n  let major: number, minor: number, patch: number;\n\n  [major, text] = numeric_identifier(text, Position.Major);\n  text = dot(text, Position.Major);\n\n  [minor, text] = numeric_identifier(text, Position.Minor);\n  text = dot(text, Position.Minor);\n\n  [patch, text] = numeric_identifier(text, Position.Patch);\n\n  if (text === '') {\n    return new Version(major, minor, patch);\n  }\n\n  let pre = '';\n  if (text[0] === '-') {\n    [pre, text] = identifier(text.slice(1), Position.Pre);\n    if (pre === '') {\n      throw new EmptySegmentError(Position.Pre);\n    }\n  }\n\n  let build = '';\n  if (text[0] === '+') {\n    [build, text] = identifier(text.slice(1), Position.Build);\n    if (build === '') {\n      throw new EmptySegmentError(Position.Build);\n    }\n  }\n\n  if (text !== '') {\n    let pos;\n    if (build) {\n      pos = Position.Build;\n    } else if (pre) {\n      pos = Position.Pre;\n    } else {\n      pos = Position.Patch;\n    }\n\n    throw new UnexpectedCharAfterError(pos, text[0]);\n  }\n\n  return new Version(major, minor, patch, pre, build);\n}\n\nexport function parse_version_req(text: string): VersionReq {\n  text = text.replace(/^ +/, '');\n\n  const wc = wildcard(text);\n  if (wc) {\n    const rest = wc[1].replace(/^ +/, '');\n    if (rest === '') {\n      return VersionReq.STAR;\n    } else if (rest[0] === ',') {\n      throw new WildcardNotTheOnlyComparatorError(wc[0]);\n    } else {\n      throw new UnexpectedAfterWildcardError();\n    }\n  }\n\n  const depth = 0;\n  const comparators = [];\n  version_req(text, comparators, depth);\n  return new VersionReq(comparators);\n}\n\nexport function parse_comparator(text: string): Comparator {\n  text = text.replace(/^ +/, '');\n\n  const [comp, pos, rest] = comparator(text);\n  if (rest !== '') {\n    throw new UnexpectedCharAfterError(pos, rest[0]);\n  }\n\n  return comp;\n}\n\nfunction numeric_identifier(input: string, pos: Position): [number, string] {\n  const ZERO = '0'.charCodeAt(0);\n  const NINE = '9'.charCodeAt(0);\n\n  let len = 0;\n  let value = 0;\n\n  let digit: number;\n  while ((digit = input.charCodeAt(len))) {\n    if (digit < ZERO || digit > NINE) {\n      break;\n    }\n    if (value == 0 && len > 0) {\n      throw new LeadingZeroError(pos);\n    }\n    value = value * 10 + (digit - ZERO);\n    len += 1;\n  }\n\n  if (len > 0) {\n    return [value, input.slice(len)];\n  } else if (input !== '') {\n    throw new UnexpectedChar(pos, input.slice(len, len + 1));\n  } else {\n    throw new UnexpectedEndError(pos);\n  }\n}\n\nfunction wildcard(input: string): [string, string] | null {\n  const next = input[0];\n  return next === '*' || next === 'x' || next === 'X'\n    ? [next, input.slice(1)]\n    : null;\n}\n\nfunction dot(input: string, pos: Position): string {\n  const next = input[0];\n  if (next === '.') {\n    return input.slice(1);\n  } else if (next === undefined) {\n    throw new UnexpectedEndError(pos);\n  } else {\n    throw new UnexpectedCharAfterError(pos, next);\n  }\n}\n\nfunction identifier(input: string, pos: Position): [string, string] {\n  let accumulated_len = 0;\n  let segment_len = 0;\n  let segment_has_nondigit = false;\n\n  // eslint-disable-next-line no-constant-condition\n  while (true) {\n    const char = input.charCodeAt(accumulated_len + segment_len);\n    if (\n      (char >= 'A'.charCodeAt(0) && char <= 'Z'.charCodeAt(0)) ||\n      (char >= 'a'.charCodeAt(0) && char <= 'z'.charCodeAt(0)) ||\n      char === '-'.charCodeAt(0)\n    ) {\n      segment_len += 1;\n      segment_has_nondigit = true;\n    } else if (char >= '0'.charCodeAt(0) && char <= '9'.charCodeAt(0)) {\n      segment_len += 1;\n    } else {\n      if (segment_len == 0) {\n        if (accumulated_len === 0 && char !== '.'.charCodeAt(0)) {\n          return ['', input];\n        } else {\n          throw new EmptySegmentError(pos);\n        }\n      }\n      if (\n        pos == Position.Pre &&\n        segment_len > 1 &&\n        !segment_has_nondigit &&\n        input[accumulated_len] === '0'\n      ) {\n        throw new LeadingZeroError(pos);\n      }\n      accumulated_len += segment_len;\n      if (char === '.'.charCodeAt(0)) {\n        accumulated_len += 1;\n        segment_len = 0;\n        segment_has_nondigit = false;\n      } else {\n        return [input.slice(0, accumulated_len), input.slice(accumulated_len)];\n      }\n    }\n  }\n}\n\nfunction op_(input: string): [Op, string] {\n  const ch1 = input[0];\n  const ch2 = input[1];\n  if (ch1 === '=') {\n    return ['Exact', input.slice(1)];\n  } else if (ch1 === '>') {\n    if (ch2 === '=') {\n      return ['GreaterEq', input.slice(2)];\n    } else {\n      return ['Greater', input.slice(1)];\n    }\n  } else if (ch1 === '<') {\n    if (ch2 === '=') {\n      return ['LessEq', input.slice(2)];\n    } else {\n      return ['Less', input.slice(1)];\n    }\n  } else if (ch1 === '~') {\n    return ['Tilde', input.slice(1)];\n  } else if (ch1 === '^') {\n    return ['Caret', input.slice(1)];\n  } else {\n    return ['Caret', input];\n  }\n}\n\nfunction comparator(input: string): [Comparator, Position, string] {\n  let [op, text] = op_(input);\n  const isDefaultOp = input.length == text.length;\n\n  text = text.replace(/^ +/, '');\n\n  let major: number;\n  let pos = Position.Major;\n  // eslint-disable-next-line prefer-const\n  [major, text] = numeric_identifier(text, pos);\n  let hasWildcard = false;\n\n  let minor = null;\n  if (text[0] === '.') {\n    text = text.slice(1);\n    pos = Position.Minor;\n\n    const wc = wildcard(text);\n    if (wc) {\n      hasWildcard = true;\n      if (isDefaultOp) {\n        op = 'Wildcard';\n      }\n      text = wc[1];\n    } else {\n      [minor, text] = numeric_identifier(text, pos);\n    }\n  }\n\n  let patch = null;\n  if (text[0] === '.') {\n    text = text.slice(1);\n    pos = Position.Patch;\n\n    const wc = wildcard(text);\n    if (wc) {\n      if (isDefaultOp) {\n        op = 'Wildcard';\n      }\n      text = wc[1];\n    } else if (hasWildcard) {\n      throw new UnexpectedAfterWildcardError();\n    } else {\n      [patch, text] = numeric_identifier(text, pos);\n    }\n  }\n\n  let pre = '';\n  if (patch !== null && text[0] === '-') {\n    pos = Position.Pre;\n    text = text.slice(1);\n    [pre, text] = identifier(text, pos);\n    if (pre === '') {\n      throw new EmptySegmentError(pos);\n    }\n  }\n\n  let build = '';\n  if (patch !== null && text[0] === '+') {\n    pos = Position.Build;\n    text = text.slice(1);\n    [build, text] = identifier(text, pos);\n    if (build === '') {\n      throw new EmptySegmentError(pos);\n    }\n  }\n\n  text = text.replace(/^ +/, '');\n\n  const comparator = new Comparator(op, major, minor, patch, pre);\n  return [comparator, pos, text];\n}\n\nfunction version_req(input: string, out: Comparator[], depth: number): number {\n  let comp, pos, text;\n  try {\n    [comp, pos, text] = comparator(input);\n  } catch (error) {\n    const wc = wildcard(input);\n    if (wc) {\n      const rest = wc[1].replace(/^ +/, '');\n      if (rest === '' || rest[0] === ',') {\n        throw new WildcardNotTheOnlyComparatorError(wc[0]);\n      }\n    }\n\n    throw error;\n  }\n\n  if (text === '') {\n    out.push(comp);\n    return depth + 1;\n  }\n\n  if (text[0] !== ',') {\n    const unexpected = text[0];\n    throw new ExpectedCommaFoundError(pos, unexpected);\n  }\n\n  text = text.replace(/^, */, '');\n\n  const MAX_COMPARATORS = 32;\n  if (depth + 1 == MAX_COMPARATORS) {\n    throw new ExcessiveComparatorsError();\n  }\n\n  out.push(comp);\n\n  return version_req(text, out, depth + 1);\n}\n","// pub(crate) enum ErrorKind {\n//     UnexpectedEnd(Position),\n//     UnexpectedChar(Position, char),\n//     UnexpectedCharAfter(Position, char),\n//     ExpectedCommaFound(Position, char),\n//     LeadingZero(Position),\n//     Overflow(Position),\n//     EmptySegment(Position),\n//     IllegalCharacter(Position),\n//     WildcardNotTheOnlyComparator(char),\n//     UnexpectedAfterWildcard,\n//     ExcessiveComparators,\n// }\n\nexport enum Position {\n  Major = 'major version number',\n  Minor = 'minor version number',\n  Patch = 'patch version number',\n  Pre = 'pre-release identifier',\n  Build = 'build metadata',\n}\n\nexport class UnexpectedEndError extends Error {\n  public pos: Position;\n\n  constructor(pos: Position) {\n    const message = `unexpected end of input while parsing ${pos}`;\n    super(message);\n    this.name = 'UnexpectedEndError';\n    this.pos = pos;\n  }\n}\n\nexport class UnexpectedChar extends Error {\n  public pos: Position;\n  public char: string;\n\n  constructor(pos: Position, char: string) {\n    const message = `unexpected character ${quoted(char)} while parsing ${pos}`;\n    super(message);\n    this.name = 'UnexpectedChar';\n    this.pos = pos;\n    this.char = char;\n  }\n}\n\nexport class UnexpectedCharAfterError extends Error {\n  public pos: Position;\n  public char: string;\n\n  constructor(pos: Position, char: string) {\n    const message = `unexpected character ${quoted(char)} after ${pos}`;\n    super(message);\n    this.name = 'UnexpectedCharAfterError';\n    this.pos = pos;\n    this.char = char;\n  }\n}\n\nexport class ExpectedCommaFoundError extends Error {\n  public pos: Position;\n  public char: string;\n\n  constructor(pos: Position, char: string) {\n    const message = `expected comma after ${pos}, found ${quoted(char)}`;\n    super(message);\n    this.name = 'ExpectedCommaFoundError';\n    this.pos = pos;\n    this.char = char;\n  }\n}\n\nexport class LeadingZeroError extends Error {\n  public pos: Position;\n\n  constructor(pos: Position) {\n    const message = `invalid leading zero in ${pos}`;\n    super(message);\n    this.name = 'LeadingZeroError';\n    this.pos = pos;\n  }\n}\n\nexport class EmptySegmentError extends Error {\n  public pos: Position;\n\n  constructor(pos: Position) {\n    const message = `empty identifier segment in ${pos}`;\n    super(message);\n    this.name = 'EmptySegmentError';\n    this.pos = pos;\n  }\n}\n\nexport class WildcardNotTheOnlyComparatorError extends Error {\n  public char: string;\n\n  constructor(char: string) {\n    const message = `wildcard req (${char}) must be the only comparator in the version req`;\n    super(message);\n    this.name = 'WildcardNotTheOnlyComparatorError';\n    this.char = char;\n  }\n}\n\nexport class UnexpectedAfterWildcardError extends Error {\n  constructor() {\n    const message = `unexpected character after wildcard in version req`;\n    super(message);\n    this.name = 'UnexpectedAfterWildcardError';\n  }\n}\n\nexport class ExcessiveComparatorsError extends Error {\n  constructor() {\n    const message = `excessive number of version comparators`;\n    super(message);\n    this.name = 'ExcessiveComparatorsError';\n  }\n}\n\nfunction quoted(text: string): string {\n  return text === '\\0' ? \"'\\\\0'\" : `'${text}'`;\n}\n","import Version from './version';\nimport { parse_comparator, parse_version_req } from './parse';\nimport { format_comparator, format_version_req } from './display';\nimport { matches_comparator, matches_req } from './eval';\n\n/**\n * **SemVer version requirement** describing the intersection of some version\n * comparators, such as `>=1.2.3, <1.8`.\n *\n * # Syntax\n *\n * - Either `*` (meaning \"any\"), or one or more comma-separated comparators.\n *\n * - A [`Comparator`] is an operator ([`Op`]) and a partial version, separated\n *   by optional whitespace. For example `>=1.0.0` or `>=1.0`.\n *\n * - Build metadata is syntactically permitted on the partial versions, but is\n *   completely ignored, as it's never relevant to whether any comparator\n *   matches a particular version.\n *\n * - Whitespace is permitted around commas and around operators. Whitespace is\n *   not permitted within a partial version, i.e. anywhere between the major\n *   version number and its minor, patch, pre-release, or build metadata.\n */\nexport default class VersionReq {\n  public comparators: Comparator[];\n\n  /**\n   * A `VersionReq` with no constraint on the version numbers it matches.\n   * Equivalent to `VersionReq::parse(\"*\").unwrap()`.\n   *\n   * In terms of comparators this is equivalent to `>=0.0.0`.\n   *\n   * Counterintuitively a `*` VersionReq does not match every possible\n   * version number. In particular, in order for *any* `VersionReq` to match\n   * a pre-release version, the `VersionReq` must contain at least one\n   * `Comparator` that has an explicit major, minor, and patch version\n   * identical to the pre-release being matched, and that has a nonempty\n   * pre-release component. Since `*` is not written with an explicit major,\n   * minor, and patch version, and does not contain a nonempty pre-release\n   * component, it does not match any pre-release versions.\n   */\n  public static STAR = new VersionReq([]);\n\n  constructor(comparators: Comparator[]) {\n    this.comparators = comparators;\n  }\n\n  /**\n   * Create `VersionReq` by parsing from string representation.\n   *\n   * # Errors\n   *\n   * Possible reasons for the parse to fail include:\n   *\n   * - `>a.b` &mdash; unexpected characters in the partial version.\n   *\n   * - `@1.0.0` &mdash; unrecognized comparison operator.\n   *\n   * - `^1.0.0, ` &mdash; unexpected end of input.\n   *\n   * - `>=1.0 <2.0` &mdash; missing comma between comparators.\n   *\n   * - `*.*` &mdash; unsupported wildcard syntax.\n   */\n  static parse(text: string): VersionReq {\n    return parse_version_req(text);\n  }\n\n  toString(): string {\n    return format_version_req(this);\n  }\n\n  /**\n   * Evaluate whether the given `Version` satisfies the version requirement.\n   */\n  matches(version: Version): boolean {\n    return matches_req(this, version);\n  }\n}\n\n/**\n * A pair of comparison operator and partial version, such as `>=1.2`. Forms\n * one piece of a VersionReq.\n */\nexport class Comparator {\n  public op: Op;\n  public major: number;\n  public minor: number | null;\n  /**\n   * Patch is only allowed if minor is Some.\n   */\n  public patch: number | null;\n  /**\n   * Non-empty pre-release is only allowed if patch is Some.\n   */\n  public pre: string;\n\n  constructor(\n    op: Op,\n    major: number,\n    minor: number | null = null,\n    patch: number | null = null,\n    pre = ''\n  ) {\n    this.op = op;\n    this.major = major;\n    this.minor = minor;\n    this.patch = patch;\n    this.pre = pre;\n  }\n\n  static parse(text: string): Comparator {\n    return parse_comparator(text);\n  }\n\n  toString(): string {\n    return format_comparator(this);\n  }\n\n  matches(version: Version): boolean {\n    return matches_comparator(this, version);\n  }\n}\n\n/**\n * SemVer comparison operator: `=`, `>`, `>=`, `<`, `<=`, `~`, `^`, `*`.\n *\n * # Op::Exact\n * - &ensp;**`=I.J.K`**&emsp;&mdash;&emsp;exactly the version I.J.K\n * - &ensp;**`=I.J`**&emsp;&mdash;&emsp;equivalent to `>=I.J.0, <I.(J+1).0`\n * - &ensp;**`=I`**&emsp;&mdash;&emsp;equivalent to `>=I.0.0, <(I+1).0.0`\n *\n * # Op::Greater\n * - &ensp;**`>I.J.K`**\n * - &ensp;**`>I.J`**&emsp;&mdash;&emsp;equivalent to `>=I.(J+1).0`\n * - &ensp;**`>I`**&emsp;&mdash;&emsp;equivalent to `>=(I+1).0.0`\n *\n * # Op::GreaterEq\n * - &ensp;**`>=I.J.K`**\n * - &ensp;**`>=I.J`**&emsp;&mdash;&emsp;equivalent to `>=I.J.0`\n * - &ensp;**`>=I`**&emsp;&mdash;&emsp;equivalent to `>=I.0.0`\n *\n * # Op::Less\n * - &ensp;**`<I.J.K`**\n * - &ensp;**`<I.J`**&emsp;&mdash;&emsp;equivalent to `<I.J.0`\n * - &ensp;**`<I`**&emsp;&mdash;&emsp;equivalent to `<I.0.0`\n *\n * # Op::LessEq\n * - &ensp;**`<=I.J.K`**\n * - &ensp;**`<=I.J`**&emsp;&mdash;&emsp;equivalent to `<I.(J+1).0`\n * - &ensp;**`<=I`**&emsp;&mdash;&emsp;equivalent to `<(I+1).0.0`\n *\n * # Op::Tilde&emsp;(\"patch\" updates)\n * *Tilde requirements allow the **patch** part of the semver version (the third number) to increase.*\n * - &ensp;**`~I.J.K`**&emsp;&mdash;&emsp;equivalent to `>=I.J.K, <I.(J+1).0`\n * - &ensp;**`~I.J`**&emsp;&mdash;&emsp;equivalent to `=I.J`\n * - &ensp;**`~I`**&emsp;&mdash;&emsp;equivalent to `=I`\n *\n * # Op::Caret&emsp;(\"compatible\" updates)\n * *Caret requirements allow parts that are **right of the first nonzero** part of the semver version to increase.*\n * - &ensp;**`^I.J.K`**&ensp;(for I\\>0)&emsp;&mdash;&emsp;equivalent to `>=I.J.K, <(I+1).0.0`\n * - &ensp;**`^0.J.K`**&ensp;(for J\\>0)&emsp;&mdash;&emsp;equivalent to `>=0.J.K, <0.(J+1).0`\n * - &ensp;**`^0.0.K`**&emsp;&mdash;&emsp;equivalent to `=0.0.K`\n * - &ensp;**`^I.J`**&ensp;(for I\\>0 or J\\>0)&emsp;&mdash;&emsp;equivalent to `^I.J.0`\n * - &ensp;**`^0.0`**&emsp;&mdash;&emsp;equivalent to `=0.0`\n * - &ensp;**`^I`**&emsp;&mdash;&emsp;equivalent to `=I`\n *\n * # Op::Wildcard\n * - &ensp;**`I.J.*`**&emsp;&mdash;&emsp;equivalent to `=I.J`\n * - &ensp;**`I.*`**&ensp;or&ensp;**`I.*.*`**&emsp;&mdash;&emsp;equivalent to `=I`\n */\nexport type Op =\n  | 'Exact'\n  | 'Greater'\n  | 'GreaterEq'\n  | 'Less'\n  | 'LessEq'\n  | 'Tilde'\n  | 'Caret'\n  | 'Wildcard';\n","import Version from './version';\nimport VersionReq, { Comparator } from './version_req';\n\nexport function format_version(v: Version) {\n  let output = `${v.major}.${v.minor}.${v.patch}`;\n  if (v.pre) {\n    output += `-${v.pre}`;\n  }\n  if (v.build) {\n    output += `+${v.build}`;\n  }\n  return output;\n}\n\nexport function format_version_req(r: VersionReq) {\n  if (r.comparators.length === 0) return '*';\n  return r.comparators.map((c) => format_comparator(c)).join(', ');\n}\n\nexport function format_comparator(c: Comparator) {\n  const op =\n    c.op === 'Exact'\n      ? '='\n      : c.op === 'Greater'\n      ? '>'\n      : c.op === 'GreaterEq'\n      ? '>='\n      : c.op === 'Less'\n      ? '<'\n      : c.op === 'LessEq'\n      ? '<='\n      : c.op === 'Tilde'\n      ? '~'\n      : c.op === 'Caret'\n      ? '^'\n      : '';\n\n  let output = `${op}${c.major}`;\n  if (c.minor !== null) {\n    output += `.${c.minor}`;\n    if (c.patch !== null) {\n      output += `.${c.patch}`;\n      if (c.pre) {\n        output += `-${c.pre}`;\n      }\n    } else if (c.op == 'Wildcard') {\n      output += '.*';\n    }\n  } else if (c.op == 'Wildcard') {\n    output += '.*';\n  }\n\n  return output;\n}\n","import VersionReq, { Comparator } from './version_req';\nimport Version from './version';\nimport { comparePre } from './order';\n\nexport function matches_req(req: VersionReq, ver: Version): boolean {\n  for (const cmp of req.comparators) {\n    if (!matches_impl(cmp, ver)) {\n      return false;\n    }\n  }\n\n  if (!ver.pre) {\n    return true;\n  }\n\n  // If a version has a prerelease tag (for example, 1.2.3-alpha.3) then it\n  // will only be allowed to satisfy req if at least one comparator with the\n  // same major.minor.patch also has a prerelease tag.\n  for (const cmp of req.comparators) {\n    if (pre_is_compatible(cmp, ver)) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nexport function matches_comparator(cmp: Comparator, ver: Version): boolean {\n  return (\n    matches_impl(cmp, ver) && (ver.pre === '' || pre_is_compatible(cmp, ver))\n  );\n}\n\nfunction matches_impl(cmp: Comparator, ver: Version): boolean {\n  return cmp.op === 'Exact' || cmp.op === 'Wildcard'\n    ? matches_exact(cmp, ver)\n    : cmp.op === 'Greater'\n    ? matches_greater(cmp, ver)\n    : cmp.op === 'GreaterEq'\n    ? matches_exact(cmp, ver) || matches_greater(cmp, ver)\n    : cmp.op === 'Less'\n    ? matches_less(cmp, ver)\n    : cmp.op === 'LessEq'\n    ? matches_exact(cmp, ver) || matches_less(cmp, ver)\n    : cmp.op === 'Tilde'\n    ? matches_tilde(cmp, ver)\n    : cmp.op === 'Caret'\n    ? matches_caret(cmp, ver)\n    : false;\n}\n\nfunction matches_exact(cmp: Comparator, ver: Version): boolean {\n  if (ver.major !== cmp.major) {\n    return false;\n  }\n\n  if (cmp.minor !== null) {\n    if (ver.minor !== cmp.minor) {\n      return false;\n    }\n  }\n\n  if (cmp.patch !== null) {\n    if (ver.patch !== cmp.patch) {\n      return false;\n    }\n  }\n\n  return comparePre(ver.pre, cmp.pre) === 0;\n}\n\nfunction matches_greater(cmp: Comparator, ver: Version): boolean {\n  if (ver.major !== cmp.major) {\n    return ver.major > cmp.major;\n  }\n\n  if (cmp.minor === null) return false;\n  if (ver.minor !== cmp.minor) {\n    return ver.minor > cmp.minor;\n  }\n\n  if (cmp.patch === null) return false;\n  if (ver.patch !== cmp.patch) {\n    return ver.patch > cmp.patch;\n  }\n\n  return comparePre(ver.pre, cmp.pre) > 0;\n}\n\nfunction matches_less(cmp: Comparator, ver: Version): boolean {\n  if (ver.major !== cmp.major) {\n    return ver.major < cmp.major;\n  }\n\n  if (cmp.minor === null) return false;\n  if (ver.minor !== cmp.minor) {\n    return ver.minor < cmp.minor;\n  }\n\n  if (cmp.patch === null) return false;\n  if (ver.patch !== cmp.patch) {\n    return ver.patch < cmp.patch;\n  }\n\n  return comparePre(ver.pre, cmp.pre) < 0;\n}\n\nfunction matches_tilde(cmp: Comparator, ver: Version): boolean {\n  if (ver.major !== cmp.major) {\n    return false;\n  }\n\n  if (cmp.minor !== null && ver.minor !== cmp.minor) {\n    return false;\n  }\n  if (cmp.patch !== null && ver.patch !== cmp.patch) {\n    return ver.patch > cmp.patch;\n  }\n\n  return comparePre(ver.pre, cmp.pre) >= 0;\n}\n\nfunction matches_caret(cmp: Comparator, ver: Version): boolean {\n  if (ver.major !== cmp.major) {\n    return false;\n  }\n\n  if (cmp.minor === null) return true;\n\n  if (cmp.patch === null) {\n    if (cmp.major > 0) {\n      return ver.minor >= cmp.minor;\n    } else {\n      return ver.minor === cmp.minor;\n    }\n  }\n\n  if (cmp.major > 0) {\n    if (ver.minor !== cmp.minor) {\n      return ver.minor > cmp.minor;\n    } else if (ver.patch !== cmp.patch) {\n      return ver.patch > cmp.patch;\n    }\n  } else if (cmp.minor > 0) {\n    if (ver.minor !== cmp.minor) {\n      return false;\n    } else if (ver.patch !== cmp.patch) {\n      return ver.patch > cmp.patch;\n    }\n  } else if (ver.minor !== cmp.minor || ver.patch != cmp.patch) {\n    return false;\n  }\n\n  return comparePre(ver.pre, cmp.pre) >= 0;\n}\n\nfunction pre_is_compatible(cmp: Comparator, ver: Version): boolean {\n  return (\n    cmp.major === ver.major &&\n    cmp.minor === ver.minor &&\n    cmp.patch === ver.patch &&\n    cmp.pre !== ''\n  );\n}\n","export function comparePre(a: string, b: string): number {\n  if (a === '' && b === '') return 0;\n  if (a === '') return 1;\n  if (b === '') return -1;\n\n  const aParts = a.split('.');\n  const bParts = b.split('.');\n\n  for (let i = 0; i < aParts.length; i++) {\n    const aPart = aParts[i];\n    const bPart = bParts[i];\n\n    // Spec: \"A larger set of pre-release fields has a higher\n    // precedence than a smaller set, if all of the preceding\n    // identifiers are equal.\"\n    if (!bPart) return 1;\n\n    const aAllDigits = /^\\d$/.test(aPart);\n    const bAllDigits = /^\\d$/.test(bPart);\n\n    if (aAllDigits && !bAllDigits) return -1;\n    if (!aAllDigits && bAllDigits) return 1;\n\n    if (aAllDigits && bAllDigits) {\n      const aLen = aPart.length;\n      const bLen = bPart.length;\n      if (aLen > bLen) return 1;\n      if (aLen < bLen) return -1;\n    }\n\n    const stringOrder = aPart.localeCompare(bPart);\n    if (stringOrder !== 0) return stringOrder;\n  }\n\n  if (aParts.length < bParts.length) {\n    return -1;\n  } else {\n    return 0;\n  }\n}\n\nexport function compareBuild(a: string, b: string): number {\n  if (a === '' && b === '') return 0;\n  if (a === '') return 1;\n  if (b === '') return -1;\n\n  const aParts = a.split('.');\n  const bParts = b.split('.');\n\n  for (let i = 0; i < aParts.length; i++) {\n    const aPart = aParts[i];\n    const bPart = bParts[i];\n\n    // Spec: \"A larger set of pre-release fields has a higher\n    // precedence than a smaller set, if all of the preceding\n    // identifiers are equal.\"\n    if (!bPart) return 1;\n\n    const aAllDigits = /^\\d$/.test(aPart);\n    const bAllDigits = /^\\d$/.test(bPart);\n\n    if (aAllDigits && !bAllDigits) return -1;\n    if (!aAllDigits && bAllDigits) return 1;\n\n    if (aAllDigits && bAllDigits) {\n      const aTrimmed = aPart.replace(/^0+/, '');\n      const bTrimmed = bPart.replace(/^0+/, '');\n\n      const aTrimmedLen = aTrimmed.length;\n      const bTrimmedLen = bTrimmed.length;\n      if (aTrimmedLen > bTrimmedLen) return 1;\n      if (aTrimmedLen < bTrimmedLen) return -1;\n\n      const stringOrder = aTrimmed.localeCompare(bTrimmed);\n      if (stringOrder !== 0) return stringOrder;\n\n      const aLen = aPart.length;\n      const bLen = bPart.length;\n      if (aLen > bLen) return 1;\n      if (aLen < bLen) return -1;\n    }\n\n    const stringOrder = aPart.localeCompare(bPart);\n    if (stringOrder !== 0) return stringOrder;\n  }\n\n  if (aParts.length < bParts.length) {\n    return -1;\n  } else {\n    return 0;\n  }\n}\n"],"names":[],"version":3,"file":"semver.cjs.map"}