renovate 39.176.4 → 40.0.0-next.1

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 (244) hide show
  1. package/dist/config/migrations/custom/package-rules-migration.js.map +1 -1
  2. package/dist/config/migrations/migrations-service.d.ts +2 -2
  3. package/dist/config/migrations/migrations-service.js.map +1 -1
  4. package/dist/config/migrations/types.d.ts +1 -3
  5. package/dist/config/migrations/types.js.map +1 -1
  6. package/dist/config/options/index.js +1 -1
  7. package/dist/config/options/index.js.map +1 -1
  8. package/dist/config/presets/internal/group.js +0 -1
  9. package/dist/config/presets/internal/group.js.map +1 -1
  10. package/dist/config/presets/types.d.ts +4 -4
  11. package/dist/config/presets/types.js.map +1 -1
  12. package/dist/config-validator.js.map +1 -1
  13. package/dist/logger/utils.js +4 -2
  14. package/dist/logger/utils.js.map +1 -1
  15. package/dist/modules/datasource/artifactory/index.js +1 -1
  16. package/dist/modules/datasource/artifactory/index.js.map +1 -1
  17. package/dist/modules/datasource/conan/index.js +1 -1
  18. package/dist/modules/datasource/conan/index.js.map +1 -1
  19. package/dist/modules/datasource/crate/index.js.map +1 -1
  20. package/dist/modules/datasource/datasource.d.ts +1 -1
  21. package/dist/modules/datasource/datasource.js +3 -1
  22. package/dist/modules/datasource/datasource.js.map +1 -1
  23. package/dist/modules/datasource/deb/common.d.ts +3 -3
  24. package/dist/modules/datasource/deb/common.js.map +1 -1
  25. package/dist/modules/datasource/docker/ecr.js +1 -1
  26. package/dist/modules/datasource/docker/ecr.js.map +1 -1
  27. package/dist/modules/datasource/docker/index.js.map +1 -1
  28. package/dist/modules/datasource/hexpm-bob/index.js +1 -1
  29. package/dist/modules/datasource/hexpm-bob/index.js.map +1 -1
  30. package/dist/modules/datasource/nuget/v2.js +1 -1
  31. package/dist/modules/datasource/nuget/v2.js.map +1 -1
  32. package/dist/modules/datasource/pod/index.js +1 -2
  33. package/dist/modules/datasource/pod/index.js.map +1 -1
  34. package/dist/modules/datasource/rubygems/metadata-cache.js.map +1 -1
  35. package/dist/modules/datasource/sbt-plugin/index.js +1 -2
  36. package/dist/modules/datasource/sbt-plugin/index.js.map +1 -1
  37. package/dist/modules/manager/ansible-galaxy/collections-metadata.js +1 -2
  38. package/dist/modules/manager/ansible-galaxy/collections-metadata.js.map +1 -1
  39. package/dist/modules/manager/asdf/upgradeable-tooling.js +4 -4
  40. package/dist/modules/manager/asdf/upgradeable-tooling.js.map +1 -1
  41. package/dist/modules/manager/batect/extract.js.map +1 -1
  42. package/dist/modules/manager/bazel/artifacts.js +2 -2
  43. package/dist/modules/manager/bazel/artifacts.js.map +1 -1
  44. package/dist/modules/manager/bazel/common.js +1 -2
  45. package/dist/modules/manager/bazel/common.js.map +1 -1
  46. package/dist/modules/manager/bazel/parser.js +1 -1
  47. package/dist/modules/manager/bazel/parser.js.map +1 -1
  48. package/dist/modules/manager/bazel-module/parser/context.d.ts +4 -3
  49. package/dist/modules/manager/bazel-module/parser/context.js +9 -6
  50. package/dist/modules/manager/bazel-module/parser/context.js.map +1 -1
  51. package/dist/modules/manager/bazel-module/parser/extension-tags.js +10 -2
  52. package/dist/modules/manager/bazel-module/parser/extension-tags.js.map +1 -1
  53. package/dist/modules/manager/bazel-module/parser/fragments.d.ts +20 -2
  54. package/dist/modules/manager/bazel-module/parser/fragments.js +8 -2
  55. package/dist/modules/manager/bazel-module/parser/fragments.js.map +1 -1
  56. package/dist/modules/manager/bazel-module/parser/index.js +1 -1
  57. package/dist/modules/manager/bazel-module/parser/index.js.map +1 -1
  58. package/dist/modules/manager/bazel-module/parser/maven.d.ts +16 -0
  59. package/dist/modules/manager/bazel-module/parser/oci.d.ts +8 -0
  60. package/dist/modules/manager/bazel-module/parser/oci.js +4 -1
  61. package/dist/modules/manager/bazel-module/parser/oci.js.map +1 -1
  62. package/dist/modules/manager/bun/artifacts.js +1 -1
  63. package/dist/modules/manager/bun/artifacts.js.map +1 -1
  64. package/dist/modules/manager/bundler/extract.js.map +1 -1
  65. package/dist/modules/manager/cargo/artifacts.js +1 -1
  66. package/dist/modules/manager/cargo/artifacts.js.map +1 -1
  67. package/dist/modules/manager/cargo/extract.js.map +1 -1
  68. package/dist/modules/manager/cargo/types.d.ts +1 -3
  69. package/dist/modules/manager/cargo/types.js.map +1 -1
  70. package/dist/modules/manager/composer/utils.js +4 -4
  71. package/dist/modules/manager/composer/utils.js.map +1 -1
  72. package/dist/modules/manager/deps-edn/extract.js +3 -3
  73. package/dist/modules/manager/deps-edn/extract.js.map +1 -1
  74. package/dist/modules/manager/deps-edn/types.js.map +1 -1
  75. package/dist/modules/manager/dockerfile/extract.js +2 -3
  76. package/dist/modules/manager/dockerfile/extract.js.map +1 -1
  77. package/dist/modules/manager/fingerprint.generated.js +17 -17
  78. package/dist/modules/manager/fingerprint.generated.js.map +1 -1
  79. package/dist/modules/manager/flux/types.d.ts +3 -3
  80. package/dist/modules/manager/flux/types.js.map +1 -1
  81. package/dist/modules/manager/git-submodules/types.d.ts +2 -2
  82. package/dist/modules/manager/git-submodules/types.js.map +1 -1
  83. package/dist/modules/manager/github-actions/extract.js +2 -2
  84. package/dist/modules/manager/github-actions/extract.js.map +1 -1
  85. package/dist/modules/manager/glasskube/types.d.ts +2 -2
  86. package/dist/modules/manager/glasskube/types.js.map +1 -1
  87. package/dist/modules/manager/gleam/artifacts.js +1 -1
  88. package/dist/modules/manager/gleam/artifacts.js.map +1 -1
  89. package/dist/modules/manager/gradle/utils.js +6 -2
  90. package/dist/modules/manager/gradle/utils.js.map +1 -1
  91. package/dist/modules/manager/haskell-cabal/extract.js +1 -1
  92. package/dist/modules/manager/haskell-cabal/extract.js.map +1 -1
  93. package/dist/modules/manager/helmfile/artifacts.js +1 -1
  94. package/dist/modules/manager/helmfile/artifacts.js.map +1 -1
  95. package/dist/modules/manager/helmfile/extract.js +2 -2
  96. package/dist/modules/manager/helmfile/extract.js.map +1 -1
  97. package/dist/modules/manager/helmv3/artifacts.js +1 -1
  98. package/dist/modules/manager/helmv3/artifacts.js.map +1 -1
  99. package/dist/modules/manager/helmv3/extract.js.map +1 -1
  100. package/dist/modules/manager/helmv3/utils.js +1 -1
  101. package/dist/modules/manager/helmv3/utils.js.map +1 -1
  102. package/dist/modules/manager/homebrew/util.js +1 -2
  103. package/dist/modules/manager/homebrew/util.js.map +1 -1
  104. package/dist/modules/manager/jsonnet-bundler/extract.js +1 -1
  105. package/dist/modules/manager/jsonnet-bundler/extract.js.map +1 -1
  106. package/dist/modules/manager/leiningen/extract.js +1 -2
  107. package/dist/modules/manager/leiningen/extract.js.map +1 -1
  108. package/dist/modules/manager/maven/extract.js.map +1 -1
  109. package/dist/modules/manager/maven/update.js.map +1 -1
  110. package/dist/modules/manager/mise/upgradeable-tooling.js +7 -7
  111. package/dist/modules/manager/mise/upgradeable-tooling.js.map +1 -1
  112. package/dist/modules/manager/nix/extract.js +1 -1
  113. package/dist/modules/manager/nix/extract.js.map +1 -1
  114. package/dist/modules/manager/npm/extract/pnpm.js +1 -1
  115. package/dist/modules/manager/npm/extract/pnpm.js.map +1 -1
  116. package/dist/modules/manager/npm/post-update/index.js +1 -1
  117. package/dist/modules/manager/npm/post-update/index.js.map +1 -1
  118. package/dist/modules/manager/npm/post-update/pnpm.js.map +1 -1
  119. package/dist/modules/manager/npm/update/dependency/index.js +1 -1
  120. package/dist/modules/manager/npm/update/dependency/index.js.map +1 -1
  121. package/dist/modules/manager/nuget/config-formatter.js +1 -2
  122. package/dist/modules/manager/nuget/config-formatter.js.map +1 -1
  123. package/dist/modules/manager/nuget/package-tree.js +1 -1
  124. package/dist/modules/manager/nuget/package-tree.js.map +1 -1
  125. package/dist/modules/manager/nuget/util.js +2 -2
  126. package/dist/modules/manager/nuget/util.js.map +1 -1
  127. package/dist/modules/manager/osgi/extract.js +3 -3
  128. package/dist/modules/manager/osgi/extract.js.map +1 -1
  129. package/dist/modules/manager/pep621/processors/pdm.js +1 -1
  130. package/dist/modules/manager/pep621/processors/pdm.js.map +1 -1
  131. package/dist/modules/manager/pep621/processors/uv.js +3 -2
  132. package/dist/modules/manager/pep621/processors/uv.js.map +1 -1
  133. package/dist/modules/manager/pip-compile/artifacts.js +8 -2
  134. package/dist/modules/manager/pip-compile/artifacts.js.map +1 -1
  135. package/dist/modules/manager/pip-compile/common.d.ts +5 -3
  136. package/dist/modules/manager/pip-compile/common.js +34 -13
  137. package/dist/modules/manager/pip-compile/common.js.map +1 -1
  138. package/dist/modules/manager/pip-compile/extract.js.map +1 -1
  139. package/dist/modules/manager/pip-compile/types.d.ts +1 -0
  140. package/dist/modules/manager/pip-compile/types.js.map +1 -1
  141. package/dist/modules/manager/poetry/artifacts.js +2 -2
  142. package/dist/modules/manager/poetry/artifacts.js.map +1 -1
  143. package/dist/modules/manager/pre-commit/types.d.ts +2 -2
  144. package/dist/modules/manager/pre-commit/types.js.map +1 -1
  145. package/dist/modules/manager/pub/artifacts.js +1 -1
  146. package/dist/modules/manager/pub/artifacts.js.map +1 -1
  147. package/dist/modules/manager/swift/extract.js +1 -2
  148. package/dist/modules/manager/swift/extract.js.map +1 -1
  149. package/dist/modules/manager/terraform/extractors/terraform-block/required-provider.js +2 -2
  150. package/dist/modules/manager/terraform/extractors/terraform-block/required-provider.js.map +1 -1
  151. package/dist/modules/manager/terraform/hcl/types.d.ts +1 -3
  152. package/dist/modules/manager/terraform/hcl/types.js.map +1 -1
  153. package/dist/modules/manager/terraform/lockfile/index.js +1 -1
  154. package/dist/modules/manager/terraform/lockfile/index.js.map +1 -1
  155. package/dist/modules/manager/terragrunt/artifacts.js +1 -1
  156. package/dist/modules/manager/terragrunt/artifacts.js.map +1 -1
  157. package/dist/modules/manager/types.d.ts +1 -0
  158. package/dist/modules/manager/types.js.map +1 -1
  159. package/dist/modules/manager/woodpecker/types.d.ts +2 -2
  160. package/dist/modules/manager/woodpecker/types.js.map +1 -1
  161. package/dist/modules/platform/azure/azure-helper.js.map +1 -1
  162. package/dist/modules/platform/azure/index.js +1 -1
  163. package/dist/modules/platform/azure/index.js.map +1 -1
  164. package/dist/modules/platform/bitbucket/index.js.map +1 -1
  165. package/dist/modules/platform/bitbucket/utils.js.map +1 -1
  166. package/dist/modules/platform/bitbucket-server/index.js +2 -2
  167. package/dist/modules/platform/bitbucket-server/index.js.map +1 -1
  168. package/dist/modules/platform/gerrit/scm.js +1 -1
  169. package/dist/modules/platform/gerrit/scm.js.map +1 -1
  170. package/dist/modules/platform/gitea/index.js +6 -5
  171. package/dist/modules/platform/gitea/index.js.map +1 -1
  172. package/dist/modules/platform/gitea/pr-cache.d.ts +3 -2
  173. package/dist/modules/platform/gitea/pr-cache.js +21 -12
  174. package/dist/modules/platform/gitea/pr-cache.js.map +1 -1
  175. package/dist/modules/platform/github/index.js.map +1 -1
  176. package/dist/modules/platform/gitlab/index.js +20 -16
  177. package/dist/modules/platform/gitlab/index.js.map +1 -1
  178. package/dist/modules/platform/types.d.ts +2 -2
  179. package/dist/modules/platform/types.js.map +1 -1
  180. package/dist/modules/versioning/bazel-module/bzlmod-version.d.ts +1 -1
  181. package/dist/modules/versioning/bazel-module/bzlmod-version.js.map +1 -1
  182. package/dist/modules/versioning/generic.d.ts +2 -6
  183. package/dist/modules/versioning/generic.js.map +1 -1
  184. package/dist/modules/versioning/gradle/compare.d.ts +2 -2
  185. package/dist/modules/versioning/gradle/compare.js.map +1 -1
  186. package/dist/modules/versioning/gradle/index.js +1 -1
  187. package/dist/modules/versioning/gradle/index.js.map +1 -1
  188. package/dist/modules/versioning/pvp/range.js +2 -2
  189. package/dist/modules/versioning/pvp/range.js.map +1 -1
  190. package/dist/modules/versioning/rpm/index.js +5 -5
  191. package/dist/modules/versioning/rpm/index.js.map +1 -1
  192. package/dist/modules/versioning/semver-coerced/index.js +4 -4
  193. package/dist/modules/versioning/semver-coerced/index.js.map +1 -1
  194. package/dist/modules/versioning/types.d.ts +1 -3
  195. package/dist/modules/versioning/types.js.map +1 -1
  196. package/dist/types/git.d.ts +2 -2
  197. package/dist/types/git.js.map +1 -1
  198. package/dist/types/platform/github/index.d.ts +4 -4
  199. package/dist/types/platform/github/index.js.map +1 -1
  200. package/dist/types/platform/gitlab/index.d.ts +2 -2
  201. package/dist/types/platform/gitlab/index.js.map +1 -1
  202. package/dist/util/assign-keys.d.ts +1 -3
  203. package/dist/util/assign-keys.js.map +1 -1
  204. package/dist/util/cache/repository/http-cache.js +1 -1
  205. package/dist/util/cache/repository/http-cache.js.map +1 -1
  206. package/dist/util/exec/types.d.ts +2 -2
  207. package/dist/util/exec/types.js.map +1 -1
  208. package/dist/util/git/auth.js +1 -1
  209. package/dist/util/git/auth.js.map +1 -1
  210. package/dist/util/git/index.d.ts +10 -10
  211. package/dist/util/git/index.js +22 -26
  212. package/dist/util/git/index.js.map +1 -1
  213. package/dist/util/http/bitbucket.js.map +1 -1
  214. package/dist/util/http/cache/abstract-http-cache-provider.js +1 -1
  215. package/dist/util/http/cache/abstract-http-cache-provider.js.map +1 -1
  216. package/dist/util/http/index.js.map +1 -1
  217. package/dist/util/http/types.d.ts +3 -5
  218. package/dist/util/http/types.js.map +1 -1
  219. package/dist/util/pretty-time.js.map +1 -1
  220. package/dist/util/schema-utils.js.map +1 -1
  221. package/dist/util/stats.js +1 -0
  222. package/dist/util/stats.js.map +1 -1
  223. package/dist/workers/repository/dependency-dashboard.js +2 -2
  224. package/dist/workers/repository/dependency-dashboard.js.map +1 -1
  225. package/dist/workers/repository/init/config.d.ts +1 -2
  226. package/dist/workers/repository/init/config.js +0 -13
  227. package/dist/workers/repository/init/config.js.map +1 -1
  228. package/dist/workers/repository/init/merge.d.ts +2 -1
  229. package/dist/workers/repository/init/merge.js +13 -3
  230. package/dist/workers/repository/init/merge.js.map +1 -1
  231. package/dist/workers/repository/model/commit-message.js.map +1 -1
  232. package/dist/workers/repository/process/vulnerabilities.js +3 -1
  233. package/dist/workers/repository/process/vulnerabilities.js.map +1 -1
  234. package/dist/workers/repository/process/write.js +1 -1
  235. package/dist/workers/repository/process/write.js.map +1 -1
  236. package/dist/workers/repository/reconfigure/validate.js +3 -1
  237. package/dist/workers/repository/reconfigure/validate.js.map +1 -1
  238. package/dist/workers/repository/update/branch/schedule.js +1 -1
  239. package/dist/workers/repository/update/branch/schedule.js.map +1 -1
  240. package/dist/workers/repository/update/pr/body/updates-table.js.map +1 -1
  241. package/dist/workers/repository/updates/generate.js +9 -0
  242. package/dist/workers/repository/updates/generate.js.map +1 -1
  243. package/package.json +28 -24
  244. package/renovate-schema.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"bzlmod-version.js","sourceRoot":"","sources":["../../../../lib/modules/versioning/bazel-module/bzlmod-version.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @fileoverview Contains classes that represent a Bazel module version.\n */\n\n/**\n * Represents a single value in a VersionPart. For example, the version string\n * `1.2.3` has three identifiers: `1`, `2`, `3`.\n */\nexport class Identifier {\n /**\n * Returns the identifier as a string.\n */\n readonly asString: string;\n\n /**\n * If the identifier only contains digits, this is the numeric value.\n * Otherwise, it is `0`.\n */\n readonly asNumber: number;\n\n /**\n * Specifies whether the identifier only contains digits.\n */\n readonly isDigitsOnly: boolean;\n\n /**\n * Regular expression used to identify whether an identifier value only\n * contains digits.\n */\n static readonly digitsOnlyMatcher = /^[0-9]+$/;\n\n /**\n * @param value The value that is parsed for the Bazel module version parts.\n */\n constructor(value: string) {\n if (value === '') {\n throw new Error('Identifier value cannot be empty.');\n }\n this.asString = value;\n if (Identifier.digitsOnlyMatcher.test(value)) {\n this.isDigitsOnly = true;\n this.asNumber = parseInt(value);\n } else {\n this.isDigitsOnly = false;\n this.asNumber = 0;\n }\n }\n\n /**\n * Determines whether this identifier and another identifier are equal.\n */\n equals(other: Identifier): boolean {\n return this.asString === other.asString;\n }\n\n /**\n * Determines whether this identifier comes before the other identifier.\n */\n isLessThan(other: Identifier): boolean {\n // This logic mirrors the comparison logic in\n // https://cs.opensource.google/bazel/bazel/+/refs/heads/master:src/main/java/com/google/devtools/build/lib/bazel/bzlmod/Version.java\n // isDigitsOnly: true first\n if (this.isDigitsOnly !== other.isDigitsOnly) {\n return this.isDigitsOnly;\n }\n if (this.asNumber !== other.asNumber) {\n return this.asNumber < other.asNumber;\n }\n return this.asString < other.asString;\n }\n}\n\n/**\n * A collection of {@link Identifier} values that represent a portion of a\n * Bazel module version.\n */\nexport class VersionPart extends Array<Identifier> {\n /**\n * Creates a {@link VersionPart} populated with the provided identifiers.\n */\n static create(...items: Array<Identifier | string>): VersionPart {\n const idents = items.map((item) => {\n if (typeof item === 'string') {\n return new Identifier(item);\n }\n return item;\n });\n const vp = new VersionPart();\n vp.push(...idents);\n return vp;\n }\n\n /**\n * The string representation of the version part.\n */\n get asString(): string {\n return this.map((ident) => ident.asString).join('.');\n }\n\n /**\n * Specifies whether this contains any identifiers.\n */\n get isEmpty(): boolean {\n return this.length === 0;\n }\n\n /**\n * Returns the equivalent of the a Semver major value.\n */\n get major(): number {\n return this.length > 0 ? this[0].asNumber : 0;\n }\n\n /**\n * Returns the equivalent of the a Semver minor value.\n */\n get minor(): number {\n return this.length > 1 ? this[1].asNumber : 0;\n }\n\n /**\n * Returns the equivalent of the a Semver patch value.\n */\n get patch(): number {\n return this.length > 2 ? this[2].asNumber : 0;\n }\n\n /**\n * Determines whether this version part is equal to the other.\n */\n equals(other: VersionPart): boolean {\n if (this.length !== other.length) {\n return false;\n }\n for (let i = 0; i < this.length; i++) {\n const a = this[i];\n const b = other[i];\n if (!a.equals(b)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Determines whether this version part comes before the other.\n */\n isLessThan(other: VersionPart): boolean {\n // This logic mirrors the comparison logic in\n // https://cs.opensource.google/bazel/bazel/+/refs/heads/master:src/main/java/com/google/devtools/build/lib/bazel/bzlmod/Version.java\n if (this.equals(other)) {\n return false;\n }\n // Non-empty are first\n if (this.length === 0 && other.length !== 0) {\n return false;\n }\n if (other.length === 0 && this.length !== 0) {\n return true;\n }\n const shortestLen = this.length < other.length ? this.length : other.length;\n for (let i = 0; i < shortestLen; i++) {\n const a = this[i];\n const b = other[i];\n if (!a.equals(b)) {\n return a.isLessThan(b);\n }\n }\n return this.length < other.length;\n }\n}\n\n// Represents the capture groups produced by BzlmodVersion.versionMatcher.\ninterface VersionRegexResult {\n release: string;\n prerelease: string | undefined;\n build: string | undefined;\n}\n\n/**\n * Represents a version in the Bazel module system. The version format we support is\n * `RELEASE[-PRERELEASE][+BUILD]`, where `RELEASE`, `PRERELEASE`, and `BUILD` are\n * each a sequence of \"identifiers\" (defined as a non-empty sequence of ASCII alphanumerical\n * characters and hyphens) separated by dots. The `RELEASE` part may not contain hyphens.\n *\n * Otherwise, this format is identical to SemVer, especially in terms of the comparison algorithm\n * (https://semver.org/#spec-item-11). In other words, this format is intentionally looser than\n * SemVer; in particular:\n *\n * - the \"release\" part isn't limited to exactly 3 segments (major, minor, patch), but can be\n * fewer or more;\n * - each segment in the \"release\" part can be identifiers instead of just numbers (so letters\n * are also allowed -- although hyphens are not).\n *\n * Any valid SemVer version is a valid Bazel module version. Additionally, two SemVer versions\n * `a` and `b` compare `a < b` iff the same holds when they're compared as Bazel * module versions.\n *\n * The special \"empty string\" version can also be used, and compares higher than everything else.\n * It signifies that there is a NonRegistryOverride for a module.\n */\nexport class BzlmodVersion {\n readonly original: string;\n readonly release: VersionPart;\n readonly prerelease: VersionPart;\n readonly build: VersionPart;\n\n /**\n * The regular expression that identifies a valid Bazel module version.\n */\n static readonly versionMatcher =\n /^(?<release>[a-zA-Z0-9.]+)(?:-(?<prerelease>[a-zA-Z0-9.-]+))?(?:\\+(?<build>[a-zA-Z0-9.-]+))?$/;\n\n /**\n * @param version The string that is parsed for the Bazel module version\n * values.\n */\n constructor(version: string) {\n this.original = version;\n if (version === '') {\n this.release = VersionPart.create();\n this.prerelease = VersionPart.create();\n this.build = VersionPart.create();\n return;\n }\n const vparts: Partial<VersionRegexResult> | undefined =\n BzlmodVersion.versionMatcher.exec(version)?.groups;\n if (!vparts) {\n throw new Error(`Invalid Bazel module version: ${version}`);\n }\n // The regex check above ensures that we will have a release group.\n const rparts = vparts.release!.split('.');\n this.release = VersionPart.create(...rparts);\n const pparts = vparts.prerelease ? vparts.prerelease.split('.') : [];\n this.prerelease = VersionPart.create(...pparts);\n // Do not parse the build value. Treat it as a single value.\n const bparts = vparts.build ? [vparts.build] : [];\n this.build = VersionPart.create(...bparts);\n }\n\n /**\n * Specifies whether this is a pre-release version.\n */\n get isPrerelease(): boolean {\n return !this.prerelease.isEmpty;\n }\n\n // Comparison\n\n /**\n * Determines whether this Bazel module version is equal to the other.\n *\n * @param other The other version for the comparison.\n * @param ignoreBuild? If specified, determines whether the build value is\n * evaluated as part of the equality check. This is useful when\n * determining precedence.\n */\n equals(other: BzlmodVersion, ignoreBuild?: boolean): boolean {\n if (ignoreBuild) {\n return (\n this.release.equals(other.release) &&\n this.prerelease.equals(other.prerelease)\n );\n }\n return (\n this.release.equals(other.release) &&\n this.prerelease.equals(other.prerelease) &&\n this.build.equals(other.build)\n );\n }\n\n /**\n * Determines whether this Bazel module version comes before the other.\n */\n isLessThan(other: BzlmodVersion): boolean {\n // This logic mirrors the comparison logic in\n // https://cs.opensource.google/bazel/bazel/+/refs/heads/master:src/main/java/com/google/devtools/build/lib/bazel/bzlmod/Version.java\n if (this.release.isLessThan(other.release)) {\n return true;\n }\n // Ensure that prerelease is listed before regular releases\n if (this.isPrerelease && !other.isPrerelease) {\n return true;\n }\n if (this.prerelease.isLessThan(other.prerelease)) {\n return true;\n }\n // NOTE: We ignore the build value for precedence comparison per the Semver spec.\n // https://semver.org/#spec-item-10\n return false;\n }\n\n /**\n * Determines whether this Bazel module version comes after the other.\n */\n isGreaterThan(other: BzlmodVersion): boolean {\n return BzlmodVersion.defaultCompare(this, other) === 1;\n }\n\n /**\n * Evaluates two Bazel module versions and returns a value specifying whether\n * a < b (-1), a == b (0), or a > b (1).\n */\n static defaultCompare(a: BzlmodVersion, b: BzlmodVersion): number {\n if (a.equals(b, true)) {\n return 0;\n }\n if (a.isLessThan(b)) {\n return -1;\n }\n return 1;\n }\n}\n"]}
