renovate 43.271.0 → 43.271.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config/options/index.js +1 -1
- package/dist/config/options/index.js.map +1 -1
- package/dist/config/presets/util.js +3 -1
- package/dist/config/presets/util.js.map +1 -1
- package/dist/global-config-option-defaults.generated.js +1 -1
- package/dist/global-config-option-defaults.generated.js.map +1 -1
- package/dist/logger/renovate-logger.js.map +1 -1
- package/dist/logger/with-sanitizer.js +2 -2
- package/dist/logger/with-sanitizer.js.map +1 -1
- package/dist/modules/datasource/docker/index.js +3 -1
- package/dist/modules/datasource/docker/index.js.map +1 -1
- package/dist/modules/datasource/index.d.ts +2 -2
- package/dist/modules/datasource/index.js +6 -2
- package/dist/modules/datasource/index.js.map +1 -1
- package/dist/modules/datasource/rubygems/metadata-cache.js +9 -7
- package/dist/modules/datasource/rubygems/metadata-cache.js.map +1 -1
- package/dist/modules/datasource/sbt-package/index.js +5 -3
- package/dist/modules/datasource/sbt-package/index.js.map +1 -1
- package/dist/modules/datasource/sbt-plugin/index.js +2 -2
- package/dist/modules/datasource/sbt-plugin/index.js.map +1 -1
- package/dist/modules/manager/bazel/artifacts.js +2 -2
- package/dist/modules/manager/bazel/artifacts.js.map +1 -1
- package/dist/modules/manager/custom/index.js.map +1 -1
- package/dist/modules/manager/deno/update.js +4 -2
- package/dist/modules/manager/deno/update.js.map +1 -1
- package/dist/modules/manager/deps-edn/parser.js +2 -2
- package/dist/modules/manager/deps-edn/parser.js.map +1 -1
- package/dist/modules/manager/fingerprint.generated.js +14 -14
- package/dist/modules/manager/fingerprint.generated.js.map +1 -1
- package/dist/modules/manager/gomod/artifacts.js +3 -1
- package/dist/modules/manager/gomod/artifacts.js.map +1 -1
- package/dist/modules/manager/gradle/parser/assignments.js +22 -18
- package/dist/modules/manager/gradle/parser/assignments.js.map +1 -1
- package/dist/modules/manager/gradle/parser/common.js +12 -8
- package/dist/modules/manager/gradle/parser/common.js.map +1 -1
- package/dist/modules/manager/gradle/parser/objects.js +11 -9
- package/dist/modules/manager/gradle/parser/objects.js.map +1 -1
- package/dist/modules/manager/gradle/parser/registry-urls.js +6 -6
- package/dist/modules/manager/gradle/parser/registry-urls.js.map +1 -1
- package/dist/modules/manager/index.d.ts +2 -2
- package/dist/modules/manager/index.js +6 -2
- package/dist/modules/manager/index.js.map +1 -1
- package/dist/modules/manager/leiningen/extract.js +8 -4
- package/dist/modules/manager/leiningen/extract.js.map +1 -1
- package/dist/modules/manager/maven/extract.js +13 -11
- package/dist/modules/manager/maven/extract.js.map +1 -1
- package/dist/modules/manager/npm/post-update/index.js +3 -1
- package/dist/modules/manager/npm/post-update/index.js.map +1 -1
- package/dist/modules/platform/azure/azure-helper.js +2 -2
- package/dist/modules/platform/azure/azure-helper.js.map +1 -1
- package/dist/modules/platform/bitbucket/comments.js +10 -4
- package/dist/modules/platform/bitbucket/comments.js.map +1 -1
- package/dist/modules/platform/bitbucket/index.js +3 -1
- package/dist/modules/platform/bitbucket/index.js.map +1 -1
- package/dist/modules/platform/bitbucket-server/index.js +13 -5
- package/dist/modules/platform/bitbucket-server/index.js.map +1 -1
- package/dist/modules/platform/forgejo/forgejo-helper.js +3 -1
- package/dist/modules/platform/forgejo/forgejo-helper.js.map +1 -1
- package/dist/modules/platform/gitea/gitea-helper.js +3 -1
- package/dist/modules/platform/gitea/gitea-helper.js.map +1 -1
- package/dist/modules/platform/github/index.js +10 -4
- package/dist/modules/platform/github/index.js.map +1 -1
- package/dist/modules/platform/github/massage-markdown-links.js +2 -2
- package/dist/modules/platform/github/massage-markdown-links.js.map +1 -1
- package/dist/modules/platform/gitlab/index.js +10 -4
- package/dist/modules/platform/gitlab/index.js.map +1 -1
- package/dist/modules/platform/index.d.ts +1 -1
- package/dist/modules/platform/index.js +3 -1
- package/dist/modules/platform/index.js.map +1 -1
- package/dist/modules/versioning/cargo/index.js +15 -5
- package/dist/modules/versioning/cargo/index.js.map +1 -1
- package/dist/modules/versioning/go-mod-directive/index.js +9 -3
- package/dist/modules/versioning/go-mod-directive/index.js.map +1 -1
- package/dist/modules/versioning/gradle/index.js +17 -15
- package/dist/modules/versioning/gradle/index.js.map +1 -1
- package/dist/modules/versioning/hex/index.js +6 -2
- package/dist/modules/versioning/hex/index.js.map +1 -1
- package/dist/modules/versioning/index.d.ts +2 -2
- package/dist/modules/versioning/index.js +6 -2
- package/dist/modules/versioning/index.js.map +1 -1
- package/dist/modules/versioning/maven/compare.js +5 -3
- package/dist/modules/versioning/maven/compare.js.map +1 -1
- package/dist/modules/versioning/maven/index.js +23 -17
- package/dist/modules/versioning/maven/index.js.map +1 -1
- package/dist/modules/versioning/npm/index.js +6 -2
- package/dist/modules/versioning/npm/index.js.map +1 -1
- package/dist/modules/versioning/pep440/index.js +5 -3
- package/dist/modules/versioning/pep440/index.js.map +1 -1
- package/dist/modules/versioning/ruby/index.js +39 -19
- package/dist/modules/versioning/ruby/index.js.map +1 -1
- package/dist/modules/versioning/ruby/operator.js +6 -2
- package/dist/modules/versioning/ruby/operator.js.map +1 -1
- package/dist/modules/versioning/ruby/range.js +4 -4
- package/dist/modules/versioning/ruby/range.js.map +1 -1
- package/dist/modules/versioning/ruby/version.js +35 -23
- package/dist/modules/versioning/ruby/version.js.map +1 -1
- package/dist/modules/versioning/semver/index.js +3 -1
- package/dist/modules/versioning/semver/index.js.map +1 -1
- package/dist/modules/versioning/semver-coerced/index.d.ts +1 -1
- package/dist/modules/versioning/semver-coerced/index.js +3 -1
- package/dist/modules/versioning/semver-coerced/index.js.map +1 -1
- package/dist/modules/versioning/swift/index.js +6 -2
- package/dist/modules/versioning/swift/index.js.map +1 -1
- package/dist/util/cache/package/with-cache.js +4 -2
- package/dist/util/cache/package/with-cache.js.map +1 -1
- package/dist/util/exec/common.d.ts +1 -1
- package/dist/util/exec/common.js +3 -1
- package/dist/util/exec/common.js.map +1 -1
- package/dist/util/git/index.js +2 -2
- package/dist/util/git/index.js.map +1 -1
- package/dist/util/http/bitbucket-server.js +2 -2
- package/dist/util/http/bitbucket-server.js.map +1 -1
- package/dist/util/http/forgejo.js +2 -2
- package/dist/util/http/forgejo.js.map +1 -1
- package/dist/util/http/gitea.js +2 -2
- package/dist/util/http/gitea.js.map +1 -1
- package/dist/util/http/github.d.ts +1 -1
- package/dist/util/http/github.js +2 -2
- package/dist/util/http/github.js.map +1 -1
- package/dist/util/http/gitlab.d.ts +1 -1
- package/dist/util/http/gitlab.js +2 -2
- package/dist/util/http/gitlab.js.map +1 -1
- package/dist/util/http/scm-manager.js +5 -3
- package/dist/util/http/scm-manager.js.map +1 -1
- package/dist/workers/repository/extract/index.js +2 -2
- package/dist/workers/repository/extract/index.js.map +1 -1
- package/dist/workers/repository/update/pr/changelog/source.js +3 -1
- package/dist/workers/repository/update/pr/changelog/source.js.map +1 -1
- package/dist/workers/repository/updates/flatten.js +3 -1
- package/dist/workers/repository/updates/flatten.js.map +1 -1
- package/dist/workers/repository/updates/generate.js +3 -1
- package/dist/workers/repository/updates/generate.js.map +1 -1
- package/package.json +2 -2
- package/renovate-schema.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["mavenVersion"],"sources":["../../../../lib/modules/versioning/gradle/index.ts"],"sourcesContent":["import type { RangeStrategy } from '../../../types/versioning.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport mavenVersion from '../maven/index.ts';\nimport type { NewValueConfig, VersioningApi } from '../types.ts';\nimport {\n TokenType,\n compare,\n isValid,\n isVersion,\n parse,\n parseMavenBasedRange,\n parsePrefixRange,\n parseSingleVersionRange,\n} from './compare.ts';\n\nexport const id = 'gradle';\nexport const displayName = 'Gradle';\nexport const urls = [\n '[Gradle version ordering](https://docs.gradle.org/current/userguide/single_versions.html#version_ordering)',\n];\nexport const supportsRanges = true;\nexport const supportedRangeStrategies: RangeStrategy[] = ['bump'];\n\nconst equals = (a: string, b: string): boolean => compare(a, b) === 0;\n\nconst getMajor = (version: string): number | null => {\n const tokens = parse(version?.replace(regEx(/^v/i), ''));\n if (tokens) {\n const majorToken = tokens?.[0];\n if (majorToken?.type === TokenType.Number) {\n return majorToken.val as number;\n }\n }\n return null;\n};\n\nconst getMinor = (version: string): number | null => {\n const tokens = parse(version?.replace(regEx(/^v/i), ''));\n if (tokens) {\n const majorToken = tokens[0];\n const minorToken = tokens[1];\n if (\n majorToken?.type === TokenType.Number &&\n minorToken?.type === TokenType.Number\n ) {\n return minorToken.val as number;\n }\n return 0;\n }\n return null;\n};\n\nconst getPatch = (version: string): number | null => {\n const tokens = parse(version?.replace(regEx(/^v/i), ''));\n if (tokens) {\n const majorToken = tokens[0];\n const minorToken = tokens[1];\n const patchToken = tokens[2];\n if (\n majorToken?.type === TokenType.Number &&\n minorToken?.type === TokenType.Number &&\n patchToken?.type === TokenType.Number\n ) {\n return patchToken.val as number;\n }\n return 0;\n }\n return null;\n};\n\nconst isGreaterThan = (a: string, b: string): boolean => compare(a, b) === 1;\n\nconst unstable = new Set([\n 'dev',\n 'a',\n 'alpha',\n 'b',\n 'beta',\n 'm',\n 'mt',\n 'milestone',\n 'rc',\n 'cr',\n 'preview',\n 'snapshot',\n]);\n\nconst isStable = (version: string): boolean => {\n const tokens = parse(version);\n if (tokens) {\n for (const token of tokens) {\n if (token.type === TokenType.String) {\n const val = token.val.toString().toLowerCase();\n if (unstable.has(val)) {\n return false;\n }\n }\n }\n return true;\n }\n return false;\n};\n\nconst matches = (a: string, b: string): boolean => {\n const versionTokens = parse(a);\n if (!a || !versionTokens || !b) {\n return false;\n }\n if (isVersion(b)) {\n return equals(a, b);\n }\n\n const singleVersionRange = parseSingleVersionRange(b);\n if (singleVersionRange) {\n const { val } = singleVersionRange;\n return equals(a, val);\n }\n\n const prefixRange = parsePrefixRange(b);\n if (prefixRange) {\n const tokens = prefixRange.tokens;\n if (tokens.length === 0) {\n return true;\n }\n const x = versionTokens\n .slice(0, tokens.length)\n .map(({ val }) => val)\n .join('.');\n const y = tokens.map(({ val }) => val).join('.');\n return equals(x, y);\n }\n\n const mavenBasedRange = parseMavenBasedRange(b);\n if (!mavenBasedRange) {\n return false;\n }\n\n const { leftBound, leftVal, rightBound, rightVal } = mavenBasedRange;\n let leftResult = true;\n let rightResult = true;\n\n if (leftVal) {\n leftResult =\n leftBound === 'exclusive'\n ? compare(leftVal, a) === -1\n : compare(leftVal, a) !== 1;\n }\n\n if (rightVal) {\n rightResult =\n rightBound === 'exclusive'\n ? compare(a, rightVal) === -1\n : compare(a, rightVal) !== 1;\n }\n\n return leftResult && rightResult;\n};\n\nfunction getSatisfyingVersion(\n versions: string[],\n range: string,\n): string | null {\n return versions.reduce((result: string | null, version) => {\n if (matches(version, range)) {\n if (!result) {\n return version;\n }\n if (isGreaterThan(version, result)) {\n return version;\n }\n }\n return result;\n }, null);\n}\n\nfunction minSatisfyingVersion(\n versions: string[],\n range: string,\n): string | null {\n return versions.reduce((result: string | null, version) => {\n if (matches(version, range)) {\n if (!result) {\n return version;\n }\n if (compare(version, result) === -1) {\n return version;\n }\n }\n return result;\n }, null);\n}\n\nfunction getNewValue({\n currentValue,\n rangeStrategy,\n newVersion,\n}: NewValueConfig): string | null {\n if (isVersion(currentValue)) {\n return newVersion;\n }\n\n // Check if our version is of the form \"1.2.+\"\n const prefixRange = parsePrefixRange(currentValue);\n const parsedNewVersion = parse(newVersion);\n if (prefixRange && parsedNewVersion) {\n if (prefixRange.tokens.length > 0) {\n if (prefixRange.tokens.length <= parsedNewVersion.length) {\n const newPrefixed = prefixRange.tokens\n .map((_, i) => parsedNewVersion[i].val)\n .join('.');\n\n return `${newPrefixed}.+`;\n }\n // our new version is shorter than our prefix range so drop our prefix range\n return newVersion;\n }\n // our version is already \"+\" which includes ever version\n return null;\n }\n\n const mavenRange = parseMavenBasedRange(currentValue);\n if (mavenRange?.preferredVal) {\n const { leftVal, rightVal, preferredVal } = mavenRange;\n const baseRange = currentValue.slice(\n 0,\n currentValue.lastIndexOf(`!!${preferredVal}`),\n );\n const newBaseRange = mavenVersion.getNewValue({\n currentValue: baseRange,\n rangeStrategy,\n newVersion,\n });\n // v8 ignore if: the implementation has a non-null return type\n if (newBaseRange === null) {\n return null;\n }\n\n const preferredIsBoundary =\n preferredVal === leftVal || preferredVal === rightVal;\n const newParsed = parseMavenBasedRange(newBaseRange);\n const preferredStillPresent =\n newParsed?.leftVal === preferredVal ||\n newParsed?.rightVal === preferredVal;\n const newPreferredVal =\n preferredIsBoundary && !preferredStillPresent ? newVersion : preferredVal;\n\n return `${newBaseRange}!!${newPreferredVal}`;\n }\n\n return mavenVersion.getNewValue({ currentValue, rangeStrategy, newVersion });\n}\n\nexport const api: VersioningApi = {\n equals,\n getMajor,\n getMinor,\n getPatch,\n isCompatible: isVersion,\n isGreaterThan,\n isSingleVersion: isVersion,\n isStable,\n isValid,\n isVersion,\n matches,\n getSatisfyingVersion,\n minSatisfyingVersion,\n getNewValue,\n sortVersions: compare,\n};\n\nexport default api;\n"],"mappings":";;;;AAeA,MAAa,KAAK;AAQlB,MAAM,UAAU,GAAW,MAAuB,QAAQ,GAAG,CAAC,MAAM;AAEpE,MAAM,YAAY,YAAmC;CACnD,MAAM,SAAS,MAAM,SAAS,QAAQ,MAAM,KAAK,GAAG,EAAE,CAAC;CACvD,IAAI,QAAQ;EACV,MAAM,aAAa,SAAS;EAC5B,IAAI,YAAY,SAAS,UAAU,QACjC,OAAO,WAAW;CAEtB;CACA,OAAO;AACT;AAEA,MAAM,YAAY,YAAmC;CACnD,MAAM,SAAS,MAAM,SAAS,QAAQ,MAAM,KAAK,GAAG,EAAE,CAAC;CACvD,IAAI,QAAQ;EACV,MAAM,aAAa,OAAO;EAC1B,MAAM,aAAa,OAAO;EAC1B,IACE,YAAY,SAAS,UAAU,UAC/B,YAAY,SAAS,UAAU,QAE/B,OAAO,WAAW;EAEpB,OAAO;CACT;CACA,OAAO;AACT;AAEA,MAAM,YAAY,YAAmC;CACnD,MAAM,SAAS,MAAM,SAAS,QAAQ,MAAM,KAAK,GAAG,EAAE,CAAC;CACvD,IAAI,QAAQ;EACV,MAAM,aAAa,OAAO;EAC1B,MAAM,aAAa,OAAO;EAC1B,MAAM,aAAa,OAAO;EAC1B,IACE,YAAY,SAAS,UAAU,UAC/B,YAAY,SAAS,UAAU,UAC/B,YAAY,SAAS,UAAU,QAE/B,OAAO,WAAW;EAEpB,OAAO;CACT;CACA,OAAO;AACT;AAEA,MAAM,iBAAiB,GAAW,MAAuB,QAAQ,GAAG,CAAC,MAAM;AAE3E,MAAM,2BAAW,IAAI,IAAI;CACvB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AAED,MAAM,YAAY,YAA6B;CAC7C,MAAM,SAAS,MAAM,OAAO;CAC5B,IAAI,QAAQ;EACV,KAAK,MAAM,SAAS,QAClB,IAAI,MAAM,SAAS,UAAU,QAAQ;GACnC,MAAM,MAAM,MAAM,IAAI,SAAS,CAAC,CAAC,YAAY;GAC7C,IAAI,SAAS,IAAI,GAAG,GAClB,OAAO;EAEX;EAEF,OAAO;CACT;CACA,OAAO;AACT;AAEA,MAAM,WAAW,GAAW,MAAuB;CACjD,MAAM,gBAAgB,MAAM,CAAC;CAC7B,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAC3B,OAAO;CAET,IAAI,UAAU,CAAC,GACb,OAAO,OAAO,GAAG,CAAC;CAGpB,MAAM,qBAAqB,wBAAwB,CAAC;CACpD,IAAI,oBAAoB;EACtB,MAAM,EAAE,QAAQ;EAChB,OAAO,OAAO,GAAG,GAAG;CACtB;CAEA,MAAM,cAAc,iBAAiB,CAAC;CACtC,IAAI,aAAa;EACf,MAAM,SAAS,YAAY;EAC3B,IAAI,OAAO,WAAW,GACpB,OAAO;EAET,MAAM,IAAI,cACP,MAAM,GAAG,OAAO,MAAM,CAAC,CACvB,KAAK,EAAE,UAAU,GAAG,CAAC,CACrB,KAAK,GAAG;EACX,MAAM,IAAI,OAAO,KAAK,EAAE,UAAU,GAAG,CAAC,CAAC,KAAK,GAAG;EAC/C,OAAO,OAAO,GAAG,CAAC;CACpB;CAEA,MAAM,kBAAkB,qBAAqB,CAAC;CAC9C,IAAI,CAAC,iBACH,OAAO;CAGT,MAAM,EAAE,WAAW,SAAS,YAAY,aAAa;CACrD,IAAI,aAAa;CACjB,IAAI,cAAc;CAElB,IAAI,SACF,aACE,cAAc,cACV,QAAQ,SAAS,CAAC,MAAM,KACxB,QAAQ,SAAS,CAAC,MAAM;CAGhC,IAAI,UACF,cACE,eAAe,cACX,QAAQ,GAAG,QAAQ,MAAM,KACzB,QAAQ,GAAG,QAAQ,MAAM;CAGjC,OAAO,cAAc;AACvB;AAEA,SAAS,qBACP,UACA,OACe;CACf,OAAO,SAAS,QAAQ,QAAuB,YAAY;EACzD,IAAI,QAAQ,SAAS,KAAK,GAAG;GAC3B,IAAI,CAAC,QACH,OAAO;GAET,IAAI,cAAc,SAAS,MAAM,GAC/B,OAAO;EAEX;EACA,OAAO;CACT,GAAG,IAAI;AACT;AAEA,SAAS,qBACP,UACA,OACe;CACf,OAAO,SAAS,QAAQ,QAAuB,YAAY;EACzD,IAAI,QAAQ,SAAS,KAAK,GAAG;GAC3B,IAAI,CAAC,QACH,OAAO;GAET,IAAI,QAAQ,SAAS,MAAM,MAAM,IAC/B,OAAO;EAEX;EACA,OAAO;CACT,GAAG,IAAI;AACT;AAEA,SAAS,YAAY,EACnB,cACA,eACA,cACgC;CAChC,IAAI,UAAU,YAAY,GACxB,OAAO;CAIT,MAAM,cAAc,iBAAiB,YAAY;CACjD,MAAM,mBAAmB,MAAM,UAAU;CACzC,IAAI,eAAe,kBAAkB;EACnC,IAAI,YAAY,OAAO,SAAS,GAAG;GACjC,IAAI,YAAY,OAAO,UAAU,iBAAiB,QAKhD,OAAO,GAJa,YAAY,OAC7B,KAAK,GAAG,MAAM,iBAAiB,EAAE,CAAC,GAAG,CAAC,CACtC,KAAK,GAEY,EAAE;GAGxB,OAAO;EACT;EAEA,OAAO;CACT;CAEA,MAAM,aAAa,qBAAqB,YAAY;CACpD,IAAI,YAAY,cAAc;EAC5B,MAAM,EAAE,SAAS,UAAU,iBAAiB;EAC5C,MAAM,YAAY,aAAa,MAC7B,GACA,aAAa,YAAY,KAAK,cAAc,CAC9C;EACA,MAAM,eAAeA,MAAa,YAAY;GAC5C,cAAc;GACd;GACA;EACF,CAAC;;EAED,IAAI,iBAAiB,MACnB,OAAO;EAGT,MAAM,sBACJ,iBAAiB,WAAW,iBAAiB;EAC/C,MAAM,YAAY,qBAAqB,YAAY;EACnD,MAAM,wBACJ,WAAW,YAAY,gBACvB,WAAW,aAAa;EAI1B,OAAO,GAAG,aAAa,IAFrB,uBAAuB,CAAC,wBAAwB,aAAa;CAGjE;CAEA,OAAOA,MAAa,YAAY;EAAE;EAAc;EAAe;CAAW,CAAC;AAC7E;AAEA,MAAa,MAAqB;CAChC;CACA;CACA;CACA;CACA,cAAc;CACd;CACA,iBAAiB;CACjB;CACA;CACA;CACA;CACA;CACA;CACA;CACA,cAAc;AAChB"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["mavenVersion"],"sources":["../../../../lib/modules/versioning/gradle/index.ts"],"sourcesContent":["import type { RangeStrategy } from '../../../types/versioning.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport mavenVersion from '../maven/index.ts';\nimport type { NewValueConfig, VersioningApi } from '../types.ts';\nimport {\n TokenType,\n compare,\n isValid,\n isVersion,\n parse,\n parseMavenBasedRange,\n parsePrefixRange,\n parseSingleVersionRange,\n} from './compare.ts';\n\nexport const id = 'gradle';\nexport const displayName = 'Gradle';\nexport const urls = [\n '[Gradle version ordering](https://docs.gradle.org/current/userguide/single_versions.html#version_ordering)',\n];\nexport const supportsRanges = true;\nexport const supportedRangeStrategies: RangeStrategy[] = ['bump'];\n\nfunction equals(a: string, b: string): boolean {\n return compare(a, b) === 0;\n}\n\nfunction getMajor(version: string): number | null {\n const tokens = parse(version?.replace(regEx(/^v/i), ''));\n if (tokens) {\n const majorToken = tokens?.[0];\n if (majorToken?.type === TokenType.Number) {\n return majorToken.val as number;\n }\n }\n return null;\n}\n\nfunction getMinor(version: string): number | null {\n const tokens = parse(version?.replace(regEx(/^v/i), ''));\n if (tokens) {\n const majorToken = tokens[0];\n const minorToken = tokens[1];\n if (\n majorToken?.type === TokenType.Number &&\n minorToken?.type === TokenType.Number\n ) {\n return minorToken.val as number;\n }\n return 0;\n }\n return null;\n}\n\nfunction getPatch(version: string): number | null {\n const tokens = parse(version?.replace(regEx(/^v/i), ''));\n if (tokens) {\n const majorToken = tokens[0];\n const minorToken = tokens[1];\n const patchToken = tokens[2];\n if (\n majorToken?.type === TokenType.Number &&\n minorToken?.type === TokenType.Number &&\n patchToken?.type === TokenType.Number\n ) {\n return patchToken.val as number;\n }\n return 0;\n }\n return null;\n}\n\nfunction isGreaterThan(a: string, b: string): boolean {\n return compare(a, b) === 1;\n}\n\nconst unstable = new Set([\n 'dev',\n 'a',\n 'alpha',\n 'b',\n 'beta',\n 'm',\n 'mt',\n 'milestone',\n 'rc',\n 'cr',\n 'preview',\n 'snapshot',\n]);\n\nfunction isStable(version: string): boolean {\n const tokens = parse(version);\n if (tokens) {\n for (const token of tokens) {\n if (token.type === TokenType.String) {\n const val = token.val.toString().toLowerCase();\n if (unstable.has(val)) {\n return false;\n }\n }\n }\n return true;\n }\n return false;\n}\n\nfunction matches(a: string, b: string): boolean {\n const versionTokens = parse(a);\n if (!a || !versionTokens || !b) {\n return false;\n }\n if (isVersion(b)) {\n return equals(a, b);\n }\n\n const singleVersionRange = parseSingleVersionRange(b);\n if (singleVersionRange) {\n const { val } = singleVersionRange;\n return equals(a, val);\n }\n\n const prefixRange = parsePrefixRange(b);\n if (prefixRange) {\n const tokens = prefixRange.tokens;\n if (tokens.length === 0) {\n return true;\n }\n const x = versionTokens\n .slice(0, tokens.length)\n .map(({ val }) => val)\n .join('.');\n const y = tokens.map(({ val }) => val).join('.');\n return equals(x, y);\n }\n\n const mavenBasedRange = parseMavenBasedRange(b);\n if (!mavenBasedRange) {\n return false;\n }\n\n const { leftBound, leftVal, rightBound, rightVal } = mavenBasedRange;\n let leftResult = true;\n let rightResult = true;\n\n if (leftVal) {\n leftResult =\n leftBound === 'exclusive'\n ? compare(leftVal, a) === -1\n : compare(leftVal, a) !== 1;\n }\n\n if (rightVal) {\n rightResult =\n rightBound === 'exclusive'\n ? compare(a, rightVal) === -1\n : compare(a, rightVal) !== 1;\n }\n\n return leftResult && rightResult;\n}\n\nfunction getSatisfyingVersion(\n versions: string[],\n range: string,\n): string | null {\n return versions.reduce((result: string | null, version) => {\n if (matches(version, range)) {\n if (!result) {\n return version;\n }\n if (isGreaterThan(version, result)) {\n return version;\n }\n }\n return result;\n }, null);\n}\n\nfunction minSatisfyingVersion(\n versions: string[],\n range: string,\n): string | null {\n return versions.reduce((result: string | null, version) => {\n if (matches(version, range)) {\n if (!result) {\n return version;\n }\n if (compare(version, result) === -1) {\n return version;\n }\n }\n return result;\n }, null);\n}\n\nfunction getNewValue({\n currentValue,\n rangeStrategy,\n newVersion,\n}: NewValueConfig): string | null {\n if (isVersion(currentValue)) {\n return newVersion;\n }\n\n // Check if our version is of the form \"1.2.+\"\n const prefixRange = parsePrefixRange(currentValue);\n const parsedNewVersion = parse(newVersion);\n if (prefixRange && parsedNewVersion) {\n if (prefixRange.tokens.length > 0) {\n if (prefixRange.tokens.length <= parsedNewVersion.length) {\n const newPrefixed = prefixRange.tokens\n .map((_, i) => parsedNewVersion[i].val)\n .join('.');\n\n return `${newPrefixed}.+`;\n }\n // our new version is shorter than our prefix range so drop our prefix range\n return newVersion;\n }\n // our version is already \"+\" which includes ever version\n return null;\n }\n\n const mavenRange = parseMavenBasedRange(currentValue);\n if (mavenRange?.preferredVal) {\n const { leftVal, rightVal, preferredVal } = mavenRange;\n const baseRange = currentValue.slice(\n 0,\n currentValue.lastIndexOf(`!!${preferredVal}`),\n );\n const newBaseRange = mavenVersion.getNewValue({\n currentValue: baseRange,\n rangeStrategy,\n newVersion,\n });\n // v8 ignore if: the implementation has a non-null return type\n if (newBaseRange === null) {\n return null;\n }\n\n const preferredIsBoundary =\n preferredVal === leftVal || preferredVal === rightVal;\n const newParsed = parseMavenBasedRange(newBaseRange);\n const preferredStillPresent =\n newParsed?.leftVal === preferredVal ||\n newParsed?.rightVal === preferredVal;\n const newPreferredVal =\n preferredIsBoundary && !preferredStillPresent ? newVersion : preferredVal;\n\n return `${newBaseRange}!!${newPreferredVal}`;\n }\n\n return mavenVersion.getNewValue({ currentValue, rangeStrategy, newVersion });\n}\n\nexport const api: VersioningApi = {\n equals,\n getMajor,\n getMinor,\n getPatch,\n isCompatible: isVersion,\n isGreaterThan,\n isSingleVersion: isVersion,\n isStable,\n isValid,\n isVersion,\n matches,\n getSatisfyingVersion,\n minSatisfyingVersion,\n getNewValue,\n sortVersions: compare,\n};\n\nexport default api;\n"],"mappings":"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"}
|
|
@@ -31,14 +31,18 @@ function npm2hex(input) {
|
|
|
31
31
|
function isLessThanRange(version, range) {
|
|
32
32
|
return !!api$1.isLessThanRange?.(hex2npm(version), hex2npm(range));
|
|
33
33
|
}
|
|
34
|
-
|
|
34
|
+
function isValid(input) {
|
|
35
|
+
return !!api$1.isValid(hex2npm(input));
|
|
36
|
+
}
|
|
35
37
|
function isSingleVersion(constraint) {
|
|
36
38
|
return api$1.isVersion(constraint) || constraint?.startsWith("==") && api$1.isVersion(constraint.substring(2).trim());
|
|
37
39
|
}
|
|
38
40
|
function getPinnedValue(newVersion) {
|
|
39
41
|
return `== ${newVersion}`;
|
|
40
42
|
}
|
|
41
|
-
|
|
43
|
+
function matches(version, range) {
|
|
44
|
+
return api$1.matches(hex2npm(version), hex2npm(range));
|
|
45
|
+
}
|
|
42
46
|
function getSatisfyingVersion(versions, range) {
|
|
43
47
|
return api$1.getSatisfyingVersion(versions.map(hex2npm), hex2npm(range));
|
|
44
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["npm"],"sources":["../../../../lib/modules/versioning/hex/index.ts"],"sourcesContent":["import type { RangeStrategy } from '../../../types/versioning.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { api as npm } from '../npm/index.ts';\nimport type { NewValueConfig, VersioningApi } from '../types.ts';\n\nexport const id = 'hex';\nexport const displayName = 'Hex';\nexport const urls = [\n '[Elixir Version module](https://hexdocs.pm/elixir/Version.html)',\n];\nexport const supportsRanges = true;\nexport const supportedRangeStrategies: RangeStrategy[] = [\n 'bump',\n 'widen',\n 'replace',\n 'update-lockfile',\n];\n\nfunction hex2npm(input: string): string {\n return input\n .replace(regEx(/~>\\s*(\\d+\\.\\d+)$/), '^$1')\n .replace(regEx(/~>\\s*(\\d+\\.\\d+\\.\\d+)/), '~$1')\n .replace(regEx(/==|and/), '')\n .replace('or', '||')\n .replace(regEx(/!=\\s*(\\d+\\.\\d+(\\.\\d+.*)?)/), '>$1 <$1')\n .trim();\n}\n\nfunction npm2hex(input: string): string {\n const res = input\n .split(' ')\n .map((str) => str.trim())\n .filter((str) => str !== '');\n let output = '';\n const operators = ['^', '=', '>', '<', '<=', '>=', '~>'];\n for (let i = 0; i < res.length; i += 1) {\n if (i === res.length - 1) {\n output += res[i];\n break;\n }\n if (i < res.length - 1 && res[i + 1].includes('||')) {\n output += `${res[i]} or `;\n i += 1;\n } else if (operators.includes(res[i])) {\n output += `${res[i]} `;\n } else {\n output += `${res[i]} and `;\n }\n }\n return output;\n}\n\nfunction isLessThanRange(version: string, range: string): boolean {\n return !!npm.isLessThanRange?.(hex2npm(version), hex2npm(range));\n}\n\
|
|
1
|
+
{"version":3,"file":"index.js","names":["npm"],"sources":["../../../../lib/modules/versioning/hex/index.ts"],"sourcesContent":["import type { RangeStrategy } from '../../../types/versioning.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { api as npm } from '../npm/index.ts';\nimport type { NewValueConfig, VersioningApi } from '../types.ts';\n\nexport const id = 'hex';\nexport const displayName = 'Hex';\nexport const urls = [\n '[Elixir Version module](https://hexdocs.pm/elixir/Version.html)',\n];\nexport const supportsRanges = true;\nexport const supportedRangeStrategies: RangeStrategy[] = [\n 'bump',\n 'widen',\n 'replace',\n 'update-lockfile',\n];\n\nfunction hex2npm(input: string): string {\n return input\n .replace(regEx(/~>\\s*(\\d+\\.\\d+)$/), '^$1')\n .replace(regEx(/~>\\s*(\\d+\\.\\d+\\.\\d+)/), '~$1')\n .replace(regEx(/==|and/), '')\n .replace('or', '||')\n .replace(regEx(/!=\\s*(\\d+\\.\\d+(\\.\\d+.*)?)/), '>$1 <$1')\n .trim();\n}\n\nfunction npm2hex(input: string): string {\n const res = input\n .split(' ')\n .map((str) => str.trim())\n .filter((str) => str !== '');\n let output = '';\n const operators = ['^', '=', '>', '<', '<=', '>=', '~>'];\n for (let i = 0; i < res.length; i += 1) {\n if (i === res.length - 1) {\n output += res[i];\n break;\n }\n if (i < res.length - 1 && res[i + 1].includes('||')) {\n output += `${res[i]} or `;\n i += 1;\n } else if (operators.includes(res[i])) {\n output += `${res[i]} `;\n } else {\n output += `${res[i]} and `;\n }\n }\n return output;\n}\n\nfunction isLessThanRange(version: string, range: string): boolean {\n return !!npm.isLessThanRange?.(hex2npm(version), hex2npm(range));\n}\n\nfunction isValid(input: string): boolean {\n return !!npm.isValid(hex2npm(input));\n}\n\nfunction isSingleVersion(constraint: string): boolean {\n return (\n npm.isVersion(constraint) ||\n (constraint?.startsWith('==') &&\n npm.isVersion(constraint.substring(2).trim()))\n );\n}\n\nfunction getPinnedValue(newVersion: string): string {\n return `== ${newVersion}`;\n}\n\nfunction matches(version: string, range: string): boolean {\n return npm.matches(hex2npm(version), hex2npm(range));\n}\n\nfunction getSatisfyingVersion(\n versions: string[],\n range: string,\n): string | null {\n return npm.getSatisfyingVersion(versions.map(hex2npm), hex2npm(range));\n}\n\nfunction minSatisfyingVersion(\n versions: string[],\n range: string,\n): string | null {\n return npm.minSatisfyingVersion(versions.map(hex2npm), hex2npm(range));\n}\n\nfunction getNewValue({\n currentValue,\n rangeStrategy,\n currentVersion,\n newVersion,\n}: NewValueConfig): string | null {\n let newSemver = npm.getNewValue({\n currentValue: hex2npm(currentValue),\n rangeStrategy,\n currentVersion,\n newVersion,\n });\n if (newSemver) {\n newSemver = npm2hex(newSemver);\n\n if (regEx(/~>\\s*(\\d+\\.\\d+\\.\\d+)$/).test(currentValue)) {\n newSemver = newSemver.replace(\n regEx(/[\\^~]\\s*(\\d+\\.\\d+\\.\\d+)/g),\n (_str, p1: string) => `~> ${p1}`,\n );\n } else if (regEx(/~>\\s*(\\d+\\.\\d+)$/).test(currentValue)) {\n newSemver = newSemver.replace(\n regEx(/\\^\\s*(\\d+\\.\\d+)(\\.\\d+)?/g),\n (_str, p1: string) => `~> ${p1}`,\n );\n } else {\n newSemver = newSemver.replace(regEx(/~\\s*(\\d+\\.\\d+\\.\\d)/g), '~> $1');\n }\n if (npm.isVersion(newSemver)) {\n newSemver = `== ${newSemver}`;\n }\n }\n return newSemver;\n}\n\nexport { isValid };\n\nexport const api: VersioningApi = {\n ...npm,\n isLessThanRange,\n isSingleVersion,\n isValid,\n matches,\n getSatisfyingVersion,\n minSatisfyingVersion,\n getNewValue,\n getPinnedValue,\n};\n\nexport default api;\n"],"mappings":";;AAkBA,SAAS,QAAQ,OAAuB;CACtC,OAAO,MACJ,QAAQ,MAAM,kBAAkB,GAAG,KAAK,CAAC,CACzC,QAAQ,MAAM,sBAAsB,GAAG,KAAK,CAAC,CAC7C,QAAQ,MAAM,QAAQ,GAAG,EAAE,CAAC,CAC5B,QAAQ,MAAM,IAAI,CAAC,CACnB,QAAQ,MAAM,2BAA2B,GAAG,SAAS,CAAC,CACtD,KAAK;AACV;AAEA,SAAS,QAAQ,OAAuB;CACtC,MAAM,MAAM,MACT,MAAM,GAAG,CAAC,CACV,KAAK,QAAQ,IAAI,KAAK,CAAC,CAAC,CACxB,QAAQ,QAAQ,QAAQ,EAAE;CAC7B,IAAI,SAAS;CACb,MAAM,YAAY;EAAC;EAAK;EAAK;EAAK;EAAK;EAAM;EAAM;CAAI;CACvD,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK,GAAG;EACtC,IAAI,MAAM,IAAI,SAAS,GAAG;GACxB,UAAU,IAAI;GACd;EACF;EACA,IAAI,IAAI,IAAI,SAAS,KAAK,IAAI,IAAI,EAAE,CAAC,SAAS,IAAI,GAAG;GACnD,UAAU,GAAG,IAAI,GAAG;GACpB,KAAK;EACP,OAAO,IAAI,UAAU,SAAS,IAAI,EAAE,GAClC,UAAU,GAAG,IAAI,GAAG;OAEpB,UAAU,GAAG,IAAI,GAAG;CAExB;CACA,OAAO;AACT;AAEA,SAAS,gBAAgB,SAAiB,OAAwB;CAChE,OAAO,CAAC,CAACA,MAAI,kBAAkB,QAAQ,OAAO,GAAG,QAAQ,KAAK,CAAC;AACjE;AAEA,SAAS,QAAQ,OAAwB;CACvC,OAAO,CAAC,CAACA,MAAI,QAAQ,QAAQ,KAAK,CAAC;AACrC;AAEA,SAAS,gBAAgB,YAA6B;CACpD,OACEA,MAAI,UAAU,UAAU,KACvB,YAAY,WAAW,IAAI,KAC1BA,MAAI,UAAU,WAAW,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC;AAElD;AAEA,SAAS,eAAe,YAA4B;CAClD,OAAO,MAAM;AACf;AAEA,SAAS,QAAQ,SAAiB,OAAwB;CACxD,OAAOA,MAAI,QAAQ,QAAQ,OAAO,GAAG,QAAQ,KAAK,CAAC;AACrD;AAEA,SAAS,qBACP,UACA,OACe;CACf,OAAOA,MAAI,qBAAqB,SAAS,IAAI,OAAO,GAAG,QAAQ,KAAK,CAAC;AACvE;AAEA,SAAS,qBACP,UACA,OACe;CACf,OAAOA,MAAI,qBAAqB,SAAS,IAAI,OAAO,GAAG,QAAQ,KAAK,CAAC;AACvE;AAEA,SAAS,YAAY,EACnB,cACA,eACA,gBACA,cACgC;CAChC,IAAI,YAAYA,MAAI,YAAY;EAC9B,cAAc,QAAQ,YAAY;EAClC;EACA;EACA;CACF,CAAC;CACD,IAAI,WAAW;EACb,YAAY,QAAQ,SAAS;EAE7B,IAAI,MAAM,uBAAuB,CAAC,CAAC,KAAK,YAAY,GAClD,YAAY,UAAU,QACpB,MAAM,0BAA0B,IAC/B,MAAM,OAAe,MAAM,IAC9B;OACK,IAAI,MAAM,kBAAkB,CAAC,CAAC,KAAK,YAAY,GACpD,YAAY,UAAU,QACpB,MAAM,0BAA0B,IAC/B,MAAM,OAAe,MAAM,IAC9B;OAEA,YAAY,UAAU,QAAQ,MAAM,qBAAqB,GAAG,OAAO;EAErE,IAAIA,MAAI,UAAU,SAAS,GACzB,YAAY,MAAM;CAEtB;CACA,OAAO;AACT;AAIA,MAAa,MAAqB;CAChC,GAAGA;CACH;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF"}
|
|
@@ -2,11 +2,11 @@ import { NewValueConfig, VersioningApi, VersioningApiConstructor } from "./types
|
|
|
2
2
|
import { index_d_exports } from "./semver-coerced/index.js";
|
|
3
3
|
//#region lib/modules/versioning/index.d.ts
|
|
4
4
|
declare const defaultVersioning: typeof index_d_exports;
|
|
5
|
-
declare
|
|
5
|
+
declare function getVersioningList(): string[];
|
|
6
6
|
/**
|
|
7
7
|
* Get versioning map. Can be used to dynamically add new versioning type
|
|
8
8
|
*/
|
|
9
|
-
declare
|
|
9
|
+
declare function getVersionings(): Map<string, VersioningApi | VersioningApiConstructor>;
|
|
10
10
|
declare function get(versioning: string | null | undefined): VersioningApi;
|
|
11
11
|
//#endregion
|
|
12
12
|
export { NewValueConfig, VersioningApi, VersioningApiConstructor, defaultVersioning, get, getVersioningList, getVersionings };
|
|
@@ -3,11 +3,15 @@ import api from "./api.js";
|
|
|
3
3
|
import { Versioning } from "./schema.js";
|
|
4
4
|
//#region lib/modules/versioning/index.ts
|
|
5
5
|
const defaultVersioning = semver_coerced_exports;
|
|
6
|
-
|
|
6
|
+
function getVersioningList() {
|
|
7
|
+
return Array.from(api.keys());
|
|
8
|
+
}
|
|
7
9
|
/**
|
|
8
10
|
* Get versioning map. Can be used to dynamically add new versioning type
|
|
9
11
|
*/
|
|
10
|
-
|
|
12
|
+
function getVersionings() {
|
|
13
|
+
return api;
|
|
14
|
+
}
|
|
11
15
|
function get(versioning) {
|
|
12
16
|
const res = Versioning.safeParse(versioning ?? defaultVersioning.id);
|
|
13
17
|
if (!res.success) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["semverCoerced","versionings"],"sources":["../../../lib/modules/versioning/index.ts"],"sourcesContent":["import versionings from './api.ts';\nimport { Versioning } from './schema.ts';\nimport * as semverCoerced from './semver-coerced/index.ts';\nimport type { VersioningApi, VersioningApiConstructor } from './types.ts';\n\nexport * from './types.ts';\n\nexport const defaultVersioning = semverCoerced;\n\nexport
|
|
1
|
+
{"version":3,"file":"index.js","names":["semverCoerced","versionings"],"sources":["../../../lib/modules/versioning/index.ts"],"sourcesContent":["import versionings from './api.ts';\nimport { Versioning } from './schema.ts';\nimport * as semverCoerced from './semver-coerced/index.ts';\nimport type { VersioningApi, VersioningApiConstructor } from './types.ts';\n\nexport * from './types.ts';\n\nexport const defaultVersioning = semverCoerced;\n\nexport function getVersioningList(): string[] {\n return Array.from(versionings.keys());\n}\n\n/**\n * Get versioning map. Can be used to dynamically add new versioning type\n */\nexport function getVersionings(): Map<\n string,\n VersioningApi | VersioningApiConstructor\n> {\n return versionings;\n}\n\nexport function get(versioning: string | null | undefined): VersioningApi {\n const res = Versioning.safeParse(versioning ?? defaultVersioning.id);\n\n if (!res.success) {\n const [issue] = res.error.issues;\n // oxlint-disable-next-line typescript/prefer-optional-chain\n if (issue && issue.code === 'custom' && issue.params?.error) {\n throw issue.params.error;\n }\n\n // istanbul ignore next: should never happen\n throw res.error;\n }\n\n return res.data;\n}\n"],"mappings":";;;;AAOA,MAAa,oBAAoBA;AAEjC,SAAgB,oBAA8B;CAC5C,OAAO,MAAM,KAAKC,IAAY,KAAK,CAAC;AACtC;;;;AAKA,SAAgB,iBAGd;CACA,OAAOA;AACT;AAEA,SAAgB,IAAI,YAAsD;CACxE,MAAM,MAAM,WAAW,UAAU,cAAc,kBAAkB,EAAE;CAEnE,IAAI,CAAC,IAAI,SAAS;EAChB,MAAM,CAAC,SAAS,IAAI,MAAM;EAE1B,IAAI,SAAS,MAAM,SAAS,YAAY,MAAM,QAAQ,OACpD,MAAM,MAAM,OAAO;;EAIrB,MAAM,IAAI;CACZ;CAEA,OAAO,IAAI;AACb"}
|
|
@@ -268,7 +268,9 @@ function isValid(str) {
|
|
|
268
268
|
}
|
|
269
269
|
function rangeToStr(fullRange) {
|
|
270
270
|
if (fullRange === null) return null;
|
|
271
|
-
|
|
271
|
+
function valToStr(val) {
|
|
272
|
+
return val ?? "";
|
|
273
|
+
}
|
|
272
274
|
if (fullRange.length === 1) {
|
|
273
275
|
const { leftBracket, rightBracket, leftValue, rightValue } = fullRange[0];
|
|
274
276
|
if (leftValue === rightValue && leftBracket === "[" && rightBracket === "]") return `[${valToStr(leftValue)}]`;
|
|
@@ -312,11 +314,11 @@ function incrementRangeValue(value) {
|
|
|
312
314
|
function autoExtendMavenRange(currentRepresentation, newValue) {
|
|
313
315
|
const range = parseRange(currentRepresentation);
|
|
314
316
|
if (!range) return currentRepresentation;
|
|
315
|
-
|
|
317
|
+
function isPoint(vals) {
|
|
316
318
|
if (vals.length !== 1) return false;
|
|
317
319
|
const { leftType, leftValue, rightType, rightValue } = vals[0];
|
|
318
320
|
return leftType === "INCLUDING_POINT" && leftType === rightType && leftValue === rightValue;
|
|
319
|
-
}
|
|
321
|
+
}
|
|
320
322
|
if (isPoint(range)) return `[${newValue}]`;
|
|
321
323
|
const interval = [...range].reverse().find((elem) => {
|
|
322
324
|
const { rightType, rightValue } = elem;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compare.js","names":[],"sources":["../../../../lib/modules/versioning/maven/compare.ts"],"sourcesContent":["import { regEx } from '../../../util/regex.ts';\n\nconst PREFIX_DOT = 'PREFIX_DOT';\nconst PREFIX_HYPHEN = 'PREFIX_HYPHEN';\nconst ALPHA_SUFFIX = '-alpha';\n\nconst TYPE_NUMBER = 'TYPE_NUMBER';\nconst TYPE_QUALIFIER = 'TYPE_QUALIFIER';\n\nexport interface BaseToken {\n prefix: string;\n type: typeof TYPE_NUMBER | typeof TYPE_QUALIFIER;\n val: number | string;\n isTransition?: boolean;\n}\n\nexport interface NumberToken extends BaseToken {\n type: typeof TYPE_NUMBER;\n val: number;\n}\n\nexport interface QualifierToken extends BaseToken {\n type: typeof TYPE_QUALIFIER;\n val: string;\n}\n\nexport type Token = NumberToken | QualifierToken;\n\nfunction iterateChars(\n str: string,\n cb: (p: string | null, n: string | null) => void,\n): void {\n let prev = null;\n let next = null;\n for (let i = 0; i < str.length; i += 1) {\n next = str.charAt(i);\n cb(prev, next);\n prev = next;\n }\n cb(prev, null);\n}\n\nfunction isDigit(char: string): boolean {\n return regEx(/^\\d$/).test(char);\n}\n\nfunction isLetter(char: string): boolean {\n return regEx(/^[a-z_+]$/i).test(char);\n}\n\nfunction isTransition(prevChar: string, nextChar: string): boolean {\n return (\n (isDigit(prevChar) && isLetter(nextChar)) ||\n (isLetter(prevChar) && isDigit(nextChar))\n );\n}\n\nfunction iterateTokens(versionStr: string, cb: (token: Token) => void): void {\n let currentPrefix = '';\n let currentVal = '';\n\n function yieldToken(transition = false): void {\n const val = currentVal || '0';\n if (regEx(/^\\d+$/).test(val)) {\n cb({\n prefix: currentPrefix,\n type: TYPE_NUMBER,\n val: parseInt(val, 10),\n isTransition: transition,\n });\n } else {\n cb({\n prefix: currentPrefix,\n type: TYPE_QUALIFIER,\n val,\n isTransition: transition,\n });\n }\n }\n\n iterateChars(versionStr, (prevChar, nextChar) => {\n if (nextChar === null) {\n yieldToken();\n } else if (nextChar === '-') {\n yieldToken();\n currentPrefix = PREFIX_HYPHEN;\n currentVal = '';\n } else if (nextChar === '.') {\n yieldToken();\n currentPrefix = PREFIX_DOT;\n currentVal = '';\n } else if (prevChar === null && (nextChar === 'v' || nextChar === 'V')) {\n currentPrefix = nextChar;\n } else {\n if (currentVal !== '' && isTransition(prevChar!, nextChar)) {\n yieldToken(true);\n currentPrefix = PREFIX_HYPHEN;\n currentVal = nextChar;\n } else if (\n currentVal === '' &&\n (currentPrefix === 'v' || currentPrefix === 'V') &&\n !isDigit(nextChar)\n ) {\n currentVal = currentVal.concat(currentPrefix, nextChar);\n currentPrefix = '';\n } else {\n currentVal = currentVal.concat(nextChar);\n }\n }\n });\n}\n\nfunction isNull(token: Token): boolean {\n const val = token.val;\n return (\n val === 0 ||\n val === '' ||\n val === 'final' ||\n val === 'ga' ||\n val === 'release' ||\n val === 'latest' ||\n val === 'sr'\n );\n}\n\nfunction tokenize(versionStr: string, preserveMinorZeroes = false): Token[] {\n let buf: Token[] = [];\n let result: Token[] = [];\n let leadingZero = true;\n iterateTokens(versionStr.toLowerCase(), (token) => {\n if (token.prefix === PREFIX_HYPHEN || token.type === TYPE_QUALIFIER) {\n buf = [];\n }\n buf.push(token);\n if (!isNull(token)) {\n leadingZero = false;\n result = result.concat(buf);\n buf = [];\n } else if (leadingZero || preserveMinorZeroes) {\n result = result.concat(buf);\n buf = [];\n }\n });\n return result;\n}\n\nfunction nullFor(token: Token): Token {\n return token.type === TYPE_NUMBER\n ? {\n prefix: token.prefix,\n type: TYPE_NUMBER,\n val: 0,\n }\n : {\n prefix: token.prefix,\n type: TYPE_QUALIFIER,\n val: '',\n };\n}\n\nfunction commonOrder(token: Token): number {\n if (token.type === TYPE_QUALIFIER) {\n return 1;\n }\n if (token.prefix === PREFIX_HYPHEN && token.type === TYPE_NUMBER) {\n return 2;\n }\n return 3;\n}\n\nexport const QualifierTypes = {\n Alpha: 1,\n Beta: 2,\n Milestone: 3,\n RC: 4,\n Snapshot: 5,\n Release: 6,\n SP: 7,\n} as const;\n\nexport function qualifierType(token: Token): number | null {\n const val = token.val;\n if (val === 'alpha' || (token.isTransition && val === 'a')) {\n return QualifierTypes.Alpha;\n }\n if (val === 'beta' || (token.isTransition && val === 'b')) {\n return QualifierTypes.Beta;\n }\n if (val === 'milestone' || (token.isTransition && val === 'm')) {\n return QualifierTypes.Milestone;\n }\n if (val === 'rc' || val === 'cr' || val === 'preview') {\n return QualifierTypes.RC;\n }\n if (val === 'snapshot' || val === 'snap') {\n return QualifierTypes.Snapshot;\n }\n if (\n val === '' ||\n val === 'final' ||\n val === 'ga' ||\n val === 'release' ||\n val === 'latest' ||\n val === 'sr'\n ) {\n return QualifierTypes.Release;\n }\n if (val === 'sp') {\n return QualifierTypes.SP;\n }\n return null;\n}\n\nfunction qualifierCmp(left: Token, right: Token): number {\n const leftOrder = qualifierType(left);\n const rightOrder = qualifierType(right);\n if (leftOrder && rightOrder) {\n if (leftOrder < rightOrder) {\n return -1;\n }\n if (leftOrder > rightOrder) {\n return 1;\n }\n return 0;\n }\n\n if (leftOrder && leftOrder < QualifierTypes.Release) {\n return -1;\n }\n if (rightOrder && rightOrder < QualifierTypes.Release) {\n return 1;\n }\n\n if (left.val < right.val) {\n return -1;\n }\n if (left.val > right.val) {\n return 1;\n }\n return 0;\n}\n\nfunction tokenCmp(left: Token, right: Token): number {\n const leftOrder = commonOrder(left);\n const rightOrder = commonOrder(right);\n\n if (leftOrder < rightOrder) {\n return -1;\n }\n if (leftOrder > rightOrder) {\n return 1;\n }\n\n if (left.type === TYPE_NUMBER && right.type === TYPE_NUMBER) {\n if (left.val < right.val) {\n return -1;\n }\n if (left.val > right.val) {\n return 1;\n }\n return 0;\n }\n\n return qualifierCmp(left, right);\n}\n\nfunction compare(left: string, right: string): number {\n const leftTokens = tokenize(left);\n const rightTokens = tokenize(right);\n const length = Math.max(leftTokens.length, rightTokens.length);\n for (let idx = 0; idx < length; idx += 1) {\n const leftToken = leftTokens[idx] || nullFor(rightTokens[idx]);\n const rightToken = rightTokens[idx] || nullFor(leftTokens[idx]);\n const cmpResult = tokenCmp(leftToken, rightToken);\n if (cmpResult !== 0) {\n return cmpResult;\n }\n }\n return 0;\n}\n\nfunction isVersion(version: unknown): version is string {\n if (!version || typeof version !== 'string') {\n return false;\n }\n if (!regEx(/^[-.a-z_+0-9]+$/i).test(version)) {\n return false;\n }\n if (regEx(/^[.-]/).test(version)) {\n return false;\n }\n if (regEx(/[.-]$/).test(version)) {\n return false;\n }\n if (['latest', 'release'].includes(version.toLowerCase())) {\n return false;\n }\n const tokens = tokenize(version);\n return !!tokens.length;\n}\n\nconst INCLUDING_POINT = 'INCLUDING_POINT';\nconst EXCLUDING_POINT = 'EXCLUDING_POINT';\n\nfunction parseRange(rangeStr: string): Range[] | null {\n function emptyInterval(): Range {\n return {\n leftType: null,\n leftValue: null,\n leftBracket: null,\n rightType: null,\n rightValue: null,\n rightBracket: null,\n };\n }\n\n const commaSplit = rangeStr.split(regEx(/\\s*,\\s*/));\n let ranges: Range[] | null = [];\n let interval = emptyInterval();\n\n commaSplit.forEach((subStr) => {\n if (!ranges) {\n return;\n }\n if (interval.leftType === null) {\n if (regEx(/^\\[.*]$/).test(subStr)) {\n const ver = subStr.slice(1, -1);\n ranges.push({\n leftType: INCLUDING_POINT,\n leftValue: ver,\n leftBracket: '[',\n rightType: INCLUDING_POINT,\n rightValue: ver,\n rightBracket: ']',\n });\n interval = emptyInterval();\n } else if (subStr.startsWith('[')) {\n const ver = subStr.slice(1);\n interval.leftType = INCLUDING_POINT;\n interval.leftValue = ver;\n interval.leftBracket = '[';\n } else if (subStr.startsWith('(') || subStr.startsWith(']')) {\n const ver = subStr.slice(1);\n interval.leftType = EXCLUDING_POINT;\n interval.leftValue = ver;\n interval.leftBracket = subStr[0];\n } else {\n ranges = null;\n }\n } else if (subStr.endsWith(']')) {\n const ver = subStr.slice(0, -1);\n interval.rightType = INCLUDING_POINT;\n interval.rightValue = ver;\n interval.rightBracket = ']';\n ranges.push(interval);\n interval = emptyInterval();\n } else if (subStr.endsWith(')') || subStr.endsWith('[')) {\n const ver = subStr.slice(0, -1);\n interval.rightType = EXCLUDING_POINT;\n interval.rightValue = ver;\n interval.rightBracket = subStr.endsWith(')') ? ')' : '[';\n ranges.push(interval);\n interval = emptyInterval();\n } else {\n ranges = null;\n }\n });\n\n if (interval.leftType) {\n return null;\n } // something like '[1,2],[3'\n if (!ranges?.length) {\n return null;\n }\n\n const lastIdx = ranges.length - 1;\n let prevValue: string | null = null;\n const result: Range[] = [];\n for (let idx = 0; idx < ranges.length; idx += 1) {\n const range = ranges[idx];\n const { leftType, leftValue, rightType, rightValue } = range;\n\n if (idx === 0 && leftValue === '') {\n if (leftType === EXCLUDING_POINT && isVersion(rightValue)) {\n prevValue = rightValue;\n result.push({ ...range, leftValue: null });\n continue;\n }\n return null;\n }\n if (idx === lastIdx && rightValue === '') {\n if (rightType === EXCLUDING_POINT && isVersion(leftValue)) {\n if (prevValue && compare(prevValue, leftValue) === 1) {\n return null;\n }\n result.push({ ...range, rightValue: null });\n continue;\n }\n return null;\n }\n if (isVersion(leftValue) && isVersion(rightValue)) {\n if (compare(leftValue, rightValue) === 1) {\n return null;\n }\n if (prevValue && compare(prevValue, leftValue) === 1) {\n return null;\n }\n prevValue = rightValue;\n result.push(range);\n continue;\n }\n return null;\n }\n return result;\n}\n\nfunction isValid(str: string): boolean {\n if (!str) {\n return false;\n }\n return isVersion(str) || !!parseRange(str);\n}\n\nexport interface Range {\n leftType: typeof INCLUDING_POINT | typeof EXCLUDING_POINT | null;\n leftValue: string | null;\n leftBracket: string | null;\n rightType: typeof INCLUDING_POINT | typeof EXCLUDING_POINT | null;\n rightValue: string | null;\n rightBracket: string | null;\n}\n\nfunction rangeToStr(fullRange: Range[] | null): string | null {\n if (fullRange === null) {\n return null;\n }\n\n const valToStr = (val: string | null): string => val ?? '';\n\n if (fullRange.length === 1) {\n const { leftBracket, rightBracket, leftValue, rightValue } = fullRange[0];\n if (\n leftValue === rightValue &&\n leftBracket === '[' &&\n rightBracket === ']'\n ) {\n return `[${valToStr(leftValue)}]`;\n }\n }\n\n const intervals = fullRange.map((val) =>\n [\n val.leftBracket,\n valToStr(val.leftValue),\n ',',\n valToStr(val.rightValue),\n val.rightBracket,\n ].join(''),\n );\n return intervals.join(',');\n}\n\nfunction tokensToStr(tokens: Token[]): string {\n let isTransition: boolean | undefined = false;\n return tokens.reduce((result: string, token: Token) => {\n let prefix: string;\n if (token.prefix === PREFIX_DOT) {\n prefix = '.';\n } else if (token.prefix === PREFIX_HYPHEN) {\n prefix = isTransition === true ? '' : '-';\n } else {\n prefix = token.prefix;\n }\n isTransition = token.isTransition;\n return `${result}${prefix}${token.val}`;\n }, '');\n}\n\nfunction coerceRangeValue(prev: string, next: string): string {\n const prevTokens = tokenize(prev, true);\n const nextTokens = tokenize(next, true);\n const resultTokens = nextTokens.slice(0, prevTokens.length);\n const align = Math.max(0, prevTokens.length - nextTokens.length);\n if (align > 0) {\n resultTokens.push(...prevTokens.slice(prevTokens.length - align));\n }\n return tokensToStr(resultTokens);\n}\n\nfunction incrementRangeValue(value: string): string {\n const tokens = tokenize(value);\n const lastToken = tokens.at(-1)!;\n if (typeof lastToken.val === 'number') {\n lastToken.val += 1;\n return coerceRangeValue(value, tokensToStr(tokens));\n }\n return value;\n}\n\nfunction autoExtendMavenRange(\n currentRepresentation: string,\n newValue: string,\n): string | null {\n const range = parseRange(currentRepresentation);\n if (!range) {\n return currentRepresentation;\n }\n const isPoint = (vals: Range[]): boolean => {\n if (vals.length !== 1) {\n return false;\n }\n const { leftType, leftValue, rightType, rightValue } = vals[0];\n return (\n leftType === 'INCLUDING_POINT' &&\n leftType === rightType &&\n leftValue === rightValue\n );\n };\n if (isPoint(range)) {\n return `[${newValue}]`;\n }\n\n const interval = [...range].reverse().find((elem) => {\n const { rightType, rightValue } = elem;\n return (\n rightValue === null ||\n (rightType === INCLUDING_POINT && compare(rightValue, newValue) === -1) ||\n (rightType === EXCLUDING_POINT && compare(rightValue, newValue) !== 1)\n );\n });\n\n if (!interval) {\n return currentRepresentation;\n }\n\n const { leftValue, rightValue } = interval;\n if (\n leftValue !== null &&\n rightValue !== null &&\n incrementRangeValue(leftValue) === rightValue\n ) {\n // if a range was detected where incrementing the lower value once results in the upper value\n // and the new version is outside the range, construct a new range that follows the same semantic\n // [1,2) / 4.3.2 => [4,5)\n if (compare(newValue, leftValue) !== -1) {\n interval.leftValue = coerceRangeValue(leftValue, newValue);\n interval.rightValue = incrementRangeValue(interval.leftValue);\n }\n } else if (\n leftValue !== null &&\n rightValue !== null &&\n incrementRangeValue(leftValue) + ALPHA_SUFFIX === rightValue\n ) {\n // same as last if, but properly considering Maven ordering specification documented at\n // https://maven.apache.org/pom.html#Version_Order_Specification\n // 4-alpha is smaller than 4.0.0 for example\n // while often people that intend to only match version 1.x use [1,2)\n // this is not correct as it matches various 2.x versions, mostly pre-versions\n // so the correct range definition would be [1,2-alpha) as nothing\n // starting with 2 can be lower than 2-alpha in Maven version ordering logic\n //\n // so this if handles the conceptually same case as the last if\n // just for the case when proper Maven ranges are used\n // [1,2-alpha) / 4.3.2 => [4,5-alpha)\n interval.leftValue = coerceRangeValue(leftValue, newValue);\n interval.rightValue =\n incrementRangeValue(interval.leftValue) + ALPHA_SUFFIX;\n } else if (rightValue !== null) {\n if (interval.rightType === INCLUDING_POINT) {\n const tokens = tokenize(rightValue);\n const lastToken = tokens.at(-1)!;\n if (typeof lastToken.val === 'number') {\n interval.rightValue = coerceRangeValue(rightValue, newValue);\n } else {\n interval.rightValue = newValue;\n }\n } else {\n interval.rightValue = incrementRangeValue(\n coerceRangeValue(rightValue, newValue),\n );\n }\n } else if (leftValue !== null) {\n interval.leftValue = coerceRangeValue(leftValue, newValue);\n }\n\n return rangeToStr(range);\n}\n\nfunction isSubversion(majorVersion: string, minorVersion: string): boolean {\n const majorTokens = tokenize(majorVersion);\n const minorTokens = tokenize(minorVersion);\n\n let result = true;\n const len = majorTokens.length;\n for (let idx = 0; idx < len; idx += 1) {\n const major = majorTokens[idx];\n const minor = minorTokens[idx] || nullFor(majorTokens[idx]);\n const cmpResult = tokenCmp(major, minor);\n if (cmpResult !== 0) {\n result = false;\n break;\n }\n }\n return result;\n}\n\nexport {\n EXCLUDING_POINT,\n INCLUDING_POINT,\n PREFIX_DOT,\n PREFIX_HYPHEN,\n TYPE_NUMBER,\n TYPE_QUALIFIER,\n autoExtendMavenRange,\n compare,\n isSubversion,\n isValid,\n isVersion,\n isVersion as isSingleVersion,\n parseRange,\n rangeToStr,\n tokenize,\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"compare.js","names":[],"sources":["../../../../lib/modules/versioning/maven/compare.ts"],"sourcesContent":["import { regEx } from '../../../util/regex.ts';\n\nconst PREFIX_DOT = 'PREFIX_DOT';\nconst PREFIX_HYPHEN = 'PREFIX_HYPHEN';\nconst ALPHA_SUFFIX = '-alpha';\n\nconst TYPE_NUMBER = 'TYPE_NUMBER';\nconst TYPE_QUALIFIER = 'TYPE_QUALIFIER';\n\nexport interface BaseToken {\n prefix: string;\n type: typeof TYPE_NUMBER | typeof TYPE_QUALIFIER;\n val: number | string;\n isTransition?: boolean;\n}\n\nexport interface NumberToken extends BaseToken {\n type: typeof TYPE_NUMBER;\n val: number;\n}\n\nexport interface QualifierToken extends BaseToken {\n type: typeof TYPE_QUALIFIER;\n val: string;\n}\n\nexport type Token = NumberToken | QualifierToken;\n\nfunction iterateChars(\n str: string,\n cb: (p: string | null, n: string | null) => void,\n): void {\n let prev = null;\n let next = null;\n for (let i = 0; i < str.length; i += 1) {\n next = str.charAt(i);\n cb(prev, next);\n prev = next;\n }\n cb(prev, null);\n}\n\nfunction isDigit(char: string): boolean {\n return regEx(/^\\d$/).test(char);\n}\n\nfunction isLetter(char: string): boolean {\n return regEx(/^[a-z_+]$/i).test(char);\n}\n\nfunction isTransition(prevChar: string, nextChar: string): boolean {\n return (\n (isDigit(prevChar) && isLetter(nextChar)) ||\n (isLetter(prevChar) && isDigit(nextChar))\n );\n}\n\nfunction iterateTokens(versionStr: string, cb: (token: Token) => void): void {\n let currentPrefix = '';\n let currentVal = '';\n\n function yieldToken(transition = false): void {\n const val = currentVal || '0';\n if (regEx(/^\\d+$/).test(val)) {\n cb({\n prefix: currentPrefix,\n type: TYPE_NUMBER,\n val: parseInt(val, 10),\n isTransition: transition,\n });\n } else {\n cb({\n prefix: currentPrefix,\n type: TYPE_QUALIFIER,\n val,\n isTransition: transition,\n });\n }\n }\n\n iterateChars(versionStr, (prevChar, nextChar) => {\n if (nextChar === null) {\n yieldToken();\n } else if (nextChar === '-') {\n yieldToken();\n currentPrefix = PREFIX_HYPHEN;\n currentVal = '';\n } else if (nextChar === '.') {\n yieldToken();\n currentPrefix = PREFIX_DOT;\n currentVal = '';\n } else if (prevChar === null && (nextChar === 'v' || nextChar === 'V')) {\n currentPrefix = nextChar;\n } else {\n if (currentVal !== '' && isTransition(prevChar!, nextChar)) {\n yieldToken(true);\n currentPrefix = PREFIX_HYPHEN;\n currentVal = nextChar;\n } else if (\n currentVal === '' &&\n (currentPrefix === 'v' || currentPrefix === 'V') &&\n !isDigit(nextChar)\n ) {\n currentVal = currentVal.concat(currentPrefix, nextChar);\n currentPrefix = '';\n } else {\n currentVal = currentVal.concat(nextChar);\n }\n }\n });\n}\n\nfunction isNull(token: Token): boolean {\n const val = token.val;\n return (\n val === 0 ||\n val === '' ||\n val === 'final' ||\n val === 'ga' ||\n val === 'release' ||\n val === 'latest' ||\n val === 'sr'\n );\n}\n\nfunction tokenize(versionStr: string, preserveMinorZeroes = false): Token[] {\n let buf: Token[] = [];\n let result: Token[] = [];\n let leadingZero = true;\n iterateTokens(versionStr.toLowerCase(), (token) => {\n if (token.prefix === PREFIX_HYPHEN || token.type === TYPE_QUALIFIER) {\n buf = [];\n }\n buf.push(token);\n if (!isNull(token)) {\n leadingZero = false;\n result = result.concat(buf);\n buf = [];\n } else if (leadingZero || preserveMinorZeroes) {\n result = result.concat(buf);\n buf = [];\n }\n });\n return result;\n}\n\nfunction nullFor(token: Token): Token {\n return token.type === TYPE_NUMBER\n ? {\n prefix: token.prefix,\n type: TYPE_NUMBER,\n val: 0,\n }\n : {\n prefix: token.prefix,\n type: TYPE_QUALIFIER,\n val: '',\n };\n}\n\nfunction commonOrder(token: Token): number {\n if (token.type === TYPE_QUALIFIER) {\n return 1;\n }\n if (token.prefix === PREFIX_HYPHEN && token.type === TYPE_NUMBER) {\n return 2;\n }\n return 3;\n}\n\nexport const QualifierTypes = {\n Alpha: 1,\n Beta: 2,\n Milestone: 3,\n RC: 4,\n Snapshot: 5,\n Release: 6,\n SP: 7,\n} as const;\n\nexport function qualifierType(token: Token): number | null {\n const val = token.val;\n if (val === 'alpha' || (token.isTransition && val === 'a')) {\n return QualifierTypes.Alpha;\n }\n if (val === 'beta' || (token.isTransition && val === 'b')) {\n return QualifierTypes.Beta;\n }\n if (val === 'milestone' || (token.isTransition && val === 'm')) {\n return QualifierTypes.Milestone;\n }\n if (val === 'rc' || val === 'cr' || val === 'preview') {\n return QualifierTypes.RC;\n }\n if (val === 'snapshot' || val === 'snap') {\n return QualifierTypes.Snapshot;\n }\n if (\n val === '' ||\n val === 'final' ||\n val === 'ga' ||\n val === 'release' ||\n val === 'latest' ||\n val === 'sr'\n ) {\n return QualifierTypes.Release;\n }\n if (val === 'sp') {\n return QualifierTypes.SP;\n }\n return null;\n}\n\nfunction qualifierCmp(left: Token, right: Token): number {\n const leftOrder = qualifierType(left);\n const rightOrder = qualifierType(right);\n if (leftOrder && rightOrder) {\n if (leftOrder < rightOrder) {\n return -1;\n }\n if (leftOrder > rightOrder) {\n return 1;\n }\n return 0;\n }\n\n if (leftOrder && leftOrder < QualifierTypes.Release) {\n return -1;\n }\n if (rightOrder && rightOrder < QualifierTypes.Release) {\n return 1;\n }\n\n if (left.val < right.val) {\n return -1;\n }\n if (left.val > right.val) {\n return 1;\n }\n return 0;\n}\n\nfunction tokenCmp(left: Token, right: Token): number {\n const leftOrder = commonOrder(left);\n const rightOrder = commonOrder(right);\n\n if (leftOrder < rightOrder) {\n return -1;\n }\n if (leftOrder > rightOrder) {\n return 1;\n }\n\n if (left.type === TYPE_NUMBER && right.type === TYPE_NUMBER) {\n if (left.val < right.val) {\n return -1;\n }\n if (left.val > right.val) {\n return 1;\n }\n return 0;\n }\n\n return qualifierCmp(left, right);\n}\n\nfunction compare(left: string, right: string): number {\n const leftTokens = tokenize(left);\n const rightTokens = tokenize(right);\n const length = Math.max(leftTokens.length, rightTokens.length);\n for (let idx = 0; idx < length; idx += 1) {\n const leftToken = leftTokens[idx] || nullFor(rightTokens[idx]);\n const rightToken = rightTokens[idx] || nullFor(leftTokens[idx]);\n const cmpResult = tokenCmp(leftToken, rightToken);\n if (cmpResult !== 0) {\n return cmpResult;\n }\n }\n return 0;\n}\n\nfunction isVersion(version: unknown): version is string {\n if (!version || typeof version !== 'string') {\n return false;\n }\n if (!regEx(/^[-.a-z_+0-9]+$/i).test(version)) {\n return false;\n }\n if (regEx(/^[.-]/).test(version)) {\n return false;\n }\n if (regEx(/[.-]$/).test(version)) {\n return false;\n }\n if (['latest', 'release'].includes(version.toLowerCase())) {\n return false;\n }\n const tokens = tokenize(version);\n return !!tokens.length;\n}\n\nconst INCLUDING_POINT = 'INCLUDING_POINT';\nconst EXCLUDING_POINT = 'EXCLUDING_POINT';\n\nfunction parseRange(rangeStr: string): Range[] | null {\n function emptyInterval(): Range {\n return {\n leftType: null,\n leftValue: null,\n leftBracket: null,\n rightType: null,\n rightValue: null,\n rightBracket: null,\n };\n }\n\n const commaSplit = rangeStr.split(regEx(/\\s*,\\s*/));\n let ranges: Range[] | null = [];\n let interval = emptyInterval();\n\n commaSplit.forEach((subStr) => {\n if (!ranges) {\n return;\n }\n if (interval.leftType === null) {\n if (regEx(/^\\[.*]$/).test(subStr)) {\n const ver = subStr.slice(1, -1);\n ranges.push({\n leftType: INCLUDING_POINT,\n leftValue: ver,\n leftBracket: '[',\n rightType: INCLUDING_POINT,\n rightValue: ver,\n rightBracket: ']',\n });\n interval = emptyInterval();\n } else if (subStr.startsWith('[')) {\n const ver = subStr.slice(1);\n interval.leftType = INCLUDING_POINT;\n interval.leftValue = ver;\n interval.leftBracket = '[';\n } else if (subStr.startsWith('(') || subStr.startsWith(']')) {\n const ver = subStr.slice(1);\n interval.leftType = EXCLUDING_POINT;\n interval.leftValue = ver;\n interval.leftBracket = subStr[0];\n } else {\n ranges = null;\n }\n } else if (subStr.endsWith(']')) {\n const ver = subStr.slice(0, -1);\n interval.rightType = INCLUDING_POINT;\n interval.rightValue = ver;\n interval.rightBracket = ']';\n ranges.push(interval);\n interval = emptyInterval();\n } else if (subStr.endsWith(')') || subStr.endsWith('[')) {\n const ver = subStr.slice(0, -1);\n interval.rightType = EXCLUDING_POINT;\n interval.rightValue = ver;\n interval.rightBracket = subStr.endsWith(')') ? ')' : '[';\n ranges.push(interval);\n interval = emptyInterval();\n } else {\n ranges = null;\n }\n });\n\n if (interval.leftType) {\n return null;\n } // something like '[1,2],[3'\n if (!ranges?.length) {\n return null;\n }\n\n const lastIdx = ranges.length - 1;\n let prevValue: string | null = null;\n const result: Range[] = [];\n for (let idx = 0; idx < ranges.length; idx += 1) {\n const range = ranges[idx];\n const { leftType, leftValue, rightType, rightValue } = range;\n\n if (idx === 0 && leftValue === '') {\n if (leftType === EXCLUDING_POINT && isVersion(rightValue)) {\n prevValue = rightValue;\n result.push({ ...range, leftValue: null });\n continue;\n }\n return null;\n }\n if (idx === lastIdx && rightValue === '') {\n if (rightType === EXCLUDING_POINT && isVersion(leftValue)) {\n if (prevValue && compare(prevValue, leftValue) === 1) {\n return null;\n }\n result.push({ ...range, rightValue: null });\n continue;\n }\n return null;\n }\n if (isVersion(leftValue) && isVersion(rightValue)) {\n if (compare(leftValue, rightValue) === 1) {\n return null;\n }\n if (prevValue && compare(prevValue, leftValue) === 1) {\n return null;\n }\n prevValue = rightValue;\n result.push(range);\n continue;\n }\n return null;\n }\n return result;\n}\n\nfunction isValid(str: string): boolean {\n if (!str) {\n return false;\n }\n return isVersion(str) || !!parseRange(str);\n}\n\nexport interface Range {\n leftType: typeof INCLUDING_POINT | typeof EXCLUDING_POINT | null;\n leftValue: string | null;\n leftBracket: string | null;\n rightType: typeof INCLUDING_POINT | typeof EXCLUDING_POINT | null;\n rightValue: string | null;\n rightBracket: string | null;\n}\n\nfunction rangeToStr(fullRange: Range[] | null): string | null {\n if (fullRange === null) {\n return null;\n }\n\n function valToStr(val: string | null): string {\n return val ?? '';\n }\n\n if (fullRange.length === 1) {\n const { leftBracket, rightBracket, leftValue, rightValue } = fullRange[0];\n if (\n leftValue === rightValue &&\n leftBracket === '[' &&\n rightBracket === ']'\n ) {\n return `[${valToStr(leftValue)}]`;\n }\n }\n\n const intervals = fullRange.map((val) =>\n [\n val.leftBracket,\n valToStr(val.leftValue),\n ',',\n valToStr(val.rightValue),\n val.rightBracket,\n ].join(''),\n );\n return intervals.join(',');\n}\n\nfunction tokensToStr(tokens: Token[]): string {\n let isTransition: boolean | undefined = false;\n return tokens.reduce((result: string, token: Token) => {\n let prefix: string;\n if (token.prefix === PREFIX_DOT) {\n prefix = '.';\n } else if (token.prefix === PREFIX_HYPHEN) {\n prefix = isTransition === true ? '' : '-';\n } else {\n prefix = token.prefix;\n }\n isTransition = token.isTransition;\n return `${result}${prefix}${token.val}`;\n }, '');\n}\n\nfunction coerceRangeValue(prev: string, next: string): string {\n const prevTokens = tokenize(prev, true);\n const nextTokens = tokenize(next, true);\n const resultTokens = nextTokens.slice(0, prevTokens.length);\n const align = Math.max(0, prevTokens.length - nextTokens.length);\n if (align > 0) {\n resultTokens.push(...prevTokens.slice(prevTokens.length - align));\n }\n return tokensToStr(resultTokens);\n}\n\nfunction incrementRangeValue(value: string): string {\n const tokens = tokenize(value);\n const lastToken = tokens.at(-1)!;\n if (typeof lastToken.val === 'number') {\n lastToken.val += 1;\n return coerceRangeValue(value, tokensToStr(tokens));\n }\n return value;\n}\n\nfunction autoExtendMavenRange(\n currentRepresentation: string,\n newValue: string,\n): string | null {\n const range = parseRange(currentRepresentation);\n if (!range) {\n return currentRepresentation;\n }\n function isPoint(vals: Range[]): boolean {\n if (vals.length !== 1) {\n return false;\n }\n const { leftType, leftValue, rightType, rightValue } = vals[0];\n return (\n leftType === 'INCLUDING_POINT' &&\n leftType === rightType &&\n leftValue === rightValue\n );\n }\n if (isPoint(range)) {\n return `[${newValue}]`;\n }\n\n const interval = [...range].reverse().find((elem) => {\n const { rightType, rightValue } = elem;\n return (\n rightValue === null ||\n (rightType === INCLUDING_POINT && compare(rightValue, newValue) === -1) ||\n (rightType === EXCLUDING_POINT && compare(rightValue, newValue) !== 1)\n );\n });\n\n if (!interval) {\n return currentRepresentation;\n }\n\n const { leftValue, rightValue } = interval;\n if (\n leftValue !== null &&\n rightValue !== null &&\n incrementRangeValue(leftValue) === rightValue\n ) {\n // if a range was detected where incrementing the lower value once results in the upper value\n // and the new version is outside the range, construct a new range that follows the same semantic\n // [1,2) / 4.3.2 => [4,5)\n if (compare(newValue, leftValue) !== -1) {\n interval.leftValue = coerceRangeValue(leftValue, newValue);\n interval.rightValue = incrementRangeValue(interval.leftValue);\n }\n } else if (\n leftValue !== null &&\n rightValue !== null &&\n incrementRangeValue(leftValue) + ALPHA_SUFFIX === rightValue\n ) {\n // same as last if, but properly considering Maven ordering specification documented at\n // https://maven.apache.org/pom.html#Version_Order_Specification\n // 4-alpha is smaller than 4.0.0 for example\n // while often people that intend to only match version 1.x use [1,2)\n // this is not correct as it matches various 2.x versions, mostly pre-versions\n // so the correct range definition would be [1,2-alpha) as nothing\n // starting with 2 can be lower than 2-alpha in Maven version ordering logic\n //\n // so this if handles the conceptually same case as the last if\n // just for the case when proper Maven ranges are used\n // [1,2-alpha) / 4.3.2 => [4,5-alpha)\n interval.leftValue = coerceRangeValue(leftValue, newValue);\n interval.rightValue =\n incrementRangeValue(interval.leftValue) + ALPHA_SUFFIX;\n } else if (rightValue !== null) {\n if (interval.rightType === INCLUDING_POINT) {\n const tokens = tokenize(rightValue);\n const lastToken = tokens.at(-1)!;\n if (typeof lastToken.val === 'number') {\n interval.rightValue = coerceRangeValue(rightValue, newValue);\n } else {\n interval.rightValue = newValue;\n }\n } else {\n interval.rightValue = incrementRangeValue(\n coerceRangeValue(rightValue, newValue),\n );\n }\n } else if (leftValue !== null) {\n interval.leftValue = coerceRangeValue(leftValue, newValue);\n }\n\n return rangeToStr(range);\n}\n\nfunction isSubversion(majorVersion: string, minorVersion: string): boolean {\n const majorTokens = tokenize(majorVersion);\n const minorTokens = tokenize(minorVersion);\n\n let result = true;\n const len = majorTokens.length;\n for (let idx = 0; idx < len; idx += 1) {\n const major = majorTokens[idx];\n const minor = minorTokens[idx] || nullFor(majorTokens[idx]);\n const cmpResult = tokenCmp(major, minor);\n if (cmpResult !== 0) {\n result = false;\n break;\n }\n }\n return result;\n}\n\nexport {\n EXCLUDING_POINT,\n INCLUDING_POINT,\n PREFIX_DOT,\n PREFIX_HYPHEN,\n TYPE_NUMBER,\n TYPE_QUALIFIER,\n autoExtendMavenRange,\n compare,\n isSubversion,\n isValid,\n isVersion,\n isVersion as isSingleVersion,\n parseRange,\n rangeToStr,\n tokenize,\n};\n"],"mappings":"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"}
|
|
@@ -2,7 +2,9 @@ import { coerceString } from "../../../util/string.js";
|
|
|
2
2
|
import { QualifierTypes, autoExtendMavenRange, compare, isSingleVersion as isVersion, isValid, parseRange, qualifierType, tokenize } from "./compare.js";
|
|
3
3
|
//#region lib/modules/versioning/maven/index.ts
|
|
4
4
|
const id = "maven";
|
|
5
|
-
|
|
5
|
+
function equals(a, b) {
|
|
6
|
+
return compare(a, b) === 0;
|
|
7
|
+
}
|
|
6
8
|
function matches(a, b) {
|
|
7
9
|
if (!b) return false;
|
|
8
10
|
if (isVersion(b)) return equals(a, b);
|
|
@@ -18,19 +20,19 @@ function matches(a, b) {
|
|
|
18
20
|
return leftResult && rightResult;
|
|
19
21
|
}, false);
|
|
20
22
|
}
|
|
21
|
-
|
|
23
|
+
function getMajor(version) {
|
|
22
24
|
if (isVersion(version)) return +tokenize(version)[0].val;
|
|
23
25
|
return null;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
+
}
|
|
27
|
+
function getMinor(version) {
|
|
26
28
|
if (isVersion(version)) {
|
|
27
29
|
const minorToken = tokenize(version)[1];
|
|
28
30
|
if (minorToken?.type === "TYPE_NUMBER") return +minorToken.val;
|
|
29
31
|
return 0;
|
|
30
32
|
}
|
|
31
33
|
return null;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
+
}
|
|
35
|
+
function getPatch(version) {
|
|
34
36
|
if (isVersion(version)) {
|
|
35
37
|
const tokens = tokenize(version);
|
|
36
38
|
const minorToken = tokens[1];
|
|
@@ -39,9 +41,11 @@ const getPatch = (version) => {
|
|
|
39
41
|
return 0;
|
|
40
42
|
}
|
|
41
43
|
return null;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
|
|
44
|
+
}
|
|
45
|
+
function isGreaterThan(a, b) {
|
|
46
|
+
return compare(a, b) === 1;
|
|
47
|
+
}
|
|
48
|
+
function isStable(version) {
|
|
45
49
|
if (isVersion(version)) {
|
|
46
50
|
const tokens = tokenize(version);
|
|
47
51
|
for (const token of tokens) if (token.type === "TYPE_QUALIFIER") {
|
|
@@ -51,15 +55,17 @@ const isStable = (version) => {
|
|
|
51
55
|
return true;
|
|
52
56
|
}
|
|
53
57
|
return false;
|
|
54
|
-
}
|
|
58
|
+
}
|
|
55
59
|
// istanbul ignore next
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
if (
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
60
|
+
function getSatisfyingVersion(versions, range) {
|
|
61
|
+
return versions.reduce((result, version) => {
|
|
62
|
+
if (matches(version, range)) {
|
|
63
|
+
if (!result) return version;
|
|
64
|
+
if (isGreaterThan(version, result)) return version;
|
|
65
|
+
}
|
|
66
|
+
return result;
|
|
67
|
+
}, null);
|
|
68
|
+
}
|
|
63
69
|
function getNewValue({ currentValue, rangeStrategy, newVersion }) {
|
|
64
70
|
if (isVersion(currentValue) || rangeStrategy === "pin") return newVersion;
|
|
65
71
|
return coerceString(autoExtendMavenRange(currentValue, newVersion), currentValue);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../../lib/modules/versioning/maven/index.ts"],"sourcesContent":["import type { RangeStrategy } from '../../../types/versioning.ts';\nimport { coerceString } from '../../../util/string.ts';\nimport type { NewValueConfig, VersioningApi } from '../types.ts';\nimport {\n EXCLUDING_POINT,\n QualifierTypes,\n TYPE_NUMBER,\n TYPE_QUALIFIER,\n autoExtendMavenRange,\n compare,\n isSingleVersion,\n isValid,\n isVersion,\n parseRange,\n qualifierType,\n tokenize,\n} from './compare.ts';\n\nexport const id = 'maven';\nexport const displayName = 'Maven';\nexport const urls = [\n '[Maven POM - Dependency version requirements](https://maven.apache.org/pom.html#Dependency_Version_Requirement_Specification)',\n '[Maven versioning explained](https://octopus.com/blog/maven-versioning-explained)',\n '[Maven Enforcer - Version ranges](https://maven.apache.org/enforcer/enforcer-rules/versionRanges.html)',\n];\nexport const supportsRanges = true;\nexport const supportedRangeStrategies: RangeStrategy[] = [\n 'bump',\n 'widen',\n 'pin',\n 'replace',\n];\n\
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../lib/modules/versioning/maven/index.ts"],"sourcesContent":["import type { RangeStrategy } from '../../../types/versioning.ts';\nimport { coerceString } from '../../../util/string.ts';\nimport type { NewValueConfig, VersioningApi } from '../types.ts';\nimport {\n EXCLUDING_POINT,\n QualifierTypes,\n TYPE_NUMBER,\n TYPE_QUALIFIER,\n autoExtendMavenRange,\n compare,\n isSingleVersion,\n isValid,\n isVersion,\n parseRange,\n qualifierType,\n tokenize,\n} from './compare.ts';\n\nexport const id = 'maven';\nexport const displayName = 'Maven';\nexport const urls = [\n '[Maven POM - Dependency version requirements](https://maven.apache.org/pom.html#Dependency_Version_Requirement_Specification)',\n '[Maven versioning explained](https://octopus.com/blog/maven-versioning-explained)',\n '[Maven Enforcer - Version ranges](https://maven.apache.org/enforcer/enforcer-rules/versionRanges.html)',\n];\nexport const supportsRanges = true;\nexport const supportedRangeStrategies: RangeStrategy[] = [\n 'bump',\n 'widen',\n 'pin',\n 'replace',\n];\n\nfunction equals(a: string, b: string): boolean {\n return compare(a, b) === 0;\n}\n\nfunction matches(a: string, b: string): boolean {\n if (!b) {\n return false;\n }\n if (isVersion(b)) {\n return equals(a, b);\n }\n const ranges = parseRange(b);\n if (!ranges) {\n return false;\n }\n return ranges.reduce((result, range): any => {\n if (result) {\n return result;\n }\n\n const { leftType, leftValue, rightType, rightValue } = range;\n\n let leftResult = true;\n let rightResult = true;\n\n if (leftValue) {\n leftResult =\n leftType === EXCLUDING_POINT\n ? compare(leftValue, a) === -1\n : compare(leftValue, a) !== 1;\n }\n\n if (rightValue) {\n rightResult =\n rightType === EXCLUDING_POINT\n ? compare(a, rightValue) === -1\n : compare(a, rightValue) !== 1;\n }\n\n return leftResult && rightResult;\n }, false);\n}\n\nfunction getMajor(version: string): number | null {\n if (isVersion(version)) {\n const tokens = tokenize(version);\n const majorToken = tokens[0];\n return +majorToken.val;\n }\n return null;\n}\n\nfunction getMinor(version: string): number | null {\n if (isVersion(version)) {\n const tokens = tokenize(version);\n const minorToken = tokens[1];\n if (minorToken?.type === TYPE_NUMBER) {\n return +minorToken.val;\n }\n return 0;\n }\n return null;\n}\n\nfunction getPatch(version: string): number | null {\n if (isVersion(version)) {\n const tokens = tokenize(version);\n const minorToken = tokens[1];\n const patchToken = tokens[2];\n if (\n patchToken &&\n minorToken.type === TYPE_NUMBER &&\n patchToken.type === TYPE_NUMBER\n ) {\n return +patchToken.val;\n }\n return 0;\n }\n return null;\n}\n\nfunction isGreaterThan(a: string, b: string): boolean {\n return compare(a, b) === 1;\n}\n\nfunction isStable(version: string): boolean {\n if (isVersion(version)) {\n const tokens = tokenize(version);\n for (const token of tokens) {\n if (token.type === TYPE_QUALIFIER) {\n const qualType = qualifierType(token);\n if (qualType && qualType < QualifierTypes.Release) {\n return false;\n }\n }\n }\n return true;\n }\n return false;\n}\n\n// istanbul ignore next\nfunction getSatisfyingVersion(\n versions: string[],\n range: string,\n): string | null {\n return versions.reduce((result: string | null, version) => {\n if (matches(version, range)) {\n if (!result) {\n return version;\n }\n if (isGreaterThan(version, result)) {\n return version;\n }\n }\n return result;\n }, null);\n}\n\nfunction getNewValue({\n currentValue,\n rangeStrategy,\n newVersion,\n}: NewValueConfig): string {\n if (isVersion(currentValue) || rangeStrategy === 'pin') {\n return newVersion;\n }\n return coerceString(\n autoExtendMavenRange(currentValue, newVersion),\n currentValue,\n );\n}\n\nexport { isValid };\n\nexport const api: VersioningApi = {\n equals,\n getMajor,\n getMinor,\n getPatch,\n isCompatible: isVersion,\n isGreaterThan,\n isSingleVersion,\n isStable,\n isValid,\n isVersion,\n matches,\n getSatisfyingVersion,\n minSatisfyingVersion: getSatisfyingVersion,\n getNewValue,\n sortVersions: compare,\n};\n\nexport default api;\n"],"mappings":";;;AAkBA,MAAa,KAAK;AAelB,SAAS,OAAO,GAAW,GAAoB;CAC7C,OAAO,QAAQ,GAAG,CAAC,MAAM;AAC3B;AAEA,SAAS,QAAQ,GAAW,GAAoB;CAC9C,IAAI,CAAC,GACH,OAAO;CAET,IAAI,UAAU,CAAC,GACb,OAAO,OAAO,GAAG,CAAC;CAEpB,MAAM,SAAS,WAAW,CAAC;CAC3B,IAAI,CAAC,QACH,OAAO;CAET,OAAO,OAAO,QAAQ,QAAQ,UAAe;EAC3C,IAAI,QACF,OAAO;EAGT,MAAM,EAAE,UAAU,WAAW,WAAW,eAAe;EAEvD,IAAI,aAAa;EACjB,IAAI,cAAc;EAElB,IAAI,WACF,aACE,aAAA,oBACI,QAAQ,WAAW,CAAC,MAAM,KAC1B,QAAQ,WAAW,CAAC,MAAM;EAGlC,IAAI,YACF,cACE,cAAA,oBACI,QAAQ,GAAG,UAAU,MAAM,KAC3B,QAAQ,GAAG,UAAU,MAAM;EAGnC,OAAO,cAAc;CACvB,GAAG,KAAK;AACV;AAEA,SAAS,SAAS,SAAgC;CAChD,IAAI,UAAU,OAAO,GAGnB,OAAO,CAFQ,SAAS,OACA,CAAC,CAAC,EACR,CAAC;CAErB,OAAO;AACT;AAEA,SAAS,SAAS,SAAgC;CAChD,IAAI,UAAU,OAAO,GAAG;EAEtB,MAAM,aADS,SAAS,OACA,CAAC,CAAC;EAC1B,IAAI,YAAY,SAAA,eACd,OAAO,CAAC,WAAW;EAErB,OAAO;CACT;CACA,OAAO;AACT;AAEA,SAAS,SAAS,SAAgC;CAChD,IAAI,UAAU,OAAO,GAAG;EACtB,MAAM,SAAS,SAAS,OAAO;EAC/B,MAAM,aAAa,OAAO;EAC1B,MAAM,aAAa,OAAO;EAC1B,IACE,cACA,WAAW,SAAA,iBACX,WAAW,SAAA,eAEX,OAAO,CAAC,WAAW;EAErB,OAAO;CACT;CACA,OAAO;AACT;AAEA,SAAS,cAAc,GAAW,GAAoB;CACpD,OAAO,QAAQ,GAAG,CAAC,MAAM;AAC3B;AAEA,SAAS,SAAS,SAA0B;CAC1C,IAAI,UAAU,OAAO,GAAG;EACtB,MAAM,SAAS,SAAS,OAAO;EAC/B,KAAK,MAAM,SAAS,QAClB,IAAI,MAAM,SAAA,kBAAyB;GACjC,MAAM,WAAW,cAAc,KAAK;GACpC,IAAI,YAAY,WAAW,eAAe,SACxC,OAAO;EAEX;EAEF,OAAO;CACT;CACA,OAAO;AACT;;AAGA,SAAS,qBACP,UACA,OACe;CACf,OAAO,SAAS,QAAQ,QAAuB,YAAY;EACzD,IAAI,QAAQ,SAAS,KAAK,GAAG;GAC3B,IAAI,CAAC,QACH,OAAO;GAET,IAAI,cAAc,SAAS,MAAM,GAC/B,OAAO;EAEX;EACA,OAAO;CACT,GAAG,IAAI;AACT;AAEA,SAAS,YAAY,EACnB,cACA,eACA,cACyB;CACzB,IAAI,UAAU,YAAY,KAAK,kBAAkB,OAC/C,OAAO;CAET,OAAO,aACL,qBAAqB,cAAc,UAAU,GAC7C,YACF;AACF;AAIA,MAAa,MAAqB;CAChC;CACA;CACA;CACA;CACA,cAAc;CACd;CACA,iBAAA;CACA;CACA;CACA;CACA;CACA;CACA,sBAAsB;CACtB;CACA,cAAc;AAChB"}
|
|
@@ -7,8 +7,12 @@ const { compare: sortVersions, maxSatisfying, minSatisfying, major: getMajor, mi
|
|
|
7
7
|
function normalizeNpmRange(range) {
|
|
8
8
|
return normalizeLegacyXRanges(range);
|
|
9
9
|
}
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
function isValid(input) {
|
|
11
|
+
return !!validRange(normalizeNpmRange(input));
|
|
12
|
+
}
|
|
13
|
+
function isVersion(input) {
|
|
14
|
+
return !!valid$1(input);
|
|
15
|
+
}
|
|
12
16
|
function matches(version, range) {
|
|
13
17
|
return satisfies$1(version, normalizeNpmRange(range));
|
|
14
18
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["valid","satisfies"],"sources":["../../../../lib/modules/versioning/npm/index.ts"],"sourcesContent":["import semver from 'semver';\nimport stable from 'semver-stable';\nimport type { RangeStrategy } from '../../../types/versioning.ts';\nimport { normalizeLegacyXRanges } from '../semver/common.ts';\nimport { isBreaking } from '../semver/index.ts';\nimport type { VersioningApi } from '../types.ts';\nimport { getNewValue } from './range.ts';\n\nexport const id = 'npm';\nexport const displayName = 'npm';\nexport const urls = [\n '[Semantic Versioning](https://semver.org/)',\n '[semver npm package](https://www.npmjs.com/package/semver)',\n '[npm - About semantic versioning](https://docs.npmjs.com/about-semantic-versioning)',\n '[npm semver calculator](https://semver.npmjs.com/)',\n];\nexport const supportsRanges = true;\nexport const supportedRangeStrategies: RangeStrategy[] = [\n 'bump',\n 'widen',\n 'replace',\n];\n\nconst {\n compare: sortVersions,\n maxSatisfying,\n minSatisfying,\n major: getMajor,\n minor: getMinor,\n patch: getPatch,\n satisfies,\n valid,\n validRange,\n ltr,\n gt: isGreaterThan,\n eq: equals,\n subset: semverSubset,\n intersects: semverIntersects,\n} = semver;\n\nfunction normalizeNpmRange(range: string): string {\n return normalizeLegacyXRanges(range);\n}\n\n// If this is left as an alias, inputs like \"17.04.0\" throw errors\nexport
|
|
1
|
+
{"version":3,"file":"index.js","names":["valid","satisfies"],"sources":["../../../../lib/modules/versioning/npm/index.ts"],"sourcesContent":["import semver from 'semver';\nimport stable from 'semver-stable';\nimport type { RangeStrategy } from '../../../types/versioning.ts';\nimport { normalizeLegacyXRanges } from '../semver/common.ts';\nimport { isBreaking } from '../semver/index.ts';\nimport type { VersioningApi } from '../types.ts';\nimport { getNewValue } from './range.ts';\n\nexport const id = 'npm';\nexport const displayName = 'npm';\nexport const urls = [\n '[Semantic Versioning](https://semver.org/)',\n '[semver npm package](https://www.npmjs.com/package/semver)',\n '[npm - About semantic versioning](https://docs.npmjs.com/about-semantic-versioning)',\n '[npm semver calculator](https://semver.npmjs.com/)',\n];\nexport const supportsRanges = true;\nexport const supportedRangeStrategies: RangeStrategy[] = [\n 'bump',\n 'widen',\n 'replace',\n];\n\nconst {\n compare: sortVersions,\n maxSatisfying,\n minSatisfying,\n major: getMajor,\n minor: getMinor,\n patch: getPatch,\n satisfies,\n valid,\n validRange,\n ltr,\n gt: isGreaterThan,\n eq: equals,\n subset: semverSubset,\n intersects: semverIntersects,\n} = semver;\n\nfunction normalizeNpmRange(range: string): string {\n return normalizeLegacyXRanges(range);\n}\n\n// If this is left as an alias, inputs like \"17.04.0\" throw errors\nexport function isValid(input: string): boolean {\n return !!validRange(normalizeNpmRange(input));\n}\nexport function isVersion(input: string): boolean {\n return !!valid(input);\n}\n\nfunction matches(version: string, range: string): boolean {\n return satisfies(version, normalizeNpmRange(range));\n}\n\nfunction getSatisfyingVersion(\n versions: string[],\n range: string,\n): string | null {\n return maxSatisfying(versions, normalizeNpmRange(range));\n}\n\nfunction minSatisfyingVersion(\n versions: string[],\n range: string,\n): string | null {\n return minSatisfying(versions, normalizeNpmRange(range));\n}\n\nfunction isLessThanRange(version: string, range: string): boolean {\n return ltr(version, normalizeNpmRange(range));\n}\n\nfunction subset(subRange: string, superRange: string): boolean | undefined {\n return semverSubset(\n normalizeNpmRange(subRange),\n normalizeNpmRange(superRange),\n );\n}\n\nfunction intersects(range1: string, range2: string): boolean {\n return semverIntersects(normalizeNpmRange(range1), normalizeNpmRange(range2));\n}\n\nfunction isSingleVersion(constraint: string): boolean {\n return (\n isVersion(constraint) ||\n (constraint?.startsWith('=') && isVersion(constraint.substring(1).trim()))\n );\n}\n\nexport const api: VersioningApi = {\n equals,\n getMajor,\n getMinor,\n getNewValue,\n getPatch,\n isBreaking,\n isCompatible: isVersion,\n isGreaterThan,\n isLessThanRange,\n isSingleVersion,\n isStable: stable.is,\n isValid,\n isVersion,\n matches,\n getSatisfyingVersion,\n minSatisfyingVersion,\n sortVersions,\n subset,\n intersects,\n};\n\nexport default api;\n"],"mappings":";;;;;AAuBA,MAAM,EACJ,SAAS,cACT,eACA,eACA,OAAO,UACP,OAAO,UACP,OAAO,UACP,WAAA,aACA,OAAA,SACA,YACA,KACA,IAAI,eACJ,IAAI,QACJ,QAAQ,cACR,YAAY,qBACV;AAEJ,SAAS,kBAAkB,OAAuB;CAChD,OAAO,uBAAuB,KAAK;AACrC;AAGA,SAAgB,QAAQ,OAAwB;CAC9C,OAAO,CAAC,CAAC,WAAW,kBAAkB,KAAK,CAAC;AAC9C;AACA,SAAgB,UAAU,OAAwB;CAChD,OAAO,CAAC,CAACA,QAAM,KAAK;AACtB;AAEA,SAAS,QAAQ,SAAiB,OAAwB;CACxD,OAAOC,YAAU,SAAS,kBAAkB,KAAK,CAAC;AACpD;AAEA,SAAS,qBACP,UACA,OACe;CACf,OAAO,cAAc,UAAU,kBAAkB,KAAK,CAAC;AACzD;AAEA,SAAS,qBACP,UACA,OACe;CACf,OAAO,cAAc,UAAU,kBAAkB,KAAK,CAAC;AACzD;AAEA,SAAS,gBAAgB,SAAiB,OAAwB;CAChE,OAAO,IAAI,SAAS,kBAAkB,KAAK,CAAC;AAC9C;AAEA,SAAS,OAAO,UAAkB,YAAyC;CACzE,OAAO,aACL,kBAAkB,QAAQ,GAC1B,kBAAkB,UAAU,CAC9B;AACF;AAEA,SAAS,WAAW,QAAgB,QAAyB;CAC3D,OAAO,iBAAiB,kBAAkB,MAAM,GAAG,kBAAkB,MAAM,CAAC;AAC9E;AAEA,SAAS,gBAAgB,YAA6B;CACpD,OACE,UAAU,UAAU,KACnB,YAAY,WAAW,GAAG,KAAK,UAAU,WAAW,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC;AAE5E;AAEA,MAAa,MAAqB;CAChC;CACA;CACA;CACA;CACA;CACA;CACA,cAAc;CACd;CACA;CACA;CACA,UAAU,OAAO;CACjB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF"}
|
|
@@ -6,11 +6,11 @@ const { compare: sortVersions, satisfies: satisfies$1, valid, validRange, explai
|
|
|
6
6
|
function isVersion(input) {
|
|
7
7
|
return !!valid(input);
|
|
8
8
|
}
|
|
9
|
-
|
|
9
|
+
function isStable(input) {
|
|
10
10
|
const version = explain(input);
|
|
11
11
|
if (!version) return false;
|
|
12
12
|
return !version.is_prerelease;
|
|
13
|
-
}
|
|
13
|
+
}
|
|
14
14
|
function isValid(input) {
|
|
15
15
|
return validRange(input) || isVersion(input);
|
|
16
16
|
}
|
|
@@ -25,7 +25,9 @@ function minSatisfyingVersion(versions, range) {
|
|
|
25
25
|
function isSingleVersion(constraint) {
|
|
26
26
|
return isVersion(constraint) || constraint?.startsWith("==") && isVersion(constraint.substring(2).trim());
|
|
27
27
|
}
|
|
28
|
-
|
|
28
|
+
function equals(version1, version2) {
|
|
29
|
+
return isVersion(version1) && isVersion(version2) && eq(version1, version2);
|
|
30
|
+
}
|
|
29
31
|
function matches(version, range) {
|
|
30
32
|
if (!isVersion(version)) return false;
|
|
31
33
|
if (isVersion(range)) return equals(version, range);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["satisfies"],"sources":["../../../../lib/modules/versioning/pep440/index.ts"],"sourcesContent":["import * as pep440 from '@renovatebot/pep440';\nimport type { RangeStrategy } from '../../../types/versioning.ts';\nimport type { VersioningApi } from '../types.ts';\nimport { getNewValue, getPinnedValue, isLessThanRange } from './range.ts';\n\nexport const id = 'pep440';\nexport const displayName = 'PEP440';\nexport const urls = [\n '[PEP 440 - Version Identification](https://www.python.org/dev/peps/pep-0440/)',\n];\nexport const supportsRanges = true;\nexport const supportedRangeStrategies: RangeStrategy[] = [\n 'bump',\n 'widen',\n 'replace',\n];\n\nconst {\n compare: sortVersions,\n satisfies,\n valid,\n validRange,\n explain,\n gt: isGreaterThan,\n major: getMajor,\n minor: getMinor,\n patch: getPatch,\n eq,\n} = pep440;\n\nfunction isVersion(input: string | undefined | null): boolean {\n // @renovatebot/pep440 isn't strict null save\n // oxlint-disable-next-line typescript/no-unnecessary-type-assertion\n return !!valid(input!);\n}\n\
|
|
1
|
+
{"version":3,"file":"index.js","names":["satisfies"],"sources":["../../../../lib/modules/versioning/pep440/index.ts"],"sourcesContent":["import * as pep440 from '@renovatebot/pep440';\nimport type { RangeStrategy } from '../../../types/versioning.ts';\nimport type { VersioningApi } from '../types.ts';\nimport { getNewValue, getPinnedValue, isLessThanRange } from './range.ts';\n\nexport const id = 'pep440';\nexport const displayName = 'PEP440';\nexport const urls = [\n '[PEP 440 - Version Identification](https://www.python.org/dev/peps/pep-0440/)',\n];\nexport const supportsRanges = true;\nexport const supportedRangeStrategies: RangeStrategy[] = [\n 'bump',\n 'widen',\n 'replace',\n];\n\nconst {\n compare: sortVersions,\n satisfies,\n valid,\n validRange,\n explain,\n gt: isGreaterThan,\n major: getMajor,\n minor: getMinor,\n patch: getPatch,\n eq,\n} = pep440;\n\nfunction isVersion(input: string | undefined | null): boolean {\n // @renovatebot/pep440 isn't strict null save\n // oxlint-disable-next-line typescript/no-unnecessary-type-assertion\n return !!valid(input!);\n}\n\nfunction isStable(input: string): boolean {\n const version = explain(input);\n if (!version) {\n return false;\n }\n return !version.is_prerelease;\n}\n\n// If this is left as an alias, inputs like \"17.04.0\" throw errors\nexport function isValid(input: string): boolean {\n return validRange(input) || isVersion(input);\n}\n\nfunction getSatisfyingVersion(\n versions: string[],\n range: string,\n): string | null {\n const found = pep440.filter(versions, range).sort(sortVersions);\n return found.length === 0 ? null : found.at(-1)!;\n}\n\nfunction minSatisfyingVersion(\n versions: string[],\n range: string,\n): string | null {\n const found = pep440.filter(versions, range).sort(sortVersions);\n return found.length === 0 ? null : found[0];\n}\n\nexport function isSingleVersion(constraint: string): boolean {\n return (\n isVersion(constraint) ||\n (constraint?.startsWith('==') && isVersion(constraint.substring(2).trim()))\n );\n}\n\nexport { isVersion, matches };\n\nfunction equals(version1: string, version2: string): boolean {\n return isVersion(version1) && isVersion(version2) && eq(version1, version2);\n}\n\nfunction matches(version: string, range: string): boolean {\n if (!isVersion(version)) {\n return false;\n }\n if (isVersion(range)) {\n return equals(version, range);\n }\n return isValid(range) && satisfies(version, range, { prereleases: true });\n}\n\nexport const api: VersioningApi = {\n equals,\n getMajor,\n getMinor,\n getPatch,\n isCompatible: isVersion,\n isGreaterThan,\n isSingleVersion,\n isStable,\n isValid,\n isVersion,\n matches,\n getSatisfyingVersion,\n minSatisfyingVersion,\n getNewValue,\n getPinnedValue,\n sortVersions,\n isLessThanRange,\n};\n\nexport default api;\n"],"mappings":";;;AAKA,MAAa,KAAK;AAYlB,MAAM,EACJ,SAAS,cACT,WAAA,aACA,OACA,YACA,SACA,IAAI,eACJ,OAAO,UACP,OAAO,UACP,OAAO,UACP,OACE;AAEJ,SAAS,UAAU,OAA2C;CAG5D,OAAO,CAAC,CAAC,MAAM,KAAM;AACvB;AAEA,SAAS,SAAS,OAAwB;CACxC,MAAM,UAAU,QAAQ,KAAK;CAC7B,IAAI,CAAC,SACH,OAAO;CAET,OAAO,CAAC,QAAQ;AAClB;AAGA,SAAgB,QAAQ,OAAwB;CAC9C,OAAO,WAAW,KAAK,KAAK,UAAU,KAAK;AAC7C;AAEA,SAAS,qBACP,UACA,OACe;CACf,MAAM,QAAQ,OAAO,OAAO,UAAU,KAAK,CAAC,CAAC,KAAK,YAAY;CAC9D,OAAO,MAAM,WAAW,IAAI,OAAO,MAAM,GAAG,EAAE;AAChD;AAEA,SAAS,qBACP,UACA,OACe;CACf,MAAM,QAAQ,OAAO,OAAO,UAAU,KAAK,CAAC,CAAC,KAAK,YAAY;CAC9D,OAAO,MAAM,WAAW,IAAI,OAAO,MAAM;AAC3C;AAEA,SAAgB,gBAAgB,YAA6B;CAC3D,OACE,UAAU,UAAU,KACnB,YAAY,WAAW,IAAI,KAAK,UAAU,WAAW,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC;AAE7E;AAIA,SAAS,OAAO,UAAkB,UAA2B;CAC3D,OAAO,UAAU,QAAQ,KAAK,UAAU,QAAQ,KAAK,GAAG,UAAU,QAAQ;AAC5E;AAEA,SAAS,QAAQ,SAAiB,OAAwB;CACxD,IAAI,CAAC,UAAU,OAAO,GACpB,OAAO;CAET,IAAI,UAAU,KAAK,GACjB,OAAO,OAAO,SAAS,KAAK;CAE9B,OAAO,QAAQ,KAAK,KAAKA,YAAU,SAAS,OAAO,EAAE,aAAa,KAAK,CAAC;AAC1E;AAEA,MAAa,MAAqB;CAChC;CACA;CACA;CACA;CACA,cAAc;CACd;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF"}
|
|
@@ -14,36 +14,54 @@ function vtrim(version) {
|
|
|
14
14
|
if (typeof version === "string") return version.replace(regEx(/^v/), "").replace(regEx(/('|")/g), "");
|
|
15
15
|
return version;
|
|
16
16
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
17
|
+
function equals(left, right) {
|
|
18
|
+
return eq(vtrim(left), vtrim(right));
|
|
19
|
+
}
|
|
20
|
+
function getMajor(version) {
|
|
21
|
+
return parse$1(vtrim(version)).major;
|
|
22
|
+
}
|
|
23
|
+
function getMinor(version) {
|
|
24
|
+
return parse$1(vtrim(version)).minor;
|
|
25
|
+
}
|
|
26
|
+
function getPatch(version) {
|
|
27
|
+
return parse$1(vtrim(version)).patch;
|
|
28
|
+
}
|
|
29
|
+
function isVersion(version) {
|
|
30
|
+
return !!valid(vtrim(version));
|
|
31
|
+
}
|
|
32
|
+
function isGreaterThan(left, right) {
|
|
33
|
+
return gt(vtrim(left), vtrim(right));
|
|
34
|
+
}
|
|
35
|
+
function isLessThanRange(version, range) {
|
|
36
|
+
return !!ltr(vtrim(version), vtrim(range));
|
|
37
|
+
}
|
|
38
|
+
function isSingleVersion(range) {
|
|
25
39
|
const { version, operator } = parse(vtrim(range));
|
|
26
40
|
return operator ? isVersion(version) && isSingleOperator(operator) : isVersion(version);
|
|
27
|
-
}
|
|
41
|
+
}
|
|
28
42
|
function isStable(version) {
|
|
29
43
|
const v = vtrim(version);
|
|
30
44
|
return parse$1(v).prerelease ? false : isVersion(v);
|
|
31
45
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
46
|
+
function isValid(input) {
|
|
47
|
+
return input.split(",").map((piece) => vtrim(piece.trim())).every((range) => {
|
|
48
|
+
const { version, operator } = parse(range);
|
|
49
|
+
return operator ? isVersion(version) && isValidOperator(operator) : isVersion(version);
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
function matches(version, range) {
|
|
53
|
+
return satisfies(vtrim(version), vtrim(range));
|
|
54
|
+
}
|
|
37
55
|
function getSatisfyingVersion(versions, range) {
|
|
38
56
|
return maxSatisfying(versions.map(vtrim), vtrim(range));
|
|
39
57
|
}
|
|
40
58
|
function minSatisfyingVersion(versions, range) {
|
|
41
59
|
return minSatisfying(versions.map(vtrim), vtrim(range));
|
|
42
60
|
}
|
|
43
|
-
|
|
61
|
+
function getPinnedValue(value) {
|
|
44
62
|
return vtrim(value);
|
|
45
|
-
}
|
|
46
|
-
|
|
63
|
+
}
|
|
64
|
+
function getNewValue({ currentValue, rangeStrategy, currentVersion, newVersion }) {
|
|
47
65
|
let newValue = null;
|
|
48
66
|
if (isVersion(currentValue)) newValue = currentValue.startsWith("v") && !newVersion.startsWith("v") ? `v${newVersion}` : newVersion;
|
|
49
67
|
else if (currentValue.replace(regEx(/^=\s*/), "") === currentVersion) newValue = currentValue.replace(currentVersion, newVersion);
|
|
@@ -84,8 +102,10 @@ const getNewValue = ({ currentValue, rangeStrategy, currentVersion, newVersion }
|
|
|
84
102
|
return newValue.split(",").map((element) => element.replace(regEx(`^(?<whitespace>\\s*)`), `$<whitespace>${delimiter}`)).map((element) => element.replace(/(?<whitespace>\s*)$/, `${delimiter}$<whitespace>`)).join(",");
|
|
85
103
|
}
|
|
86
104
|
return newValue;
|
|
87
|
-
}
|
|
88
|
-
|
|
105
|
+
}
|
|
106
|
+
function sortVersions(left, right) {
|
|
107
|
+
return gt(vtrim(left), vtrim(right)) ? 1 : -1;
|
|
108
|
+
}
|
|
89
109
|
const api = {
|
|
90
110
|
equals,
|
|
91
111
|
getMajor,
|