renovate 44.48.0 → 44.48.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.
Files changed (90) hide show
  1. package/dist/config/options/index.js +1 -1
  2. package/dist/config/options/index.js.map +1 -1
  3. package/dist/global-config-option-defaults.generated.js +1 -1
  4. package/dist/global-config-option-defaults.generated.js.map +1 -1
  5. package/dist/modules/datasource/docker/dockerhub-cache.js.map +1 -1
  6. package/dist/modules/datasource/go/common.js.map +1 -1
  7. package/dist/modules/datasource/rubygems/versions-endpoint-cache.js.map +1 -1
  8. package/dist/modules/datasource/rust-version/index.js.map +1 -1
  9. package/dist/modules/datasource/rust-version/parse.js.map +1 -1
  10. package/dist/modules/manager/asdf/extract.js.map +1 -1
  11. package/dist/modules/manager/asdf/upgradeable-tooling.js.map +1 -1
  12. package/dist/modules/manager/bazel-module/extract.js.map +1 -1
  13. package/dist/modules/manager/bazel-module/parser/context.js.map +1 -1
  14. package/dist/modules/manager/bazel-module/parser/fragments.js +1 -1
  15. package/dist/modules/manager/bazel-module/parser/fragments.js.map +1 -1
  16. package/dist/modules/manager/bazel-module/parser/index.js.map +1 -1
  17. package/dist/modules/manager/bazel-module/rules.js.map +1 -1
  18. package/dist/modules/manager/custom/jsonata/utils.js.map +1 -1
  19. package/dist/modules/manager/custom/regex/utils.js.map +1 -1
  20. package/dist/modules/manager/custom/types.d.ts +1 -0
  21. package/dist/modules/manager/custom/utils.d.ts +1 -0
  22. package/dist/modules/manager/custom/utils.js.map +1 -1
  23. package/dist/modules/manager/devbox/tool-versioning.js.map +1 -1
  24. package/dist/modules/manager/fingerprint.generated.js +2 -2
  25. package/dist/modules/manager/fingerprint.generated.js.map +1 -1
  26. package/dist/modules/manager/github-actions/community.js.map +1 -1
  27. package/dist/modules/manager/github-actions/extract.js.map +1 -1
  28. package/dist/modules/manager/github-actions/parse.js.map +1 -1
  29. package/dist/modules/manager/github-actions/schema.js.map +1 -1
  30. package/dist/modules/manager/haskell-cabal/extract.js.map +1 -1
  31. package/dist/modules/manager/haskell-cabal/index.js.map +1 -1
  32. package/dist/modules/manager/homebrew/handlers/github.js.map +1 -1
  33. package/dist/modules/manager/homebrew/handlers/npm.js.map +1 -1
  34. package/dist/modules/manager/mise/backends.js.map +1 -1
  35. package/dist/modules/manager/mise/extract.js.map +1 -1
  36. package/dist/modules/manager/mise/lockfile.js.map +1 -1
  37. package/dist/modules/manager/mise/upgradeable-tooling.js.map +1 -1
  38. package/dist/modules/manager/npm/npmrc.js.map +1 -1
  39. package/dist/modules/manager/npm/post-update/node-version.js.map +1 -1
  40. package/dist/modules/manager/npm/post-update/npm.js.map +1 -1
  41. package/dist/modules/manager/npm/post-update/rules.js.map +1 -1
  42. package/dist/modules/manager/npm/post-update/utils.js.map +1 -1
  43. package/dist/modules/manager/pixi/lockfile.js.map +1 -1
  44. package/dist/modules/manager/proto/extract.js.map +1 -1
  45. package/dist/modules/manager/proto/upgradeable-tooling.js.map +1 -1
  46. package/dist/modules/manager/terragrunt/util.js.map +1 -1
  47. package/dist/modules/platform/azure/azure-helper.js.map +1 -1
  48. package/dist/modules/platform/azure/types.js.map +1 -1
  49. package/dist/modules/platform/bitbucket/comments.js.map +1 -1
  50. package/dist/modules/platform/bitbucket-server/index.js.map +1 -1
  51. package/dist/modules/platform/bitbucket-server/utils.js.map +1 -1
  52. package/dist/modules/platform/codecommit/index.js.map +1 -1
  53. package/dist/modules/versioning/apk/index.js.map +1 -1
  54. package/dist/modules/versioning/aws-machine-image/index.js.map +1 -1
  55. package/dist/modules/versioning/azure-rest-api/index.js.map +1 -1
  56. package/dist/modules/versioning/deb/index.js.map +1 -1
  57. package/dist/modules/versioning/debian/common.js.map +1 -1
  58. package/dist/modules/versioning/debian/index.js.map +1 -1
  59. package/dist/modules/versioning/devbox/index.js.map +1 -1
  60. package/dist/modules/versioning/distro.js.map +1 -1
  61. package/dist/modules/versioning/docker/index.js.map +1 -1
  62. package/dist/modules/versioning/generic.d.ts +2 -10
  63. package/dist/modules/versioning/generic.js.map +1 -1
  64. package/dist/modules/versioning/git/index.js.map +1 -1
  65. package/dist/modules/versioning/glasskube/index.js.map +1 -1
  66. package/dist/modules/versioning/gradle/compare.js.map +1 -1
  67. package/dist/modules/versioning/hermit/index.js.map +1 -1
  68. package/dist/modules/versioning/index.d.ts +2 -2
  69. package/dist/modules/versioning/ivy/parse.js.map +1 -1
  70. package/dist/modules/versioning/lambda-node/schedule.js.map +1 -1
  71. package/dist/modules/versioning/loose/index.js.map +1 -1
  72. package/dist/modules/versioning/maven/compare.js.map +1 -1
  73. package/dist/modules/versioning/nixpkgs/index.js.map +1 -1
  74. package/dist/modules/versioning/node/schedule.js.map +1 -1
  75. package/dist/modules/versioning/paket/index.js.map +1 -1
  76. package/dist/modules/versioning/paket/range.js.map +1 -1
  77. package/dist/modules/versioning/perl/index.js.map +1 -1
  78. package/dist/modules/versioning/redhat/index.js.map +1 -1
  79. package/dist/modules/versioning/regex/index.js.map +1 -1
  80. package/dist/modules/versioning/rpm/index.js.map +1 -1
  81. package/dist/modules/versioning/ruby/range.js.map +1 -1
  82. package/dist/modules/versioning/ruby/strategies/bump.js.map +1 -1
  83. package/dist/modules/versioning/ruby/strategies/replace.js.map +1 -1
  84. package/dist/modules/versioning/ruby/strategies/widen.js.map +1 -1
  85. package/dist/modules/versioning/semver/common.js.map +1 -1
  86. package/dist/modules/versioning/types.d.ts +25 -1
  87. package/dist/modules/versioning/unity3d/index.js.map +1 -1
  88. package/dist/modules/versioning/unity3d-packages/index.js.map +1 -1
  89. package/package.json +1 -1
  90. package/renovate-schema.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../../lib/modules/versioning/rpm/index.ts"],"sourcesContent":["import { isNumericString } from '@sindresorhus/is';\nimport { regEx } from '../../../util/regex.ts';\nimport type { GenericVersion } from '../generic.ts';\nimport { GenericVersioningApi } from '../generic.ts';\nimport type { VersioningApi } from '../types.ts';\n\nexport const id = 'rpm';\nexport const displayName = 'RPM version';\nexport const urls = [\n '[Fedora packaging guidelines - Versioning](https://docs.fedoraproject.org/en-US/packaging-guidelines/Versioning/)',\n '[Fedora package versioning examples](https://fedoraproject.org/wiki/Package_Versioning_Examples)',\n '[Fedora tilde and caret versioning](https://fedoraproject.org/wiki/User:Tibbs/TildeCaretVersioning)',\n];\nexport const supportsRanges = false;\n\nconst alphaNumPattern = regEx(/([a-zA-Z]+)|(\\d+)|(~)/g);\nconst epochPattern = regEx(/^\\d+$/);\n\nexport interface RpmVersion extends GenericVersion {\n /**\n * epoch, defaults to 0 if not present, are used to leave version mistakes and previous\n * versioning schemes behind.\n */\n epoch: number;\n /**\n * upstreamVersion is the main version part: it defines the version of origin software\n * that was packaged.\n */\n upstreamVersion: string;\n /**\n * rpmRelease is used to distinguish between different versions of packaging for the\n * same upstream version.\n */\n rpmRelease: string;\n\n /**\n * rpmPreRelease is used to distinguish versions of prerelease of the same upstream and release version\n * Example: Python 3.12.0-1 > Python 3.12.0-1~a1\n */\n rpmPreRelease: string;\n\n /**\n * snapshot is an archive taken from upstream's source code control system which is not equivalent to any release version.\n * This field must at minimum consist of the date in eight-digit \"YYYYMMDD\" format. The packager MAY\n * include up to 17 characters of additional information after the date. The following formats are suggested:\n * YYYYMMDD.<revision>\n * YYYYMMDD<scm><revision>\n */\n snapshot: string;\n}\n\nclass RpmVersioningApi extends GenericVersioningApi {\n /**\n * https://github.com/rpm-software-management/rpm/blob/e3c11a790367016aed7ea48cfcc78751a71ce862/rpmio/rpmvercmp.c#L16\n */\n protected _parse(version: string): RpmVersion | null {\n let remainingVersion = version;\n\n let epoch = 0;\n const epochIndex = remainingVersion.indexOf(':');\n if (epochIndex !== -1) {\n const epochStr = remainingVersion.slice(0, epochIndex);\n if (epochPattern.test(epochStr)) {\n epoch = parseInt(epochStr, 10);\n } else {\n return null;\n }\n\n remainingVersion = remainingVersion.slice(epochIndex + 1);\n }\n\n let upstreamVersion: string;\n let rpmRelease = '';\n let rpmPreRelease = '';\n let snapshot = '';\n const releaseIndex = remainingVersion.indexOf('-');\n const prereleaseIndex = remainingVersion.indexOf('~');\n\n // Note: There can be a snapshot if there is no prerelease. Snapshot always beat no snapshot,\n // so if there is 3.12.0-1 vs 3.12.0-1^20231110, the snapshot wins.\n // The logic below only creates snapshot IF there is a prerleease version. This logic is NOT\n // correct, but the result is still correct due to the caret being ignored in release, and\n // release continue comparing\n //\n // Note: If there IS a tilde preceding the caret, then snapshot DOES NOT win\n // Example: 3.12.0-1~^20231001 LOSES to 3.12.0-1 and\n // 3.12.0-1~^20231001 LOSES to 3.12.0-1^20231001\n const snapshotIndex = remainingVersion.indexOf('^');\n\n if (releaseIndex >= 0) {\n upstreamVersion = remainingVersion.slice(0, releaseIndex);\n\n // Do NOT splice out prerelease, we need to distinguish if the flag is set or not, regardless if there is a version.\n // The tilde will get filtered out during regex\n if (prereleaseIndex >= 0) {\n rpmRelease = remainingVersion.slice(releaseIndex, prereleaseIndex);\n if (snapshotIndex >= 0) {\n rpmPreRelease = remainingVersion.slice(\n prereleaseIndex,\n snapshotIndex,\n );\n snapshot = remainingVersion.slice(snapshotIndex + 1);\n } else {\n rpmPreRelease = remainingVersion.slice(prereleaseIndex);\n }\n } else {\n rpmRelease = remainingVersion.slice(releaseIndex + 1);\n }\n } else {\n upstreamVersion = remainingVersion;\n }\n\n const release = [...remainingVersion.matchAll(regEx(/\\d+/g))].map((m) =>\n parseInt(m[0], 10),\n );\n\n return {\n epoch,\n upstreamVersion,\n rpmRelease,\n release,\n rpmPreRelease,\n snapshot,\n };\n }\n\n protected _compare_string(s1: string, s2: string): number {\n if (s1 === s2) {\n return 0;\n }\n\n const minLength = Math.min(s1.length, s2.length);\n\n for (let i = 0; i < minLength; i++) {\n const c1 = s1[i];\n const c2 = s2[i];\n\n if (c1 === c2) {\n continue;\n }\n\n if (c1 > c2) {\n return 1;\n }\n if (c1 < c2) {\n return -1;\n }\n }\n\n // Okay, they've been the exact same up until now, so return the longer one\n return s1.length > s2.length ? 1 : -1;\n }\n\n /**\n * Taken from https://github.com/rpm-software-management/rpm/blob/master/rpmio/rpmvercmp.c\n */\n protected _compare_glob(v1: string, v2: string): number {\n if (v1 === v2) {\n return 0;\n }\n\n const matchesv1 = v1.match(alphaNumPattern) ?? [];\n const matchesv2 = v2.match(alphaNumPattern) ?? [];\n const matches = Math.min(matchesv1.length, matchesv2.length);\n\n for (let i = 0; i < matches; i++) {\n const matchv1 = matchesv1[i];\n const matchv2 = matchesv2[i];\n\n // compare tildes\n if (matchv1?.startsWith('~') || matchv2?.startsWith('~')) {\n if (!matchv1?.startsWith('~')) {\n return 1;\n }\n\n if (!matchv2?.startsWith('~')) {\n return -1;\n }\n }\n\n if (isNumericString(matchv1?.[0])) {\n // numbers are greater than letters\n if (!isNumericString(matchv2?.[0])) {\n return 1;\n }\n\n //We clearly have a number here, so return which is greater\n const result = matchv1.localeCompare(matchv2, undefined, {\n numeric: true,\n });\n\n if (result === 0) {\n continue;\n }\n\n return Math.sign(result);\n }\n if (isNumericString(matchv2?.[0])) {\n return -1;\n }\n\n // We have two string globs, compare them\n const compared_value = this._compare_string(matchv1, matchv2);\n if (compared_value !== 0) {\n return compared_value;\n }\n }\n\n // segments were all the same, but separators were different\n if (matchesv1.length === matchesv2.length) {\n return 0;\n }\n\n // If there is a tilde in a segment past the minimum number of segments, find it\n if (matchesv1.length > matches && matchesv1[matches].startsWith('~')) {\n return -1;\n }\n\n if (matchesv2.length > matches && matchesv2[matches].startsWith('~')) {\n return 1;\n }\n\n // whichever has the most segments wins\n return matchesv1.length > matchesv2.length ? 1 : -1;\n }\n\n protected override _compare(version: string, other: string): number {\n const parsed1 = this._parse(version);\n const parsed2 = this._parse(other);\n\n if (!(parsed1 && parsed2)) {\n return 1;\n }\n\n // Greater epoch wins\n if (parsed1.epoch !== parsed2.epoch) {\n return Math.sign(parsed1.epoch - parsed2.epoch);\n }\n\n // Greater upstream version wins\n const upstreamVersionDifference = this._compare_glob(\n parsed1.upstreamVersion,\n parsed2.upstreamVersion,\n );\n\n if (upstreamVersionDifference !== 0) {\n return upstreamVersionDifference;\n }\n\n // Greater release version wins\n const releaseVersionDifference = this._compare_glob(\n parsed1.rpmRelease,\n parsed2.rpmRelease,\n );\n\n if (releaseVersionDifference !== 0) {\n return releaseVersionDifference;\n }\n\n // No Prerelease wins\n if (parsed1.rpmPreRelease === '' && parsed2.rpmPreRelease !== '') {\n return 1;\n }\n if (parsed1.rpmPreRelease !== '' && parsed2.rpmPreRelease === '') {\n return -1;\n }\n\n const preReleaseDifference = this._compare_glob(\n parsed1.rpmPreRelease,\n parsed2.rpmPreRelease,\n );\n\n if (preReleaseDifference !== 0) {\n return releaseVersionDifference;\n }\n\n // Greater Snapshot wins\n return this._compare_glob(parsed1.snapshot, parsed2.snapshot);\n }\n}\n\nexport const api: VersioningApi = new RpmVersioningApi();\n\nexport default api;\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../lib/modules/versioning/rpm/index.ts"],"sourcesContent":["import { isNumericString } from '@sindresorhus/is';\nimport { regEx } from '../../../util/regex.ts';\nimport { GenericVersioningApi } from '../generic.ts';\nimport type { VersioningApi } from '../types.ts';\nimport type { RpmVersion } from './types.ts';\n\nexport const id = 'rpm';\nexport const displayName = 'RPM version';\nexport const urls = [\n '[Fedora packaging guidelines - Versioning](https://docs.fedoraproject.org/en-US/packaging-guidelines/Versioning/)',\n '[Fedora package versioning examples](https://fedoraproject.org/wiki/Package_Versioning_Examples)',\n '[Fedora tilde and caret versioning](https://fedoraproject.org/wiki/User:Tibbs/TildeCaretVersioning)',\n];\nexport const supportsRanges = false;\n\nconst alphaNumPattern = regEx(/([a-zA-Z]+)|(\\d+)|(~)/g);\nconst epochPattern = regEx(/^\\d+$/);\n\nclass RpmVersioningApi extends GenericVersioningApi {\n /**\n * https://github.com/rpm-software-management/rpm/blob/e3c11a790367016aed7ea48cfcc78751a71ce862/rpmio/rpmvercmp.c#L16\n */\n protected _parse(version: string): RpmVersion | null {\n let remainingVersion = version;\n\n let epoch = 0;\n const epochIndex = remainingVersion.indexOf(':');\n if (epochIndex !== -1) {\n const epochStr = remainingVersion.slice(0, epochIndex);\n if (epochPattern.test(epochStr)) {\n epoch = parseInt(epochStr, 10);\n } else {\n return null;\n }\n\n remainingVersion = remainingVersion.slice(epochIndex + 1);\n }\n\n let upstreamVersion: string;\n let rpmRelease = '';\n let rpmPreRelease = '';\n let snapshot = '';\n const releaseIndex = remainingVersion.indexOf('-');\n const prereleaseIndex = remainingVersion.indexOf('~');\n\n // Note: There can be a snapshot if there is no prerelease. Snapshot always beat no snapshot,\n // so if there is 3.12.0-1 vs 3.12.0-1^20231110, the snapshot wins.\n // The logic below only creates snapshot IF there is a prerleease version. This logic is NOT\n // correct, but the result is still correct due to the caret being ignored in release, and\n // release continue comparing\n //\n // Note: If there IS a tilde preceding the caret, then snapshot DOES NOT win\n // Example: 3.12.0-1~^20231001 LOSES to 3.12.0-1 and\n // 3.12.0-1~^20231001 LOSES to 3.12.0-1^20231001\n const snapshotIndex = remainingVersion.indexOf('^');\n\n if (releaseIndex >= 0) {\n upstreamVersion = remainingVersion.slice(0, releaseIndex);\n\n // Do NOT splice out prerelease, we need to distinguish if the flag is set or not, regardless if there is a version.\n // The tilde will get filtered out during regex\n if (prereleaseIndex >= 0) {\n rpmRelease = remainingVersion.slice(releaseIndex, prereleaseIndex);\n if (snapshotIndex >= 0) {\n rpmPreRelease = remainingVersion.slice(\n prereleaseIndex,\n snapshotIndex,\n );\n snapshot = remainingVersion.slice(snapshotIndex + 1);\n } else {\n rpmPreRelease = remainingVersion.slice(prereleaseIndex);\n }\n } else {\n rpmRelease = remainingVersion.slice(releaseIndex + 1);\n }\n } else {\n upstreamVersion = remainingVersion;\n }\n\n const release = [...remainingVersion.matchAll(regEx(/\\d+/g))].map((m) =>\n parseInt(m[0], 10),\n );\n\n return {\n epoch,\n upstreamVersion,\n rpmRelease,\n release,\n rpmPreRelease,\n snapshot,\n };\n }\n\n protected _compare_string(s1: string, s2: string): number {\n if (s1 === s2) {\n return 0;\n }\n\n const minLength = Math.min(s1.length, s2.length);\n\n for (let i = 0; i < minLength; i++) {\n const c1 = s1[i];\n const c2 = s2[i];\n\n if (c1 === c2) {\n continue;\n }\n\n if (c1 > c2) {\n return 1;\n }\n if (c1 < c2) {\n return -1;\n }\n }\n\n // Okay, they've been the exact same up until now, so return the longer one\n return s1.length > s2.length ? 1 : -1;\n }\n\n /**\n * Taken from https://github.com/rpm-software-management/rpm/blob/master/rpmio/rpmvercmp.c\n */\n protected _compare_glob(v1: string, v2: string): number {\n if (v1 === v2) {\n return 0;\n }\n\n const matchesv1 = v1.match(alphaNumPattern) ?? [];\n const matchesv2 = v2.match(alphaNumPattern) ?? [];\n const matches = Math.min(matchesv1.length, matchesv2.length);\n\n for (let i = 0; i < matches; i++) {\n const matchv1 = matchesv1[i];\n const matchv2 = matchesv2[i];\n\n // compare tildes\n if (matchv1?.startsWith('~') || matchv2?.startsWith('~')) {\n if (!matchv1?.startsWith('~')) {\n return 1;\n }\n\n if (!matchv2?.startsWith('~')) {\n return -1;\n }\n }\n\n if (isNumericString(matchv1?.[0])) {\n // numbers are greater than letters\n if (!isNumericString(matchv2?.[0])) {\n return 1;\n }\n\n //We clearly have a number here, so return which is greater\n const result = matchv1.localeCompare(matchv2, undefined, {\n numeric: true,\n });\n\n if (result === 0) {\n continue;\n }\n\n return Math.sign(result);\n }\n if (isNumericString(matchv2?.[0])) {\n return -1;\n }\n\n // We have two string globs, compare them\n const compared_value = this._compare_string(matchv1, matchv2);\n if (compared_value !== 0) {\n return compared_value;\n }\n }\n\n // segments were all the same, but separators were different\n if (matchesv1.length === matchesv2.length) {\n return 0;\n }\n\n // If there is a tilde in a segment past the minimum number of segments, find it\n if (matchesv1.length > matches && matchesv1[matches].startsWith('~')) {\n return -1;\n }\n\n if (matchesv2.length > matches && matchesv2[matches].startsWith('~')) {\n return 1;\n }\n\n // whichever has the most segments wins\n return matchesv1.length > matchesv2.length ? 1 : -1;\n }\n\n protected override _compare(version: string, other: string): number {\n const parsed1 = this._parse(version);\n const parsed2 = this._parse(other);\n\n if (!(parsed1 && parsed2)) {\n return 1;\n }\n\n // Greater epoch wins\n if (parsed1.epoch !== parsed2.epoch) {\n return Math.sign(parsed1.epoch - parsed2.epoch);\n }\n\n // Greater upstream version wins\n const upstreamVersionDifference = this._compare_glob(\n parsed1.upstreamVersion,\n parsed2.upstreamVersion,\n );\n\n if (upstreamVersionDifference !== 0) {\n return upstreamVersionDifference;\n }\n\n // Greater release version wins\n const releaseVersionDifference = this._compare_glob(\n parsed1.rpmRelease,\n parsed2.rpmRelease,\n );\n\n if (releaseVersionDifference !== 0) {\n return releaseVersionDifference;\n }\n\n // No Prerelease wins\n if (parsed1.rpmPreRelease === '' && parsed2.rpmPreRelease !== '') {\n return 1;\n }\n if (parsed1.rpmPreRelease !== '' && parsed2.rpmPreRelease === '') {\n return -1;\n }\n\n const preReleaseDifference = this._compare_glob(\n parsed1.rpmPreRelease,\n parsed2.rpmPreRelease,\n );\n\n if (preReleaseDifference !== 0) {\n return releaseVersionDifference;\n }\n\n // Greater Snapshot wins\n return this._compare_glob(parsed1.snapshot, parsed2.snapshot);\n }\n}\n\nexport const api: VersioningApi = new RpmVersioningApi();\n\nexport default api;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"range.js","names":["parse","_parse"],"sources":["../../../../lib/modules/versioning/ruby/range.ts"],"sourcesContent":["import { satisfies } from '@renovatebot/ruby-semver';\nimport { parse as _parse } from '@renovatebot/ruby-semver/dist/ruby/requirement.js';\nimport type { Version } from '@renovatebot/ruby-semver/dist/ruby/version.js';\nimport { create } from '@renovatebot/ruby-semver/dist/ruby/version.js';\nimport { logger } from '../../../logger/index.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { EQUAL, GT, GTE, LT, LTE, NOT_EQUAL, PGTE } from './operator.ts';\n\nexport interface Range {\n version: string;\n operator: string;\n delimiter: string;\n /**\n * If the range is `~>` and immediately followed by `>=`,\n * the latter range is considered the former's companion\n * and assigned here instead of being an independent range.\n *\n * Example: `'~> 6.2', '>= 6.2.1'`\n */\n companion?: Range;\n}\n\nfunction parse(range: string): Range {\n const regExp = regEx(\n /^(?<operator>[^\\d\\s]+)?(?<delimiter>\\s*)(?<version>[0-9a-zA-Z-.]+)$/,\n );\n\n const value = (range || '').trim();\n\n const match = regExp.exec(value);\n if (match?.groups) {\n const { version, operator = '', delimiter } = match.groups;\n return { version, operator, delimiter };\n }\n\n return {\n version: '',\n operator: '',\n delimiter: ' ',\n };\n}\n\n/** Wrapper for {@link satisfies} for {@link Range} record. */\nexport function satisfiesRange(ver: string, range: Range): boolean {\n if (range.companion) {\n return (\n satisfies(ver, `${range.operator}${range.version}`) &&\n satisfiesRange(ver, range.companion)\n );\n }\n return satisfies(ver, `${range.operator}${range.version}`);\n}\n\n/**\n * Parses a comma-delimited list of range parts,\n * with special treatment for a pair of `~>` and `>=` parts.\n */\nexport function parseRanges(range: string): Range[] {\n const originalRanges = range.split(',').map(parse);\n const ranges: Range[] = [];\n for (let i = 0; i < originalRanges.length; ) {\n if (\n i + 1 < originalRanges.length &&\n originalRanges[i].operator === PGTE &&\n originalRanges[i + 1].operator === GTE\n ) {\n ranges.push({\n ...originalRanges[i],\n companion: originalRanges[i + 1],\n });\n i += 2;\n } else {\n ranges.push(originalRanges[i]);\n i++;\n }\n }\n return ranges;\n}\n\n/**\n * Stringifies a list of range parts into a comma-separated string,\n * with special treatment for a pair of `~>` and `>=` parts.\n */\nexport function stringifyRanges(ranges: Range[]): string {\n return ranges\n .map((r) => {\n if (r.companion) {\n return `${r.operator}${r.delimiter}${r.version}, ${r.companion.operator}${r.companion.delimiter}${r.companion.version}`;\n }\n return `${r.operator}${r.delimiter}${r.version}`;\n })\n .join(', ');\n}\n\ntype GemRequirement = [string, Version];\n\nfunction ltr(version: string, range: string): boolean {\n const gemVersion = create(version);\n if (!gemVersion) {\n logger.warn({ version }, `Invalid ruby version`);\n return false;\n }\n const requirements: GemRequirement[] = range.split(',').map(_parse);\n\n const results = requirements.map(([operator, ver]) => {\n switch (operator) {\n case GT:\n case LT:\n return gemVersion.compare(ver) <= 0;\n case GTE:\n case LTE:\n case EQUAL:\n case NOT_EQUAL:\n return gemVersion.compare(ver) < 0;\n case PGTE:\n return (\n gemVersion.compare(ver) < 0 &&\n gemVersion.release().compare(ver.bump()) <= 0\n );\n // istanbul ignore next\n default:\n logger.warn({ operator }, `Unsupported operator`);\n return false;\n }\n });\n\n return results.reduce((accumulator, value) => accumulator && value, true);\n}\n\nexport { ltr, parse };\n"],"mappings":";;;;;;AAsBA,SAASA,QAAM,OAAsB;CACnC,MAAM,SAAS,MACb,qEACF;CAEA,MAAM,SAAS,SAAS,GAAA,CAAI,KAAK;CAEjC,MAAM,QAAQ,OAAO,KAAK,KAAK;CAC/B,IAAI,OAAO,QAAQ;EACjB,MAAM,EAAE,SAAS,WAAW,IAAI,cAAc,MAAM;EACpD,OAAO;GAAE;GAAS;GAAU;EAAU;CACxC;CAEA,OAAO;EACL,SAAS;EACT,UAAU;EACV,WAAW;CACb;AACF;;AAGA,SAAgB,eAAe,KAAa,OAAuB;CACjE,IAAI,MAAM,WACR,OACE,UAAU,KAAK,GAAG,MAAM,WAAW,MAAM,SAAS,KAClD,eAAe,KAAK,MAAM,SAAS;CAGvC,OAAO,UAAU,KAAK,GAAG,MAAM,WAAW,MAAM,SAAS;AAC3D;;;;;AAMA,SAAgB,YAAY,OAAwB;CAClD,MAAM,iBAAiB,MAAM,MAAM,GAAG,CAAC,CAAC,IAAIA,OAAK;CACjD,MAAM,SAAkB,CAAC;CACzB,KAAK,IAAI,IAAI,GAAG,IAAI,eAAe,SACjC,IACE,IAAI,IAAI,eAAe,UACvB,eAAe,EAAE,CAAC,aAAA,QAClB,eAAe,IAAI,EAAE,CAAC,aAAA,MACtB;EACA,OAAO,KAAK;GACV,GAAG,eAAe;GAClB,WAAW,eAAe,IAAI;EAChC,CAAC;EACD,KAAK;CACP,OAAO;EACL,OAAO,KAAK,eAAe,EAAE;EAC7B;CACF;CAEF,OAAO;AACT;;;;;AAMA,SAAgB,gBAAgB,QAAyB;CACvD,OAAO,OACJ,KAAK,MAAM;EACV,IAAI,EAAE,WACJ,OAAO,GAAG,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,IAAI,EAAE,UAAU,WAAW,EAAE,UAAU,YAAY,EAAE,UAAU;EAEhH,OAAO,GAAG,EAAE,WAAW,EAAE,YAAY,EAAE;CACzC,CAAC,CAAC,CACD,KAAK,IAAI;AACd;AAIA,SAAS,IAAI,SAAiB,OAAwB;CACpD,MAAM,aAAa,OAAO,OAAO;CACjC,IAAI,CAAC,YAAY;EACf,OAAO,KAAK,EAAE,QAAQ,GAAG,sBAAsB;EAC/C,OAAO;CACT;CAyBA,OAxBuC,MAAM,MAAM,GAAG,CAAC,CAAC,IAAIC,KAEjC,CAAC,CAAC,KAAK,CAAC,UAAU,SAAS;EACpD,QAAQ,UAAR;GACE,KAAA;GACA,KAAA,KACE,OAAO,WAAW,QAAQ,GAAG,KAAK;GACpC,KAAA;GACA,KAAA;GACA,KAAA;GACA,KAAA,MACE,OAAO,WAAW,QAAQ,GAAG,IAAI;GACnC,KAAA,MACE,OACE,WAAW,QAAQ,GAAG,IAAI,KAC1B,WAAW,QAAQ,CAAC,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK;;GAGhD;IACE,OAAO,KAAK,EAAE,SAAS,GAAG,sBAAsB;IAChD,OAAO;EACX;CACF,CAEa,CAAC,CAAC,QAAQ,aAAa,UAAU,eAAe,OAAO,IAAI;AAC1E"}
1
+ {"version":3,"file":"range.js","names":["parse","_parse"],"sources":["../../../../lib/modules/versioning/ruby/range.ts"],"sourcesContent":["import { satisfies } from '@renovatebot/ruby-semver';\nimport { parse as _parse } from '@renovatebot/ruby-semver/dist/ruby/requirement.js';\nimport type { Version } from '@renovatebot/ruby-semver/dist/ruby/version.js';\nimport { create } from '@renovatebot/ruby-semver/dist/ruby/version.js';\nimport { logger } from '../../../logger/index.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { EQUAL, GT, GTE, LT, LTE, NOT_EQUAL, PGTE } from './operator.ts';\nimport type { Range } from './types.ts';\n\nfunction parse(range: string): Range {\n const regExp = regEx(\n /^(?<operator>[^\\d\\s]+)?(?<delimiter>\\s*)(?<version>[0-9a-zA-Z-.]+)$/,\n );\n\n const value = (range || '').trim();\n\n const match = regExp.exec(value);\n if (match?.groups) {\n const { version, operator = '', delimiter } = match.groups;\n return { version, operator, delimiter };\n }\n\n return {\n version: '',\n operator: '',\n delimiter: ' ',\n };\n}\n\n/** Wrapper for {@link satisfies} for {@link Range} record. */\nexport function satisfiesRange(ver: string, range: Range): boolean {\n if (range.companion) {\n return (\n satisfies(ver, `${range.operator}${range.version}`) &&\n satisfiesRange(ver, range.companion)\n );\n }\n return satisfies(ver, `${range.operator}${range.version}`);\n}\n\n/**\n * Parses a comma-delimited list of range parts,\n * with special treatment for a pair of `~>` and `>=` parts.\n */\nexport function parseRanges(range: string): Range[] {\n const originalRanges = range.split(',').map(parse);\n const ranges: Range[] = [];\n for (let i = 0; i < originalRanges.length; ) {\n if (\n i + 1 < originalRanges.length &&\n originalRanges[i].operator === PGTE &&\n originalRanges[i + 1].operator === GTE\n ) {\n ranges.push({\n ...originalRanges[i],\n companion: originalRanges[i + 1],\n });\n i += 2;\n } else {\n ranges.push(originalRanges[i]);\n i++;\n }\n }\n return ranges;\n}\n\n/**\n * Stringifies a list of range parts into a comma-separated string,\n * with special treatment for a pair of `~>` and `>=` parts.\n */\nexport function stringifyRanges(ranges: Range[]): string {\n return ranges\n .map((r) => {\n if (r.companion) {\n return `${r.operator}${r.delimiter}${r.version}, ${r.companion.operator}${r.companion.delimiter}${r.companion.version}`;\n }\n return `${r.operator}${r.delimiter}${r.version}`;\n })\n .join(', ');\n}\n\ntype GemRequirement = [string, Version];\n\nfunction ltr(version: string, range: string): boolean {\n const gemVersion = create(version);\n if (!gemVersion) {\n logger.warn({ version }, `Invalid ruby version`);\n return false;\n }\n const requirements: GemRequirement[] = range.split(',').map(_parse);\n\n const results = requirements.map(([operator, ver]) => {\n switch (operator) {\n case GT:\n case LT:\n return gemVersion.compare(ver) <= 0;\n case GTE:\n case LTE:\n case EQUAL:\n case NOT_EQUAL:\n return gemVersion.compare(ver) < 0;\n case PGTE:\n return (\n gemVersion.compare(ver) < 0 &&\n gemVersion.release().compare(ver.bump()) <= 0\n );\n // istanbul ignore next\n default:\n logger.warn({ operator }, `Unsupported operator`);\n return false;\n }\n });\n\n return results.reduce((accumulator, value) => accumulator && value, true);\n}\n\nexport { ltr, parse };\n"],"mappings":";;;;;;AASA,SAASA,QAAM,OAAsB;CACnC,MAAM,SAAS,MACb,qEACF;CAEA,MAAM,SAAS,SAAS,GAAA,CAAI,KAAK;CAEjC,MAAM,QAAQ,OAAO,KAAK,KAAK;CAC/B,IAAI,OAAO,QAAQ;EACjB,MAAM,EAAE,SAAS,WAAW,IAAI,cAAc,MAAM;EACpD,OAAO;GAAE;GAAS;GAAU;EAAU;CACxC;CAEA,OAAO;EACL,SAAS;EACT,UAAU;EACV,WAAW;CACb;AACF;;AAGA,SAAgB,eAAe,KAAa,OAAuB;CACjE,IAAI,MAAM,WACR,OACE,UAAU,KAAK,GAAG,MAAM,WAAW,MAAM,SAAS,KAClD,eAAe,KAAK,MAAM,SAAS;CAGvC,OAAO,UAAU,KAAK,GAAG,MAAM,WAAW,MAAM,SAAS;AAC3D;;;;;AAMA,SAAgB,YAAY,OAAwB;CAClD,MAAM,iBAAiB,MAAM,MAAM,GAAG,CAAC,CAAC,IAAIA,OAAK;CACjD,MAAM,SAAkB,CAAC;CACzB,KAAK,IAAI,IAAI,GAAG,IAAI,eAAe,SACjC,IACE,IAAI,IAAI,eAAe,UACvB,eAAe,EAAE,CAAC,aAAA,QAClB,eAAe,IAAI,EAAE,CAAC,aAAA,MACtB;EACA,OAAO,KAAK;GACV,GAAG,eAAe;GAClB,WAAW,eAAe,IAAI;EAChC,CAAC;EACD,KAAK;CACP,OAAO;EACL,OAAO,KAAK,eAAe,EAAE;EAC7B;CACF;CAEF,OAAO;AACT;;;;;AAMA,SAAgB,gBAAgB,QAAyB;CACvD,OAAO,OACJ,KAAK,MAAM;EACV,IAAI,EAAE,WACJ,OAAO,GAAG,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,IAAI,EAAE,UAAU,WAAW,EAAE,UAAU,YAAY,EAAE,UAAU;EAEhH,OAAO,GAAG,EAAE,WAAW,EAAE,YAAY,EAAE;CACzC,CAAC,CAAC,CACD,KAAK,IAAI;AACd;AAIA,SAAS,IAAI,SAAiB,OAAwB;CACpD,MAAM,aAAa,OAAO,OAAO;CACjC,IAAI,CAAC,YAAY;EACf,OAAO,KAAK,EAAE,QAAQ,GAAG,sBAAsB;EAC/C,OAAO;CACT;CAyBA,OAxBuC,MAAM,MAAM,GAAG,CAAC,CAAC,IAAIC,KAEjC,CAAC,CAAC,KAAK,CAAC,UAAU,SAAS;EACpD,QAAQ,UAAR;GACE,KAAA;GACA,KAAA,KACE,OAAO,WAAW,QAAQ,GAAG,KAAK;GACpC,KAAA;GACA,KAAA;GACA,KAAA;GACA,KAAA,MACE,OAAO,WAAW,QAAQ,GAAG,IAAI;GACnC,KAAA,MACE,OACE,WAAW,QAAQ,GAAG,IAAI,KAC1B,WAAW,QAAQ,CAAC,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK;;GAGhD;IACE,OAAO,KAAK,EAAE,SAAS,GAAG,sBAAsB;IAChD,OAAO;EACX;CACF,CAEa,CAAC,CAAC,QAAQ,aAAa,UAAU,eAAe,OAAO,IAAI;AAC1E"}
@@ -1 +1 @@
1
- {"version":3,"file":"bump.js","names":[],"sources":["../../../../../lib/modules/versioning/ruby/strategies/bump.ts"],"sourcesContent":["import { gt, gte, lt } from '@renovatebot/ruby-semver';\nimport { GTE, LT, LTE, NOT_EQUAL, PGTE } from '../operator.ts';\nimport type { Range } from '../range.ts';\nimport { parseRanges, stringifyRanges } from '../range.ts';\nimport { adapt, trimZeroes } from '../version.ts';\nimport { replacePart } from './replace.ts';\n\nexport default ({ range, to }: { range: string; to: string }): string => {\n const parts = parseRanges(range).map((part): Range => {\n const { operator, version: ver } = part;\n switch (operator) {\n // Update upper bound (`<` and `<=`) ranges only if the new version violates them\n case LT:\n return gte(to, ver) ? replacePart(part, to) : part;\n case LTE:\n return gt(to, ver) ? replacePart(part, to) : part;\n // `~>` ranges.\n case PGTE: {\n // Try to add / remove extra `>=` constraint.\n const trimmed = adapt(to, ver);\n if (trimZeroes(trimmed) === trimZeroes(to)) {\n // E.g. `'~> 5.2', '>= 5.2.0'`. In this case the latter is redundant.\n return { ...part, version: trimmed, companion: undefined };\n }\n // E.g. `'~> 5.2', '>= 5.2.1'`.\n return {\n ...part,\n version: trimmed,\n companion: { operator: GTE, delimiter: ' ', version: to },\n };\n }\n case NOT_EQUAL:\n if (lt(ver, to)) {\n // The version to exclude is now out of range.\n return { ...part, operator: GTE, version: to };\n }\n return part;\n default:\n // For `=` and lower bound ranges, always keep it stick to the new version.\n return replacePart(part, to);\n }\n });\n\n return stringifyRanges(parts);\n};\n"],"mappings":";;;;;AAOA,IAAA,gBAAgB,EAAE,OAAO,SAAgD;CACvE,MAAM,QAAQ,YAAY,KAAK,CAAC,CAAC,KAAK,SAAgB;EACpD,MAAM,EAAE,UAAU,SAAS,QAAQ;EACnC,QAAQ,UAAR;GAEE,KAAA,KACE,OAAO,IAAI,IAAI,GAAG,IAAI,YAAY,MAAM,EAAE,IAAI;GAChD,KAAA,MACE,OAAO,GAAG,IAAI,GAAG,IAAI,YAAY,MAAM,EAAE,IAAI;GAE/C,KAAA,MAAW;IAET,MAAM,UAAU,MAAM,IAAI,GAAG;IAC7B,IAAI,WAAW,OAAO,MAAM,WAAW,EAAE,GAEvC,OAAO;KAAE,GAAG;KAAM,SAAS;KAAS,WAAW,KAAA;IAAU;IAG3D,OAAO;KACL,GAAG;KACH,SAAS;KACT,WAAW;MAAE,UAAA;MAAe,WAAW;MAAK,SAAS;KAAG;IAC1D;GACF;GACA,KAAA;IACE,IAAI,GAAG,KAAK,EAAE,GAEZ,OAAO;KAAE,GAAG;KAAM,UAAA;KAAe,SAAS;IAAG;IAE/C,OAAO;GACT,SAEE,OAAO,YAAY,MAAM,EAAE;EAC/B;CACF,CAAC;CAED,OAAO,gBAAgB,KAAK;AAC9B"}
1
+ {"version":3,"file":"bump.js","names":[],"sources":["../../../../../lib/modules/versioning/ruby/strategies/bump.ts"],"sourcesContent":["import { gt, gte, lt } from '@renovatebot/ruby-semver';\nimport { GTE, LT, LTE, NOT_EQUAL, PGTE } from '../operator.ts';\nimport { parseRanges, stringifyRanges } from '../range.ts';\nimport type { Range } from '../types.ts';\nimport { adapt, trimZeroes } from '../version.ts';\nimport { replacePart } from './replace.ts';\n\nexport default ({ range, to }: { range: string; to: string }): string => {\n const parts = parseRanges(range).map((part): Range => {\n const { operator, version: ver } = part;\n switch (operator) {\n // Update upper bound (`<` and `<=`) ranges only if the new version violates them\n case LT:\n return gte(to, ver) ? replacePart(part, to) : part;\n case LTE:\n return gt(to, ver) ? replacePart(part, to) : part;\n // `~>` ranges.\n case PGTE: {\n // Try to add / remove extra `>=` constraint.\n const trimmed = adapt(to, ver);\n if (trimZeroes(trimmed) === trimZeroes(to)) {\n // E.g. `'~> 5.2', '>= 5.2.0'`. In this case the latter is redundant.\n return { ...part, version: trimmed, companion: undefined };\n }\n // E.g. `'~> 5.2', '>= 5.2.1'`.\n return {\n ...part,\n version: trimmed,\n companion: { operator: GTE, delimiter: ' ', version: to },\n };\n }\n case NOT_EQUAL:\n if (lt(ver, to)) {\n // The version to exclude is now out of range.\n return { ...part, operator: GTE, version: to };\n }\n return part;\n default:\n // For `=` and lower bound ranges, always keep it stick to the new version.\n return replacePart(part, to);\n }\n });\n\n return stringifyRanges(parts);\n};\n"],"mappings":";;;;;AAOA,IAAA,gBAAgB,EAAE,OAAO,SAAgD;CACvE,MAAM,QAAQ,YAAY,KAAK,CAAC,CAAC,KAAK,SAAgB;EACpD,MAAM,EAAE,UAAU,SAAS,QAAQ;EACnC,QAAQ,UAAR;GAEE,KAAA,KACE,OAAO,IAAI,IAAI,GAAG,IAAI,YAAY,MAAM,EAAE,IAAI;GAChD,KAAA,MACE,OAAO,GAAG,IAAI,GAAG,IAAI,YAAY,MAAM,EAAE,IAAI;GAE/C,KAAA,MAAW;IAET,MAAM,UAAU,MAAM,IAAI,GAAG;IAC7B,IAAI,WAAW,OAAO,MAAM,WAAW,EAAE,GAEvC,OAAO;KAAE,GAAG;KAAM,SAAS;KAAS,WAAW,KAAA;IAAU;IAG3D,OAAO;KACL,GAAG;KACH,SAAS;KACT,WAAW;MAAE,UAAA;MAAe,WAAW;MAAK,SAAS;KAAG;IAC1D;GACF;GACA,KAAA;IACE,IAAI,GAAG,KAAK,EAAE,GAEZ,OAAO;KAAE,GAAG;KAAM,UAAA;KAAe,SAAS;IAAG;IAE/C,OAAO;GACT,SAEE,OAAO,YAAY,MAAM,EAAE;EAC/B;CACF,CAAC;CAED,OAAO,gBAAgB,KAAK;AAC9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"replace.js","names":[],"sources":["../../../../../lib/modules/versioning/ruby/strategies/replace.ts"],"sourcesContent":["import { logger } from '../../../../logger/index.ts';\nimport { EQUAL, GT, GTE, LT, LTE, NOT_EQUAL, PGTE } from '../operator.ts';\nimport type { Range } from '../range.ts';\nimport { parseRanges, satisfiesRange, stringifyRanges } from '../range.ts';\nimport { adapt, decrement, floor, increment } from '../version.ts';\n\n// Common logic for replace, widen, and bump strategies\n// It basically makes the range stick to the new version.\nexport function replacePart(part: Range, to: string): Range {\n const { operator, version: ver, companion } = part;\n switch (operator) {\n case LT:\n return { ...part, version: increment(ver, to) };\n case LTE:\n return { ...part, version: to };\n case PGTE:\n if (companion) {\n return {\n ...part,\n version: floor(adapt(to, ver)),\n companion: { ...companion, version: to },\n };\n }\n return { ...part, version: floor(adapt(to, ver)) };\n\n case GT:\n return { ...part, version: decrement(to) };\n case GTE:\n case EQUAL:\n return { ...part, version: to };\n case NOT_EQUAL:\n return part;\n // istanbul ignore next\n default:\n logger.warn({ operator }, `Unsupported ruby versioning operator`);\n return { operator: '', delimiter: ' ', version: '' };\n }\n}\n\nexport default ({ range, to }: { range: string; to: string }): string => {\n const parts = parseRanges(range).map((part): Range => {\n if (satisfiesRange(to, part)) {\n // The new version satisfies the range. Keep it as-is.\n // Note that consecutive `~>` and `>=` parts are combined into one Range object,\n // therefore both parts are updated if the new version violates one of them.\n return part;\n }\n\n if (part.version.split('.').length > to.split('.').length) {\n const diff = part.version.split('.').length - to.split('.').length;\n const versionToReplace = [to, ...Array(diff).fill('0')].join('.');\n const replacement = replacePart(part, versionToReplace);\n return {\n ...replacement,\n version: replacement.version.split('.').slice(0, -diff).join('.'),\n };\n }\n\n return replacePart(part, to);\n });\n\n return stringifyRanges(parts);\n};\n"],"mappings":";;;;AAQA,SAAgB,YAAY,MAAa,IAAmB;CAC1D,MAAM,EAAE,UAAU,SAAS,KAAK,cAAc;CAC9C,QAAQ,UAAR;EACE,KAAA,KACE,OAAO;GAAE,GAAG;GAAM,SAAS,UAAU,KAAK,EAAE;EAAE;EAChD,KAAA,MACE,OAAO;GAAE,GAAG;GAAM,SAAS;EAAG;EAChC,KAAA;GACE,IAAI,WACF,OAAO;IACL,GAAG;IACH,SAAS,MAAM,MAAM,IAAI,GAAG,CAAC;IAC7B,WAAW;KAAE,GAAG;KAAW,SAAS;IAAG;GACzC;GAEF,OAAO;IAAE,GAAG;IAAM,SAAS,MAAM,MAAM,IAAI,GAAG,CAAC;GAAE;EAEnD,KAAA,KACE,OAAO;GAAE,GAAG;GAAM,SAAS,UAAU,EAAE;EAAE;EAC3C,KAAA;EACA,KAAA,KACE,OAAO;GAAE,GAAG;GAAM,SAAS;EAAG;EAChC,KAAA,MACE,OAAO;;EAET;GACE,OAAO,KAAK,EAAE,SAAS,GAAG,sCAAsC;GAChE,OAAO;IAAE,UAAU;IAAI,WAAW;IAAK,SAAS;GAAG;CACvD;AACF;AAEA,IAAA,mBAAgB,EAAE,OAAO,SAAgD;CACvE,MAAM,QAAQ,YAAY,KAAK,CAAC,CAAC,KAAK,SAAgB;EACpD,IAAI,eAAe,IAAI,IAAI,GAIzB,OAAO;EAGT,IAAI,KAAK,QAAQ,MAAM,GAAG,CAAC,CAAC,SAAS,GAAG,MAAM,GAAG,CAAC,CAAC,QAAQ;GACzD,MAAM,OAAO,KAAK,QAAQ,MAAM,GAAG,CAAC,CAAC,SAAS,GAAG,MAAM,GAAG,CAAC,CAAC;GAE5D,MAAM,cAAc,YAAY,MADP,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,GACR,CAAC;GACtD,OAAO;IACL,GAAG;IACH,SAAS,YAAY,QAAQ,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG;GAClE;EACF;EAEA,OAAO,YAAY,MAAM,EAAE;CAC7B,CAAC;CAED,OAAO,gBAAgB,KAAK;AAC9B"}
1
+ {"version":3,"file":"replace.js","names":[],"sources":["../../../../../lib/modules/versioning/ruby/strategies/replace.ts"],"sourcesContent":["import { logger } from '../../../../logger/index.ts';\nimport { EQUAL, GT, GTE, LT, LTE, NOT_EQUAL, PGTE } from '../operator.ts';\nimport { parseRanges, satisfiesRange, stringifyRanges } from '../range.ts';\nimport type { Range } from '../types.ts';\nimport { adapt, decrement, floor, increment } from '../version.ts';\n\n// Common logic for replace, widen, and bump strategies\n// It basically makes the range stick to the new version.\nexport function replacePart(part: Range, to: string): Range {\n const { operator, version: ver, companion } = part;\n switch (operator) {\n case LT:\n return { ...part, version: increment(ver, to) };\n case LTE:\n return { ...part, version: to };\n case PGTE:\n if (companion) {\n return {\n ...part,\n version: floor(adapt(to, ver)),\n companion: { ...companion, version: to },\n };\n }\n return { ...part, version: floor(adapt(to, ver)) };\n\n case GT:\n return { ...part, version: decrement(to) };\n case GTE:\n case EQUAL:\n return { ...part, version: to };\n case NOT_EQUAL:\n return part;\n // istanbul ignore next\n default:\n logger.warn({ operator }, `Unsupported ruby versioning operator`);\n return { operator: '', delimiter: ' ', version: '' };\n }\n}\n\nexport default ({ range, to }: { range: string; to: string }): string => {\n const parts = parseRanges(range).map((part): Range => {\n if (satisfiesRange(to, part)) {\n // The new version satisfies the range. Keep it as-is.\n // Note that consecutive `~>` and `>=` parts are combined into one Range object,\n // therefore both parts are updated if the new version violates one of them.\n return part;\n }\n\n if (part.version.split('.').length > to.split('.').length) {\n const diff = part.version.split('.').length - to.split('.').length;\n const versionToReplace = [to, ...Array(diff).fill('0')].join('.');\n const replacement = replacePart(part, versionToReplace);\n return {\n ...replacement,\n version: replacement.version.split('.').slice(0, -diff).join('.'),\n };\n }\n\n return replacePart(part, to);\n });\n\n return stringifyRanges(parts);\n};\n"],"mappings":";;;;AAQA,SAAgB,YAAY,MAAa,IAAmB;CAC1D,MAAM,EAAE,UAAU,SAAS,KAAK,cAAc;CAC9C,QAAQ,UAAR;EACE,KAAA,KACE,OAAO;GAAE,GAAG;GAAM,SAAS,UAAU,KAAK,EAAE;EAAE;EAChD,KAAA,MACE,OAAO;GAAE,GAAG;GAAM,SAAS;EAAG;EAChC,KAAA;GACE,IAAI,WACF,OAAO;IACL,GAAG;IACH,SAAS,MAAM,MAAM,IAAI,GAAG,CAAC;IAC7B,WAAW;KAAE,GAAG;KAAW,SAAS;IAAG;GACzC;GAEF,OAAO;IAAE,GAAG;IAAM,SAAS,MAAM,MAAM,IAAI,GAAG,CAAC;GAAE;EAEnD,KAAA,KACE,OAAO;GAAE,GAAG;GAAM,SAAS,UAAU,EAAE;EAAE;EAC3C,KAAA;EACA,KAAA,KACE,OAAO;GAAE,GAAG;GAAM,SAAS;EAAG;EAChC,KAAA,MACE,OAAO;;EAET;GACE,OAAO,KAAK,EAAE,SAAS,GAAG,sCAAsC;GAChE,OAAO;IAAE,UAAU;IAAI,WAAW;IAAK,SAAS;GAAG;CACvD;AACF;AAEA,IAAA,mBAAgB,EAAE,OAAO,SAAgD;CACvE,MAAM,QAAQ,YAAY,KAAK,CAAC,CAAC,KAAK,SAAgB;EACpD,IAAI,eAAe,IAAI,IAAI,GAIzB,OAAO;EAGT,IAAI,KAAK,QAAQ,MAAM,GAAG,CAAC,CAAC,SAAS,GAAG,MAAM,GAAG,CAAC,CAAC,QAAQ;GACzD,MAAM,OAAO,KAAK,QAAQ,MAAM,GAAG,CAAC,CAAC,SAAS,GAAG,MAAM,GAAG,CAAC,CAAC;GAE5D,MAAM,cAAc,YAAY,MADP,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,GACR,CAAC;GACtD,OAAO;IACL,GAAG;IACH,SAAS,YAAY,QAAQ,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG;GAClE;EACF;EAEA,OAAO,YAAY,MAAM,EAAE;CAC7B,CAAC;CAED,OAAO,gBAAgB,KAAK;AAC9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"widen.js","names":[],"sources":["../../../../../lib/modules/versioning/ruby/strategies/widen.ts"],"sourcesContent":["import { GTE, LT, PGTE } from '../operator.ts';\nimport type { Range } from '../range.ts';\nimport { parseRanges, satisfiesRange, stringifyRanges } from '../range.ts';\nimport { increment, pgteUpperBound } from '../version.ts';\nimport { replacePart } from './replace.ts';\n\nexport default ({ range, to }: { range: string; to: string }): string => {\n const parts = parseRanges(range).flatMap((part): Range[] => {\n if (satisfiesRange(to, part)) {\n return [part];\n }\n\n const { operator, version: ver, companion } = part;\n switch (operator) {\n // `~>` works as both lower bound and upper bound.\n // We need to decompose it to get wider range.\n case PGTE: {\n // Prefer constraints from `>=`\n const baseVersion = companion ? companion.version : ver;\n const limit = increment(pgteUpperBound(ver), to);\n return [\n { operator: GTE, delimiter: ' ', version: baseVersion },\n { operator: LT, delimiter: ' ', version: limit },\n ];\n }\n default:\n return [replacePart(part, to)];\n }\n });\n\n return stringifyRanges(parts);\n};\n"],"mappings":";;;;AAMA,IAAA,iBAAgB,EAAE,OAAO,SAAgD;CACvE,MAAM,QAAQ,YAAY,KAAK,CAAC,CAAC,SAAS,SAAkB;EAC1D,IAAI,eAAe,IAAI,IAAI,GACzB,OAAO,CAAC,IAAI;EAGd,MAAM,EAAE,UAAU,SAAS,KAAK,cAAc;EAC9C,QAAQ,UAAR;GAGE,KAAA,MAAW;IAET,MAAM,cAAc,YAAY,UAAU,UAAU;IACpD,MAAM,QAAQ,UAAU,eAAe,GAAG,GAAG,EAAE;IAC/C,OAAO,CACL;KAAE,UAAA;KAAe,WAAW;KAAK,SAAS;IAAY,GACtD;KAAE,UAAA;KAAc,WAAW;KAAK,SAAS;IAAM,CACjD;GACF;GACA,SACE,OAAO,CAAC,YAAY,MAAM,EAAE,CAAC;EACjC;CACF,CAAC;CAED,OAAO,gBAAgB,KAAK;AAC9B"}
1
+ {"version":3,"file":"widen.js","names":[],"sources":["../../../../../lib/modules/versioning/ruby/strategies/widen.ts"],"sourcesContent":["import { GTE, LT, PGTE } from '../operator.ts';\nimport { parseRanges, satisfiesRange, stringifyRanges } from '../range.ts';\nimport type { Range } from '../types.ts';\nimport { increment, pgteUpperBound } from '../version.ts';\nimport { replacePart } from './replace.ts';\n\nexport default ({ range, to }: { range: string; to: string }): string => {\n const parts = parseRanges(range).flatMap((part): Range[] => {\n if (satisfiesRange(to, part)) {\n return [part];\n }\n\n const { operator, version: ver, companion } = part;\n switch (operator) {\n // `~>` works as both lower bound and upper bound.\n // We need to decompose it to get wider range.\n case PGTE: {\n // Prefer constraints from `>=`\n const baseVersion = companion ? companion.version : ver;\n const limit = increment(pgteUpperBound(ver), to);\n return [\n { operator: GTE, delimiter: ' ', version: baseVersion },\n { operator: LT, delimiter: ' ', version: limit },\n ];\n }\n default:\n return [replacePart(part, to)];\n }\n });\n\n return stringifyRanges(parts);\n};\n"],"mappings":";;;;AAMA,IAAA,iBAAgB,EAAE,OAAO,SAAgD;CACvE,MAAM,QAAQ,YAAY,KAAK,CAAC,CAAC,SAAS,SAAkB;EAC1D,IAAI,eAAe,IAAI,IAAI,GACzB,OAAO,CAAC,IAAI;EAGd,MAAM,EAAE,UAAU,SAAS,KAAK,cAAc;EAC9C,QAAQ,UAAR;GAGE,KAAA,MAAW;IAET,MAAM,cAAc,YAAY,UAAU,UAAU;IACpD,MAAM,QAAQ,UAAU,eAAe,GAAG,GAAG,EAAE;IAC/C,OAAO,CACL;KAAE,UAAA;KAAe,WAAW;KAAK,SAAS;IAAY,GACtD;KAAE,UAAA;KAAc,WAAW;KAAK,SAAS;IAAM,CACjD;GACF;GACA,SACE,OAAO,CAAC,YAAY,MAAM,EAAE,CAAC;EACjC;CACF,CAAC;CAED,OAAO,gBAAgB,KAAK;AAC9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","names":[],"sources":["../../../../lib/modules/versioning/semver/common.ts"],"sourcesContent":["import { regEx } from '../../../util/regex.ts';\n\nconst SEMVER_X_RANGE = ['*', 'x', 'X', ''] as const;\ntype SemVerXRangeArray = typeof SEMVER_X_RANGE;\nexport type SemVerXRange = SemVerXRangeArray[number];\n\nconst RANGE_SEPARATOR = regEx(/(\\s+|,|\\|\\||[()])/);\nconst NUMERIC_RELEASE_PART = '(?:0|[1-9]\\\\d*)';\nconst X_RELEASE_PART = '[xX*]';\nconst RELEASE_PART = `(?:${NUMERIC_RELEASE_PART}|${X_RELEASE_PART})`;\nconst PRERELEASE_IDENTIFIER = `(?:${NUMERIC_RELEASE_PART}|\\\\d*[A-Za-z-][0-9A-Za-z-]*)`;\nconst BUILD_IDENTIFIER = '[0-9A-Za-z-]+';\nconst LEGACY_X_RANGE = regEx(\n `^((?:\\\\^|~|>=|<=|>|<|=)?\\\\s*v?)(${RELEASE_PART}(?:\\\\.${RELEASE_PART})+)(?:-${PRERELEASE_IDENTIFIER}(?:\\\\.${PRERELEASE_IDENTIFIER})*)?(?:\\\\+${BUILD_IDENTIFIER}(?:[.+]${BUILD_IDENTIFIER})*)?$`,\n);\nconst NUMERIC_RELEASE_PART_RE = regEx(`^${NUMERIC_RELEASE_PART}$`);\n\n/**\n * https://docs.npmjs.com/cli/v6/using-npm/semver#x-ranges-12x-1x-12-\n */\nexport function isSemVerXRange(range: string): range is SemVerXRange {\n return SEMVER_X_RANGE.includes(range as SemVerXRange);\n}\n\nfunction isSemVerNumericPart(part: string): boolean {\n return NUMERIC_RELEASE_PART_RE.test(part);\n}\n\nfunction normalizeLegacyXRangeToken(input: string): string {\n const match = LEGACY_X_RANGE.exec(input);\n if (!match) {\n return input;\n }\n\n const [, operator, release] = match;\n const parts = release.split('.');\n if (parts.length > 3) {\n return input;\n }\n\n const xRangeIndex = parts.findIndex(isSemVerXRange);\n if (xRangeIndex === -1) {\n return input;\n }\n\n const hasTrailingNumericPart = parts\n .slice(xRangeIndex + 1)\n .some(isSemVerNumericPart);\n if (!hasTrailingNumericPart) {\n return input;\n }\n\n return `${operator}${parts.slice(0, xRangeIndex + 1).join('.')}`;\n}\n\nexport function normalizeLegacyXRanges(input: string): string {\n return input.split(RANGE_SEPARATOR).map(normalizeLegacyXRangeToken).join('');\n}\n"],"mappings":";;AAEA,MAAM,iBAAiB;CAAC;CAAK;CAAK;CAAK;AAAE;AAIzC,MAAM,kBAAkB,MAAM,mBAAmB;AACjD,MAAM,uBAAuB;AAE7B,MAAM,eAAe,MAAM,qBAAqB;AAChD,MAAM,wBAAwB,MAAM,qBAAqB;AACzD,MAAM,mBAAmB;AACzB,MAAM,iBAAiB,MACrB,mCAAmC,aAAa,QAAQ,aAAa,SAAS,sBAAsB,QAAQ,sBAAsB,YAAY,iBAAiB,SAAS,iBAAiB,MAC3L;AACA,MAAM,0BAA0B,MAAM,IAAI,qBAAqB,EAAE;;;;AAKjE,SAAgB,eAAe,OAAsC;CACnE,OAAO,eAAe,SAAS,KAAqB;AACtD;AAEA,SAAS,oBAAoB,MAAuB;CAClD,OAAO,wBAAwB,KAAK,IAAI;AAC1C;AAEA,SAAS,2BAA2B,OAAuB;CACzD,MAAM,QAAQ,eAAe,KAAK,KAAK;CACvC,IAAI,CAAC,OACH,OAAO;CAGT,MAAM,GAAG,UAAU,WAAW;CAC9B,MAAM,QAAQ,QAAQ,MAAM,GAAG;CAC/B,IAAI,MAAM,SAAS,GACjB,OAAO;CAGT,MAAM,cAAc,MAAM,UAAU,cAAc;CAClD,IAAI,gBAAgB,IAClB,OAAO;CAMT,IAAI,CAH2B,MAC5B,MAAM,cAAc,CAAC,CAAC,CACtB,KAAK,mBACkB,GACxB,OAAO;CAGT,OAAO,GAAG,WAAW,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,KAAK,GAAG;AAC/D;AAEA,SAAgB,uBAAuB,OAAuB;CAC5D,OAAO,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,0BAA0B,CAAC,CAAC,KAAK,EAAE;AAC7E"}
1
+ {"version":3,"file":"common.js","names":[],"sources":["../../../../lib/modules/versioning/semver/common.ts"],"sourcesContent":["import { regEx } from '../../../util/regex.ts';\nimport type { SemVerXRange } from './types.ts';\n\nconst SEMVER_X_RANGE: readonly SemVerXRange[] = ['*', 'x', 'X', ''];\n\nconst RANGE_SEPARATOR = regEx(/(\\s+|,|\\|\\||[()])/);\nconst NUMERIC_RELEASE_PART = '(?:0|[1-9]\\\\d*)';\nconst X_RELEASE_PART = '[xX*]';\nconst RELEASE_PART = `(?:${NUMERIC_RELEASE_PART}|${X_RELEASE_PART})`;\nconst PRERELEASE_IDENTIFIER = `(?:${NUMERIC_RELEASE_PART}|\\\\d*[A-Za-z-][0-9A-Za-z-]*)`;\nconst BUILD_IDENTIFIER = '[0-9A-Za-z-]+';\nconst LEGACY_X_RANGE = regEx(\n `^((?:\\\\^|~|>=|<=|>|<|=)?\\\\s*v?)(${RELEASE_PART}(?:\\\\.${RELEASE_PART})+)(?:-${PRERELEASE_IDENTIFIER}(?:\\\\.${PRERELEASE_IDENTIFIER})*)?(?:\\\\+${BUILD_IDENTIFIER}(?:[.+]${BUILD_IDENTIFIER})*)?$`,\n);\nconst NUMERIC_RELEASE_PART_RE = regEx(`^${NUMERIC_RELEASE_PART}$`);\n\n/**\n * https://docs.npmjs.com/cli/v6/using-npm/semver#x-ranges-12x-1x-12-\n */\nexport function isSemVerXRange(range: string): range is SemVerXRange {\n return SEMVER_X_RANGE.includes(range as SemVerXRange);\n}\n\nfunction isSemVerNumericPart(part: string): boolean {\n return NUMERIC_RELEASE_PART_RE.test(part);\n}\n\nfunction normalizeLegacyXRangeToken(input: string): string {\n const match = LEGACY_X_RANGE.exec(input);\n if (!match) {\n return input;\n }\n\n const [, operator, release] = match;\n const parts = release.split('.');\n if (parts.length > 3) {\n return input;\n }\n\n const xRangeIndex = parts.findIndex(isSemVerXRange);\n if (xRangeIndex === -1) {\n return input;\n }\n\n const hasTrailingNumericPart = parts\n .slice(xRangeIndex + 1)\n .some(isSemVerNumericPart);\n if (!hasTrailingNumericPart) {\n return input;\n }\n\n return `${operator}${parts.slice(0, xRangeIndex + 1).join('.')}`;\n}\n\nexport function normalizeLegacyXRanges(input: string): string {\n return input.split(RANGE_SEPARATOR).map(normalizeLegacyXRangeToken).join('');\n}\n"],"mappings":";;AAGA,MAAM,iBAA0C;CAAC;CAAK;CAAK;CAAK;AAAE;AAElE,MAAM,kBAAkB,MAAM,mBAAmB;AACjD,MAAM,uBAAuB;AAE7B,MAAM,eAAe,MAAM,qBAAqB;AAChD,MAAM,wBAAwB,MAAM,qBAAqB;AACzD,MAAM,mBAAmB;AACzB,MAAM,iBAAiB,MACrB,mCAAmC,aAAa,QAAQ,aAAa,SAAS,sBAAsB,QAAQ,sBAAsB,YAAY,iBAAiB,SAAS,iBAAiB,MAC3L;AACA,MAAM,0BAA0B,MAAM,IAAI,qBAAqB,EAAE;;;;AAKjE,SAAgB,eAAe,OAAsC;CACnE,OAAO,eAAe,SAAS,KAAqB;AACtD;AAEA,SAAS,oBAAoB,MAAuB;CAClD,OAAO,wBAAwB,KAAK,IAAI;AAC1C;AAEA,SAAS,2BAA2B,OAAuB;CACzD,MAAM,QAAQ,eAAe,KAAK,KAAK;CACvC,IAAI,CAAC,OACH,OAAO;CAGT,MAAM,GAAG,UAAU,WAAW;CAC9B,MAAM,QAAQ,QAAQ,MAAM,GAAG;CAC/B,IAAI,MAAM,SAAS,GACjB,OAAO;CAGT,MAAM,cAAc,MAAM,UAAU,cAAc;CAClD,IAAI,gBAAgB,IAClB,OAAO;CAMT,IAAI,CAH2B,MAC5B,MAAM,cAAc,CAAC,CAAC,CACtB,KAAK,mBACkB,GACxB,OAAO;CAGT,OAAO,GAAG,WAAW,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,KAAK,GAAG;AAC/D;AAEA,SAAgB,uBAAuB,OAAuB;CAC5D,OAAO,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,0BAA0B,CAAC,CAAC,KAAK,EAAE;AAC7E"}
@@ -2,6 +2,30 @@ import { RangeStrategy } from "../../types/versioning.js";
2
2
  import "../../types/index.js";
3
3
  import { SemVer } from "semver";
4
4
  //#region lib/modules/versioning/types.d.ts
5
+ interface GenericVersion {
6
+ release: number[];
7
+ /** prereleases are treated in the standard semver manner, if present */
8
+ prerelease?: string;
9
+ suffix?: string;
10
+ }
11
+ type VersionParser = (version: string) => GenericVersion;
12
+ type VersionComparator = (version: string, other: string) => number;
13
+ interface DistroSchedule {
14
+ codename: string;
15
+ series: string;
16
+ created: string;
17
+ release?: string;
18
+ eol?: string;
19
+ eol_server?: string;
20
+ eol_esm?: string;
21
+ eol_lts?: string;
22
+ eol_elts?: string;
23
+ }
24
+ type DistroDataFile = 'data/ubuntu-distro-info.json' | 'data/debian-distro-info.json';
25
+ type DistroInfoRecord = Record<string, DistroSchedule>;
26
+ type DistroInfoRecordWithVersion = {
27
+ version: string;
28
+ } & DistroSchedule;
5
29
  interface NewValueConfig {
6
30
  currentValue: string;
7
31
  rangeStrategy: RangeStrategy;
@@ -132,5 +156,5 @@ interface VersioningApi {
132
156
  }
133
157
  type VersioningApiConstructor = new (config?: string) => VersioningApi;
134
158
  //#endregion
135
- export { NewValueConfig, VersioningApi, VersioningApiConstructor };
159
+ export { DistroDataFile, DistroInfoRecord, DistroInfoRecordWithVersion, DistroSchedule, GenericVersion, NewValueConfig, VersionComparator, VersionParser, VersioningApi, VersioningApiConstructor };
136
160
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../../lib/modules/versioning/unity3d/index.ts"],"sourcesContent":["import { regEx } from '../../../util/regex.ts';\nimport type { GenericVersion } from '../generic.ts';\nimport { GenericVersioningApi } from '../generic.ts';\nimport type { VersioningApi } from '../types.ts';\n\nexport const id = 'unity3d';\nexport const displayName = 'Unity3D';\nexport const urls = [\n '[Unity version define expressions](https://docs.unity3d.com/Manual/assembly-definition-includes.html#version-define-expressions)',\n];\nexport const supportsRanges = false;\n\nclass Unity3dVersioningApi extends GenericVersioningApi {\n private static readonly parsingRegex = regEx(\n /^(?<major>\\d+)\\.(?<minor>\\d+)\\.(?<patch>\\d+)(?<releaseStream>\\w)(?<build>\\d+)/,\n );\n\n private static readonly ReleaseStreamType = [\n 'a', // Alpha\n 'b', // Beta\n 'p', // Patch\n 'x', // Experimental\n 'f', // Stable\n 'c', // Stable (China)\n ];\n private static readonly stableVersions = ['f', 'c'];\n\n protected _parse(version: string): GenericVersion | null {\n const matches = Unity3dVersioningApi.parsingRegex.exec(version);\n if (!matches?.groups) {\n return null;\n }\n const { major, minor, patch, releaseStream, build } = matches.groups;\n\n const release = [\n parseInt(major, 10),\n parseInt(minor, 10),\n parseInt(patch, 10),\n Unity3dVersioningApi.ReleaseStreamType.indexOf(releaseStream),\n parseInt(build, 10),\n ];\n const isStable =\n Unity3dVersioningApi.stableVersions.includes(releaseStream);\n\n return { release, prerelease: isStable ? undefined : build };\n }\n}\n\nexport const api: VersioningApi = new Unity3dVersioningApi();\n\nexport default api;\n"],"mappings":";;;AAKA,MAAa,KAAK;AA2ClB,MAAa,MAAqB,IAAI,MApChC,6BAA6B,qBAAqB;CACtD,OAAwB,eAAe,MACrC,+EACF;CAEA,OAAwB,oBAAoB;EAC1C;EACA;EACA;EACA;EACA;EACA;CACF;CACA,OAAwB,iBAAiB,CAAC,KAAK,GAAG;CAElD,OAAiB,SAAwC;EACvD,MAAM,UAAU,qBAAqB,aAAa,KAAK,OAAO;EAC9D,IAAI,CAAC,SAAS,QACZ,OAAO;EAET,MAAM,EAAE,OAAO,OAAO,OAAO,eAAe,UAAU,QAAQ;EAY9D,OAAO;GAAE,SAAA;IATP,SAAS,OAAO,EAAE;IAClB,SAAS,OAAO,EAAE;IAClB,SAAS,OAAO,EAAE;IAClB,qBAAqB,kBAAkB,QAAQ,aAAa;IAC5D,SAAS,OAAO,EAAE;GAKL;GAAG,YAFhB,qBAAqB,eAAe,SAAS,aAEV,IAAI,KAAA,IAAY;EAAM;CAC7D;AACF,EAE2D"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../lib/modules/versioning/unity3d/index.ts"],"sourcesContent":["import { regEx } from '../../../util/regex.ts';\nimport { GenericVersioningApi } from '../generic.ts';\nimport type { GenericVersion, VersioningApi } from '../types.ts';\n\nexport const id = 'unity3d';\nexport const displayName = 'Unity3D';\nexport const urls = [\n '[Unity version define expressions](https://docs.unity3d.com/Manual/assembly-definition-includes.html#version-define-expressions)',\n];\nexport const supportsRanges = false;\n\nclass Unity3dVersioningApi extends GenericVersioningApi {\n private static readonly parsingRegex = regEx(\n /^(?<major>\\d+)\\.(?<minor>\\d+)\\.(?<patch>\\d+)(?<releaseStream>\\w)(?<build>\\d+)/,\n );\n\n private static readonly ReleaseStreamType = [\n 'a', // Alpha\n 'b', // Beta\n 'p', // Patch\n 'x', // Experimental\n 'f', // Stable\n 'c', // Stable (China)\n ];\n private static readonly stableVersions = ['f', 'c'];\n\n protected _parse(version: string): GenericVersion | null {\n const matches = Unity3dVersioningApi.parsingRegex.exec(version);\n if (!matches?.groups) {\n return null;\n }\n const { major, minor, patch, releaseStream, build } = matches.groups;\n\n const release = [\n parseInt(major, 10),\n parseInt(minor, 10),\n parseInt(patch, 10),\n Unity3dVersioningApi.ReleaseStreamType.indexOf(releaseStream),\n parseInt(build, 10),\n ];\n const isStable =\n Unity3dVersioningApi.stableVersions.includes(releaseStream);\n\n return { release, prerelease: isStable ? undefined : build };\n }\n}\n\nexport const api: VersioningApi = new Unity3dVersioningApi();\n\nexport default api;\n"],"mappings":";;;AAIA,MAAa,KAAK;AA2ClB,MAAa,MAAqB,IAAI,MApChC,6BAA6B,qBAAqB;CACtD,OAAwB,eAAe,MACrC,+EACF;CAEA,OAAwB,oBAAoB;EAC1C;EACA;EACA;EACA;EACA;EACA;CACF;CACA,OAAwB,iBAAiB,CAAC,KAAK,GAAG;CAElD,OAAiB,SAAwC;EACvD,MAAM,UAAU,qBAAqB,aAAa,KAAK,OAAO;EAC9D,IAAI,CAAC,SAAS,QACZ,OAAO;EAET,MAAM,EAAE,OAAO,OAAO,OAAO,eAAe,UAAU,QAAQ;EAY9D,OAAO;GAAE,SAAA;IATP,SAAS,OAAO,EAAE;IAClB,SAAS,OAAO,EAAE;IAClB,SAAS,OAAO,EAAE;IAClB,qBAAqB,kBAAkB,QAAQ,aAAa;IAC5D,SAAS,OAAO,EAAE;GAKL;GAAG,YAFhB,qBAAqB,eAAe,SAAS,aAEV,IAAI,KAAA,IAAY;EAAM;CAC7D;AACF,EAE2D"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../../lib/modules/versioning/unity3d-packages/index.ts"],"sourcesContent":["import { regEx } from '../../../util/regex.ts';\nimport type { GenericVersion } from '../generic.ts';\nimport { GenericVersioningApi } from '../generic.ts';\nimport type { VersioningApi } from '../types.ts';\n\nexport const id = 'unity3d-packages';\nexport const displayName = 'Unity3D Packages';\nexport const urls = [\n '[Unity Package Manager - Versioning](https://docs.unity3d.com/Manual/upm-semver.html)',\n '[Unity Package Manager - Lifecycle](https://docs.unity3d.com/Manual/upm-lifecycle.html)',\n];\nexport const supportsRanges = false;\n\nclass Unity3dPackagesVersioningApi extends GenericVersioningApi {\n private static readonly parsingRegex = regEx(\n /^(?<major>\\d+)\\.(?<minor>\\d+)\\.(?<patch>\\d+)(-?(?<label>.*))/,\n );\n private static readonly unstableRegex = regEx(/^(exp.|pre.|preview.)/);\n\n protected _parse(version: string): GenericVersion | null {\n const matches = Unity3dPackagesVersioningApi.parsingRegex.exec(version);\n if (!matches?.groups) {\n return null;\n }\n const { major, minor, patch, label } = matches.groups;\n\n const release = [\n parseInt(major, 10),\n parseInt(minor, 10),\n parseInt(patch, 10),\n ];\n const isStable = !Unity3dPackagesVersioningApi.unstableRegex.test(label);\n\n return { release, prerelease: isStable ? undefined : label };\n }\n}\n\nexport const api: VersioningApi = new Unity3dPackagesVersioningApi();\n\nexport default api;\n"],"mappings":";;;AAKA,MAAa,KAAK;AAgClB,MAAa,MAAqB,IAAI,MAxBhC,qCAAqC,qBAAqB;CAC9D,OAAwB,eAAe,MACrC,8DACF;CACA,OAAwB,gBAAgB,MAAM,uBAAuB;CAErE,OAAiB,SAAwC;EACvD,MAAM,UAAU,6BAA6B,aAAa,KAAK,OAAO;EACtE,IAAI,CAAC,SAAS,QACZ,OAAO;EAET,MAAM,EAAE,OAAO,OAAO,OAAO,UAAU,QAAQ;EAS/C,OAAO;GAAE,SAAA;IANP,SAAS,OAAO,EAAE;IAClB,SAAS,OAAO,EAAE;IAClB,SAAS,OAAO,EAAE;GAIL;GAAG,YAAY,CAFZ,6BAA6B,cAAc,KAAK,KAAK,IAE9B,KAAA,IAAY;EAAM;CAC7D;AACF,EAEmE"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../lib/modules/versioning/unity3d-packages/index.ts"],"sourcesContent":["import { regEx } from '../../../util/regex.ts';\nimport { GenericVersioningApi } from '../generic.ts';\nimport type { GenericVersion, VersioningApi } from '../types.ts';\n\nexport const id = 'unity3d-packages';\nexport const displayName = 'Unity3D Packages';\nexport const urls = [\n '[Unity Package Manager - Versioning](https://docs.unity3d.com/Manual/upm-semver.html)',\n '[Unity Package Manager - Lifecycle](https://docs.unity3d.com/Manual/upm-lifecycle.html)',\n];\nexport const supportsRanges = false;\n\nclass Unity3dPackagesVersioningApi extends GenericVersioningApi {\n private static readonly parsingRegex = regEx(\n /^(?<major>\\d+)\\.(?<minor>\\d+)\\.(?<patch>\\d+)(-?(?<label>.*))/,\n );\n private static readonly unstableRegex = regEx(/^(exp.|pre.|preview.)/);\n\n protected _parse(version: string): GenericVersion | null {\n const matches = Unity3dPackagesVersioningApi.parsingRegex.exec(version);\n if (!matches?.groups) {\n return null;\n }\n const { major, minor, patch, label } = matches.groups;\n\n const release = [\n parseInt(major, 10),\n parseInt(minor, 10),\n parseInt(patch, 10),\n ];\n const isStable = !Unity3dPackagesVersioningApi.unstableRegex.test(label);\n\n return { release, prerelease: isStable ? undefined : label };\n }\n}\n\nexport const api: VersioningApi = new Unity3dPackagesVersioningApi();\n\nexport default api;\n"],"mappings":";;;AAIA,MAAa,KAAK;AAgClB,MAAa,MAAqB,IAAI,MAxBhC,qCAAqC,qBAAqB;CAC9D,OAAwB,eAAe,MACrC,8DACF;CACA,OAAwB,gBAAgB,MAAM,uBAAuB;CAErE,OAAiB,SAAwC;EACvD,MAAM,UAAU,6BAA6B,aAAa,KAAK,OAAO;EACtE,IAAI,CAAC,SAAS,QACZ,OAAO;EAET,MAAM,EAAE,OAAO,OAAO,OAAO,UAAU,QAAQ;EAS/C,OAAO;GAAE,SAAA;IANP,SAAS,OAAO,EAAE;IAClB,SAAS,OAAO,EAAE;IAClB,SAAS,OAAO,EAAE;GAIL;GAAG,YAAY,CAFZ,6BAA6B,cAAc,KAAK,KAAK,IAE9B,KAAA,IAAY;EAAM;CAC7D;AACF,EAEmE"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "renovate",
3
3
  "description": "Automated dependency updates. Flexible so you don't need to be.",
4
- "version": "44.48.0",
4
+ "version": "44.48.2",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "renovate": "dist/renovate.js",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "$id": "https://docs.renovatebot.com/renovate-schema.json",
3
- "title": "JSON schema for Renovate 44.48.0 config files (https://renovatebot.com/)",
3
+ "title": "JSON schema for Renovate 44.48.2 config files (https://renovatebot.com/)",
4
4
  "$schema": "http://json-schema.org/draft-07/schema#",
5
- "x-renovate-version": "44.48.0",
5
+ "x-renovate-version": "44.48.2",
6
6
  "allowComments": true,
7
7
  "type": "object",
8
8
  "definitions": {