1
+ {"version":3,"file":"bzlmod-version.js","sourceRoot":"","sources":["../../../../lib/modules/versioning/bazel-module/bzlmod-version.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @fileoverview Contains classes that represent a Bazel module version.\n */\n\n/**\n * Represents a single value in a VersionPart. For example, the version string\n * `1.2.3` has three identifiers: `1`, `2`, `3`.\n */\nexport class Identifier {\n /**\n * Returns the identifier as a string.\n */\n readonly asString: string;\n\n /**\n * If the identifier only contains digits, this is the numeric value.\n * Otherwise, it is `0`.\n */\n readonly asNumber: number;\n\n /**\n * Specifies whether the identifier only contains digits.\n */\n readonly isDigitsOnly: boolean;\n\n /**\n * Regular expression used to identify whether an identifier value only\n * contains digits.\n */\n static readonly digitsOnlyMatcher = /^[0-9]+$/;\n\n /**\n * @param value The value that is parsed for the Bazel module version parts.\n */\n constructor(value: string) {\n if (value === '') {\n throw new Error('Identifier value cannot be empty.');\n }\n this.asString = value;\n if (Identifier.digitsOnlyMatcher.test(value)) {\n this.isDigitsOnly = true;\n this.asNumber = parseInt(value);\n } else {\n this.isDigitsOnly = false;\n this.asNumber = 0;\n }\n }\n\n /**\n * Determines whether this identifier and another identifier are equal.\n */\n equals(other: Identifier): boolean {\n return this.asString === other.asString;\n }\n\n /**\n * Determines whether this identifier comes before the other identifier.\n */\n isLessThan(other: Identifier): boolean {\n // This logic mirrors the comparison logic in\n // https://cs.opensource.google/bazel/bazel/+/refs/heads/master:src/main/java/com/google/devtools/build/lib/bazel/bzlmod/Version.java\n // isDigitsOnly: true first\n if (this.isDigitsOnly !== other.isDigitsOnly) {\n return this.isDigitsOnly;\n }\n if (this.asNumber !== other.asNumber) {\n return this.asNumber < other.asNumber;\n }\n return this.asString < other.asString;\n }\n}\n\n/**\n * A collection of {@link Identifier} values that represent a portion of a\n * Bazel module version.\n */\nexport class VersionPart extends Array<Identifier> {\n /**\n * Creates a {@link VersionPart} populated with the provided identifiers.\n */\n static create(...items: (Identifier | string)[]): VersionPart {\n const idents = items.map((item) => {\n if (typeof item === 'string') {\n return new Identifier(item);\n }\n return item;\n });\n const vp = new VersionPart();\n vp.push(...idents);\n return vp;\n }\n\n /**\n * The string representation of the version part.\n */\n get asString(): string {\n return this.map((ident) => ident.asString).join('.');\n }\n\n /**\n * Specifies whether this contains any identifiers.\n */\n get isEmpty(): boolean {\n return this.length === 0;\n }\n\n /**\n * Returns the equivalent of the a Semver major value.\n */\n get major(): number {\n return this.length > 0 ? this[0].asNumber : 0;\n }\n\n /**\n * Returns the equivalent of the a Semver minor value.\n */\n get minor(): number {\n return this.length > 1 ? this[1].asNumber : 0;\n }\n\n /**\n * Returns the equivalent of the a Semver patch value.\n */\n get patch(): number {\n return this.length > 2 ? this[2].asNumber : 0;\n }\n\n /**\n * Determines whether this version part is equal to the other.\n */\n equals(other: VersionPart): boolean {\n if (this.length !== other.length) {\n return false;\n }\n for (let i = 0; i < this.length; i++) {\n const a = this[i];\n const b = other[i];\n if (!a.equals(b)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Determines whether this version part comes before the other.\n */\n isLessThan(other: VersionPart): boolean {\n // This logic mirrors the comparison logic in\n // https://cs.opensource.google/bazel/bazel/+/refs/heads/master:src/main/java/com/google/devtools/build/lib/bazel/bzlmod/Version.java\n if (this.equals(other)) {\n return false;\n }\n // Non-empty are first\n if (this.length === 0 && other.length !== 0) {\n return false;\n }\n if (other.length === 0 && this.length !== 0) {\n return true;\n }\n const shortestLen = this.length < other.length ? this.length : other.length;\n for (let i = 0; i < shortestLen; i++) {\n const a = this[i];\n const b = other[i];\n if (!a.equals(b)) {\n return a.isLessThan(b);\n }\n }\n return this.length < other.length;\n }\n}\n\n// Represents the capture groups produced by BzlmodVersion.versionMatcher.\ninterface VersionRegexResult {\n release: string;\n prerelease: string | undefined;\n build: string | undefined;\n}\n\n/**\n * Represents a version in the Bazel module system. The version format we support is\n * `RELEASE[-PRERELEASE][+BUILD]`, where `RELEASE`, `PRERELEASE`, and `BUILD` are\n * each a sequence of \"identifiers\" (defined as a non-empty sequence of ASCII alphanumerical\n * characters and hyphens) separated by dots. The `RELEASE` part may not contain hyphens.\n *\n * Otherwise, this format is identical to SemVer, especially in terms of the comparison algorithm\n * (https://semver.org/#spec-item-11). In other words, this format is intentionally looser than\n * SemVer; in particular:\n *\n * - the \"release\" part isn't limited to exactly 3 segments (major, minor, patch), but can be\n * fewer or more;\n * - each segment in the \"release\" part can be identifiers instead of just numbers (so letters\n * are also allowed -- although hyphens are not).\n *\n * Any valid SemVer version is a valid Bazel module version. Additionally, two SemVer versions\n * `a` and `b` compare `a < b` iff the same holds when they're compared as Bazel * module versions.\n *\n * The special \"empty string\" version can also be used, and compares higher than everything else.\n * It signifies that there is a NonRegistryOverride for a module.\n */\nexport class BzlmodVersion {\n readonly original: string;\n readonly release: VersionPart;\n readonly prerelease: VersionPart;\n readonly build: VersionPart;\n\n /**\n * The regular expression that identifies a valid Bazel module version.\n */\n static readonly versionMatcher =\n /^(?<release>[a-zA-Z0-9.]+)(?:-(?<prerelease>[a-zA-Z0-9.-]+))?(?:\\+(?<build>[a-zA-Z0-9.-]+))?$/;\n\n /**\n * @param version The string that is parsed for the Bazel module version\n * values.\n */\n constructor(version: string) {\n this.original = version;\n if (version === '') {\n this.release = VersionPart.create();\n this.prerelease = VersionPart.create();\n this.build = VersionPart.create();\n return;\n }\n const vparts: Partial<VersionRegexResult> | undefined =\n BzlmodVersion.versionMatcher.exec(version)?.groups;\n if (!vparts) {\n throw new Error(`Invalid Bazel module version: ${version}`);\n }\n // The regex check above ensures that we will have a release group.\n const rparts = vparts.release!.split('.');\n this.release = VersionPart.create(...rparts);\n const pparts = vparts.prerelease ? vparts.prerelease.split('.') : [];\n this.prerelease = VersionPart.create(...pparts);\n // Do not parse the build value. Treat it as a single value.\n const bparts = vparts.build ? [vparts.build] : [];\n this.build = VersionPart.create(...bparts);\n }\n\n /**\n * Specifies whether this is a pre-release version.\n */\n get isPrerelease(): boolean {\n return !this.prerelease.isEmpty;\n }\n\n // Comparison\n\n /**\n * Determines whether this Bazel module version is equal to the other.\n *\n * @param other The other version for the comparison.\n * @param ignoreBuild? If specified, determines whether the build value is\n * evaluated as part of the equality check. This is useful when\n * determining precedence.\n */\n equals(other: BzlmodVersion, ignoreBuild?: boolean): boolean {\n if (ignoreBuild) {\n return (\n this.release.equals(other.release) &&\n this.prerelease.equals(other.prerelease)\n );\n }\n return (\n this.release.equals(other.release) &&\n this.prerelease.equals(other.prerelease) &&\n this.build.equals(other.build)\n );\n }\n\n /**\n * Determines whether this Bazel module version comes before the other.\n */\n isLessThan(other: BzlmodVersion): boolean {\n // This logic mirrors the comparison logic in\n // https://cs.opensource.google/bazel/bazel/+/refs/heads/master:src/main/java/com/google/devtools/build/lib/bazel/bzlmod/Version.java\n if (this.release.isLessThan(other.release)) {\n return true;\n }\n // Ensure that prerelease is listed before regular releases\n if (this.isPrerelease && !other.isPrerelease) {\n return true;\n }\n if (this.prerelease.isLessThan(other.prerelease)) {\n return true;\n }\n // NOTE: We ignore the build value for precedence comparison per the Semver spec.\n // https://semver.org/#spec-item-10\n return false;\n }\n\n /**\n * Determines whether this Bazel module version comes after the other.\n */\n isGreaterThan(other: BzlmodVersion): boolean {\n return BzlmodVersion.defaultCompare(this, other) === 1;\n }\n\n /**\n * Evaluates two Bazel module versions and returns a value specifying whether\n * a < b (-1), a == b (0), or a > b (1).\n */\n static defaultCompare(a: BzlmodVersion, b: BzlmodVersion): number {\n if (a.equals(b, true)) {\n return 0;\n }\n if (a.isLessThan(b)) {\n return -1;\n }\n return 1;\n }\n}\n"]}
@@ -5,12 +5,8 @@ export interface GenericVersion {
5
5
  prerelease?: string;
6
6
  suffix?: string;
7
7
  }
