import { regEx } from '../../../util/regex.ts'; /** * regex used by poetry.core.version.Version to parse union of SemVer * (with a subset of pre/post/dev tags) and PEP440 * see: https://github.com/python-poetry/poetry-core/blob/01c0472d9cef3e1a4958364122dd10358a9bd719/poetry/core/version/version.py */ // prettier-ignore export const VERSION_PATTERN = regEx( [ '^', 'v?', '(?:', '(?:(?[0-9]+)!)?', // epoch '(?[0-9]+(?:\\.[0-9]+){0,2})', // release segment '(?
',                          // pre-release
          '[-_.]?',
          '(?(a|b|c|rc|alpha|beta|pre|preview))',
          '[-_.]?',
          '(?[0-9]+)?',
        ')?',
        '(?',                         // post release
          '(?:-(?[0-9]+))',
          '|',
          '(?:',
            '[-_.]?',
            '(?post|rev|r)',
            '[-_.]?',
            '(?[0-9]+)?',
          ')',
        ')?',
        '(?',                          // dev release
          '[-_.]?',
          '(?dev)',
          '[-_.]?',
          '(?[0-9]+)?',
        ')?',
      ')',
      '(?:\\+(?[a-z0-9]+(?:[-_.][a-z0-9]+)*))?', // local version
      '$'
    ].join('')
  );

export const RANGE_COMPARATOR_PATTERN = regEx(
  /(?\s*(?:\^|~|[><]|\|\|)\s*)/,
);