8
- export interface VersionParser {
9
- (version: string): GenericVersion;
10
- }
11
- export interface VersionComparator {
12
- (version: string, other: string): number;
13
- }
8
+ export type VersionParser = (version: string) => GenericVersion;
9
+ export type VersionComparator = (version: string, other: string) => number;
14
10
  export declare abstract class GenericVersioningApi<T extends GenericVersion = GenericVersion> implements VersioningApi {
15
11
  private _getSection;
16
12
  protected _compare(version: string, other: string): number;
@@ -1 +1 @@
1
- {"version":3,"file":"generic.js","sourceRoot":"","sources":["../../../lib/modules/versioning/generic.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport type { NewValueConfig, VersioningApi } from './types';\n\nexport interface GenericVersion {\n release: number[];\n /** prereleases are treated in the standard semver manner, if present */\n prerelease?: string;\n suffix?: string;\n}\nexport interface VersionParser {\n (version: string): GenericVersion;\n}\n\nexport interface VersionComparator {\n (version: string, other: string): number;\n}\n\nexport abstract class GenericVersioningApi<\n T extends GenericVersion = GenericVersion,\n> implements VersioningApi\n{\n private _getSection(version: string, index: number): number | null {\n const parsed = this._parse(version);\n return parsed && parsed.release.length > index\n ? parsed.release[index]\n : null;\n }\n\n protected _compare(version: string, other: string): number {\n const left = this._parse(version);\n const right = this._parse(other);\n\n // istanbul ignore if\n if (!(left && right)) {\n return 1;\n }\n\n // support variable length compare\n const length = Math.max(left.release.length, right.release.length);\n for (let i = 0; i < length; i += 1) {\n // 2.1 and 2.1.0 are equivalent\n const part1 = left.release[i] ?? 0;\n const part2 = right.release[i] ?? 0;\n if (part1 !== part2) {\n return part1 - part2;\n }\n }\n\n if (\n is.nonEmptyString(left.prerelease) &&\n is.nonEmptyString(right.prerelease)\n ) {\n const pre = left.prerelease.localeCompare(right.prerelease, undefined, {\n numeric: true,\n });\n\n if (pre !== 0) {\n return pre;\n }\n } else if (is.nonEmptyString(left.prerelease)) {\n return -1;\n } else if (is.nonEmptyString(right.prerelease)) {\n return 1;\n }\n\n return this._compareOther(left, right);\n }\n\n /*\n * virtual\n */\n\n protected _compareOther(_left: T, _right: T): number {\n return 0;\n }\n\n protected abstract _parse(version: string): T | null;\n\n isValid(version: string): boolean {\n return this._parse(version) !== null;\n }\n\n isCompatible(version: string, _current: string): boolean {\n return this.isValid(version);\n }\n\n isStable(version: string): boolean {\n const parsed = this._parse(version);\n return !!(parsed && !parsed.prerelease);\n }\n\n isSingleVersion(version: string): boolean {\n return this.isValid(version);\n }\n\n isVersion(version: string): boolean {\n return this.isValid(version);\n }\n\n getMajor(version: string): number | null {\n return this._getSection(version, 0);\n }\n\n getMinor(version: string): number | null {\n return this._getSection(version, 1);\n }\n\n getPatch(version: string): number | null {\n return this._getSection(version, 2);\n }\n\n equals(version: string, other: string): boolean {\n return this._compare(version, other) === 0;\n }\n\n isGreaterThan(version: string, other: string): boolean {\n return this._compare(version, other) > 0;\n }\n\n isLessThanRange(version: string, range: string): boolean {\n return this._compare(version, range) < 0;\n }\n\n getSatisfyingVersion(versions: string[], range: string): string | null {\n const result = versions.find((v) => this.equals(v, range));\n return result ?? null;\n }\n\n minSatisfyingVersion(versions: string[], range: string): string | null {\n const result = versions.find((v) => this.equals(v, range));\n return result ?? null;\n }\n\n getNewValue({\n currentValue,\n currentVersion,\n newVersion,\n }: NewValueConfig): string | null {\n if (currentVersion === `v${currentValue}`) {\n return newVersion.replace(/^v/, '');\n }\n return newVersion ?? null;\n }\n\n sortVersions(version: string, other: string): number {\n return this._compare(version, other);\n }\n\n matches(version: string, range: string): boolean {\n return this.equals(version, range);\n }\n\n isSame(type: 'major' | 'minor' | 'patch', a: string, b: string): boolean {\n if (type === 'major') {\n return this.getMajor(a)! === this.getMajor(b)!;\n }\n if (type === 'minor') {\n return this.getMinor(a)! === this.getMinor(b)!;\n }\n return this.getPatch(a)! === this.getPatch(b)!;\n }\n}\n"]}
1
+ {"version":3,"file":"generic.js","sourceRoot":"","sources":["../../../lib/modules/versioning/generic.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport type { NewValueConfig, VersioningApi } from './types';\n\nexport interface GenericVersion {\n release: number[];\n /** prereleases are treated in the standard semver manner, if present */\n prerelease?: string;\n suffix?: string;\n}\nexport type VersionParser = (version: string) => GenericVersion;\n\nexport type VersionComparator = (version: string, other: string) => number;\n\nexport abstract class GenericVersioningApi<\n T extends GenericVersion = GenericVersion,\n> implements VersioningApi\n{\n private _getSection(version: string, index: number): number | null {\n const parsed = this._parse(version);\n return parsed && parsed.release.length > index\n ? parsed.release[index]\n : null;\n }\n\n protected _compare(version: string, other: string): number {\n const left = this._parse(version);\n const right = this._parse(other);\n\n // istanbul ignore if\n if (!(left && right)) {\n return 1;\n }\n\n // support variable length compare\n const length = Math.max(left.release.length, right.release.length);\n for (let i = 0; i < length; i += 1) {\n // 2.1 and 2.1.0 are equivalent\n const part1 = left.release[i] ?? 0;\n const part2 = right.release[i] ?? 0;\n if (part1 !== part2) {\n return part1 - part2;\n }\n }\n\n if (\n is.nonEmptyString(left.prerelease) &&\n is.nonEmptyString(right.prerelease)\n ) {\n const pre = left.prerelease.localeCompare(right.prerelease, undefined, {\n numeric: true,\n });\n\n if (pre !== 0) {\n return pre;\n }\n } else if (is.nonEmptyString(left.prerelease)) {\n return -1;\n } else if (is.nonEmptyString(right.prerelease)) {\n return 1;\n }\n\n return this._compareOther(left, right);\n }\n\n /*\n * virtual\n */\n\n protected _compareOther(_left: T, _right: T): number {\n return 0;\n }\n\n protected abstract _parse(version: string): T | null;\n\n isValid(version: string): boolean {\n return this._parse(version) !== null;\n }\n\n isCompatible(version: string, _current: string): boolean {\n return this.isValid(version);\n }\n\n isStable(version: string): boolean {\n const parsed = this._parse(version);\n return !!(parsed && !parsed.prerelease);\n }\n\n isSingleVersion(version: string): boolean {\n return this.isValid(version);\n }\n\n isVersion(version: string): boolean {\n return this.isValid(version);\n }\n\n getMajor(version: string): number | null {\n return this._getSection(version, 0);\n }\n\n getMinor(version: string): number | null {\n return this._getSection(version, 1);\n }\n\n getPatch(version: string): number | null {\n return this._getSection(version, 2);\n }\n\n equals(version: string, other: string): boolean {\n return this._compare(version, other) === 0;\n }\n\n isGreaterThan(version: string, other: string): boolean {\n return this._compare(version, other) > 0;\n }\n\n isLessThanRange(version: string, range: string): boolean {\n return this._compare(version, range) < 0;\n }\n\n getSatisfyingVersion(versions: string[], range: string): string | null {\n const result = versions.find((v) => this.equals(v, range));\n return result ?? null;\n }\n\n minSatisfyingVersion(versions: string[], range: string): string | null {\n const result = versions.find((v) => this.equals(v, range));\n return result ?? null;\n }\n\n getNewValue({\n currentValue,\n currentVersion,\n newVersion,\n }: NewValueConfig): string | null {\n if (currentVersion === `v${currentValue}`) {\n return newVersion.replace(/^v/, '');\n }\n return newVersion ?? null;\n }\n\n sortVersions(version: string, other: string): number {\n return this._compare(version, other);\n }\n\n matches(version: string, range: string): boolean {\n return this.equals(version, range);\n }\n\n isSame(type: 'major' | 'minor' | 'patch', a: string, b: string): boolean {\n if (type === 'major') {\n return this.getMajor(a) === this.getMajor(b);\n }\n if (type === 'minor') {\n return this.getMinor(a) === this.getMinor(b);\n }\n return this.getPatch(a) === this.getPatch(b);\n }\n}\n"]}
@@ -2,10 +2,10 @@ export declare const TokenType: {
2
2
  Number: number;
3
3
  String: number;
4
4
  };
5
- type Token = {
5
+ interface Token {
6
6
  type: number;
7
7
  val: string | number;
8
- };
8
+ }
9
9
  export declare function tokenize(versionStr: string): Token[] | null;
10
10
  export declare const QualifierRank: {
11
11
  readonly Dev: -1;
@@ -1 +1 @@
1
- {"version":3,"file":"compare.js","sourceRoot":"","sources":["../../../../lib/modules/versioning/gradle/compare.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { regEx } from '../../../util/regex';\n\nexport const TokenType = {\n Number: 1,\n String: 2,\n};\n\ntype Token = {\n type: number;\n val: string | number;\n};\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 isSeparator(char: string): boolean {\n return regEx(/^[-._+]$/i).test(char);\n}\n\nfunction isDigit(char: string): boolean {\n return regEx(/^\\d$/).test(char);\n}\n\nfunction isLetter(char: string): boolean {\n return !isSeparator(char) && !isDigit(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\nexport function tokenize(versionStr: string): Token[] | null {\n let result: Token[] | null = [];\n let currentVal = '';\n\n function yieldToken(): void {\n if (result) {\n const val = currentVal;\n if (regEx(/^\\d+$/).test(val)) {\n result.push({\n type: TokenType.Number,\n val: parseInt(val, 10),\n });\n } else {\n result.push({\n type: TokenType.String,\n val,\n });\n }\n }\n }\n\n iterateChars(versionStr, (prevChar, nextChar) => {\n if (nextChar === null) {\n yieldToken();\n } else if (isSeparator(nextChar)) {\n if (prevChar && !isSeparator(prevChar)) {\n yieldToken();\n currentVal = '';\n } else {\n result = null;\n }\n } else if (prevChar !== null && isTransition(prevChar, nextChar)) {\n yieldToken();\n currentVal = nextChar;\n } else {\n currentVal = currentVal.concat(nextChar);\n }\n });\n\n return result;\n}\n\nexport const QualifierRank = {\n Dev: -1,\n Default: 0,\n RC: 1,\n Snapshot: 2,\n Final: 3,\n GA: 4,\n Release: 5,\n SP: 6,\n} as const;\n\nexport function qualifierRank(input: string): number {\n const val = input.toLowerCase();\n if (val === 'dev') {\n return QualifierRank.Dev;\n }\n if (val === 'rc' || val === 'cr') {\n return QualifierRank.RC;\n }\n if (val === 'snapshot') {\n return QualifierRank.Snapshot;\n }\n if (val === 'ga') {\n return QualifierRank.GA;\n }\n if (val === 'final') {\n return QualifierRank.Final;\n }\n if (val === 'release' || val === 'latest' || val === 'sr') {\n return QualifierRank.Release;\n }\n if (val === 'sp') {\n return QualifierRank.SP;\n }\n return QualifierRank.Default;\n}\n\nfunction stringTokenCmp(left: string, right: string): number {\n const leftRank = qualifierRank(left);\n const rightRank = qualifierRank(right);\n if (leftRank === 0 && rightRank === 0) {\n if (left < right) {\n return -1;\n }\n\n if (left > right) {\n return 1;\n }\n } else {\n if (leftRank < rightRank) {\n return -1;\n }\n if (leftRank > rightRank) {\n return 1;\n }\n }\n return 0;\n}\n\nfunction tokenCmp(left: Token | null, right: Token | null): number {\n if (left === null) {\n if (right?.type === TokenType.String) {\n return 1;\n }\n return -1;\n }\n\n if (right === null) {\n if (left.type === TokenType.String) {\n return -1;\n }\n return 1;\n }\n\n if (left.type === TokenType.Number && right.type === TokenType.Number) {\n if (left.val < right.val) {\n return -1;\n }\n if (left.val > right.val) {\n return 1;\n }\n } else if (typeof left.val === 'string' && typeof right.val === 'string') {\n return stringTokenCmp(left.val, right.val);\n } else if (right.type === TokenType.Number) {\n return -1;\n } else if (left.type === TokenType.Number) {\n return 1;\n }\n\n return 0;\n}\n\nexport function 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] || null;\n const rightToken = rightTokens[idx] || null;\n const cmpResult = tokenCmp(leftToken, rightToken);\n if (cmpResult !== 0) {\n return cmpResult;\n }\n }\n return 0;\n}\n\nexport function parse(input: string): Token[] | null {\n if (!input) {\n return null;\n }\n\n if (!regEx(/^[-._+a-zA-Z0-9]+$/i).test(input)) {\n return null;\n }\n\n if (regEx(/^latest\\.?/i).test(input)) {\n return null;\n }\n\n const tokens = tokenize(input);\n // istanbul ignore if: should not happen\n if (!tokens?.length) {\n return null;\n }\n return tokens;\n}\n\nexport function isVersion(input: string): boolean {\n return !!parse(input);\n}\n\ninterface PrefixRange {\n tokens: Token[];\n}\n\nexport type RangeBound = 'inclusive' | 'exclusive';\n\ninterface MavenBasedRange {\n leftBound: RangeBound;\n leftBoundStr: string;\n leftVal: string | null;\n separator: string;\n rightBound: RangeBound;\n rightBoundStr: string;\n rightVal: string | null;\n}\n\nexport function parsePrefixRange(input: string): PrefixRange | null {\n if (!input) {\n return null;\n }\n\n if (input.trim() === '+') {\n return { tokens: [] };\n }\n\n const postfixRegex = regEx(/[^-._+][-._]\\+$/);\n if (postfixRegex.test(input)) {\n const prefixValue = input.replace(regEx(/[-._]\\+$/), '');\n const tokens = tokenize(prefixValue);\n if (tokens) {\n return { tokens };\n }\n }\n\n return null;\n}\n\nconst mavenBasedRangeRegex = regEx(\n /^(?<leftBoundStr>[[\\](]\\s*)(?<leftVal>[-._+a-zA-Z0-9]*?)(?<separator>\\s*,\\s*)(?<rightVal>[-._+a-zA-Z0-9]*?)(?<rightBoundStr>\\s*[[\\])])$/,\n);\n\nexport function parseMavenBasedRange(input: string): MavenBasedRange | null {\n if (!input) {\n return null;\n }\n\n const matchGroups = mavenBasedRangeRegex.exec(input)?.groups;\n if (matchGroups) {\n const { leftBoundStr, separator, rightBoundStr } = matchGroups;\n let leftVal: string | null = matchGroups.leftVal;\n let rightVal: string | null = matchGroups.rightVal;\n if (!leftVal) {\n leftVal = null;\n }\n if (!rightVal) {\n rightVal = null;\n }\n const isVersionLeft = is.string(leftVal) && isVersion(leftVal);\n const isVersionRight = is.string(rightVal) && isVersion(rightVal);\n if (\n (leftVal === null || isVersionLeft) &&\n (rightVal === null || isVersionRight)\n ) {\n if (\n isVersionLeft &&\n isVersionRight &&\n leftVal &&\n rightVal &&\n compare(leftVal, rightVal) === 1\n ) {\n return null;\n }\n const leftBound = leftBoundStr.trim() === '[' ? 'inclusive' : 'exclusive';\n const rightBound =\n rightBoundStr.trim() === ']' ? 'inclusive' : 'exclusive';\n return {\n leftBound,\n leftBoundStr,\n leftVal,\n separator,\n rightBound,\n rightBoundStr,\n rightVal,\n };\n }\n }\n\n return null;\n}\n\ninterface SingleVersionRange {\n val: string;\n}\n\nconst singleVersionRangeRegex = regEx(/^\\[\\s*(?<val>[-._+a-zA-Z0-9]*?)\\s*\\]$/);\n\nexport function parseSingleVersionRange(\n input: string,\n): SingleVersionRange | null {\n const matchGroups = singleVersionRangeRegex.exec(input)?.groups;\n if (!matchGroups) {\n return null;\n }\n\n const { val } = matchGroups;\n if (!isVersion(val)) {\n return null;\n }\n\n return { val };\n}\n\nexport function isValid(str: string): boolean {\n if (!str) {\n return false;\n }\n\n return (\n isVersion(str) ||\n !!parsePrefixRange(str) ||\n !!parseMavenBasedRange(str) ||\n !!parseSingleVersionRange(str)\n );\n}\n"]}
1
+ {"version":3,"file":"compare.js","sourceRoot":"","sources":["../../../../lib/modules/versioning/gradle/compare.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { regEx } from '../../../util/regex';\n\nexport const TokenType = {\n Number: 1,\n String: 2,\n};\n\ninterface Token {\n type: number;\n val: string | number;\n}\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 isSeparator(char: string): boolean {\n return regEx(/^[-._+]$/i).test(char);\n}\n\nfunction isDigit(char: string): boolean {\n return regEx(/^\\d$/).test(char);\n}\n\nfunction isLetter(char: string): boolean {\n return !isSeparator(char) && !isDigit(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\nexport function tokenize(versionStr: string): Token[] | null {\n let result: Token[] | null = [];\n let currentVal = '';\n\n function yieldToken(): void {\n if (result) {\n const val = currentVal;\n if (regEx(/^\\d+$/).test(val)) {\n result.push({\n type: TokenType.Number,\n val: parseInt(val, 10),\n });\n } else {\n result.push({\n type: TokenType.String,\n val,\n });\n }\n }\n }\n\n iterateChars(versionStr, (prevChar, nextChar) => {\n if (nextChar === null) {\n yieldToken();\n } else if (isSeparator(nextChar)) {\n if (prevChar && !isSeparator(prevChar)) {\n yieldToken();\n currentVal = '';\n } else {\n result = null;\n }\n } else if (prevChar !== null && isTransition(prevChar, nextChar)) {\n yieldToken();\n currentVal = nextChar;\n } else {\n currentVal = currentVal.concat(nextChar);\n }\n });\n\n return result;\n}\n\nexport const QualifierRank = {\n Dev: -1,\n Default: 0,\n RC: 1,\n Snapshot: 2,\n Final: 3,\n GA: 4,\n Release: 5,\n SP: 6,\n} as const;\n\nexport function qualifierRank(input: string): number {\n const val = input.toLowerCase();\n if (val === 'dev') {\n return QualifierRank.Dev;\n }\n if (val === 'rc' || val === 'cr') {\n return QualifierRank.RC;\n }\n if (val === 'snapshot') {\n return QualifierRank.Snapshot;\n }\n if (val === 'ga') {\n return QualifierRank.GA;\n }\n if (val === 'final') {\n return QualifierRank.Final;\n }\n if (val === 'release' || val === 'latest' || val === 'sr') {\n return QualifierRank.Release;\n }\n if (val === 'sp') {\n return QualifierRank.SP;\n }\n return QualifierRank.Default;\n}\n\nfunction stringTokenCmp(left: string, right: string): number {\n const leftRank = qualifierRank(left);\n const rightRank = qualifierRank(right);\n if (leftRank === 0 && rightRank === 0) {\n if (left < right) {\n return -1;\n }\n\n if (left > right) {\n return 1;\n }\n } else {\n if (leftRank < rightRank) {\n return -1;\n }\n if (leftRank > rightRank) {\n return 1;\n }\n }\n return 0;\n}\n\nfunction tokenCmp(left: Token | null, right: Token | null): number {\n if (left === null) {\n if (right?.type === TokenType.String) {\n return 1;\n }\n return -1;\n }\n\n if (right === null) {\n if (left.type === TokenType.String) {\n return -1;\n }\n return 1;\n }\n\n if (left.type === TokenType.Number && right.type === TokenType.Number) {\n if (left.val < right.val) {\n return -1;\n }\n if (left.val > right.val) {\n return 1;\n }\n } else if (typeof left.val === 'string' && typeof right.val === 'string') {\n return stringTokenCmp(left.val, right.val);\n } else if (right.type === TokenType.Number) {\n return -1;\n } else if (left.type === TokenType.Number) {\n return 1;\n }\n\n return 0;\n}\n\nexport function 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] || null;\n const rightToken = rightTokens[idx] || null;\n const cmpResult = tokenCmp(leftToken, rightToken);\n if (cmpResult !== 0) {\n return cmpResult;\n }\n }\n return 0;\n}\n\nexport function parse(input: string): Token[] | null {\n if (!input) {\n return null;\n }\n\n if (!regEx(/^[-._+a-zA-Z0-9]+$/i).test(input)) {\n return null;\n }\n\n if (regEx(/^latest\\.?/i).test(input)) {\n return null;\n }\n\n const tokens = tokenize(input);\n // istanbul ignore if: should not happen\n if (!tokens?.length) {\n return null;\n }\n return tokens;\n}\n\nexport function isVersion(input: string): boolean {\n return !!parse(input);\n}\n\ninterface PrefixRange {\n tokens: Token[];\n}\n\nexport type RangeBound = 'inclusive' | 'exclusive';\n\ninterface MavenBasedRange {\n leftBound: RangeBound;\n leftBoundStr: string;\n leftVal: string | null;\n separator: string;\n rightBound: RangeBound;\n rightBoundStr: string;\n rightVal: string | null;\n}\n\nexport function parsePrefixRange(input: string): PrefixRange | null {\n if (!input) {\n return null;\n }\n\n if (input.trim() === '+') {\n return { tokens: [] };\n }\n\n const postfixRegex = regEx(/[^-._+][-._]\\+$/);\n if (postfixRegex.test(input)) {\n const prefixValue = input.replace(regEx(/[-._]\\+$/), '');\n const tokens = tokenize(prefixValue);\n if (tokens) {\n return { tokens };\n }\n }\n\n return null;\n}\n\nconst mavenBasedRangeRegex = regEx(\n /^(?<leftBoundStr>[[\\](]\\s*)(?<leftVal>[-._+a-zA-Z0-9]*?)(?<separator>\\s*,\\s*)(?<rightVal>[-._+a-zA-Z0-9]*?)(?<rightBoundStr>\\s*[[\\])])$/,\n);\n\nexport function parseMavenBasedRange(input: string): MavenBasedRange | null {\n if (!input) {\n return null;\n }\n\n const matchGroups = mavenBasedRangeRegex.exec(input)?.groups;\n if (matchGroups) {\n const { leftBoundStr, separator, rightBoundStr } = matchGroups;\n let leftVal: string | null = matchGroups.leftVal;\n let rightVal: string | null = matchGroups.rightVal;\n if (!leftVal) {\n leftVal = null;\n }\n if (!rightVal) {\n rightVal = null;\n }\n const isVersionLeft = is.string(leftVal) && isVersion(leftVal);\n const isVersionRight = is.string(rightVal) && isVersion(rightVal);\n if (\n (leftVal === null || isVersionLeft) &&\n (rightVal === null || isVersionRight)\n ) {\n if (\n isVersionLeft &&\n isVersionRight &&\n leftVal &&\n rightVal &&\n compare(leftVal, rightVal) === 1\n ) {\n return null;\n }\n const leftBound = leftBoundStr.trim() === '[' ? 'inclusive' : 'exclusive';\n const rightBound =\n rightBoundStr.trim() === ']' ? 'inclusive' : 'exclusive';\n return {\n leftBound,\n leftBoundStr,\n leftVal,\n separator,\n rightBound,\n rightBoundStr,\n rightVal,\n };\n }\n }\n\n return null;\n}\n\ninterface SingleVersionRange {\n val: string;\n}\n\nconst singleVersionRangeRegex = regEx(/^\\[\\s*(?<val>[-._+a-zA-Z0-9]*?)\\s*\\]$/);\n\nexport function parseSingleVersionRange(\n input: string,\n): SingleVersionRange | null {\n const matchGroups = singleVersionRangeRegex.exec(input)?.groups;\n if (!matchGroups) {\n return null;\n }\n\n const { val } = matchGroups;\n if (!isVersion(val)) {\n return null;\n }\n\n return { val };\n}\n\nexport function isValid(str: string): boolean {\n if (!str) {\n return false;\n }\n\n return (\n isVersion(str) ||\n !!parsePrefixRange(str) ||\n !!parseMavenBasedRange(str) ||\n !!parseSingleVersionRange(str)\n );\n}\n"]}
@@ -11,7 +11,7 @@ exports.urls = [
11
11
  'https://docs.gradle.org/current/userguide/single_versions.html#version_ordering',
12
12
  ];
13
13
  exports.supportsRanges = true;
14
- exports.supportedRangeStrategies = ['pin'];
14
+ exports.supportedRangeStrategies = ['pin', 'bump'];
15
15
  const equals = (a, b) => (0, compare_1.compare)(a, b) === 0;
16
16
  const getMajor = (version) => {
17
17
  const tokens = (0, compare_1.parse)(version?.replace((0, regex_1.regEx)(/^v/i), ''));
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/versioning/gradle/index.ts"],"names":[],"mappings":"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","sourcesContent":["import type { RangeStrategy } from '../../../types/versioning';\nimport { regEx } from '../../../util/regex';\nimport mavenVersion from '../maven';\nimport type { NewValueConfig, VersioningApi } from '../types';\nimport {\n TokenType,\n compare,\n isValid,\n isVersion,\n parse,\n parseMavenBasedRange,\n parsePrefixRange,\n parseSingleVersionRange,\n} from './compare';\n\nexport const id = 'gradle';\nexport const displayName = 'Gradle';\nexport const urls = [\n 'https://docs.gradle.org/current/userguide/single_versions.html#version_ordering',\n];\nexport const supportsRanges = true;\nexport const supportedRangeStrategies: RangeStrategy[] = ['pin'];\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 && 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 &&\n majorToken.type === TokenType.Number &&\n minorToken &&\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 &&\n majorToken.type === TokenType.Number &&\n minorToken &&\n minorToken.type === TokenType.Number &&\n patchToken &&\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) || rangeStrategy === 'pin') {\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 } else {\n // our new version is shorter than our prefix range so drop our prefix range\n return newVersion;\n }\n } else {\n // our version is already \"+\" which includes ever version\n return null;\n }\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"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/versioning/gradle/index.ts"],"names":[],"mappings":"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","sourcesContent":["import type { RangeStrategy } from '../../../types/versioning';\nimport { regEx } from '../../../util/regex';\nimport mavenVersion from '../maven';\nimport type { NewValueConfig, VersioningApi } from '../types';\nimport {\n TokenType,\n compare,\n isValid,\n isVersion,\n parse,\n parseMavenBasedRange,\n parsePrefixRange,\n parseSingleVersionRange,\n} from './compare';\n\nexport const id = 'gradle';\nexport const displayName = 'Gradle';\nexport const urls = [\n 'https://docs.gradle.org/current/userguide/single_versions.html#version_ordering',\n];\nexport const supportsRanges = true;\nexport const supportedRangeStrategies: RangeStrategy[] = ['pin', '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 && 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 &&\n majorToken.type === TokenType.Number &&\n minorToken &&\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 &&\n majorToken.type === TokenType.Number &&\n minorToken &&\n minorToken.type === TokenType.Number &&\n patchToken &&\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) || rangeStrategy === 'pin') {\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 } else {\n // our new version is shorter than our prefix range so drop our prefix range\n return newVersion;\n }\n } else {\n // our version is already \"+\" which includes ever version\n return null;\n }\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"]}
@@ -15,8 +15,8 @@ function parseRange(input) {
15
15
  }
16
16
  }
17
17
  return {
18
- lower: m.groups['lower'],
19
- upper: m.groups['upper'],
18
+ lower: m.groups.lower,
19
+ upper: m.groups.upper,
20
20
  };
21
21
  }
22
22
  //# sourceMappingURL=range.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"range.js","sourceRoot":"","sources":["../../../../lib/modules/versioning/pvp/range.ts"],"names":[],"mappings":";;AAOA,gCAaC;AApBD,+CAA4C;AAG5C,qEAAqE;AACrE,MAAM,aAAa,GAAG,IAAA,aAAK,EAAC,uCAAuC,CAAC,CAAC;AACrE,MAAM,aAAa,GAAG,IAAA,aAAK,EAAC,uCAAuC,CAAC,CAAC;AAErE,SAAgB,UAAU,CAAC,KAAa;IACtC,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC3C,IAAI,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;QACf,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO;QACL,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QACxB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;KACzB,CAAC;AACJ,CAAC","sourcesContent":["import { regEx } from '../../../util/regex';\nimport type { Range } from './types';\n\n// This range format was chosen because it is common in the ecosystem\nconst gteAndLtRange = regEx(/>=(?<lower>[\\d.]+)&&<(?<upper>[\\d.]+)/);\nconst ltAndGteRange = regEx(/<(?<upper>[\\d.]+)&&>=(?<lower>[\\d.]+)/);\n\nexport function parseRange(input: string): Range | null {\n const noSpaces = input.replaceAll(' ', '');\n let m = gteAndLtRange.exec(noSpaces);\n if (!m?.groups) {\n m = ltAndGteRange.exec(noSpaces);\n if (!m?.groups) {\n return null;\n }\n }\n return {\n lower: m.groups['lower'],\n upper: m.groups['upper'],\n };\n}\n"]}
1
+ {"version":3,"file":"range.js","sourceRoot":"","sources":["../../../../lib/modules/versioning/pvp/range.ts"],"names":[],"mappings":";;AAOA,gCAaC;AApBD,+CAA4C;AAG5C,qEAAqE;AACrE,MAAM,aAAa,GAAG,IAAA,aAAK,EAAC,uCAAuC,CAAC,CAAC;AACrE,MAAM,aAAa,GAAG,IAAA,aAAK,EAAC,uCAAuC,CAAC,CAAC;AAErE,SAAgB,UAAU,CAAC,KAAa;IACtC,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC3C,IAAI,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;QACf,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO;QACL,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK;QACrB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK;KACtB,CAAC;AACJ,CAAC","sourcesContent":["import { regEx } from '../../../util/regex';\nimport type { Range } from './types';\n\n// This range format was chosen because it is common in the ecosystem\nconst gteAndLtRange = regEx(/>=(?<lower>[\\d.]+)&&<(?<upper>[\\d.]+)/);\nconst ltAndGteRange = regEx(/<(?<upper>[\\d.]+)&&>=(?<lower>[\\d.]+)/);\n\nexport function parseRange(input: string): Range | null {\n const noSpaces = input.replaceAll(' ', '');\n let m = gteAndLtRange.exec(noSpaces);\n if (!m?.groups) {\n m = ltAndGteRange.exec(noSpaces);\n if (!m?.groups) {\n return null;\n }\n }\n return {\n lower: m.groups.lower,\n upper: m.groups.upper,\n };\n}\n"]}
@@ -115,11 +115,11 @@ class RpmVersioningApi extends generic_1.GenericVersioningApi {
115
115
  const matchv1 = matchesv1[i];
116
116
  const matchv2 = matchesv2[i];
117
117
  // compare tildes
118
- if (matchv1?.[0] === '~' || matchv2?.[0] === '~') {
119
- if (matchv1?.[0] !== '~') {
118
+ if (matchv1?.startsWith('~') || matchv2?.startsWith('~')) {
119
+ if (!matchv1?.startsWith('~')) {
120
120
  return 1;
121
121
  }
122
- if (matchv2?.[0] !== '~') {
122
+ if (!matchv2?.startsWith('~')) {
123
123
  return -1;
124
124
  }
125
125
  }
@@ -151,10 +151,10 @@ class RpmVersioningApi extends generic_1.GenericVersioningApi {
151
151
  return 0;
152
152
  }
153
153
  // If there is a tilde in a segment past the minimum number of segments, find it
154
- if (matchesv1.length > matches && matchesv1[matches][0] === '~') {
154
+ if (matchesv1.length > matches && matchesv1[matches].startsWith('~')) {
155
155
  return -1;
156
156
  }
157
- if (matchesv2.length > matches && matchesv2[matches][0] === '~') {
157
+ if (matchesv2.length > matches && matchesv2[matches].startsWith('~')) {
158
158
  return 1;
159
159
  }
160
160
  // whichever has the most segments wins
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/versioning/rpm/index.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { regEx } from '../../../util/regex';\nimport type { GenericVersion } from '../generic';\nimport { GenericVersioningApi } from '../generic';\nimport type { VersioningApi } from '../types';\n\nexport const id = 'rpm';\nexport const displayName = 'RPM version';\nexport const urls = [\n 'https://docs.fedoraproject.org/en-US/packaging-guidelines/Versioning/',\n 'https://fedoraproject.org/wiki/Package_Versioning_Examples',\n '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 } else 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?.[0] === '~' || matchv2?.[0] === '~') {\n if (matchv1?.[0] !== '~') {\n return 1;\n }\n\n if (matchv2?.[0] !== '~') {\n return -1;\n }\n }\n\n if (is.numericString(matchv1?.[0])) {\n // numbers are greater than letters\n if (!is.numericString(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 } else if (is.numericString(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][0] === '~') {\n return -1;\n }\n\n if (matchesv2.length > matches && matchesv2[matches][0] === '~') {\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 } else 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"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/versioning/rpm/index.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { regEx } from '../../../util/regex';\nimport type { GenericVersion } from '../generic';\nimport { GenericVersioningApi } from '../generic';\nimport type { VersioningApi } from '../types';\n\nexport const id = 'rpm';\nexport const displayName = 'RPM version';\nexport const urls = [\n 'https://docs.fedoraproject.org/en-US/packaging-guidelines/Versioning/',\n 'https://fedoraproject.org/wiki/Package_Versioning_Examples',\n '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 } else 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 (is.numericString(matchv1?.[0])) {\n // numbers are greater than letters\n if (!is.numericString(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 } else if (is.numericString(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 } else 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"]}
@@ -19,10 +19,10 @@ function isStable(version) {
19
19
  if (!m?.groups) {
20
20
  return false;
21
21
  }
22
- const major = m.groups['major'];
23
- const newMinor = m.groups['minor'] ?? '.0';
24
- const newPatch = m.groups['patch'] ?? '.0';
25
- const others = m.groups['others'] ?? '';
22
+ const major = m.groups.major;
23
+ const newMinor = m.groups.minor ?? '.0';
24
+ const newPatch = m.groups.patch ?? '.0';
25
+ const others = m.groups.others ?? '';
26
26
  const fixed = major + newMinor + newPatch + others;
27
27
  return semver_stable_1.default.is(fixed);
28
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/versioning/semver-coerced/index.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport type { SemVer } from 'semver';\nimport semver from 'semver';\nimport stable from 'semver-stable';\nimport { regEx } from '../../../util/regex';\nimport type { NewValueConfig, VersioningApi } from '../types';\n\nexport const id = 'semver-coerced';\nexport const displayName = 'Coerced Semantic Versioning';\nexport const urls = ['https://semver.org/'];\nexport const supportsRanges = false;\n\nfunction isStable(version: string): boolean {\n // matching a version with the semver prefix\n // v1.2.3, 1.2.3, v1.2, 1.2, v1, 1\n const regx = regEx(\n /^v?(?<major>\\d+)(?<minor>\\.\\d+)?(?<patch>\\.\\d+)?(?<others>.+)?/,\n );\n const m = regx.exec(version);\n\n if (!m?.groups) {\n return false;\n }\n\n const major = m.groups['major'];\n const newMinor = m.groups['minor'] ?? '.0';\n const newPatch = m.groups['patch'] ?? '.0';\n const others = m.groups['others'] ?? '';\n const fixed = major + newMinor + newPatch + others;\n return stable.is(fixed);\n}\n\nfunction sortVersions(a: string, b: string): number {\n const aCoerced = semver.coerce(a);\n const bCoerced = semver.coerce(b);\n\n return aCoerced && bCoerced ? semver.compare(aCoerced, bCoerced) : 0;\n}\n\nfunction getMajor(a: string | SemVer): number | null {\n const aCoerced = semver.coerce(a);\n return aCoerced ? semver.major(aCoerced) : null;\n}\n\nfunction getMinor(a: string | SemVer): number | null {\n const aCoerced = semver.coerce(a);\n return aCoerced ? semver.minor(aCoerced) : null;\n}\n\nfunction getPatch(a: string | SemVer): number | null {\n const aCoerced = semver.coerce(a);\n return aCoerced ? semver.patch(aCoerced) : null;\n}\n\nfunction matches(version: string, range: string): boolean {\n const coercedVersion = semver.coerce(version);\n return coercedVersion ? semver.satisfies(coercedVersion, range) : false;\n}\n\nfunction equals(a: string, b: string): boolean {\n const aCoerced = semver.coerce(a);\n const bCoerced = semver.coerce(b);\n return aCoerced && bCoerced ? semver.eq(aCoerced, bCoerced) : false;\n}\n\nfunction isValid(version: string): boolean {\n return !!semver.valid(semver.coerce(version));\n}\n\nfunction getSatisfyingVersion(\n versions: string[],\n range: string,\n): string | null {\n const coercedVersions = versions\n .map((version) =>\n semver.valid(version) ? version : semver.coerce(version)?.version,\n )\n .filter(is.string);\n\n return semver.maxSatisfying(coercedVersions, range);\n}\n\nfunction minSatisfyingVersion(\n versions: string[],\n range: string,\n): string | null {\n const coercedVersions = versions\n .map((version) => semver.coerce(version)?.version)\n .filter(is.string);\n\n return semver.minSatisfying(coercedVersions, range);\n}\n\nfunction isLessThanRange(version: string, range: string): boolean {\n const coercedVersion = semver.coerce(version);\n return coercedVersion ? semver.ltr(coercedVersion, range) : false;\n}\n\nfunction isGreaterThan(version: string, other: string): boolean {\n const coercedVersion = semver.coerce(version);\n const coercedOther = semver.coerce(other);\n if (!coercedVersion || !coercedOther) {\n return false;\n }\n return semver.gt(coercedVersion, coercedOther);\n}\n\nconst startsWithNumberRegex = regEx(`^\\\\d`);\n\nfunction isSingleVersion(version: string): boolean {\n // Since coercion accepts ranges as well as versions, we have to manually\n // check that the version string starts with either 'v' or a digit.\n if (!version.startsWith('v') && !startsWithNumberRegex.exec(version)) {\n return false;\n }\n\n return !!semver.valid(semver.coerce(version));\n}\n\n// If this is left as an alias, inputs like \"17.04.0\" throw errors\nexport const isVersion = (input: string): boolean => isValid(input);\n\nexport { isVersion as isValid, getSatisfyingVersion };\n\nfunction getNewValue({\n currentValue,\n currentVersion,\n newVersion,\n}: NewValueConfig): string {\n if (currentVersion === `v${currentValue}`) {\n return newVersion.replace(/^v/, '');\n }\n return newVersion;\n}\n\nfunction isCompatible(version: string): boolean {\n return isVersion(version);\n}\n\nexport const api: VersioningApi = {\n equals,\n getMajor,\n getMinor,\n getPatch,\n isCompatible,\n isGreaterThan,\n isLessThanRange,\n isSingleVersion,\n isStable,\n isValid,\n isVersion,\n matches,\n getSatisfyingVersion,\n minSatisfyingVersion,\n getNewValue,\n sortVersions,\n};\nexport default api;\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/versioning/semver-coerced/index.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport type { SemVer } from 'semver';\nimport semver from 'semver';\nimport stable from 'semver-stable';\nimport { regEx } from '../../../util/regex';\nimport type { NewValueConfig, VersioningApi } from '../types';\n\nexport const id = 'semver-coerced';\nexport const displayName = 'Coerced Semantic Versioning';\nexport const urls = ['https://semver.org/'];\nexport const supportsRanges = false;\n\nfunction isStable(version: string): boolean {\n // matching a version with the semver prefix\n // v1.2.3, 1.2.3, v1.2, 1.2, v1, 1\n const regx = regEx(\n /^v?(?<major>\\d+)(?<minor>\\.\\d+)?(?<patch>\\.\\d+)?(?<others>.+)?/,\n );\n const m = regx.exec(version);\n\n if (!m?.groups) {\n return false;\n }\n\n const major = m.groups.major;\n const newMinor = m.groups.minor ?? '.0';\n const newPatch = m.groups.patch ?? '.0';\n const others = m.groups.others ?? '';\n const fixed = major + newMinor + newPatch + others;\n return stable.is(fixed);\n}\n\nfunction sortVersions(a: string, b: string): number {\n const aCoerced = semver.coerce(a);\n const bCoerced = semver.coerce(b);\n\n return aCoerced && bCoerced ? semver.compare(aCoerced, bCoerced) : 0;\n}\n\nfunction getMajor(a: string | SemVer): number | null {\n const aCoerced = semver.coerce(a);\n return aCoerced ? semver.major(aCoerced) : null;\n}\n\nfunction getMinor(a: string | SemVer): number | null {\n const aCoerced = semver.coerce(a);\n return aCoerced ? semver.minor(aCoerced) : null;\n}\n\nfunction getPatch(a: string | SemVer): number | null {\n const aCoerced = semver.coerce(a);\n return aCoerced ? semver.patch(aCoerced) : null;\n}\n\nfunction matches(version: string, range: string): boolean {\n const coercedVersion = semver.coerce(version);\n return coercedVersion ? semver.satisfies(coercedVersion, range) : false;\n}\n\nfunction equals(a: string, b: string): boolean {\n const aCoerced = semver.coerce(a);\n const bCoerced = semver.coerce(b);\n return aCoerced && bCoerced ? semver.eq(aCoerced, bCoerced) : false;\n}\n\nfunction isValid(version: string): boolean {\n return !!semver.valid(semver.coerce(version));\n}\n\nfunction getSatisfyingVersion(\n versions: string[],\n range: string,\n): string | null {\n const coercedVersions = versions\n .map((version) =>\n semver.valid(version) ? version : semver.coerce(version)?.version,\n )\n .filter(is.string);\n\n return semver.maxSatisfying(coercedVersions, range);\n}\n\nfunction minSatisfyingVersion(\n versions: string[],\n range: string,\n): string | null {\n const coercedVersions = versions\n .map((version) => semver.coerce(version)?.version)\n .filter(is.string);\n\n return semver.minSatisfying(coercedVersions, range);\n}\n\nfunction isLessThanRange(version: string, range: string): boolean {\n const coercedVersion = semver.coerce(version);\n return coercedVersion ? semver.ltr(coercedVersion, range) : false;\n}\n\nfunction isGreaterThan(version: string, other: string): boolean {\n const coercedVersion = semver.coerce(version);\n const coercedOther = semver.coerce(other);\n if (!coercedVersion || !coercedOther) {\n return false;\n }\n return semver.gt(coercedVersion, coercedOther);\n}\n\nconst startsWithNumberRegex = regEx(`^\\\\d`);\n\nfunction isSingleVersion(version: string): boolean {\n // Since coercion accepts ranges as well as versions, we have to manually\n // check that the version string starts with either 'v' or a digit.\n if (!version.startsWith('v') && !startsWithNumberRegex.exec(version)) {\n return false;\n }\n\n return !!semver.valid(semver.coerce(version));\n}\n\n// If this is left as an alias, inputs like \"17.04.0\" throw errors\nexport const isVersion = (input: string): boolean => isValid(input);\n\nexport { isVersion as isValid, getSatisfyingVersion };\n\nfunction getNewValue({\n currentValue,\n currentVersion,\n newVersion,\n}: NewValueConfig): string {\n if (currentVersion === `v${currentValue}`) {\n return newVersion.replace(/^v/, '');\n }\n return newVersion;\n}\n\nfunction isCompatible(version: string): boolean {\n return isVersion(version);\n}\n\nexport const api: VersioningApi = {\n equals,\n getMajor,\n getMinor,\n getPatch,\n isCompatible,\n isGreaterThan,\n isLessThanRange,\n isSingleVersion,\n isStable,\n isValid,\n isVersion,\n matches,\n getSatisfyingVersion,\n minSatisfyingVersion,\n getNewValue,\n sortVersions,\n};\nexport default api;\n"]}
@@ -112,6 +112,4 @@ export interface VersioningApi {
112
112
  */
113
113
  isSame?(type: 'major' | 'minor' | 'patch', a: string, b: string): boolean;
114
114
  }
115
- export interface VersioningApiConstructor {
116
- new (config?: string): VersioningApi;
117
- }
115
+ export type VersioningApiConstructor = new (config?: string) => VersioningApi;
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../lib/modules/versioning/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { SemVer } from 'semver';\nimport type { RangeStrategy } from '../../types';\n\nexport interface NewValueConfig {\n currentValue: string;\n rangeStrategy: RangeStrategy;\n currentVersion?: string;\n newVersion: string;\n isReplacement?: boolean;\n}\nexport interface VersioningApi {\n // validation\n\n /**\n * Check whether the `input` is the valid version or range.\n *\n * For some managers, ranges are called \"constraints\",\"specifiers\", \"requirements\", etc.\n * We stick to the term \"range\" for all of it.\n */\n isValid(input: string): boolean;\n\n /**\n * Check whether the `input` is a valid version.\n *\n * There is no direct way to determine whether the `input` is the range,\n * but combination of `isVersion` and `isValid` can be used for that:\n *\n * `isValid(input) && !isVersion(input)`\n */\n isVersion(input: string | undefined | null): boolean;\n\n /**\n * Check whether the `input` is the:\n *\n * 1. Version, or\n * 2. Range with the special syntax of matching exactly one version:\n * - `==1.2.3` or `===1.2.3` for Python,\n * - `=1.2.3` for NPM,\n * - `[1.2.3]` for Maven or NuGet.\n *\n * This is used to provide pinning functionality.\n */\n isSingleVersion(input: string): boolean;\n\n /**\n * Check whether the `version` is considered to be \"stable\".\n */\n isStable(version: string): boolean;\n\n /**\n * Determines whether the version is compatible with the current one,\n * in some manager-dependent way.\n *\n * For most managers, all valid versions are compatible between each other.\n *\n * However, for example, Docker versions `1.2.3` and `1.2.4-alpine` are not compatible,\n * i.e. `1.2.4-alpine` is not a valid upgrade for `1.2.3`.\n */\n isCompatible(version: string, current?: string): boolean;\n\n // digestion of version\n\n getMajor(version: string | SemVer): null | number;\n getMinor(version: string | SemVer): null | number;\n getPatch(version: string | SemVer): null | number;\n\n // comparison\n\n /**\n * Check whether `version` and `other` are logically equivalent, even if\n * they're not the exact same string.\n *\n * For example, with Semver the build metadata should be ignored when comparing.\n */\n equals(version: string, other: string): boolean;\n\n /**\n * Check whether `version` is \"greater\" than the `other` version.\n */\n isGreaterThan(version: string, other: string): boolean;\n\n /**\n * Check whether the `version` is \"less\" than all the versions possible in\n * the `range`.\n */\n isLessThanRange?(version: string, range: string): boolean;\n\n /**\n * Select the highest version from `versions` that is within the given\n * `range` constraint, or return `null` if there is no matching version.\n */\n getSatisfyingVersion(versions: string[], range: string): string | null;\n\n /**\n * Select the lowest version from `versions` that is within the given\n * `range` constraint, or return `null` if there is no matching version.\n */\n minSatisfyingVersion(versions: string[], range: string): string | null;\n\n /**\n * Calculate a new version constraint based on the current constraint, the\n * `rangeStrategy` option, and the current and new version.\n */\n getNewValue(newValueConfig: NewValueConfig): string | null;\n\n /**\n * Compare two versions. Return `0` if `v1 == v2`, or `1` if `v1` is\n * greater, or `-1` if `v2` is greater.\n */\n sortVersions(version: string, other: string): number;\n\n /**\n * Check whether the `version` satisfies the `range` constraint.\n */\n matches(version: string, range: string): boolean;\n\n valueToVersion?(version: string): string;\n\n /**\n * @returns true if subRange is entirely contained by superRange, false otherwise,\n * and undefined if it cannot determine it.\n *\n * @param subRange - the sub range\n * @param superRange - the dom range\n */\n subset?(subRange: string, superRange: string): boolean | undefined;\n\n /**\n * Return whether unstable-to-unstable upgrades within the same major version are allowed.\n */\n allowUnstableMajorUpgrades?: boolean;\n\n /**\n * Check whether the `type` in the `a` and `b` version numbers match.\n * Both `a` and `b` must pass `isVersion`.\n */\n isSame?(type: 'major' | 'minor' | 'patch', a: string, b: string): boolean;\n}\n\nexport interface VersioningApiConstructor {\n new (config?: string): VersioningApi;\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../lib/modules/versioning/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { SemVer } from 'semver';\nimport type { RangeStrategy } from '../../types';\n\nexport interface NewValueConfig {\n currentValue: string;\n rangeStrategy: RangeStrategy;\n currentVersion?: string;\n newVersion: string;\n isReplacement?: boolean;\n}\nexport interface VersioningApi {\n // validation\n\n /**\n * Check whether the `input` is the valid version or range.\n *\n * For some managers, ranges are called \"constraints\",\"specifiers\", \"requirements\", etc.\n * We stick to the term \"range\" for all of it.\n */\n isValid(input: string): boolean;\n\n /**\n * Check whether the `input` is a valid version.\n *\n * There is no direct way to determine whether the `input` is the range,\n * but combination of `isVersion` and `isValid` can be used for that:\n *\n * `isValid(input) && !isVersion(input)`\n */\n isVersion(input: string | undefined | null): boolean;\n\n /**\n * Check whether the `input` is the:\n *\n * 1. Version, or\n * 2. Range with the special syntax of matching exactly one version:\n * - `==1.2.3` or `===1.2.3` for Python,\n * - `=1.2.3` for NPM,\n * - `[1.2.3]` for Maven or NuGet.\n *\n * This is used to provide pinning functionality.\n */\n isSingleVersion(input: string): boolean;\n\n /**\n * Check whether the `version` is considered to be \"stable\".\n */\n isStable(version: string): boolean;\n\n /**\n * Determines whether the version is compatible with the current one,\n * in some manager-dependent way.\n *\n * For most managers, all valid versions are compatible between each other.\n *\n * However, for example, Docker versions `1.2.3` and `1.2.4-alpine` are not compatible,\n * i.e. `1.2.4-alpine` is not a valid upgrade for `1.2.3`.\n */\n isCompatible(version: string, current?: string): boolean;\n\n // digestion of version\n\n getMajor(version: string | SemVer): null | number;\n getMinor(version: string | SemVer): null | number;\n getPatch(version: string | SemVer): null | number;\n\n // comparison\n\n /**\n * Check whether `version` and `other` are logically equivalent, even if\n * they're not the exact same string.\n *\n * For example, with Semver the build metadata should be ignored when comparing.\n */\n equals(version: string, other: string): boolean;\n\n /**\n * Check whether `version` is \"greater\" than the `other` version.\n */\n isGreaterThan(version: string, other: string): boolean;\n\n /**\n * Check whether the `version` is \"less\" than all the versions possible in\n * the `range`.\n */\n isLessThanRange?(version: string, range: string): boolean;\n\n /**\n * Select the highest version from `versions` that is within the given\n * `range` constraint, or return `null` if there is no matching version.\n */\n getSatisfyingVersion(versions: string[], range: string): string | null;\n\n /**\n * Select the lowest version from `versions` that is within the given\n * `range` constraint, or return `null` if there is no matching version.\n */\n minSatisfyingVersion(versions: string[], range: string): string | null;\n\n /**\n * Calculate a new version constraint based on the current constraint, the\n * `rangeStrategy` option, and the current and new version.\n */\n getNewValue(newValueConfig: NewValueConfig): string | null;\n\n /**\n * Compare two versions. Return `0` if `v1 == v2`, or `1` if `v1` is\n * greater, or `-1` if `v2` is greater.\n */\n sortVersions(version: string, other: string): number;\n\n /**\n * Check whether the `version` satisfies the `range` constraint.\n */\n matches(version: string, range: string): boolean;\n\n valueToVersion?(version: string): string;\n\n /**\n * @returns true if subRange is entirely contained by superRange, false otherwise,\n * and undefined if it cannot determine it.\n *\n * @param subRange - the sub range\n * @param superRange - the dom range\n */\n subset?(subRange: string, superRange: string): boolean | undefined;\n\n /**\n * Return whether unstable-to-unstable upgrades within the same major version are allowed.\n */\n allowUnstableMajorUpgrades?: boolean;\n\n /**\n * Check whether the `type` in the `a` and `b` version numbers match.\n * Both `a` and `b` must pass `isVersion`.\n */\n isSame?(type: 'major' | 'minor' | 'patch', a: string, b: string): boolean;\n}\n\nexport type VersioningApiConstructor = new (config?: string) => VersioningApi;\n"]}
@@ -1,7 +1,7 @@
1
- export type GitTreeNode = {
1
+ export interface GitTreeNode {
2
2
  type: 'tree' | 'blob';
3
3
  path: string;
4
4
  mode: string;
5
- };
5
+ }
6
6
  export type GitProtocol = 'ssh' | 'http' | 'https';
7
7
  export type GitOptions = Record<string, null | string | number>;
@@ -1 +1 @@
1
- {"version":3,"file":"git.js","sourceRoot":"","sources":["../../lib/types/git.ts"],"names":[],"mappings":"","sourcesContent":["export type GitTreeNode = {\n type: 'tree' | 'blob';\n path: string;\n mode: string;\n};\n\nexport type GitProtocol = 'ssh' | 'http' | 'https';\n\nexport type GitOptions = Record<string, null | string | number>;\n"]}
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../lib/types/git.ts"],"names":[],"mappings":"","sourcesContent":["export interface GitTreeNode {\n type: 'tree' | 'blob';\n path: string;\n mode: string;\n}\n\nexport type GitProtocol = 'ssh' | 'http' | 'https';\n\nexport type GitOptions = Record<string, null | string | number>;\n"]}
@@ -1,19 +1,19 @@
1
1
  import type { GitTreeNode } from '../../git';
2
- export type GithubGitBase = {
2
+ export interface GithubGitBase {
3
3
  sha: string;
4
4
  url: string;
5
5
  size: number;
6
- };
6
+ }
7
7
  /**
8
8
  * https://docs.github.com/en/rest/reference/git#get-a-tree
9
9
  */
10
10
  export type GithubGitTreeNode = GithubGitBase & GitTreeNode;
11
- export type GithubGitTree = {
11
+ export interface GithubGitTree {
12
12
  sha: string;
13
13
  url: string;
14
14
  tree: GithubGitTreeNode[];
15
15
  truncated: boolean;
16
- };
16
+ }
17
17
  /**
18
18
  * https://docs.github.com/en/rest/reference/git#get-a-blob
19
19
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/types/platform/github/index.ts"],"names":[],"mappings":"","sourcesContent":["import type { GitTreeNode } from '../../git';\n\nexport type GithubGitBase = {\n sha: string;\n url: string;\n size: number;\n};\n\n/**\n * https://docs.github.com/en/rest/reference/git#get-a-tree\n */\nexport type GithubGitTreeNode = GithubGitBase & GitTreeNode;\n\nexport type GithubGitTree = {\n sha: string;\n url: string;\n tree: GithubGitTreeNode[];\n truncated: boolean;\n};\n\n/**\n * https://docs.github.com/en/rest/reference/git#get-a-blob\n */\nexport type GithubGitBlob = {\n type: string;\n content: string;\n encoding: string;\n} & GithubGitBase;\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/types/platform/github/index.ts"],"names":[],"mappings":"","sourcesContent":["import type { GitTreeNode } from '../../git';\n\nexport interface GithubGitBase {\n sha: string;\n url: string;\n size: number;\n}\n\n/**\n * https://docs.github.com/en/rest/reference/git#get-a-tree\n */\nexport type GithubGitTreeNode = GithubGitBase & GitTreeNode;\n\nexport interface GithubGitTree {\n sha: string;\n url: string;\n tree: GithubGitTreeNode[];\n truncated: boolean;\n}\n\n/**\n * https://docs.github.com/en/rest/reference/git#get-a-blob\n */\nexport type GithubGitBlob = {\n type: string;\n content: string;\n encoding: string;\n} & GithubGitBase;\n"]}
@@ -1,8 +1,8 @@
1
1
  import type { GitTreeNode } from '../../git';
2
- export type GitLabBranch = {
2
+ export interface GitLabBranch {
3
3
  default: boolean;
4
4
  name: string;
5
- };
5
+ }
6
6
  /**
7
7
  * https://docs.gitlab.com/13.2/ee/api/repositories.html#list-repository-tree
8
8
  */