renovate 43.263.0 → 43.263.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (258) hide show
  1. package/dist/config/app-strings.js +1 -1
  2. package/dist/config/app-strings.js.map +1 -1
  3. package/dist/config/decrypt/bcpgp.js +7 -4
  4. package/dist/config/decrypt/bcpgp.js.map +1 -1
  5. package/dist/config/migration.js +4 -6
  6. package/dist/config/migration.js.map +1 -1
  7. package/dist/config/options/index.js +1 -1
  8. package/dist/config/options/index.js.map +1 -1
  9. package/dist/config/validation-helpers/match-base-branches.js +4 -6
  10. package/dist/config/validation-helpers/match-base-branches.js.map +1 -1
  11. package/dist/config/validation-helpers/regex-glob-matchers.js +4 -6
  12. package/dist/config/validation-helpers/regex-glob-matchers.js.map +1 -1
  13. package/dist/config/validation-helpers/utils.js +2 -4
  14. package/dist/config/validation-helpers/utils.js.map +1 -1
  15. package/dist/config/validation.js +4 -6
  16. package/dist/config/validation.js.map +1 -1
  17. package/dist/config-validator.js +1 -3
  18. package/dist/config-validator.js.map +1 -1
  19. package/dist/global-config-option-defaults.generated.js +1 -1
  20. package/dist/global-config-option-defaults.generated.js.map +1 -1
  21. package/dist/modules/datasource/artifactory/index.js +6 -8
  22. package/dist/modules/datasource/artifactory/index.js.map +1 -1
  23. package/dist/modules/datasource/aws-machine-image/index.js +1 -2
  24. package/dist/modules/datasource/aws-machine-image/index.js.map +1 -1
  25. package/dist/modules/datasource/azure-pipelines-tasks/index.js +2 -3
  26. package/dist/modules/datasource/azure-pipelines-tasks/index.js.map +1 -1
  27. package/dist/modules/datasource/conda/index.js +1 -3
  28. package/dist/modules/datasource/conda/index.js.map +1 -1
  29. package/dist/modules/datasource/dart-version/index.js +1 -2
  30. package/dist/modules/datasource/dart-version/index.js.map +1 -1
  31. package/dist/modules/datasource/datasource.js +1 -3
  32. package/dist/modules/datasource/datasource.js.map +1 -1
  33. package/dist/modules/datasource/devbox/index.js +1 -3
  34. package/dist/modules/datasource/devbox/index.js.map +1 -1
  35. package/dist/modules/datasource/docker/ecr.js +2 -1
  36. package/dist/modules/datasource/docker/ecr.js.map +1 -1
  37. package/dist/modules/datasource/docker/index.js +1 -1
  38. package/dist/modules/datasource/docker/index.js.map +1 -1
  39. package/dist/modules/datasource/galaxy-collection/index.js +1 -1
  40. package/dist/modules/datasource/galaxy-collection/index.js.map +1 -1
  41. package/dist/modules/datasource/go/releases-goproxy.js +2 -2
  42. package/dist/modules/datasource/go/releases-goproxy.js.map +1 -1
  43. package/dist/modules/datasource/java-version/index.js +1 -3
  44. package/dist/modules/datasource/java-version/index.js.map +1 -1
  45. package/dist/modules/datasource/maven/util.js +2 -1
  46. package/dist/modules/datasource/maven/util.js.map +1 -1
  47. package/dist/modules/datasource/nuget/common.js +6 -4
  48. package/dist/modules/datasource/nuget/common.js.map +1 -1
  49. package/dist/modules/datasource/util.js +3 -2
  50. package/dist/modules/datasource/util.js.map +1 -1
  51. package/dist/modules/manager/azure-pipelines/extract.js +1 -1
  52. package/dist/modules/manager/azure-pipelines/extract.js.map +1 -1
  53. package/dist/modules/manager/bazel/extract.js +1 -3
  54. package/dist/modules/manager/bazel/extract.js.map +1 -1
  55. package/dist/modules/manager/bazel/parser.js +1 -1
  56. package/dist/modules/manager/bazel/parser.js.map +1 -1
  57. package/dist/modules/manager/buildpacks/extract.js +1 -1
  58. package/dist/modules/manager/buildpacks/extract.js.map +1 -1
  59. package/dist/modules/manager/bundler/common.js +23 -25
  60. package/dist/modules/manager/bundler/common.js.map +1 -1
  61. package/dist/modules/manager/bundler/extract.js +2 -6
  62. package/dist/modules/manager/bundler/extract.js.map +1 -1
  63. package/dist/modules/manager/cargo/extract.js +4 -6
  64. package/dist/modules/manager/cargo/extract.js.map +1 -1
  65. package/dist/modules/manager/dockerfile/extract.js +3 -3
  66. package/dist/modules/manager/dockerfile/extract.js.map +1 -1
  67. package/dist/modules/manager/fingerprint.generated.js +13 -13
  68. package/dist/modules/manager/fingerprint.generated.js.map +1 -1
  69. package/dist/modules/manager/flux/extract.js +2 -1
  70. package/dist/modules/manager/flux/extract.js.map +1 -1
  71. package/dist/modules/manager/github-actions/parse.js +1 -1
  72. package/dist/modules/manager/github-actions/parse.js.map +1 -1
  73. package/dist/modules/manager/gradle/extract/catalog.js +4 -3
  74. package/dist/modules/manager/gradle/extract/catalog.js.map +1 -1
  75. package/dist/modules/manager/gradle/extract.js +2 -2
  76. package/dist/modules/manager/gradle/extract.js.map +1 -1
  77. package/dist/modules/manager/gradle/parser/common.js +1 -1
  78. package/dist/modules/manager/gradle/parser/common.js.map +1 -1
  79. package/dist/modules/manager/gradle/parser/handlers.js +1 -1
  80. package/dist/modules/manager/gradle/parser/handlers.js.map +1 -1
  81. package/dist/modules/manager/helm-values/extract.js.map +1 -1
  82. package/dist/modules/manager/helmfile/extract.js +1 -1
  83. package/dist/modules/manager/helmfile/extract.js.map +1 -1
  84. package/dist/modules/manager/maven/extract.js.map +1 -1
  85. package/dist/modules/manager/maven/update.js +2 -1
  86. package/dist/modules/manager/maven/update.js.map +1 -1
  87. package/dist/modules/manager/mise/utils.js +5 -7
  88. package/dist/modules/manager/mise/utils.js.map +1 -1
  89. package/dist/modules/manager/mix/extract.js +3 -6
  90. package/dist/modules/manager/mix/extract.js.map +1 -1
  91. package/dist/modules/manager/npm/extract/common/overrides.js +1 -1
  92. package/dist/modules/manager/npm/extract/common/overrides.js.map +1 -1
  93. package/dist/modules/manager/npm/extract/yarn.js +1 -1
  94. package/dist/modules/manager/npm/extract/yarn.js.map +1 -1
  95. package/dist/modules/manager/npm/npmrc.js +1 -3
  96. package/dist/modules/manager/npm/npmrc.js.map +1 -1
  97. package/dist/modules/manager/npm/update/dependency/common.js +2 -3
  98. package/dist/modules/manager/npm/update/dependency/common.js.map +1 -1
  99. package/dist/modules/manager/npm/update/dependency/index.js +1 -1
  100. package/dist/modules/manager/npm/update/dependency/index.js.map +1 -1
  101. package/dist/modules/manager/npm/update/dependency/pnpm.js +1 -1
  102. package/dist/modules/manager/npm/update/dependency/pnpm.js.map +1 -1
  103. package/dist/modules/manager/npm/update/dependency/yarn.js +1 -1
  104. package/dist/modules/manager/npm/update/dependency/yarn.js.map +1 -1
  105. package/dist/modules/manager/osgi/extract.js +1 -1
  106. package/dist/modules/manager/osgi/extract.js.map +1 -1
  107. package/dist/modules/manager/pep621/processors/uv.js +1 -1
  108. package/dist/modules/manager/pep621/processors/uv.js.map +1 -1
  109. package/dist/modules/manager/pep621/schema.js.map +1 -1
  110. package/dist/modules/manager/pip_setup/extract.js +1 -1
  111. package/dist/modules/manager/pip_setup/extract.js.map +1 -1
  112. package/dist/modules/manager/pipenv/artifacts.js.map +1 -1
  113. package/dist/modules/manager/poetry/schema.js +2 -2
  114. package/dist/modules/manager/poetry/schema.js.map +1 -1
  115. package/dist/modules/manager/pub/artifacts.js +4 -6
  116. package/dist/modules/manager/pub/artifacts.js.map +1 -1
  117. package/dist/modules/manager/pub/utils.js +2 -2
  118. package/dist/modules/manager/pub/utils.js.map +1 -1
  119. package/dist/modules/manager/puppet/common.js +4 -6
  120. package/dist/modules/manager/puppet/common.js.map +1 -1
  121. package/dist/modules/manager/sbt/extract.js +1 -1
  122. package/dist/modules/manager/sbt/extract.js.map +1 -1
  123. package/dist/modules/manager/sbt/util.js +4 -2
  124. package/dist/modules/manager/sbt/util.js.map +1 -1
  125. package/dist/modules/manager/terraform/lockfile/util.js +1 -1
  126. package/dist/modules/manager/terraform/lockfile/util.js.map +1 -1
  127. package/dist/modules/platform/azure/index.js +15 -19
  128. package/dist/modules/platform/azure/index.js.map +1 -1
  129. package/dist/modules/platform/azure/issue.js +67 -17
  130. package/dist/modules/platform/azure/issue.js.map +1 -1
  131. package/dist/modules/platform/bitbucket/index.js +1 -3
  132. package/dist/modules/platform/bitbucket/index.js.map +1 -1
  133. package/dist/modules/platform/forgejo/index.js +5 -3
  134. package/dist/modules/platform/forgejo/index.js.map +1 -1
  135. package/dist/modules/platform/forgejo/utils.js +1 -1
  136. package/dist/modules/platform/forgejo/utils.js.map +1 -1
  137. package/dist/modules/platform/gerrit/scm.js +5 -7
  138. package/dist/modules/platform/gerrit/scm.js.map +1 -1
  139. package/dist/modules/platform/gitea/index.js +5 -3
  140. package/dist/modules/platform/gitea/index.js.map +1 -1
  141. package/dist/modules/platform/gitea/utils.js +1 -1
  142. package/dist/modules/platform/gitea/utils.js.map +1 -1
  143. package/dist/modules/platform/github/index.js +5 -7
  144. package/dist/modules/platform/github/index.js.map +1 -1
  145. package/dist/modules/platform/github/pr.js +1 -1
  146. package/dist/modules/platform/github/pr.js.map +1 -1
  147. package/dist/modules/platform/gitlab/index.js +2 -1
  148. package/dist/modules/platform/gitlab/index.js.map +1 -1
  149. package/dist/modules/platform/utils/pr-body.js +2 -1
  150. package/dist/modules/platform/utils/pr-body.js.map +1 -1
  151. package/dist/modules/versioning/apk/index.js +3 -3
  152. package/dist/modules/versioning/apk/index.js.map +1 -1
  153. package/dist/modules/versioning/composer/index.js +4 -7
  154. package/dist/modules/versioning/composer/index.js.map +1 -1
  155. package/dist/modules/versioning/conan/common.js +4 -6
  156. package/dist/modules/versioning/conan/common.js.map +1 -1
  157. package/dist/modules/versioning/conan/index.js +1 -3
  158. package/dist/modules/versioning/conan/index.js.map +1 -1
  159. package/dist/modules/versioning/conan/range.js +4 -5
  160. package/dist/modules/versioning/conan/range.js.map +1 -1
  161. package/dist/modules/versioning/conda/index.js +1 -1
  162. package/dist/modules/versioning/conda/index.js.map +1 -1
  163. package/dist/modules/versioning/gradle/index.js +7 -3
  164. package/dist/modules/versioning/gradle/index.js.map +1 -1
  165. package/dist/modules/versioning/hermit/index.js +2 -2
  166. package/dist/modules/versioning/hermit/index.js.map +1 -1
  167. package/dist/modules/versioning/ivy/index.js +1 -1
  168. package/dist/modules/versioning/ivy/index.js.map +1 -1
  169. package/dist/modules/versioning/maven/compare.js +4 -6
  170. package/dist/modules/versioning/maven/compare.js.map +1 -1
  171. package/dist/modules/versioning/npm/range.js +5 -7
  172. package/dist/modules/versioning/npm/range.js.map +1 -1
  173. package/dist/modules/versioning/nuget/version.js +6 -6
  174. package/dist/modules/versioning/nuget/version.js.map +1 -1
  175. package/dist/modules/versioning/pep440/index.js +1 -1
  176. package/dist/modules/versioning/pep440/index.js.map +1 -1
  177. package/dist/modules/versioning/pep440/range.js +2 -6
  178. package/dist/modules/versioning/pep440/range.js.map +1 -1
  179. package/dist/modules/versioning/poetry/index.js +1 -1
  180. package/dist/modules/versioning/poetry/index.js.map +1 -1
  181. package/dist/modules/versioning/pvp/index.js +2 -2
  182. package/dist/modules/versioning/pvp/index.js.map +1 -1
  183. package/dist/modules/versioning/rpm/index.js +4 -3
  184. package/dist/modules/versioning/rpm/index.js.map +1 -1
  185. package/dist/modules/versioning/ruby/range.js +2 -2
  186. package/dist/modules/versioning/ruby/range.js.map +1 -1
  187. package/dist/modules/versioning/ruby/strategies/bump.js +1 -1
  188. package/dist/modules/versioning/ruby/strategies/bump.js.map +1 -1
  189. package/dist/modules/versioning/ruby/strategies/replace.js +13 -12
  190. package/dist/modules/versioning/ruby/strategies/replace.js.map +1 -1
  191. package/dist/modules/versioning/ruby/version.js +1 -1
  192. package/dist/modules/versioning/ruby/version.js.map +1 -1
  193. package/dist/modules/versioning/rust-release-channel/index.js +1 -1
  194. package/dist/modules/versioning/rust-release-channel/index.js.map +1 -1
  195. package/dist/modules/versioning/rust-release-channel/util.js +4 -4
  196. package/dist/modules/versioning/rust-release-channel/util.js.map +1 -1
  197. package/dist/util/common.js +1 -3
  198. package/dist/util/common.js.map +1 -1
  199. package/dist/util/exec/common.js +4 -6
  200. package/dist/util/exec/common.js.map +1 -1
  201. package/dist/util/exec/containerbase.js +1 -3
  202. package/dist/util/exec/containerbase.js.map +1 -1
  203. package/dist/util/git/instrument.js +3 -3
  204. package/dist/util/git/instrument.js.map +1 -1
  205. package/dist/util/github/graphql/datasource-fetcher.js +5 -4
  206. package/dist/util/github/graphql/datasource-fetcher.js.map +1 -1
  207. package/dist/util/http/cache/package-http-cache-provider.js.map +1 -1
  208. package/dist/util/http/github.js +3 -2
  209. package/dist/util/http/github.js.map +1 -1
  210. package/dist/util/http/http.d.ts +1 -1
  211. package/dist/util/http/http.js.map +1 -1
  212. package/dist/util/result.d.ts +8 -8
  213. package/dist/util/result.js +1 -1
  214. package/dist/util/result.js.map +1 -1
  215. package/dist/util/url.js +2 -2
  216. package/dist/util/url.js.map +1 -1
  217. package/dist/workers/global/config/parse/cli.js +18 -20
  218. package/dist/workers/global/config/parse/cli.js.map +1 -1
  219. package/dist/workers/global/config/parse/env.js +3 -5
  220. package/dist/workers/global/config/parse/env.js.map +1 -1
  221. package/dist/workers/repository/config-migration/branch/index.js +3 -5
  222. package/dist/workers/repository/config-migration/branch/index.js.map +1 -1
  223. package/dist/workers/repository/init/merge.js +2 -3
  224. package/dist/workers/repository/init/merge.js.map +1 -1
  225. package/dist/workers/repository/onboarding/branch/check.js +7 -9
  226. package/dist/workers/repository/onboarding/branch/check.js.map +1 -1
  227. package/dist/workers/repository/onboarding/branch/index.js +4 -8
  228. package/dist/workers/repository/onboarding/branch/index.js.map +1 -1
  229. package/dist/workers/repository/onboarding/branch/onboarding-branch-cache.js +2 -2
  230. package/dist/workers/repository/onboarding/branch/onboarding-branch-cache.js.map +1 -1
  231. package/dist/workers/repository/process/extract-update.js.map +1 -1
  232. package/dist/workers/repository/process/fetch.js.map +1 -1
  233. package/dist/workers/repository/process/libyear.js +1 -3
  234. package/dist/workers/repository/process/libyear.js.map +1 -1
  235. package/dist/workers/repository/process/lookup/filter-checks.js +9 -11
  236. package/dist/workers/repository/process/lookup/filter-checks.js.map +1 -1
  237. package/dist/workers/repository/process/lookup/index.js +5 -8
  238. package/dist/workers/repository/process/lookup/index.js.map +1 -1
  239. package/dist/workers/repository/process/vulnerabilities.js +3 -3
  240. package/dist/workers/repository/process/vulnerabilities.js.map +1 -1
  241. package/dist/workers/repository/reconfigure/index.js +3 -5
  242. package/dist/workers/repository/reconfigure/index.js.map +1 -1
  243. package/dist/workers/repository/update/branch/bump-versions.js +1 -1
  244. package/dist/workers/repository/update/branch/bump-versions.js.map +1 -1
  245. package/dist/workers/repository/update/branch/get-updated.js +3 -5
  246. package/dist/workers/repository/update/branch/get-updated.js.map +1 -1
  247. package/dist/workers/repository/update/pr/body/updates-table.js +1 -3
  248. package/dist/workers/repository/update/pr/body/updates-table.js.map +1 -1
  249. package/dist/workers/repository/update/pr/changelog/common.js +1 -1
  250. package/dist/workers/repository/update/pr/changelog/common.js.map +1 -1
  251. package/dist/workers/repository/update/pr/index.js +6 -7
  252. package/dist/workers/repository/update/pr/index.js.map +1 -1
  253. package/dist/workers/repository/updates/flatten.js +1 -1
  254. package/dist/workers/repository/updates/flatten.js.map +1 -1
  255. package/dist/workers/repository/updates/generate.js +1 -1
  256. package/dist/workers/repository/updates/generate.js.map +1 -1
  257. package/package.json +2 -2
  258. package/renovate-schema.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","names":["pep440Versioning.isValid","pep440Versioning.id","poetryVersioning.isValid","poetryVersioning.id","deepmerge"],"sources":["../../../../lib/modules/manager/poetry/schema.ts"],"sourcesContent":["import deepmerge from 'deepmerge';\nimport { z } from 'zod/v4';\nimport { logger } from '../../../logger/index.ts';\nimport { coerceArray } from '../../../util/array.ts';\nimport { getEnv } from '../../../util/env.ts';\nimport { parseGitUrl } from '../../../util/git/url.ts';\nimport {\n LooseArray,\n LooseRecord,\n Toml,\n withDepType,\n} from '../../../util/schema-utils/index.ts';\nimport { uniq } from '../../../util/uniq.ts';\nimport { GitRefsDatasource } from '../../datasource/git-refs/index.ts';\nimport { GitTagsDatasource } from '../../datasource/git-tags/index.ts';\nimport { GithubTagsDatasource } from '../../datasource/github-tags/index.ts';\nimport { GitlabTagsDatasource } from '../../datasource/gitlab-tags/index.ts';\nimport { normalizePythonDepName } from '../../datasource/pypi/common.ts';\nimport { PypiDatasource } from '../../datasource/pypi/index.ts';\nimport * as gitVersioning from '../../versioning/git/index.ts';\nimport * as pep440Versioning from '../../versioning/pep440/index.ts';\nimport * as poetryVersioning from '../../versioning/poetry/index.ts';\nimport { DependencyGroup, ProjectSection } from '../pep621/schema.ts';\nimport { depTypes, pep508ToPackageDependency } from '../pep621/utils.ts';\nimport type { PackageDependency, PackageFileContent } from '../types.ts';\n\nconst PoetryOptionalDependencyMixin = z\n .object({\n optional: z.boolean().optional().catch(false),\n })\n .transform(\n ({ optional }): PackageDependency =>\n optional ? { depType: 'extras' } : {},\n );\n\nconst PoetryPathDependency = z\n .object({\n path: z.string(),\n version: z.string().optional().catch(undefined),\n })\n .transform(({ version }): PackageDependency => {\n const dep: PackageDependency = {\n datasource: PypiDatasource.id,\n skipReason: 'path-dependency',\n };\n\n if (version) {\n dep.currentValue = version;\n }\n\n return dep;\n })\n .and(PoetryOptionalDependencyMixin);\n\nconst PoetryGitDependency = z\n .object({\n git: z.string(),\n tag: z.string().optional().catch(undefined),\n version: z.string().optional().catch(undefined),\n branch: z.string().optional().catch(undefined),\n rev: z.string().optional().catch(undefined),\n })\n .transform(({ git, tag, version, branch, rev }): PackageDependency => {\n if (tag) {\n const { source, owner, name } = parseGitUrl(git);\n const repo = `${owner}/${name}`;\n if (source === 'github.com') {\n return {\n datasource: GithubTagsDatasource.id,\n currentValue: tag,\n packageName: repo,\n };\n } else if (source === 'gitlab.com') {\n return {\n datasource: GitlabTagsDatasource.id,\n currentValue: tag,\n packageName: repo,\n };\n } else {\n return {\n datasource: GitTagsDatasource.id,\n currentValue: tag,\n packageName: git,\n };\n }\n }\n\n if (rev) {\n return {\n datasource: GitRefsDatasource.id,\n currentValue: branch,\n currentDigest: rev,\n replaceString: rev,\n packageName: git,\n };\n }\n\n return {\n datasource: GitRefsDatasource.id,\n currentValue: version,\n packageName: git,\n skipReason: 'git-dependency',\n };\n })\n .and(PoetryOptionalDependencyMixin);\n\nconst PoetryPypiDependency = z.union([\n z\n .object({ version: z.string().optional(), source: z.string().optional() })\n .transform(({ version: currentValue, source }): PackageDependency => {\n const managerData = source ? { sourceName: source.toLowerCase() } : {};\n\n if (!currentValue) {\n return { datasource: PypiDatasource.id, managerData };\n }\n\n return {\n datasource: PypiDatasource.id,\n managerData: { ...managerData, nestedVersion: true },\n currentValue,\n };\n })\n .and(PoetryOptionalDependencyMixin),\n z.string().transform(\n (version): PackageDependency => ({\n datasource: PypiDatasource.id,\n currentValue: version,\n managerData: { nestedVersion: false },\n }),\n ),\n]);\n\nconst PoetryArrayDependency = z.array(z.unknown()).transform(\n (): PackageDependency => ({\n datasource: PypiDatasource.id,\n skipReason: 'multiple-constraint-dep',\n }),\n);\n\nconst PoetryDependency = z.union([\n PoetryPathDependency,\n PoetryGitDependency,\n PoetryPypiDependency,\n PoetryArrayDependency,\n]);\n\nexport const PoetryDependencies = LooseRecord(\n z.string(),\n PoetryDependency.transform((dep) => {\n if (dep.skipReason) {\n return dep;\n }\n\n if (dep.datasource === GitRefsDatasource.id && dep.currentDigest) {\n dep.versioning = gitVersioning.id;\n return dep;\n }\n\n // istanbul ignore if: normaly should not happen\n if (!dep.currentValue) {\n dep.skipReason = 'unspecified-version';\n return dep;\n }\n\n if (pep440Versioning.isValid(dep.currentValue)) {\n dep.versioning = pep440Versioning.id;\n return dep;\n }\n\n if (poetryVersioning.isValid(dep.currentValue)) {\n dep.versioning = poetryVersioning.id;\n return dep;\n }\n\n dep.skipReason = 'invalid-version';\n return dep;\n }),\n).transform((record) => {\n const deps: PackageDependency[] = [];\n for (const [depName, dep] of Object.entries(record)) {\n dep.depName = depName;\n if (!dep.packageName) {\n const packageName = normalizePythonDepName(depName);\n if (depName !== packageName) {\n dep.packageName = packageName;\n }\n }\n deps.push(dep);\n }\n return deps;\n});\n\nexport const PoetryGroupDependencies = LooseRecord(\n z.string(),\n z\n .object({ dependencies: PoetryDependencies })\n .transform(({ dependencies }) => dependencies),\n).transform((record) => {\n const deps: PackageDependency[] = [];\n for (const [name, val] of Object.entries(record)) {\n for (const dep of Object.values(val)) {\n dep.depType = name;\n deps.push(dep);\n }\n }\n return deps;\n});\n\nconst PoetrySourceOrder = [\n 'default',\n 'primary',\n 'secondary',\n 'supplemental',\n 'explicit',\n] as const;\n\nexport const PoetrySource = z.object({\n name: z.string().toLowerCase(),\n url: z.string().optional(),\n priority: z.enum(PoetrySourceOrder).default('primary'),\n});\nexport type PoetrySource = z.infer<typeof PoetrySource>;\n\nexport const PoetrySources = LooseArray(PoetrySource, {\n onError: ({ error: err }) => {\n logger.debug({ err }, 'Poetry: error parsing sources array');\n },\n})\n .transform((sources) => {\n const pypiUrl = getEnv().PIP_INDEX_URL ?? 'https://pypi.org/pypi/';\n const result: PoetrySource[] = [];\n\n let overridesPyPi = false;\n let hasDefaultSource = false;\n let hasPrimarySource = false;\n for (const source of sources) {\n if (source.name === 'pypi') {\n source.url = pypiUrl;\n overridesPyPi = true;\n }\n\n if (!source.url) {\n continue;\n }\n\n if (source.priority === 'default') {\n hasDefaultSource = true;\n } else if (source.priority === 'primary') {\n hasPrimarySource = true;\n }\n\n result.push(source);\n }\n\n if (sources.length && !hasDefaultSource && !overridesPyPi) {\n result.push({\n name: 'pypi',\n priority: hasPrimarySource ? 'secondary' : 'default',\n url: pypiUrl,\n });\n }\n\n result.sort(\n (a, b) =>\n PoetrySourceOrder.indexOf(a.priority) -\n PoetrySourceOrder.indexOf(b.priority),\n );\n\n return result;\n })\n .catch([]);\n\nexport const PoetrySection = z.object({\n version: z.string().optional().catch(undefined),\n dependencies: withDepType(\n PoetryDependencies,\n 'dependencies',\n false,\n ).optional(),\n 'dev-dependencies': withDepType(\n PoetryDependencies,\n 'dev-dependencies',\n ).optional(),\n group: PoetryGroupDependencies.optional(),\n source: PoetrySources,\n});\n\nexport type PoetrySection = z.infer<typeof PoetrySection>;\n\nconst BuildSystemRequires = LooseArray(\n z\n .string()\n .nonempty()\n .transform((val) =>\n pep508ToPackageDependency(depTypes.buildSystemRequires, val),\n )\n .refine((dep) => dep !== null),\n).catch([]);\n\nexport const PoetryPyProject = Toml.pipe(\n z\n .object({\n project: ProjectSection.optional().catch(undefined),\n tool: z.object({ poetry: PoetrySection }).optional().catch(undefined),\n 'dependency-groups': DependencyGroup(depTypes.dependencyGroups).catch([]),\n 'build-system': z\n .object({\n 'build-backend': z.string().refine(\n // https://python-poetry.org/docs/pyproject/#poetry-and-pep-517\n (buildBackend) =>\n buildBackend === 'poetry.masonry.api' ||\n buildBackend === 'poetry.core.masonry.api',\n ),\n requires: BuildSystemRequires,\n })\n .transform(({ requires }) => {\n const req = requires.find(\n ({ depName }) =>\n depName === 'poetry' ||\n depName === 'poetry_core' ||\n depName === 'poetry-core',\n );\n return {\n poetryRequirement: req?.currentValue,\n requires,\n };\n })\n .optional()\n .catch(undefined),\n })\n .transform((pyproject) => {\n const {\n project,\n tool,\n 'build-system': buildSystem,\n 'dependency-groups': dependencyGroups,\n } = pyproject;\n\n const deps: PackageDependency[] = [];\n const projectDependencies = coerceArray(project?.dependencies);\n const projectOptionalDependencies = coerceArray(\n project?.['optional-dependencies'],\n );\n\n const projectDepsByName: Record<string, PackageDependency> = {};\n for (const dep of [\n ...projectDependencies,\n ...dependencyGroups,\n ...projectOptionalDependencies,\n ]) {\n projectDepsByName[dep.depName!] = dep;\n }\n\n if (buildSystem?.requires) {\n deps.push(...buildSystem.requires);\n }\n\n const poetryDependencies = coerceArray(tool?.poetry?.dependencies);\n\n const poetryDevDependencies = coerceArray(\n tool?.poetry?.['dev-dependencies'],\n );\n\n const poetryGroupDependencies = coerceArray(tool?.poetry?.group);\n\n for (const poetryDep of [\n ...poetryDependencies,\n ...poetryDevDependencies,\n ...poetryGroupDependencies,\n ]) {\n const depName = poetryDep.depName;\n const projectDep = depName && projectDepsByName[depName];\n // When the same dep exists in project.dependencies or dependency-groups,\n // Poetry just uses the Poetry dep to enrich the project dependency.\n if (projectDep) {\n const mergedDep = deepmerge<PackageDependency>(poetryDep, projectDep);\n // Poetry supports specifying the version in project.dependencies and\n // tool.poetry.dependencies *at the same time* and only errors if both\n // are not compatible - we require a single constraint per dependency.\n if (projectDep.currentValue && poetryDep.currentValue) {\n mergedDep.skipReason = 'invalid-dependency-specification';\n }\n // When a skipReason is 'unspecified-version', we defer to the other skipReason,\n // so that 'unspecified-version' only persists if both deps have no version.\n if (mergedDep.skipReason === 'unspecified-version') {\n if (poetryDep.skipReason === 'unspecified-version') {\n mergedDep.skipReason = projectDep.skipReason;\n } else {\n mergedDep.skipReason = poetryDep.skipReason;\n }\n }\n projectDepsByName[depName] = mergedDep;\n } else {\n deps.push(poetryDep);\n }\n }\n\n deps.push(...Object.values(projectDepsByName));\n\n const packageFileVersion = tool?.poetry?.version;\n const packageFileContent: PackageFileContent = {\n deps,\n packageFileVersion,\n };\n\n const sourceUrls = tool?.poetry?.source;\n if (sourceUrls) {\n for (const dep of deps) {\n if (dep.managerData?.sourceName) {\n const sourceUrl = sourceUrls.find(\n ({ name }) => name === dep.managerData?.sourceName,\n );\n if (sourceUrl?.url) {\n dep.registryUrls = [sourceUrl.url];\n }\n }\n }\n\n const sourceUrlsFiltered = sourceUrls.filter(\n ({ priority }) => priority !== 'explicit',\n );\n if (sourceUrlsFiltered.length) {\n packageFileContent.registryUrls = uniq(\n sourceUrlsFiltered.map(({ url }) => url!),\n );\n }\n }\n\n return {\n packageFileContent,\n poetryRequirement: buildSystem?.poetryRequirement,\n };\n }),\n);\n\nexport type PoetryPyProject = z.infer<typeof PoetryPyProject>;\n\nconst poetryConstraint: Record<string, string> = {\n '1.0': '<1.1.0',\n '1.1': '<1.3.0',\n '2.0': '>=1.3.0 <1.4.0', // 1.4.0 introduced embedding of the poetry version in lock file header\n};\n\nexport const Lockfile = Toml.pipe(\n z.object({\n package: LooseArray(\n z\n .object({\n name: z.string(),\n version: z.string(),\n })\n .transform(({ name, version }): [string, string] => [name, version]),\n )\n .transform((entries) => Object.fromEntries(entries))\n .catch({}),\n metadata: z\n .object({\n 'lock-version': z\n .string()\n .transform((lockVersion) => poetryConstraint[lockVersion])\n .optional()\n .catch(undefined),\n 'python-versions': z.string().optional().catch(undefined),\n })\n .transform(\n ({\n 'lock-version': poetryConstraint,\n 'python-versions': pythonVersions,\n }) => ({\n poetryConstraint,\n pythonVersions,\n }),\n )\n .catch({\n poetryConstraint: undefined,\n pythonVersions: undefined,\n }),\n }),\n).transform(\n ({ package: lock, metadata: { poetryConstraint, pythonVersions } }) => ({\n lock,\n poetryConstraint,\n pythonVersions,\n }),\n);\n"],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","names":["pep440Versioning.isValid","pep440Versioning.id","poetryVersioning.isValid","poetryVersioning.id","deepmerge"],"sources":["../../../../lib/modules/manager/poetry/schema.ts"],"sourcesContent":["import deepmerge from 'deepmerge';\nimport { z } from 'zod/v4';\nimport { logger } from '../../../logger/index.ts';\nimport { coerceArray } from '../../../util/array.ts';\nimport { getEnv } from '../../../util/env.ts';\nimport { parseGitUrl } from '../../../util/git/url.ts';\nimport {\n LooseArray,\n LooseRecord,\n Toml,\n withDepType,\n} from '../../../util/schema-utils/index.ts';\nimport { uniq } from '../../../util/uniq.ts';\nimport { GitRefsDatasource } from '../../datasource/git-refs/index.ts';\nimport { GitTagsDatasource } from '../../datasource/git-tags/index.ts';\nimport { GithubTagsDatasource } from '../../datasource/github-tags/index.ts';\nimport { GitlabTagsDatasource } from '../../datasource/gitlab-tags/index.ts';\nimport { normalizePythonDepName } from '../../datasource/pypi/common.ts';\nimport { PypiDatasource } from '../../datasource/pypi/index.ts';\nimport * as gitVersioning from '../../versioning/git/index.ts';\nimport * as pep440Versioning from '../../versioning/pep440/index.ts';\nimport * as poetryVersioning from '../../versioning/poetry/index.ts';\nimport { DependencyGroup, ProjectSection } from '../pep621/schema.ts';\nimport { depTypes, pep508ToPackageDependency } from '../pep621/utils.ts';\nimport type { PackageDependency, PackageFileContent } from '../types.ts';\n\nconst PoetryOptionalDependencyMixin = z\n .object({\n optional: z.boolean().optional().catch(false),\n })\n .transform(\n ({ optional }): PackageDependency =>\n optional ? { depType: 'extras' } : {},\n );\n\nconst PoetryPathDependency = z\n .object({\n path: z.string(),\n version: z.string().optional().catch(undefined),\n })\n .transform(({ version }): PackageDependency => {\n const dep: PackageDependency = {\n datasource: PypiDatasource.id,\n skipReason: 'path-dependency',\n };\n\n if (version) {\n dep.currentValue = version;\n }\n\n return dep;\n })\n .and(PoetryOptionalDependencyMixin);\n\nconst PoetryGitDependency = z\n .object({\n git: z.string(),\n tag: z.string().optional().catch(undefined),\n version: z.string().optional().catch(undefined),\n branch: z.string().optional().catch(undefined),\n rev: z.string().optional().catch(undefined),\n })\n .transform(({ git, tag, version, branch, rev }): PackageDependency => {\n if (tag) {\n const { source, owner, name } = parseGitUrl(git);\n const repo = `${owner}/${name}`;\n if (source === 'github.com') {\n return {\n datasource: GithubTagsDatasource.id,\n currentValue: tag,\n packageName: repo,\n };\n }\n if (source === 'gitlab.com') {\n return {\n datasource: GitlabTagsDatasource.id,\n currentValue: tag,\n packageName: repo,\n };\n }\n return {\n datasource: GitTagsDatasource.id,\n currentValue: tag,\n packageName: git,\n };\n }\n\n if (rev) {\n return {\n datasource: GitRefsDatasource.id,\n currentValue: branch,\n currentDigest: rev,\n replaceString: rev,\n packageName: git,\n };\n }\n\n return {\n datasource: GitRefsDatasource.id,\n currentValue: version,\n packageName: git,\n skipReason: 'git-dependency',\n };\n })\n .and(PoetryOptionalDependencyMixin);\n\nconst PoetryPypiDependency = z.union([\n z\n .object({ version: z.string().optional(), source: z.string().optional() })\n .transform(({ version: currentValue, source }): PackageDependency => {\n const managerData = source ? { sourceName: source.toLowerCase() } : {};\n\n if (!currentValue) {\n return { datasource: PypiDatasource.id, managerData };\n }\n\n return {\n datasource: PypiDatasource.id,\n managerData: { ...managerData, nestedVersion: true },\n currentValue,\n };\n })\n .and(PoetryOptionalDependencyMixin),\n z.string().transform(\n (version): PackageDependency => ({\n datasource: PypiDatasource.id,\n currentValue: version,\n managerData: { nestedVersion: false },\n }),\n ),\n]);\n\nconst PoetryArrayDependency = z.array(z.unknown()).transform(\n (): PackageDependency => ({\n datasource: PypiDatasource.id,\n skipReason: 'multiple-constraint-dep',\n }),\n);\n\nconst PoetryDependency = z.union([\n PoetryPathDependency,\n PoetryGitDependency,\n PoetryPypiDependency,\n PoetryArrayDependency,\n]);\n\nexport const PoetryDependencies = LooseRecord(\n z.string(),\n PoetryDependency.transform((dep) => {\n if (dep.skipReason) {\n return dep;\n }\n\n if (dep.datasource === GitRefsDatasource.id && dep.currentDigest) {\n dep.versioning = gitVersioning.id;\n return dep;\n }\n\n // istanbul ignore if: normaly should not happen\n if (!dep.currentValue) {\n dep.skipReason = 'unspecified-version';\n return dep;\n }\n\n if (pep440Versioning.isValid(dep.currentValue)) {\n dep.versioning = pep440Versioning.id;\n return dep;\n }\n\n if (poetryVersioning.isValid(dep.currentValue)) {\n dep.versioning = poetryVersioning.id;\n return dep;\n }\n\n dep.skipReason = 'invalid-version';\n return dep;\n }),\n).transform((record) => {\n const deps: PackageDependency[] = [];\n for (const [depName, dep] of Object.entries(record)) {\n dep.depName = depName;\n if (!dep.packageName) {\n const packageName = normalizePythonDepName(depName);\n if (depName !== packageName) {\n dep.packageName = packageName;\n }\n }\n deps.push(dep);\n }\n return deps;\n});\n\nexport const PoetryGroupDependencies = LooseRecord(\n z.string(),\n z\n .object({ dependencies: PoetryDependencies })\n .transform(({ dependencies }) => dependencies),\n).transform((record) => {\n const deps: PackageDependency[] = [];\n for (const [name, val] of Object.entries(record)) {\n for (const dep of Object.values(val)) {\n dep.depType = name;\n deps.push(dep);\n }\n }\n return deps;\n});\n\nconst PoetrySourceOrder = [\n 'default',\n 'primary',\n 'secondary',\n 'supplemental',\n 'explicit',\n] as const;\n\nexport const PoetrySource = z.object({\n name: z.string().toLowerCase(),\n url: z.string().optional(),\n priority: z.enum(PoetrySourceOrder).default('primary'),\n});\nexport type PoetrySource = z.infer<typeof PoetrySource>;\n\nexport const PoetrySources = LooseArray(PoetrySource, {\n onError: ({ error: err }) => {\n logger.debug({ err }, 'Poetry: error parsing sources array');\n },\n})\n .transform((sources) => {\n const pypiUrl = getEnv().PIP_INDEX_URL ?? 'https://pypi.org/pypi/';\n const result: PoetrySource[] = [];\n\n let overridesPyPi = false;\n let hasDefaultSource = false;\n let hasPrimarySource = false;\n for (const source of sources) {\n if (source.name === 'pypi') {\n source.url = pypiUrl;\n overridesPyPi = true;\n }\n\n if (!source.url) {\n continue;\n }\n\n if (source.priority === 'default') {\n hasDefaultSource = true;\n } else if (source.priority === 'primary') {\n hasPrimarySource = true;\n }\n\n result.push(source);\n }\n\n if (sources.length && !hasDefaultSource && !overridesPyPi) {\n result.push({\n name: 'pypi',\n priority: hasPrimarySource ? 'secondary' : 'default',\n url: pypiUrl,\n });\n }\n\n result.sort(\n (a, b) =>\n PoetrySourceOrder.indexOf(a.priority) -\n PoetrySourceOrder.indexOf(b.priority),\n );\n\n return result;\n })\n .catch([]);\n\nexport const PoetrySection = z.object({\n version: z.string().optional().catch(undefined),\n dependencies: withDepType(\n PoetryDependencies,\n 'dependencies',\n false,\n ).optional(),\n 'dev-dependencies': withDepType(\n PoetryDependencies,\n 'dev-dependencies',\n ).optional(),\n group: PoetryGroupDependencies.optional(),\n source: PoetrySources,\n});\n\nexport type PoetrySection = z.infer<typeof PoetrySection>;\n\nconst BuildSystemRequires = LooseArray(\n z\n .string()\n .nonempty()\n .transform((val) =>\n pep508ToPackageDependency(depTypes.buildSystemRequires, val),\n )\n .refine((dep) => dep !== null),\n).catch([]);\n\nexport const PoetryPyProject = Toml.pipe(\n z\n .object({\n project: ProjectSection.optional().catch(undefined),\n tool: z.object({ poetry: PoetrySection }).optional().catch(undefined),\n 'dependency-groups': DependencyGroup(depTypes.dependencyGroups).catch([]),\n 'build-system': z\n .object({\n 'build-backend': z.string().refine(\n // https://python-poetry.org/docs/pyproject/#poetry-and-pep-517\n (buildBackend) =>\n buildBackend === 'poetry.masonry.api' ||\n buildBackend === 'poetry.core.masonry.api',\n ),\n requires: BuildSystemRequires,\n })\n .transform(({ requires }) => {\n const req = requires.find(\n ({ depName }) =>\n depName === 'poetry' ||\n depName === 'poetry_core' ||\n depName === 'poetry-core',\n );\n return {\n poetryRequirement: req?.currentValue,\n requires,\n };\n })\n .optional()\n .catch(undefined),\n })\n .transform((pyproject) => {\n const {\n project,\n tool,\n 'build-system': buildSystem,\n 'dependency-groups': dependencyGroups,\n } = pyproject;\n\n const deps: PackageDependency[] = [];\n const projectDependencies = coerceArray(project?.dependencies);\n const projectOptionalDependencies = coerceArray(\n project?.['optional-dependencies'],\n );\n\n const projectDepsByName: Record<string, PackageDependency> = {};\n for (const dep of [\n ...projectDependencies,\n ...dependencyGroups,\n ...projectOptionalDependencies,\n ]) {\n projectDepsByName[dep.depName!] = dep;\n }\n\n if (buildSystem?.requires) {\n deps.push(...buildSystem.requires);\n }\n\n const poetryDependencies = coerceArray(tool?.poetry?.dependencies);\n\n const poetryDevDependencies = coerceArray(\n tool?.poetry?.['dev-dependencies'],\n );\n\n const poetryGroupDependencies = coerceArray(tool?.poetry?.group);\n\n for (const poetryDep of [\n ...poetryDependencies,\n ...poetryDevDependencies,\n ...poetryGroupDependencies,\n ]) {\n const depName = poetryDep.depName;\n const projectDep = depName && projectDepsByName[depName];\n // When the same dep exists in project.dependencies or dependency-groups,\n // Poetry just uses the Poetry dep to enrich the project dependency.\n if (projectDep) {\n const mergedDep = deepmerge<PackageDependency>(poetryDep, projectDep);\n // Poetry supports specifying the version in project.dependencies and\n // tool.poetry.dependencies *at the same time* and only errors if both\n // are not compatible - we require a single constraint per dependency.\n if (projectDep.currentValue && poetryDep.currentValue) {\n mergedDep.skipReason = 'invalid-dependency-specification';\n }\n // When a skipReason is 'unspecified-version', we defer to the other skipReason,\n // so that 'unspecified-version' only persists if both deps have no version.\n if (mergedDep.skipReason === 'unspecified-version') {\n if (poetryDep.skipReason === 'unspecified-version') {\n mergedDep.skipReason = projectDep.skipReason;\n } else {\n mergedDep.skipReason = poetryDep.skipReason;\n }\n }\n projectDepsByName[depName] = mergedDep;\n } else {\n deps.push(poetryDep);\n }\n }\n\n deps.push(...Object.values(projectDepsByName));\n\n const packageFileVersion = tool?.poetry?.version;\n const packageFileContent: PackageFileContent = {\n deps,\n packageFileVersion,\n };\n\n const sourceUrls = tool?.poetry?.source;\n if (sourceUrls) {\n for (const dep of deps) {\n if (dep.managerData?.sourceName) {\n const sourceUrl = sourceUrls.find(\n ({ name }) => name === dep.managerData?.sourceName,\n );\n if (sourceUrl?.url) {\n dep.registryUrls = [sourceUrl.url];\n }\n }\n }\n\n const sourceUrlsFiltered = sourceUrls.filter(\n ({ priority }) => priority !== 'explicit',\n );\n if (sourceUrlsFiltered.length) {\n packageFileContent.registryUrls = uniq(\n sourceUrlsFiltered.map(({ url }) => url!),\n );\n }\n }\n\n return {\n packageFileContent,\n poetryRequirement: buildSystem?.poetryRequirement,\n };\n }),\n);\n\nexport type PoetryPyProject = z.infer<typeof PoetryPyProject>;\n\nconst poetryConstraint: Record<string, string> = {\n '1.0': '<1.1.0',\n '1.1': '<1.3.0',\n '2.0': '>=1.3.0 <1.4.0', // 1.4.0 introduced embedding of the poetry version in lock file header\n};\n\nexport const Lockfile = Toml.pipe(\n z.object({\n package: LooseArray(\n z\n .object({\n name: z.string(),\n version: z.string(),\n })\n .transform(({ name, version }): [string, string] => [name, version]),\n )\n .transform((entries) => Object.fromEntries(entries))\n .catch({}),\n metadata: z\n .object({\n 'lock-version': z\n .string()\n .transform((lockVersion) => poetryConstraint[lockVersion])\n .optional()\n .catch(undefined),\n 'python-versions': z.string().optional().catch(undefined),\n })\n .transform(\n ({\n 'lock-version': poetryConstraint,\n 'python-versions': pythonVersions,\n }) => ({\n poetryConstraint,\n pythonVersions,\n }),\n )\n .catch({\n poetryConstraint: undefined,\n pythonVersions: undefined,\n }),\n }),\n).transform(\n ({ package: lock, metadata: { poetryConstraint, pythonVersions } }) => ({\n lock,\n poetryConstraint,\n pythonVersions,\n }),\n);\n"],"mappings":"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"}
@@ -63,12 +63,10 @@ async function updateArtifacts({ packageFileName, updatedDeps, newPackageFileCon
63
63
  }
64
64
  function getExecCommand(toolName, updatedDeps, isLockFileMaintenance) {
65
65
  if (isLockFileMaintenance) return `${toolName} pub upgrade`;
66
- else {
67
- const depNames = updatedDeps.map((dep) => dep.depName).filter(isString);
68
- if (depNames.length === 1 && SDK_NAMES.includes(depNames[0])) return `${toolName} ${PUB_GET_COMMAND}`;
69
- else if (depNames.length === 2 && depNames.filter((depName) => SDK_NAMES.includes(depName)).length === 2) return `flutter ${PUB_GET_COMMAND}`;
70
- else return `${toolName} pub upgrade ${depNames.filter((depName) => !SDK_NAMES.includes(depName)).map(quote).join(" ")}`;
71
- }
66
+ const depNames = updatedDeps.map((dep) => dep.depName).filter(isString);
67
+ if (depNames.length === 1 && SDK_NAMES.includes(depNames[0])) return `${toolName} ${PUB_GET_COMMAND}`;
68
+ if (depNames.length === 2 && depNames.filter((depName) => SDK_NAMES.includes(depName)).length === 2) return `flutter ${PUB_GET_COMMAND}`;
69
+ return `${toolName} pub upgrade ${depNames.filter((depName) => !SDK_NAMES.includes(depName)).map(quote).join(" ")}`;
72
70
  }
73
71
  //#endregion
74
72
  export { updateArtifacts };
@@ -1 +1 @@
1
- {"version":3,"file":"artifacts.js","names":[],"sources":["../../../../lib/modules/manager/pub/artifacts.ts"],"sourcesContent":["import { isEmptyArray, isString } from '@sindresorhus/is';\nimport { quote } from 'shlex';\nimport { TEMPORARY_ERROR } from '../../../constants/error-messages.ts';\nimport { logger } from '../../../logger/index.ts';\nimport { exec } from '../../../util/exec/index.ts';\nimport type { ExecOptions } from '../../../util/exec/types.ts';\nimport {\n getSiblingFileName,\n readLocalFile,\n writeLocalFile,\n} from '../../../util/fs/index.ts';\nimport type {\n UpdateArtifact,\n UpdateArtifactsResult,\n Upgrade,\n} from '../types.ts';\nimport { parsePubspec, parsePubspecLock } from './utils.ts';\n\nconst SDK_NAMES = ['dart', 'flutter'];\nconst PUB_GET_COMMAND = 'pub get --no-precompile';\n\nexport async function updateArtifacts({\n packageFileName,\n updatedDeps,\n newPackageFileContent,\n config,\n}: UpdateArtifact): Promise<UpdateArtifactsResult[] | null> {\n logger.debug(`pub.updateArtifacts(${packageFileName})`);\n const { isLockFileMaintenance } = config;\n\n if (isEmptyArray(updatedDeps) && !isLockFileMaintenance) {\n logger.debug('No updated pub deps - returning null');\n return null;\n }\n\n const lockFileName = getSiblingFileName(packageFileName, 'pubspec.lock');\n const oldLockFileContent = await readLocalFile(lockFileName, 'utf8');\n if (!oldLockFileContent) {\n logger.debug('No pubspec.lock found');\n return null;\n }\n\n try {\n await writeLocalFile(packageFileName, newPackageFileContent);\n\n const isFlutter = newPackageFileContent.includes('sdk: flutter');\n const toolName = isFlutter ? 'flutter' : 'dart';\n const cmd = getExecCommand(toolName, updatedDeps, isLockFileMaintenance);\n\n let constraint = config.constraints?.[toolName];\n if (!constraint) {\n const pubspec = parsePubspec(packageFileName, newPackageFileContent);\n const pubspecToolName = isFlutter ? 'flutter' : 'sdk';\n constraint = pubspec?.environment[pubspecToolName];\n\n if (!constraint) {\n const pubspecLock = parsePubspecLock(lockFileName, oldLockFileContent);\n constraint = pubspecLock?.sdks[toolName];\n }\n }\n\n const execOptions: ExecOptions = {\n cwdFile: packageFileName,\n docker: {},\n toolConstraints: [\n {\n toolName,\n constraint,\n },\n ],\n };\n\n await exec(cmd, execOptions);\n const newLockFileContent = await readLocalFile(lockFileName, 'utf8');\n if (oldLockFileContent === newLockFileContent) {\n return null;\n }\n return [\n {\n file: {\n type: 'addition',\n path: lockFileName,\n contents: newLockFileContent,\n },\n },\n ];\n } catch (err) {\n // istanbul ignore if\n if (err.message === TEMPORARY_ERROR) {\n throw err;\n }\n logger.warn({ lockfile: lockFileName, err }, `Failed to update lock file`);\n return [\n {\n artifactError: {\n fileName: lockFileName,\n stderr: err.message,\n },\n },\n ];\n }\n}\n\nfunction getExecCommand(\n toolName: string,\n updatedDeps: Upgrade<Record<string, unknown>>[],\n isLockFileMaintenance: boolean | undefined,\n): string {\n if (isLockFileMaintenance) {\n return `${toolName} pub upgrade`;\n } else {\n const depNames = updatedDeps.map((dep) => dep.depName).filter(isString);\n if (depNames.length === 1 && SDK_NAMES.includes(depNames[0])) {\n return `${toolName} ${PUB_GET_COMMAND}`;\n }\n // If there are two updated dependencies and both of them are SDK updates (Dart and Flutter),\n // we use Flutter over Dart to run `pub get` as it is a Flutter project.\n else if (\n depNames.length === 2 &&\n depNames.filter((depName) => SDK_NAMES.includes(depName)).length === 2\n ) {\n return `flutter ${PUB_GET_COMMAND}`;\n } else {\n const depNamesCmd = depNames\n .filter((depName) => !SDK_NAMES.includes(depName))\n .map(quote)\n .join(' ');\n return `${toolName} pub upgrade ${depNamesCmd}`;\n }\n }\n}\n"],"mappings":";;;;;;;;AAkBA,MAAM,YAAY,CAAC,QAAQ,SAAS;AACpC,MAAM,kBAAkB;AAExB,eAAsB,gBAAgB,EACpC,iBACA,aACA,uBACA,UAC0D;CAC1D,OAAO,MAAM,uBAAuB,gBAAgB,EAAE;CACtD,MAAM,EAAE,0BAA0B;CAElC,IAAI,aAAa,WAAW,KAAK,CAAC,uBAAuB;EACvD,OAAO,MAAM,sCAAsC;EACnD,OAAO;CACT;CAEA,MAAM,eAAe,mBAAmB,iBAAiB,cAAc;CACvE,MAAM,qBAAqB,MAAM,cAAc,cAAc,MAAM;CACnE,IAAI,CAAC,oBAAoB;EACvB,OAAO,MAAM,uBAAuB;EACpC,OAAO;CACT;CAEA,IAAI;EACF,MAAM,eAAe,iBAAiB,qBAAqB;EAE3D,MAAM,YAAY,sBAAsB,SAAS,cAAc;EAC/D,MAAM,WAAW,YAAY,YAAY;EACzC,MAAM,MAAM,eAAe,UAAU,aAAa,qBAAqB;EAEvE,IAAI,aAAa,OAAO,cAAc;EACtC,IAAI,CAAC,YAAY;GACf,MAAM,UAAU,aAAa,iBAAiB,qBAAqB;GACnE,MAAM,kBAAkB,YAAY,YAAY;GAChD,aAAa,SAAS,YAAY;GAElC,IAAI,CAAC,YAEH,aADoB,iBAAiB,cAAc,kBAC5B,CAAC,EAAE,KAAK;EAEnC;EAaA,MAAM,KAAK,KAAK;GAVd,SAAS;GACT,QAAQ,CAAC;GACT,iBAAiB,CACf;IACE;IACA;GACF,CACF;EAGwB,CAAC;EAC3B,MAAM,qBAAqB,MAAM,cAAc,cAAc,MAAM;EACnE,IAAI,uBAAuB,oBACzB,OAAO;EAET,OAAO,CACL,EACE,MAAM;GACJ,MAAM;GACN,MAAM;GACN,UAAU;EACZ,EACF,CACF;CACF,SAAS,KAAK;;EAEZ,IAAI,IAAI,YAAA,mBACN,MAAM;EAER,OAAO,KAAK;GAAE,UAAU;GAAc;EAAI,GAAG,4BAA4B;EACzE,OAAO,CACL,EACE,eAAe;GACb,UAAU;GACV,QAAQ,IAAI;EACd,EACF,CACF;CACF;AACF;AAEA,SAAS,eACP,UACA,aACA,uBACQ;CACR,IAAI,uBACF,OAAO,GAAG,SAAS;MACd;EACL,MAAM,WAAW,YAAY,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,OAAO,QAAQ;EACtE,IAAI,SAAS,WAAW,KAAK,UAAU,SAAS,SAAS,EAAE,GACzD,OAAO,GAAG,SAAS,GAAG;OAInB,IACH,SAAS,WAAW,KACpB,SAAS,QAAQ,YAAY,UAAU,SAAS,OAAO,CAAC,CAAC,CAAC,WAAW,GAErE,OAAO,WAAW;OAMlB,OAAO,GAAG,SAAS,eAJC,SACjB,QAAQ,YAAY,CAAC,UAAU,SAAS,OAAO,CAAC,CAAC,CACjD,IAAI,KAAK,CAAC,CACV,KAAK,GACoC;CAEhD;AACF"}
1
+ {"version":3,"file":"artifacts.js","names":[],"sources":["../../../../lib/modules/manager/pub/artifacts.ts"],"sourcesContent":["import { isEmptyArray, isString } from '@sindresorhus/is';\nimport { quote } from 'shlex';\nimport { TEMPORARY_ERROR } from '../../../constants/error-messages.ts';\nimport { logger } from '../../../logger/index.ts';\nimport { exec } from '../../../util/exec/index.ts';\nimport type { ExecOptions } from '../../../util/exec/types.ts';\nimport {\n getSiblingFileName,\n readLocalFile,\n writeLocalFile,\n} from '../../../util/fs/index.ts';\nimport type {\n UpdateArtifact,\n UpdateArtifactsResult,\n Upgrade,\n} from '../types.ts';\nimport { parsePubspec, parsePubspecLock } from './utils.ts';\n\nconst SDK_NAMES = ['dart', 'flutter'];\nconst PUB_GET_COMMAND = 'pub get --no-precompile';\n\nexport async function updateArtifacts({\n packageFileName,\n updatedDeps,\n newPackageFileContent,\n config,\n}: UpdateArtifact): Promise<UpdateArtifactsResult[] | null> {\n logger.debug(`pub.updateArtifacts(${packageFileName})`);\n const { isLockFileMaintenance } = config;\n\n if (isEmptyArray(updatedDeps) && !isLockFileMaintenance) {\n logger.debug('No updated pub deps - returning null');\n return null;\n }\n\n const lockFileName = getSiblingFileName(packageFileName, 'pubspec.lock');\n const oldLockFileContent = await readLocalFile(lockFileName, 'utf8');\n if (!oldLockFileContent) {\n logger.debug('No pubspec.lock found');\n return null;\n }\n\n try {\n await writeLocalFile(packageFileName, newPackageFileContent);\n\n const isFlutter = newPackageFileContent.includes('sdk: flutter');\n const toolName = isFlutter ? 'flutter' : 'dart';\n const cmd = getExecCommand(toolName, updatedDeps, isLockFileMaintenance);\n\n let constraint = config.constraints?.[toolName];\n if (!constraint) {\n const pubspec = parsePubspec(packageFileName, newPackageFileContent);\n const pubspecToolName = isFlutter ? 'flutter' : 'sdk';\n constraint = pubspec?.environment[pubspecToolName];\n\n if (!constraint) {\n const pubspecLock = parsePubspecLock(lockFileName, oldLockFileContent);\n constraint = pubspecLock?.sdks[toolName];\n }\n }\n\n const execOptions: ExecOptions = {\n cwdFile: packageFileName,\n docker: {},\n toolConstraints: [\n {\n toolName,\n constraint,\n },\n ],\n };\n\n await exec(cmd, execOptions);\n const newLockFileContent = await readLocalFile(lockFileName, 'utf8');\n if (oldLockFileContent === newLockFileContent) {\n return null;\n }\n return [\n {\n file: {\n type: 'addition',\n path: lockFileName,\n contents: newLockFileContent,\n },\n },\n ];\n } catch (err) {\n // istanbul ignore if\n if (err.message === TEMPORARY_ERROR) {\n throw err;\n }\n logger.warn({ lockfile: lockFileName, err }, `Failed to update lock file`);\n return [\n {\n artifactError: {\n fileName: lockFileName,\n stderr: err.message,\n },\n },\n ];\n }\n}\n\nfunction getExecCommand(\n toolName: string,\n updatedDeps: Upgrade<Record<string, unknown>>[],\n isLockFileMaintenance: boolean | undefined,\n): string {\n if (isLockFileMaintenance) {\n return `${toolName} pub upgrade`;\n }\n const depNames = updatedDeps.map((dep) => dep.depName).filter(isString);\n if (depNames.length === 1 && SDK_NAMES.includes(depNames[0])) {\n return `${toolName} ${PUB_GET_COMMAND}`;\n }\n // If there are two updated dependencies and both of them are SDK updates (Dart and Flutter),\n // we use Flutter over Dart to run `pub get` as it is a Flutter project.\n if (\n depNames.length === 2 &&\n depNames.filter((depName) => SDK_NAMES.includes(depName)).length === 2\n ) {\n return `flutter ${PUB_GET_COMMAND}`;\n }\n const depNamesCmd = depNames\n .filter((depName) => !SDK_NAMES.includes(depName))\n .map(quote)\n .join(' ');\n return `${toolName} pub upgrade ${depNamesCmd}`;\n}\n"],"mappings":";;;;;;;;AAkBA,MAAM,YAAY,CAAC,QAAQ,SAAS;AACpC,MAAM,kBAAkB;AAExB,eAAsB,gBAAgB,EACpC,iBACA,aACA,uBACA,UAC0D;CAC1D,OAAO,MAAM,uBAAuB,gBAAgB,EAAE;CACtD,MAAM,EAAE,0BAA0B;CAElC,IAAI,aAAa,WAAW,KAAK,CAAC,uBAAuB;EACvD,OAAO,MAAM,sCAAsC;EACnD,OAAO;CACT;CAEA,MAAM,eAAe,mBAAmB,iBAAiB,cAAc;CACvE,MAAM,qBAAqB,MAAM,cAAc,cAAc,MAAM;CACnE,IAAI,CAAC,oBAAoB;EACvB,OAAO,MAAM,uBAAuB;EACpC,OAAO;CACT;CAEA,IAAI;EACF,MAAM,eAAe,iBAAiB,qBAAqB;EAE3D,MAAM,YAAY,sBAAsB,SAAS,cAAc;EAC/D,MAAM,WAAW,YAAY,YAAY;EACzC,MAAM,MAAM,eAAe,UAAU,aAAa,qBAAqB;EAEvE,IAAI,aAAa,OAAO,cAAc;EACtC,IAAI,CAAC,YAAY;GACf,MAAM,UAAU,aAAa,iBAAiB,qBAAqB;GACnE,MAAM,kBAAkB,YAAY,YAAY;GAChD,aAAa,SAAS,YAAY;GAElC,IAAI,CAAC,YAEH,aADoB,iBAAiB,cAAc,kBAC5B,CAAC,EAAE,KAAK;EAEnC;EAaA,MAAM,KAAK,KAAK;GAVd,SAAS;GACT,QAAQ,CAAC;GACT,iBAAiB,CACf;IACE;IACA;GACF,CACF;EAGwB,CAAC;EAC3B,MAAM,qBAAqB,MAAM,cAAc,cAAc,MAAM;EACnE,IAAI,uBAAuB,oBACzB,OAAO;EAET,OAAO,CACL,EACE,MAAM;GACJ,MAAM;GACN,MAAM;GACN,UAAU;EACZ,EACF,CACF;CACF,SAAS,KAAK;;EAEZ,IAAI,IAAI,YAAA,mBACN,MAAM;EAER,OAAO,KAAK;GAAE,UAAU;GAAc;EAAI,GAAG,4BAA4B;EACzE,OAAO,CACL,EACE,eAAe;GACb,UAAU;GACV,QAAQ,IAAI;EACd,EACF,CACF;CACF;AACF;AAEA,SAAS,eACP,UACA,aACA,uBACQ;CACR,IAAI,uBACF,OAAO,GAAG,SAAS;CAErB,MAAM,WAAW,YAAY,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,OAAO,QAAQ;CACtE,IAAI,SAAS,WAAW,KAAK,UAAU,SAAS,SAAS,EAAE,GACzD,OAAO,GAAG,SAAS,GAAG;CAIxB,IACE,SAAS,WAAW,KACpB,SAAS,QAAQ,YAAY,UAAU,SAAS,OAAO,CAAC,CAAC,CAAC,WAAW,GAErE,OAAO,WAAW;CAMpB,OAAO,GAAG,SAAS,eAJC,SACjB,QAAQ,YAAY,CAAC,UAAU,SAAS,OAAO,CAAC,CAAC,CACjD,IAAI,KAAK,CAAC,CACV,KAAK,GACoC;AAC9C"}
@@ -4,7 +4,7 @@ import { Pubspec, PubspecLock } from "./schema.js";
4
4
  function parsePubspec(fileName, fileContent) {
5
5
  const res = Pubspec.safeParse(fileContent);
6
6
  if (res.success) return res.data;
7
- else logger.debug({
7
+ logger.debug({
8
8
  err: res.error,
9
9
  fileName
10
10
  }, "Error parsing pubspec.");
@@ -13,7 +13,7 @@ function parsePubspec(fileName, fileContent) {
13
13
  function parsePubspecLock(fileName, fileContent) {
14
14
  const res = PubspecLock.safeParse(fileContent);
15
15
  if (res.success) return res.data;
16
- else logger.debug({
16
+ logger.debug({
17
17
  err: res.error,
18
18
  fileName
19
19
  }, "Error parsing pubspec lockfile.");
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":[],"sources":["../../../../lib/modules/manager/pub/utils.ts"],"sourcesContent":["import { logger } from '../../../logger/index.ts';\nimport { Pubspec, PubspecLock } from './schema.ts';\n\nexport function parsePubspec(\n fileName: string,\n fileContent: string,\n): Pubspec | null {\n const res = Pubspec.safeParse(fileContent);\n if (res.success) {\n return res.data;\n } else {\n logger.debug({ err: res.error, fileName }, 'Error parsing pubspec.');\n }\n return null;\n}\n\nexport function parsePubspecLock(\n fileName: string,\n fileContent: string,\n): PubspecLock | null {\n const res = PubspecLock.safeParse(fileContent);\n if (res.success) {\n return res.data;\n } else {\n logger.debug(\n { err: res.error, fileName },\n 'Error parsing pubspec lockfile.',\n );\n }\n return null;\n}\n"],"mappings":";;;AAGA,SAAgB,aACd,UACA,aACgB;CAChB,MAAM,MAAM,QAAQ,UAAU,WAAW;CACzC,IAAI,IAAI,SACN,OAAO,IAAI;MAEX,OAAO,MAAM;EAAE,KAAK,IAAI;EAAO;CAAS,GAAG,wBAAwB;CAErE,OAAO;AACT;AAEA,SAAgB,iBACd,UACA,aACoB;CACpB,MAAM,MAAM,YAAY,UAAU,WAAW;CAC7C,IAAI,IAAI,SACN,OAAO,IAAI;MAEX,OAAO,MACL;EAAE,KAAK,IAAI;EAAO;CAAS,GAC3B,iCACF;CAEF,OAAO;AACT"}
1
+ {"version":3,"file":"utils.js","names":[],"sources":["../../../../lib/modules/manager/pub/utils.ts"],"sourcesContent":["import { logger } from '../../../logger/index.ts';\nimport { Pubspec, PubspecLock } from './schema.ts';\n\nexport function parsePubspec(\n fileName: string,\n fileContent: string,\n): Pubspec | null {\n const res = Pubspec.safeParse(fileContent);\n if (res.success) {\n return res.data;\n }\n logger.debug({ err: res.error, fileName }, 'Error parsing pubspec.');\n\n return null;\n}\n\nexport function parsePubspecLock(\n fileName: string,\n fileContent: string,\n): PubspecLock | null {\n const res = PubspecLock.safeParse(fileContent);\n if (res.success) {\n return res.data;\n }\n logger.debug({ err: res.error, fileName }, 'Error parsing pubspec lockfile.');\n\n return null;\n}\n"],"mappings":";;;AAGA,SAAgB,aACd,UACA,aACgB;CAChB,MAAM,MAAM,QAAQ,UAAU,WAAW;CACzC,IAAI,IAAI,SACN,OAAO,IAAI;CAEb,OAAO,MAAM;EAAE,KAAK,IAAI;EAAO;CAAS,GAAG,wBAAwB;CAEnE,OAAO;AACT;AAEA,SAAgB,iBACd,UACA,aACoB;CACpB,MAAM,MAAM,YAAY,UAAU,WAAW;CAC7C,IAAI,IAAI,SACN,OAAO,IAAI;CAEb,OAAO,MAAM;EAAE,KAAK,IAAI;EAAO;CAAS,GAAG,iCAAiC;CAE5E,OAAO;AACT"}
@@ -5,12 +5,10 @@ const RE_REPOSITORY_GENERIC_GIT_SSH_FORMAT = regEx(/^git@[^:]*:(?<repository>.+)
5
5
  function parseGitOwnerRepo(git, githubUrl) {
6
6
  const genericGitSsh = RE_REPOSITORY_GENERIC_GIT_SSH_FORMAT.exec(git);
7
7
  if (genericGitSsh?.groups) return genericGitSsh.groups.repository.replace(regEx(/\.git$/), "");
8
- else {
9
- if (githubUrl) return git.replace(regEx(/^github:/), "").replace(regEx(/^git\+/), "").replace(regEx(/^https:\/\/github\.com\//), "").replace(regEx(/\.git$/), "");
10
- const url = parseUrl(git);
11
- if (!url) return null;
12
- return url.pathname.replace(regEx(/\.git$/), "").replace(regEx(/^\//), "");
13
- }
8
+ if (githubUrl) return git.replace(regEx(/^github:/), "").replace(regEx(/^git\+/), "").replace(regEx(/^https:\/\/github\.com\//), "").replace(regEx(/\.git$/), "");
9
+ const url = parseUrl(git);
10
+ if (!url) return null;
11
+ return url.pathname.replace(regEx(/\.git$/), "").replace(regEx(/^\//), "");
14
12
  }
15
13
  function isGithubUrl(gitUrl, parsedUrl) {
16
14
  return parsedUrl?.host === "github.com" || gitUrl.startsWith("git@github.com");
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","names":[],"sources":["../../../../lib/modules/manager/puppet/common.ts"],"sourcesContent":["import { regEx } from '../../../util/regex.ts';\nimport { parseUrl } from '../../../util/url.ts';\n\nexport const RE_REPOSITORY_GENERIC_GIT_SSH_FORMAT = regEx(\n /^git@[^:]*:(?<repository>.+)$/,\n);\n\nexport function parseGitOwnerRepo(\n git: string,\n githubUrl: boolean,\n): string | null {\n const genericGitSsh = RE_REPOSITORY_GENERIC_GIT_SSH_FORMAT.exec(git);\n\n if (genericGitSsh?.groups) {\n return genericGitSsh.groups.repository.replace(regEx(/\\.git$/), '');\n } else {\n if (githubUrl) {\n return git\n .replace(regEx(/^github:/), '')\n .replace(regEx(/^git\\+/), '')\n .replace(regEx(/^https:\\/\\/github\\.com\\//), '')\n .replace(regEx(/\\.git$/), '');\n }\n\n const url = parseUrl(git);\n\n if (!url) {\n return null;\n }\n\n return url.pathname.replace(regEx(/\\.git$/), '').replace(regEx(/^\\//), '');\n }\n}\n\nexport function isGithubUrl(gitUrl: string, parsedUrl: URL | null): boolean {\n return (\n parsedUrl?.host === 'github.com' || gitUrl.startsWith('git@github.com')\n );\n}\n"],"mappings":";;;AAGA,MAAa,uCAAuC,MAClD,+BACF;AAEA,SAAgB,kBACd,KACA,WACe;CACf,MAAM,gBAAgB,qCAAqC,KAAK,GAAG;CAEnE,IAAI,eAAe,QACjB,OAAO,cAAc,OAAO,WAAW,QAAQ,MAAM,QAAQ,GAAG,EAAE;MAC7D;EACL,IAAI,WACF,OAAO,IACJ,QAAQ,MAAM,UAAU,GAAG,EAAE,CAAC,CAC9B,QAAQ,MAAM,QAAQ,GAAG,EAAE,CAAC,CAC5B,QAAQ,MAAM,0BAA0B,GAAG,EAAE,CAAC,CAC9C,QAAQ,MAAM,QAAQ,GAAG,EAAE;EAGhC,MAAM,MAAM,SAAS,GAAG;EAExB,IAAI,CAAC,KACH,OAAO;EAGT,OAAO,IAAI,SAAS,QAAQ,MAAM,QAAQ,GAAG,EAAE,CAAC,CAAC,QAAQ,MAAM,KAAK,GAAG,EAAE;CAC3E;AACF;AAEA,SAAgB,YAAY,QAAgB,WAAgC;CAC1E,OACE,WAAW,SAAS,gBAAgB,OAAO,WAAW,gBAAgB;AAE1E"}
1
+ {"version":3,"file":"common.js","names":[],"sources":["../../../../lib/modules/manager/puppet/common.ts"],"sourcesContent":["import { regEx } from '../../../util/regex.ts';\nimport { parseUrl } from '../../../util/url.ts';\n\nexport const RE_REPOSITORY_GENERIC_GIT_SSH_FORMAT = regEx(\n /^git@[^:]*:(?<repository>.+)$/,\n);\n\nexport function parseGitOwnerRepo(\n git: string,\n githubUrl: boolean,\n): string | null {\n const genericGitSsh = RE_REPOSITORY_GENERIC_GIT_SSH_FORMAT.exec(git);\n\n if (genericGitSsh?.groups) {\n return genericGitSsh.groups.repository.replace(regEx(/\\.git$/), '');\n }\n if (githubUrl) {\n return git\n .replace(regEx(/^github:/), '')\n .replace(regEx(/^git\\+/), '')\n .replace(regEx(/^https:\\/\\/github\\.com\\//), '')\n .replace(regEx(/\\.git$/), '');\n }\n\n const url = parseUrl(git);\n\n if (!url) {\n return null;\n }\n\n return url.pathname.replace(regEx(/\\.git$/), '').replace(regEx(/^\\//), '');\n}\n\nexport function isGithubUrl(gitUrl: string, parsedUrl: URL | null): boolean {\n return (\n parsedUrl?.host === 'github.com' || gitUrl.startsWith('git@github.com')\n );\n}\n"],"mappings":";;;AAGA,MAAa,uCAAuC,MAClD,+BACF;AAEA,SAAgB,kBACd,KACA,WACe;CACf,MAAM,gBAAgB,qCAAqC,KAAK,GAAG;CAEnE,IAAI,eAAe,QACjB,OAAO,cAAc,OAAO,WAAW,QAAQ,MAAM,QAAQ,GAAG,EAAE;CAEpE,IAAI,WACF,OAAO,IACJ,QAAQ,MAAM,UAAU,GAAG,EAAE,CAAC,CAC9B,QAAQ,MAAM,QAAQ,GAAG,EAAE,CAAC,CAC5B,QAAQ,MAAM,0BAA0B,GAAG,EAAE,CAAC,CAC9C,QAAQ,MAAM,QAAQ,GAAG,EAAE;CAGhC,MAAM,MAAM,SAAS,GAAG;CAExB,IAAI,CAAC,KACH,OAAO;CAGT,OAAO,IAAI,SAAS,QAAQ,MAAM,QAAQ,GAAG,EAAE,CAAC,CAAC,QAAQ,MAAM,KAAK,GAAG,EAAE;AAC3E;AAEA,SAAgB,YAAY,QAAgB,WAAgC;CAC1E,OACE,WAAW,SAAS,gBAAgB,OAAO,WAAW,gBAAgB;AAE1E"}
@@ -217,7 +217,7 @@ function extractPackageFileInternal(content, packageFile, ctxScalaVersion) {
217
217
  extractVersion: "^v(?<version>\\S+)",
218
218
  registryUrls: []
219
219
  }] };
220
- else return null;
220
+ return null;
221
221
  }
222
222
  let parsedResult = null;
223
223
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"extract.js","names":["q","mavenVersioning.id","query","semverVersioning.id"],"sources":["../../../../lib/modules/manager/sbt/extract.ts"],"sourcesContent":["import { lang, query as q } from '@renovatebot/good-enough-parser';\nimport { logger } from '../../../logger/index.ts';\nimport { readLocalFile } from '../../../util/fs/index.ts';\nimport { newlineRegex, regEx } from '../../../util/regex.ts';\nimport { parseUrl } from '../../../util/url.ts';\nimport { GithubReleasesDatasource } from '../../datasource/github-releases/index.ts';\nimport { MAVEN_REPO } from '../../datasource/maven/common.ts';\nimport { MavenDatasource } from '../../datasource/maven/index.ts';\nimport { SbtPackageDatasource } from '../../datasource/sbt-package/index.ts';\nimport {\n SBT_PLUGINS_REPO,\n SbtPluginDatasource,\n} from '../../datasource/sbt-plugin/index.ts';\nimport { get } from '../../versioning/index.ts';\nimport * as mavenVersioning from '../../versioning/maven/index.ts';\nimport * as semverVersioning from '../../versioning/semver/index.ts';\nimport type {\n ExtractConfig,\n PackageDependency,\n PackageFile,\n PackageFileContent,\n} from '../types.ts';\nimport { normalizeScalaVersion, sortPackageFiles } from './util.ts';\n\ntype Vars = Record<string, string>;\n\ninterface Ctx {\n vars: Vars;\n deps: PackageDependency[];\n registryUrls: string[];\n\n scalaVersion?: string;\n packageFileVersion?: string;\n\n groupId?: string;\n artifactId?: string;\n currentValue?: string;\n\n currentVarName?: string;\n depType?: string;\n useScalaVersion?: boolean;\n variableName?: string;\n\n // Use to contain temporary object name\n // when parsing anonymous object structs.\n // See objectAssignmentMatch.\n currentObjectName?: string;\n}\n\nconst scala = lang.createLang('scala');\n\nconst sbtVersionRegex = regEx(\n 'sbt\\\\.version *= *(?<version>\\\\d+\\\\.\\\\d+\\\\.\\\\d+)',\n);\n\nconst sbtProxyUrlRegex = regEx(\n /^\\s*(?<repoName>\\S+):\\s+(?<proxy>https?:\\/\\/[\\w./-]+)/,\n);\n\nconst scalaVersionMatch = q\n .sym<Ctx>('scalaVersion')\n .op(':=')\n .alt(\n // Dotted symbol. Important to have this first in the `alt` as otherwise\n // the tree walker will eager parse a simple symbol and stop there.\n q\n // keep the first part of the path in context\n .sym<Ctx>((ctx, { value: currentVarName }) => ({\n ...ctx,\n currentVarName,\n }))\n .op('.')\n .sym((ctx, { value: varName }) => {\n // build the full variable name from what we saved earlier\n const dottedVariableName = `${ctx.currentVarName}.${varName}`;\n const currentValue = ctx.vars[dottedVariableName];\n if (currentValue) {\n ctx.scalaVersion = currentValue;\n }\n delete ctx.currentVarName;\n return ctx;\n }),\n // Simple symbol defined previously\n q.sym<Ctx>((ctx, { value: varName }) => {\n const scalaVersion = ctx.vars[varName];\n if (scalaVersion) {\n ctx.scalaVersion = scalaVersion;\n }\n return ctx;\n }),\n // Direct string\n q.str<Ctx>((ctx, { value: scalaVersion }) => ({ ...ctx, scalaVersion })),\n )\n .handler((ctx) => {\n if (ctx.scalaVersion) {\n const version = get(mavenVersioning.id);\n\n let packageName = 'org.scala-lang:scala-library';\n if (version.getMajor(ctx.scalaVersion) === 3) {\n packageName = 'org.scala-lang:scala3-library_3';\n }\n\n const dep: PackageDependency = {\n datasource: MavenDatasource.id,\n depName: 'scala',\n packageName,\n currentValue: ctx.scalaVersion,\n separateMinorPatch: true,\n };\n ctx.scalaVersion = normalizeScalaVersion(ctx.scalaVersion);\n ctx.deps.push(dep);\n }\n return ctx;\n });\n\nconst packageFileVersionMatch = q\n .sym<Ctx>('version')\n .op(':=')\n .alt(\n q.str<Ctx>((ctx, { value: packageFileVersion }) => ({\n ...ctx,\n packageFileVersion,\n })),\n q.sym<Ctx>((ctx, { value: varName }) => {\n const packageFileVersion = ctx.vars[varName];\n if (packageFileVersion) {\n ctx.packageFileVersion = packageFileVersion;\n }\n return ctx;\n }),\n );\n\nconst variableNameMatch = q\n .sym<Ctx>((ctx, { value: varName }) => ({\n ...ctx,\n currentVarName: varName,\n }))\n .opt(q.op<Ctx>(':').sym('String'));\n\nconst variableValueMatch = q.str<Ctx>((ctx, { value }) => {\n ctx.vars[ctx.currentVarName!] = value;\n delete ctx.currentVarName;\n return ctx;\n});\n\nconst assignmentMatch = q.sym<Ctx>('val').join(variableNameMatch).op('=');\n\nconst variableDefinitionMatch = q\n .alt(\n q.sym<Ctx>('lazy').join(assignmentMatch),\n assignmentMatch,\n variableNameMatch.op(':='),\n )\n .join(variableValueMatch);\n\n// Parses objects fields of the form `{name} = \"{version}\"`.\nconst objectFieldMatch = q\n .sym<Ctx>((ctx, { value: fieldName }) => ({\n ...ctx,\n currentVarName: `${ctx.currentObjectName}.${fieldName}`,\n }))\n .op('=')\n .str((ctx, { value }) => {\n ctx.vars[ctx.currentVarName!] = value;\n delete ctx.currentVarName;\n return ctx;\n });\n\n// Parses anonymous objects of the form\n// val {objName} = new {\n// {name} = \"{version}\"\n// }\n// and introduces a `objName.name` variable with value \"{version}\"\n// in the context.\nconst objectAssignmentMatch = q\n .sym<Ctx>('val')\n .sym((ctx, { value: currentObjectName }) => ({\n ...ctx,\n currentObjectName,\n }))\n .op('=')\n .sym('new')\n .tree({\n search: q.many(objectFieldMatch),\n })\n .handler((ctx) => {\n delete ctx.currentObjectName;\n return ctx;\n });\n\nconst groupIdMatch = q.alt<Ctx>(\n q.sym<Ctx>((ctx, { value: varName }) => {\n const currentGroupId = ctx.vars[varName];\n if (currentGroupId) {\n ctx.groupId = currentGroupId;\n }\n return ctx;\n }),\n q.str<Ctx>((ctx, { value: groupId }) => ({ ...ctx, groupId })),\n);\n\nconst artifactIdMatch = q.alt<Ctx>(\n q.sym<Ctx>((ctx, { value }) => {\n const artifactId = ctx.vars[value];\n if (artifactId) {\n ctx.artifactId = artifactId;\n }\n return ctx;\n }),\n q.str<Ctx>((ctx, { value: artifactId }) => ({ ...ctx, artifactId })),\n);\n\nconst versionMatch = q.alt<Ctx>(\n // Dotted symbol. Important to have this first in the `alt` as otherwise\n // the tree walker will eager parse a simple symbol and stop there.\n q\n .sym<Ctx>((ctx, { value: currentVarName }) => ({ ...ctx, currentVarName }))\n .op('.')\n .sym((ctx, { value: varName }) => {\n // build the full variable name from what we saved earlier\n const dottedVariableName = `${ctx.currentVarName}.${varName}`;\n const currentValue = ctx.vars[dottedVariableName];\n if (currentValue) {\n ctx.currentValue = currentValue;\n ctx.variableName = dottedVariableName;\n }\n delete ctx.currentVarName;\n return ctx;\n }),\n // Simple symbol defined earlier\n q.sym<Ctx>((ctx, { value: varName }) => {\n const currentValue = ctx.vars[varName];\n if (currentValue) {\n ctx.currentValue = currentValue;\n ctx.variableName = varName;\n }\n return ctx;\n }),\n // Direct string\n q.str<Ctx>((ctx, { value: currentValue }) => ({ ...ctx, currentValue })),\n);\n\nconst simpleDependencyMatch = groupIdMatch\n .op('%')\n .join(artifactIdMatch)\n .op('%')\n .join(versionMatch);\n\nconst versionedDependencyMatch = groupIdMatch\n .op('%%')\n .join(artifactIdMatch)\n .handler((ctx) => ({ ...ctx, useScalaVersion: true }))\n .op('%')\n .join(versionMatch);\n\nconst crossDependencyMatch = groupIdMatch\n .op('%%%')\n .join(artifactIdMatch)\n .handler((ctx) => ({ ...ctx, useScalaVersion: true }))\n .op('%')\n .join(versionMatch);\n\nfunction depHandler(ctx: Ctx): Ctx {\n const {\n scalaVersion,\n groupId,\n artifactId,\n currentValue,\n useScalaVersion,\n depType,\n variableName,\n } = ctx;\n\n delete ctx.groupId;\n delete ctx.artifactId;\n delete ctx.currentValue;\n delete ctx.useScalaVersion;\n delete ctx.depType;\n delete ctx.variableName;\n\n const depName = `${groupId!}:${artifactId!}`;\n\n const dep: PackageDependency = {\n datasource: SbtPackageDatasource.id,\n depName,\n packageName:\n scalaVersion && useScalaVersion ? `${depName}_${scalaVersion}` : depName,\n currentValue,\n };\n\n if (depType) {\n dep.depType = depType;\n }\n\n if (depType === 'plugin') {\n dep.datasource = SbtPluginDatasource.id;\n }\n\n if (variableName) {\n dep.sharedVariableName = variableName;\n dep.variableName = variableName;\n }\n\n ctx.deps.push(dep);\n\n return ctx;\n}\n\nfunction depTypeHandler(ctx: Ctx, { value: depType }: { value: string }): Ctx {\n return { ...ctx, depType };\n}\n\nconst sbtPackageMatch = q\n .opt<Ctx>(q.opt(q.sym<Ctx>('lazy')).sym('val').sym().op('='))\n .alt(crossDependencyMatch, simpleDependencyMatch, versionedDependencyMatch)\n .opt(\n q.alt<Ctx>(\n q.sym<Ctx>('classifier').str(depTypeHandler),\n q.op<Ctx>('%').sym(depTypeHandler),\n q.op<Ctx>('%').str(depTypeHandler),\n ),\n )\n .handler(depHandler);\n\nconst sbtPluginMatch = q\n .sym<Ctx>(regEx(/^(?:addSbtPlugin|addCompilerPlugin)$/))\n .tree({\n type: 'wrapped-tree',\n maxDepth: 1,\n search: q\n .begin<Ctx>()\n .alt(simpleDependencyMatch, versionedDependencyMatch)\n .end(),\n })\n .handler((ctx) => ({ ...ctx, depType: 'plugin' }))\n .handler(depHandler);\n\nconst resolverMatch = q\n .str<Ctx>()\n .sym('at')\n .str((ctx, { value }) => {\n if (parseUrl(value)) {\n ctx.registryUrls.push(value);\n }\n return ctx;\n });\n\nconst addResolverMatch = q.sym<Ctx>('resolvers').alt(\n q.op<Ctx>('+=').join(resolverMatch),\n q.op<Ctx>('++=').sym('Seq').tree({\n type: 'wrapped-tree',\n maxDepth: 1,\n search: resolverMatch,\n }),\n);\n\nfunction registryUrlHandler(ctx: Ctx): Ctx {\n for (const dep of ctx.deps) {\n dep.registryUrls = [...ctx.registryUrls];\n }\n return ctx;\n}\n\nconst query = q.tree<Ctx>({\n type: 'root-tree',\n maxDepth: 32,\n search: q.alt<Ctx>(\n scalaVersionMatch,\n packageFileVersionMatch,\n sbtPackageMatch,\n sbtPluginMatch,\n addResolverMatch,\n variableDefinitionMatch,\n objectAssignmentMatch,\n ),\n postHandler: registryUrlHandler,\n});\n\nexport function extractProxyUrls(\n content: string,\n packageFile: string,\n): string[] {\n const extractedProxyUrls: string[] = [];\n logger.debug(`Parsing proxy repository file ${packageFile}`);\n for (const line of content.split(newlineRegex)) {\n const extraction = sbtProxyUrlRegex.exec(line);\n if (extraction?.groups?.proxy) {\n extractedProxyUrls.push(extraction.groups.proxy);\n } else if (line.trim() === 'maven-central') {\n extractedProxyUrls.push(MAVEN_REPO);\n }\n }\n return extractedProxyUrls;\n}\n\nexport function extractPackageFile(\n content: string,\n packageFile: string,\n): PackageFileContent | null {\n return extractPackageFileInternal(content, packageFile);\n}\n\nfunction extractPackageFileInternal(\n content: string,\n packageFile: string,\n ctxScalaVersion?: string,\n): PackageFileContent | null {\n if (\n packageFile === 'project/build.properties' ||\n packageFile.endsWith('/project/build.properties')\n ) {\n const regexResult = sbtVersionRegex.exec(content);\n const sbtVersion = regexResult?.groups?.version;\n const matchString = regexResult?.[0];\n if (sbtVersion) {\n const sbtDependency: PackageDependency = {\n datasource: GithubReleasesDatasource.id,\n depName: 'sbt/sbt',\n packageName: 'sbt/sbt',\n versioning: semverVersioning.id,\n currentValue: sbtVersion,\n replaceString: matchString,\n extractVersion: '^v(?<version>\\\\S+)',\n registryUrls: [],\n };\n\n return {\n deps: [sbtDependency],\n };\n } else {\n return null;\n }\n }\n\n let parsedResult: Ctx | null = null;\n\n try {\n parsedResult = scala.query(content, query, {\n vars: {},\n deps: [],\n registryUrls: [],\n scalaVersion: ctxScalaVersion,\n });\n } catch (err) /* istanbul ignore next */ {\n logger.debug({ err, packageFile }, 'Sbt parsing error');\n }\n\n if (!parsedResult) {\n return null;\n }\n\n const { deps, scalaVersion, packageFileVersion } = parsedResult;\n\n if (!deps.length) {\n return null;\n }\n\n return { deps, packageFileVersion, managerData: { scalaVersion } };\n}\n\nexport async function extractAllPackageFiles(\n _config: ExtractConfig,\n packageFiles: string[],\n): Promise<PackageFile[]> {\n const packages: PackageFile[] = [];\n const proxyUrls: string[] = [];\n let ctxScalaVersion: string | undefined;\n\n const sortedPackageFiles = sortPackageFiles(packageFiles);\n\n for (const packageFile of sortedPackageFiles) {\n const content = await readLocalFile(packageFile, 'utf8');\n if (!content) {\n logger.debug({ packageFile }, 'packageFile has no content');\n continue;\n }\n if (packageFile === 'repositories') {\n const urls = extractProxyUrls(content, packageFile);\n proxyUrls.push(...urls);\n } else {\n const pkg = extractPackageFileInternal(\n content,\n packageFile,\n ctxScalaVersion,\n );\n if (pkg) {\n packages.push({ deps: pkg.deps, packageFile });\n if (pkg.managerData?.scalaVersion) {\n ctxScalaVersion = pkg.managerData.scalaVersion;\n }\n }\n }\n }\n for (const pkg of packages) {\n for (const dep of pkg.deps) {\n if (dep.datasource !== GithubReleasesDatasource.id) {\n if (proxyUrls.length > 0) {\n dep.registryUrls!.unshift(...proxyUrls);\n } else if (dep.depType === 'plugin') {\n dep.registryUrls!.unshift(SBT_PLUGINS_REPO, MAVEN_REPO);\n } else {\n dep.registryUrls!.unshift(MAVEN_REPO);\n }\n }\n }\n }\n return packages;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"extract.js","names":["q","mavenVersioning.id","query","semverVersioning.id"],"sources":["../../../../lib/modules/manager/sbt/extract.ts"],"sourcesContent":["import { lang, query as q } from '@renovatebot/good-enough-parser';\nimport { logger } from '../../../logger/index.ts';\nimport { readLocalFile } from '../../../util/fs/index.ts';\nimport { newlineRegex, regEx } from '../../../util/regex.ts';\nimport { parseUrl } from '../../../util/url.ts';\nimport { GithubReleasesDatasource } from '../../datasource/github-releases/index.ts';\nimport { MAVEN_REPO } from '../../datasource/maven/common.ts';\nimport { MavenDatasource } from '../../datasource/maven/index.ts';\nimport { SbtPackageDatasource } from '../../datasource/sbt-package/index.ts';\nimport {\n SBT_PLUGINS_REPO,\n SbtPluginDatasource,\n} from '../../datasource/sbt-plugin/index.ts';\nimport { get } from '../../versioning/index.ts';\nimport * as mavenVersioning from '../../versioning/maven/index.ts';\nimport * as semverVersioning from '../../versioning/semver/index.ts';\nimport type {\n ExtractConfig,\n PackageDependency,\n PackageFile,\n PackageFileContent,\n} from '../types.ts';\nimport { normalizeScalaVersion, sortPackageFiles } from './util.ts';\n\ntype Vars = Record<string, string>;\n\ninterface Ctx {\n vars: Vars;\n deps: PackageDependency[];\n registryUrls: string[];\n\n scalaVersion?: string;\n packageFileVersion?: string;\n\n groupId?: string;\n artifactId?: string;\n currentValue?: string;\n\n currentVarName?: string;\n depType?: string;\n useScalaVersion?: boolean;\n variableName?: string;\n\n // Use to contain temporary object name\n // when parsing anonymous object structs.\n // See objectAssignmentMatch.\n currentObjectName?: string;\n}\n\nconst scala = lang.createLang('scala');\n\nconst sbtVersionRegex = regEx(\n 'sbt\\\\.version *= *(?<version>\\\\d+\\\\.\\\\d+\\\\.\\\\d+)',\n);\n\nconst sbtProxyUrlRegex = regEx(\n /^\\s*(?<repoName>\\S+):\\s+(?<proxy>https?:\\/\\/[\\w./-]+)/,\n);\n\nconst scalaVersionMatch = q\n .sym<Ctx>('scalaVersion')\n .op(':=')\n .alt(\n // Dotted symbol. Important to have this first in the `alt` as otherwise\n // the tree walker will eager parse a simple symbol and stop there.\n q\n // keep the first part of the path in context\n .sym<Ctx>((ctx, { value: currentVarName }) => ({\n ...ctx,\n currentVarName,\n }))\n .op('.')\n .sym((ctx, { value: varName }) => {\n // build the full variable name from what we saved earlier\n const dottedVariableName = `${ctx.currentVarName}.${varName}`;\n const currentValue = ctx.vars[dottedVariableName];\n if (currentValue) {\n ctx.scalaVersion = currentValue;\n }\n delete ctx.currentVarName;\n return ctx;\n }),\n // Simple symbol defined previously\n q.sym<Ctx>((ctx, { value: varName }) => {\n const scalaVersion = ctx.vars[varName];\n if (scalaVersion) {\n ctx.scalaVersion = scalaVersion;\n }\n return ctx;\n }),\n // Direct string\n q.str<Ctx>((ctx, { value: scalaVersion }) => ({ ...ctx, scalaVersion })),\n )\n .handler((ctx) => {\n if (ctx.scalaVersion) {\n const version = get(mavenVersioning.id);\n\n let packageName = 'org.scala-lang:scala-library';\n if (version.getMajor(ctx.scalaVersion) === 3) {\n packageName = 'org.scala-lang:scala3-library_3';\n }\n\n const dep: PackageDependency = {\n datasource: MavenDatasource.id,\n depName: 'scala',\n packageName,\n currentValue: ctx.scalaVersion,\n separateMinorPatch: true,\n };\n ctx.scalaVersion = normalizeScalaVersion(ctx.scalaVersion);\n ctx.deps.push(dep);\n }\n return ctx;\n });\n\nconst packageFileVersionMatch = q\n .sym<Ctx>('version')\n .op(':=')\n .alt(\n q.str<Ctx>((ctx, { value: packageFileVersion }) => ({\n ...ctx,\n packageFileVersion,\n })),\n q.sym<Ctx>((ctx, { value: varName }) => {\n const packageFileVersion = ctx.vars[varName];\n if (packageFileVersion) {\n ctx.packageFileVersion = packageFileVersion;\n }\n return ctx;\n }),\n );\n\nconst variableNameMatch = q\n .sym<Ctx>((ctx, { value: varName }) => ({\n ...ctx,\n currentVarName: varName,\n }))\n .opt(q.op<Ctx>(':').sym('String'));\n\nconst variableValueMatch = q.str<Ctx>((ctx, { value }) => {\n ctx.vars[ctx.currentVarName!] = value;\n delete ctx.currentVarName;\n return ctx;\n});\n\nconst assignmentMatch = q.sym<Ctx>('val').join(variableNameMatch).op('=');\n\nconst variableDefinitionMatch = q\n .alt(\n q.sym<Ctx>('lazy').join(assignmentMatch),\n assignmentMatch,\n variableNameMatch.op(':='),\n )\n .join(variableValueMatch);\n\n// Parses objects fields of the form `{name} = \"{version}\"`.\nconst objectFieldMatch = q\n .sym<Ctx>((ctx, { value: fieldName }) => ({\n ...ctx,\n currentVarName: `${ctx.currentObjectName}.${fieldName}`,\n }))\n .op('=')\n .str((ctx, { value }) => {\n ctx.vars[ctx.currentVarName!] = value;\n delete ctx.currentVarName;\n return ctx;\n });\n\n// Parses anonymous objects of the form\n// val {objName} = new {\n// {name} = \"{version}\"\n// }\n// and introduces a `objName.name` variable with value \"{version}\"\n// in the context.\nconst objectAssignmentMatch = q\n .sym<Ctx>('val')\n .sym((ctx, { value: currentObjectName }) => ({\n ...ctx,\n currentObjectName,\n }))\n .op('=')\n .sym('new')\n .tree({\n search: q.many(objectFieldMatch),\n })\n .handler((ctx) => {\n delete ctx.currentObjectName;\n return ctx;\n });\n\nconst groupIdMatch = q.alt<Ctx>(\n q.sym<Ctx>((ctx, { value: varName }) => {\n const currentGroupId = ctx.vars[varName];\n if (currentGroupId) {\n ctx.groupId = currentGroupId;\n }\n return ctx;\n }),\n q.str<Ctx>((ctx, { value: groupId }) => ({ ...ctx, groupId })),\n);\n\nconst artifactIdMatch = q.alt<Ctx>(\n q.sym<Ctx>((ctx, { value }) => {\n const artifactId = ctx.vars[value];\n if (artifactId) {\n ctx.artifactId = artifactId;\n }\n return ctx;\n }),\n q.str<Ctx>((ctx, { value: artifactId }) => ({ ...ctx, artifactId })),\n);\n\nconst versionMatch = q.alt<Ctx>(\n // Dotted symbol. Important to have this first in the `alt` as otherwise\n // the tree walker will eager parse a simple symbol and stop there.\n q\n .sym<Ctx>((ctx, { value: currentVarName }) => ({ ...ctx, currentVarName }))\n .op('.')\n .sym((ctx, { value: varName }) => {\n // build the full variable name from what we saved earlier\n const dottedVariableName = `${ctx.currentVarName}.${varName}`;\n const currentValue = ctx.vars[dottedVariableName];\n if (currentValue) {\n ctx.currentValue = currentValue;\n ctx.variableName = dottedVariableName;\n }\n delete ctx.currentVarName;\n return ctx;\n }),\n // Simple symbol defined earlier\n q.sym<Ctx>((ctx, { value: varName }) => {\n const currentValue = ctx.vars[varName];\n if (currentValue) {\n ctx.currentValue = currentValue;\n ctx.variableName = varName;\n }\n return ctx;\n }),\n // Direct string\n q.str<Ctx>((ctx, { value: currentValue }) => ({ ...ctx, currentValue })),\n);\n\nconst simpleDependencyMatch = groupIdMatch\n .op('%')\n .join(artifactIdMatch)\n .op('%')\n .join(versionMatch);\n\nconst versionedDependencyMatch = groupIdMatch\n .op('%%')\n .join(artifactIdMatch)\n .handler((ctx) => ({ ...ctx, useScalaVersion: true }))\n .op('%')\n .join(versionMatch);\n\nconst crossDependencyMatch = groupIdMatch\n .op('%%%')\n .join(artifactIdMatch)\n .handler((ctx) => ({ ...ctx, useScalaVersion: true }))\n .op('%')\n .join(versionMatch);\n\nfunction depHandler(ctx: Ctx): Ctx {\n const {\n scalaVersion,\n groupId,\n artifactId,\n currentValue,\n useScalaVersion,\n depType,\n variableName,\n } = ctx;\n\n delete ctx.groupId;\n delete ctx.artifactId;\n delete ctx.currentValue;\n delete ctx.useScalaVersion;\n delete ctx.depType;\n delete ctx.variableName;\n\n const depName = `${groupId!}:${artifactId!}`;\n\n const dep: PackageDependency = {\n datasource: SbtPackageDatasource.id,\n depName,\n packageName:\n scalaVersion && useScalaVersion ? `${depName}_${scalaVersion}` : depName,\n currentValue,\n };\n\n if (depType) {\n dep.depType = depType;\n }\n\n if (depType === 'plugin') {\n dep.datasource = SbtPluginDatasource.id;\n }\n\n if (variableName) {\n dep.sharedVariableName = variableName;\n dep.variableName = variableName;\n }\n\n ctx.deps.push(dep);\n\n return ctx;\n}\n\nfunction depTypeHandler(ctx: Ctx, { value: depType }: { value: string }): Ctx {\n return { ...ctx, depType };\n}\n\nconst sbtPackageMatch = q\n .opt<Ctx>(q.opt(q.sym<Ctx>('lazy')).sym('val').sym().op('='))\n .alt(crossDependencyMatch, simpleDependencyMatch, versionedDependencyMatch)\n .opt(\n q.alt<Ctx>(\n q.sym<Ctx>('classifier').str(depTypeHandler),\n q.op<Ctx>('%').sym(depTypeHandler),\n q.op<Ctx>('%').str(depTypeHandler),\n ),\n )\n .handler(depHandler);\n\nconst sbtPluginMatch = q\n .sym<Ctx>(regEx(/^(?:addSbtPlugin|addCompilerPlugin)$/))\n .tree({\n type: 'wrapped-tree',\n maxDepth: 1,\n search: q\n .begin<Ctx>()\n .alt(simpleDependencyMatch, versionedDependencyMatch)\n .end(),\n })\n .handler((ctx) => ({ ...ctx, depType: 'plugin' }))\n .handler(depHandler);\n\nconst resolverMatch = q\n .str<Ctx>()\n .sym('at')\n .str((ctx, { value }) => {\n if (parseUrl(value)) {\n ctx.registryUrls.push(value);\n }\n return ctx;\n });\n\nconst addResolverMatch = q.sym<Ctx>('resolvers').alt(\n q.op<Ctx>('+=').join(resolverMatch),\n q.op<Ctx>('++=').sym('Seq').tree({\n type: 'wrapped-tree',\n maxDepth: 1,\n search: resolverMatch,\n }),\n);\n\nfunction registryUrlHandler(ctx: Ctx): Ctx {\n for (const dep of ctx.deps) {\n dep.registryUrls = [...ctx.registryUrls];\n }\n return ctx;\n}\n\nconst query = q.tree<Ctx>({\n type: 'root-tree',\n maxDepth: 32,\n search: q.alt<Ctx>(\n scalaVersionMatch,\n packageFileVersionMatch,\n sbtPackageMatch,\n sbtPluginMatch,\n addResolverMatch,\n variableDefinitionMatch,\n objectAssignmentMatch,\n ),\n postHandler: registryUrlHandler,\n});\n\nexport function extractProxyUrls(\n content: string,\n packageFile: string,\n): string[] {\n const extractedProxyUrls: string[] = [];\n logger.debug(`Parsing proxy repository file ${packageFile}`);\n for (const line of content.split(newlineRegex)) {\n const extraction = sbtProxyUrlRegex.exec(line);\n if (extraction?.groups?.proxy) {\n extractedProxyUrls.push(extraction.groups.proxy);\n } else if (line.trim() === 'maven-central') {\n extractedProxyUrls.push(MAVEN_REPO);\n }\n }\n return extractedProxyUrls;\n}\n\nexport function extractPackageFile(\n content: string,\n packageFile: string,\n): PackageFileContent | null {\n return extractPackageFileInternal(content, packageFile);\n}\n\nfunction extractPackageFileInternal(\n content: string,\n packageFile: string,\n ctxScalaVersion?: string,\n): PackageFileContent | null {\n if (\n packageFile === 'project/build.properties' ||\n packageFile.endsWith('/project/build.properties')\n ) {\n const regexResult = sbtVersionRegex.exec(content);\n const sbtVersion = regexResult?.groups?.version;\n const matchString = regexResult?.[0];\n if (sbtVersion) {\n const sbtDependency: PackageDependency = {\n datasource: GithubReleasesDatasource.id,\n depName: 'sbt/sbt',\n packageName: 'sbt/sbt',\n versioning: semverVersioning.id,\n currentValue: sbtVersion,\n replaceString: matchString,\n extractVersion: '^v(?<version>\\\\S+)',\n registryUrls: [],\n };\n\n return {\n deps: [sbtDependency],\n };\n }\n return null;\n }\n\n let parsedResult: Ctx | null = null;\n\n try {\n parsedResult = scala.query(content, query, {\n vars: {},\n deps: [],\n registryUrls: [],\n scalaVersion: ctxScalaVersion,\n });\n } catch (err) /* istanbul ignore next */ {\n logger.debug({ err, packageFile }, 'Sbt parsing error');\n }\n\n if (!parsedResult) {\n return null;\n }\n\n const { deps, scalaVersion, packageFileVersion } = parsedResult;\n\n if (!deps.length) {\n return null;\n }\n\n return { deps, packageFileVersion, managerData: { scalaVersion } };\n}\n\nexport async function extractAllPackageFiles(\n _config: ExtractConfig,\n packageFiles: string[],\n): Promise<PackageFile[]> {\n const packages: PackageFile[] = [];\n const proxyUrls: string[] = [];\n let ctxScalaVersion: string | undefined;\n\n const sortedPackageFiles = sortPackageFiles(packageFiles);\n\n for (const packageFile of sortedPackageFiles) {\n const content = await readLocalFile(packageFile, 'utf8');\n if (!content) {\n logger.debug({ packageFile }, 'packageFile has no content');\n continue;\n }\n if (packageFile === 'repositories') {\n const urls = extractProxyUrls(content, packageFile);\n proxyUrls.push(...urls);\n } else {\n const pkg = extractPackageFileInternal(\n content,\n packageFile,\n ctxScalaVersion,\n );\n if (pkg) {\n packages.push({ deps: pkg.deps, packageFile });\n if (pkg.managerData?.scalaVersion) {\n ctxScalaVersion = pkg.managerData.scalaVersion;\n }\n }\n }\n }\n for (const pkg of packages) {\n for (const dep of pkg.deps) {\n if (dep.datasource !== GithubReleasesDatasource.id) {\n if (proxyUrls.length > 0) {\n dep.registryUrls!.unshift(...proxyUrls);\n } else if (dep.depType === 'plugin') {\n dep.registryUrls!.unshift(SBT_PLUGINS_REPO, MAVEN_REPO);\n } else {\n dep.registryUrls!.unshift(MAVEN_REPO);\n }\n }\n }\n }\n return packages;\n}\n"],"mappings":"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"}
@@ -11,8 +11,10 @@ function normalizeScalaVersion(str) {
11
11
  if (!versioning.isGreaterThan(str, "2.10.0")) return str;
12
12
  }
13
13
  const isScala3 = versioning.isGreaterThan(str, "3.0.0");
14
- if (regEx(/^\d+\.\d+\.\d+$/).test(str)) if (isScala3) return str.replace(regEx(/^(\d+)\.(\d+)\.\d+$/), "$1");
15
- else return str.replace(regEx(/^(\d+)\.(\d+)\.\d+$/), "$1.$2");
14
+ if (regEx(/^\d+\.\d+\.\d+$/).test(str)) {
15
+ if (isScala3) return str.replace(regEx(/^(\d+)\.(\d+)\.\d+$/), "$1");
16
+ return str.replace(regEx(/^(\d+)\.(\d+)\.\d+$/), "$1.$2");
17
+ }
16
18
  // istanbul ignore next
17
19
  return str;
18
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","names":["mavenVersioning.id"],"sources":["../../../../lib/modules/manager/sbt/util.ts"],"sourcesContent":["import { regEx } from '../../../util/regex.ts';\nimport { get } from '../../versioning/index.ts';\nimport * as mavenVersioning from '../../versioning/maven/index.ts';\n\n/*\n https://www.scala-sbt.org/release/docs/Cross-Build.html#Publishing+conventions\n */\nexport function normalizeScalaVersion(str: string): string {\n // istanbul ignore if\n if (!str) {\n return str;\n }\n const versioning = get(mavenVersioning.id);\n if (versioning.isVersion(str)) {\n // Do not normalize unstable versions\n if (!versioning.isStable(str)) {\n return str;\n }\n // Do not normalize versions prior to 2.10\n if (!versioning.isGreaterThan(str, '2.10.0')) {\n return str;\n }\n }\n const isScala3 = versioning.isGreaterThan(str, '3.0.0');\n if (regEx(/^\\d+\\.\\d+\\.\\d+$/).test(str)) {\n if (isScala3) {\n return str.replace(regEx(/^(\\d+)\\.(\\d+)\\.\\d+$/), '$1');\n } else {\n return str.replace(regEx(/^(\\d+)\\.(\\d+)\\.\\d+$/), '$1.$2');\n }\n }\n // istanbul ignore next\n return str;\n}\n\nexport function sortPackageFiles(packageFiles: string[]): string[] {\n // process build.sbt first\n const sortedPackageFiles = [...packageFiles];\n const buildSbtIndex = sortedPackageFiles.findIndex((file) =>\n file.endsWith('build.sbt'),\n );\n if (buildSbtIndex !== -1) {\n const buildSbt = sortedPackageFiles.splice(buildSbtIndex, 1)[0];\n sortedPackageFiles.unshift(buildSbt);\n }\n return sortedPackageFiles;\n}\n"],"mappings":";;;;AAOA,SAAgB,sBAAsB,KAAqB;;CAEzD,IAAI,CAAC,KACH,OAAO;CAET,MAAM,aAAa,IAAIA,EAAkB;CACzC,IAAI,WAAW,UAAU,GAAG,GAAG;EAE7B,IAAI,CAAC,WAAW,SAAS,GAAG,GAC1B,OAAO;EAGT,IAAI,CAAC,WAAW,cAAc,KAAK,QAAQ,GACzC,OAAO;CAEX;CACA,MAAM,WAAW,WAAW,cAAc,KAAK,OAAO;CACtD,IAAI,MAAM,iBAAiB,CAAC,CAAC,KAAK,GAAG,GACnC,IAAI,UACF,OAAO,IAAI,QAAQ,MAAM,qBAAqB,GAAG,IAAI;MAErD,OAAO,IAAI,QAAQ,MAAM,qBAAqB,GAAG,OAAO;;CAI5D,OAAO;AACT;AAEA,SAAgB,iBAAiB,cAAkC;CAEjE,MAAM,qBAAqB,CAAC,GAAG,YAAY;CAC3C,MAAM,gBAAgB,mBAAmB,WAAW,SAClD,KAAK,SAAS,WAAW,CAC3B;CACA,IAAI,kBAAkB,IAAI;EACxB,MAAM,WAAW,mBAAmB,OAAO,eAAe,CAAC,CAAC,CAAC;EAC7D,mBAAmB,QAAQ,QAAQ;CACrC;CACA,OAAO;AACT"}
1
+ {"version":3,"file":"util.js","names":["mavenVersioning.id"],"sources":["../../../../lib/modules/manager/sbt/util.ts"],"sourcesContent":["import { regEx } from '../../../util/regex.ts';\nimport { get } from '../../versioning/index.ts';\nimport * as mavenVersioning from '../../versioning/maven/index.ts';\n\n/*\n https://www.scala-sbt.org/release/docs/Cross-Build.html#Publishing+conventions\n */\nexport function normalizeScalaVersion(str: string): string {\n // istanbul ignore if\n if (!str) {\n return str;\n }\n const versioning = get(mavenVersioning.id);\n if (versioning.isVersion(str)) {\n // Do not normalize unstable versions\n if (!versioning.isStable(str)) {\n return str;\n }\n // Do not normalize versions prior to 2.10\n if (!versioning.isGreaterThan(str, '2.10.0')) {\n return str;\n }\n }\n const isScala3 = versioning.isGreaterThan(str, '3.0.0');\n if (regEx(/^\\d+\\.\\d+\\.\\d+$/).test(str)) {\n if (isScala3) {\n return str.replace(regEx(/^(\\d+)\\.(\\d+)\\.\\d+$/), '$1');\n }\n return str.replace(regEx(/^(\\d+)\\.(\\d+)\\.\\d+$/), '$1.$2');\n }\n // istanbul ignore next\n return str;\n}\n\nexport function sortPackageFiles(packageFiles: string[]): string[] {\n // process build.sbt first\n const sortedPackageFiles = [...packageFiles];\n const buildSbtIndex = sortedPackageFiles.findIndex((file) =>\n file.endsWith('build.sbt'),\n );\n if (buildSbtIndex !== -1) {\n const buildSbt = sortedPackageFiles.splice(buildSbtIndex, 1)[0];\n sortedPackageFiles.unshift(buildSbt);\n }\n return sortedPackageFiles;\n}\n"],"mappings":";;;;AAOA,SAAgB,sBAAsB,KAAqB;;CAEzD,IAAI,CAAC,KACH,OAAO;CAET,MAAM,aAAa,IAAIA,EAAkB;CACzC,IAAI,WAAW,UAAU,GAAG,GAAG;EAE7B,IAAI,CAAC,WAAW,SAAS,GAAG,GAC1B,OAAO;EAGT,IAAI,CAAC,WAAW,cAAc,KAAK,QAAQ,GACzC,OAAO;CAEX;CACA,MAAM,WAAW,WAAW,cAAc,KAAK,OAAO;CACtD,IAAI,MAAM,iBAAiB,CAAC,CAAC,KAAK,GAAG,GAAG;EACtC,IAAI,UACF,OAAO,IAAI,QAAQ,MAAM,qBAAqB,GAAG,IAAI;EAEvD,OAAO,IAAI,QAAQ,MAAM,qBAAqB,GAAG,OAAO;CAC1D;;CAEA,OAAO;AACT;AAEA,SAAgB,iBAAiB,cAAkC;CAEjE,MAAM,qBAAqB,CAAC,GAAG,YAAY;CAC3C,MAAM,gBAAgB,mBAAmB,WAAW,SAClD,KAAK,SAAS,WAAW,CAC3B;CACA,IAAI,kBAAkB,IAAI;EACxB,MAAM,WAAW,mBAAmB,OAAO,eAAe,CAAC,CAAC,CAAC;EAC7D,mBAAmB,QAAQ,QAAQ;CACrC;CACA,OAAO;AACT"}
@@ -122,7 +122,7 @@ function writeLockUpdates(updates, lockFilePath, oldLockFileContent) {
122
122
  newProviderBlockLines.splice(update.lineNumbers.hashes.start, 0, ...hashesWithWhitespace);
123
123
  sections.push(newProviderBlockLines);
124
124
  });
125
- const trailingNotUpdatedLines = lines.slice(updates[updates.length - 1].lineNumbers.block?.end);
125
+ const trailingNotUpdatedLines = lines.slice(updates.at(-1).lineNumbers.block?.end);
126
126
  sections.push(trailingNotUpdatedLines);
127
127
  return { file: {
128
128
  type: "addition",
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","names":["getVersioning"],"sources":["../../../../../lib/modules/manager/terraform/lockfile/util.ts"],"sourcesContent":["import { isNullOrUndefined } from '@sindresorhus/is';\nimport {\n findLocalSiblingOrParent,\n readLocalFile,\n} from '../../../../util/fs/index.ts';\nimport { newlineRegex, regEx } from '../../../../util/regex.ts';\nimport { get as getVersioning } from '../../../versioning/index.ts';\nimport type { UpdateArtifactsResult } from '../../types.ts';\nimport type {\n LineNumbers,\n ProviderLock,\n ProviderLockUpdate,\n ProviderSlice,\n} from './types.ts';\n\nconst providerStartLineRegex = regEx(\n `^provider \"(?<registryUrl>[^/]*)/(?<namespace>[^/]*)/(?<depName>[^/]*)\"`,\n);\nconst versionLineRegex = regEx(\n `^(?<prefix>[\\\\s]*version[\\\\s]*=[\\\\s]*\")(?<version>[^\"']+)(?<suffix>\".*)$`,\n);\nconst constraintLineRegex = regEx(\n `^(?<prefix>[\\\\s]*constraints[\\\\s]*=[\\\\s]*\")(?<constraint>[^\"']+)(?<suffix>\".*)$`,\n);\nconst hashLineRegex = regEx(`^(?<prefix>\\\\s*\")(?<hash>[^\"]+)(?<suffix>\",.*)$`);\n\nconst lockFile = '.terraform.lock.hcl';\n\nexport function findLockFile(packageFilePath: string): Promise<string | null> {\n return findLocalSiblingOrParent(packageFilePath, lockFile);\n}\n\nexport function readLockFile(lockFilePath: string): Promise<string | null> {\n return readLocalFile(lockFilePath, 'utf8');\n}\n\nexport function extractLocks(lockFileContent: string): ProviderLock[] | null {\n const lines = lockFileContent.split(newlineRegex);\n const blockStarts: number[] = [];\n // get first lines of blocks\n lines.forEach((line, index) => {\n if (line.startsWith('provider \"')) {\n blockStarts.push(index);\n }\n });\n\n // sort ascending\n const sortedStarts = blockStarts.sort((a, b) => a - b);\n const contentSlices = sortedStarts.map((start, index, array) => {\n let end: number;\n if (index < array.length - 1) {\n end = array[index + 1];\n } else {\n end = lines.length - 1;\n }\n const slice: ProviderSlice = {\n lines: lines.slice(start, end),\n block: {\n start,\n end,\n },\n };\n return slice;\n });\n\n // generate Lock objects from slices\n const locks = contentSlices.map((slice) => {\n let packageName = '';\n let registryUrl = '';\n let version = '';\n let constraints = '';\n const relativeLineNumbers: LineNumbers = {\n block: slice.block,\n hashes: {\n start: -1,\n end: -1,\n },\n };\n const hashes: string[] = [];\n\n slice.lines.forEach((line, index) => {\n const hashLineResult = hashLineRegex.exec(line);\n if (hashLineResult?.groups) {\n hashes.push(hashLineResult.groups.hash);\n relativeLineNumbers.hashes.start =\n relativeLineNumbers.hashes.start === -1\n ? index\n : relativeLineNumbers.hashes.start;\n relativeLineNumbers.hashes.end = index;\n return;\n }\n\n const providerStartLineResult = providerStartLineRegex.exec(line);\n if (providerStartLineResult?.groups) {\n packageName = `${providerStartLineResult.groups.namespace}/${providerStartLineResult.groups.depName}`;\n registryUrl = providerStartLineResult.groups.registryUrl;\n return;\n }\n\n const versionLineResult = versionLineRegex.exec(line);\n if (versionLineResult?.groups) {\n version = versionLineResult.groups.version;\n relativeLineNumbers.version = index;\n return;\n }\n\n const constraintLineResult = constraintLineRegex.exec(line);\n if (constraintLineResult?.groups) {\n constraints = constraintLineResult.groups.constraint;\n relativeLineNumbers.constraint = index;\n }\n });\n\n const lock: ProviderLock = {\n packageName,\n registryUrl: `https://${registryUrl}`,\n version,\n constraints,\n hashes,\n lineNumbers: relativeLineNumbers,\n };\n return lock;\n });\n\n if (locks.length === 0) {\n return null;\n }\n return locks;\n}\n\nexport function isPinnedVersion(value: string | undefined): boolean {\n const versioning = getVersioning('hashicorp');\n return !!value && !!versioning.isSingleVersion(value);\n}\n\nexport function writeLockUpdates(\n updates: ProviderLockUpdate[],\n lockFilePath: string,\n oldLockFileContent: string,\n): UpdateArtifactsResult {\n const lines = oldLockFileContent.split(newlineRegex);\n\n const sections: string[][] = [];\n\n // sort updates in order of appearance in the lockfile\n // TODO #22198\n updates.sort(\n (a, b) => a.lineNumbers.block!.start - b.lineNumbers.block!.start,\n );\n updates.forEach((update, index, array) => {\n // re add leading whitespace\n let startWhitespace: number | undefined;\n if (index > 0) {\n // get end of the\n // TODO #22198\n startWhitespace = array[index - 1].lineNumbers.block!.end;\n }\n const leadingNonRelevantLines = lines.slice(\n startWhitespace,\n // TODO #22198\n update.lineNumbers.block!.start,\n );\n sections.push(leadingNonRelevantLines);\n\n const providerBlockLines = lines.slice(\n // TODO #22198\n update.lineNumbers.block!.start,\n update.lineNumbers.block!.end,\n );\n const newProviderBlockLines: string[] = [];\n let hashLinePrefix = '';\n let hashLineSuffix = '';\n providerBlockLines.forEach((providerBlockLine) => {\n const versionLine = providerBlockLine.replace(\n versionLineRegex,\n `$<prefix>${update.newVersion}$<suffix>`,\n );\n if (versionLine !== providerBlockLine) {\n newProviderBlockLines.push(versionLine);\n return;\n }\n\n const constraintLine = providerBlockLine.replace(\n constraintLineRegex,\n `$<prefix>${update.newConstraint}$<suffix>`,\n );\n if (constraintLine !== providerBlockLine) {\n newProviderBlockLines.push(constraintLine);\n return;\n }\n\n const hashLineRegexResult = hashLineRegex.exec(providerBlockLine);\n if (hashLineRegexResult?.groups) {\n // skip hash line but safe the whitespace\n hashLinePrefix = hashLineRegexResult.groups.prefix;\n hashLineSuffix = hashLineRegexResult.groups.suffix;\n return;\n }\n newProviderBlockLines.push(providerBlockLine);\n });\n\n const hashesWithWhitespace = update.newHashes.map(\n (value) => `${hashLinePrefix}${value}${hashLineSuffix}`,\n );\n newProviderBlockLines.splice(\n // TODO #22198\n update.lineNumbers.hashes.start!,\n 0,\n ...hashesWithWhitespace,\n );\n sections.push(newProviderBlockLines);\n });\n\n const trailingNotUpdatedLines = lines.slice(\n updates[updates.length - 1].lineNumbers.block?.end,\n );\n sections.push(trailingNotUpdatedLines);\n\n const newLines = sections.reduce((previousValue, currentValue) =>\n previousValue.concat(currentValue),\n );\n const newContent = newLines.join('\\n');\n\n return {\n file: {\n type: 'addition',\n path: lockFilePath,\n contents: newContent,\n },\n };\n}\n\nexport function massageNewValue(value: string | undefined): string | undefined {\n if (isNullOrUndefined(value)) {\n return value;\n }\n\n const elements = value.split(',');\n const massagedElements: string[] = [];\n for (const element of elements) {\n // these constraints are allowed to miss precision\n if (element.includes('~>')) {\n massagedElements.push(element);\n continue;\n }\n\n const missing0s = 3 - element.split('.').length;\n\n let massagedElement = element;\n\n for (let i = 0; i < missing0s; i++) {\n massagedElement = `${massagedElement}.0`;\n }\n massagedElements.push(massagedElement);\n }\n\n return massagedElements.join(',');\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"util.js","names":["getVersioning"],"sources":["../../../../../lib/modules/manager/terraform/lockfile/util.ts"],"sourcesContent":["import { isNullOrUndefined } from '@sindresorhus/is';\nimport {\n findLocalSiblingOrParent,\n readLocalFile,\n} from '../../../../util/fs/index.ts';\nimport { newlineRegex, regEx } from '../../../../util/regex.ts';\nimport { get as getVersioning } from '../../../versioning/index.ts';\nimport type { UpdateArtifactsResult } from '../../types.ts';\nimport type {\n LineNumbers,\n ProviderLock,\n ProviderLockUpdate,\n ProviderSlice,\n} from './types.ts';\n\nconst providerStartLineRegex = regEx(\n `^provider \"(?<registryUrl>[^/]*)/(?<namespace>[^/]*)/(?<depName>[^/]*)\"`,\n);\nconst versionLineRegex = regEx(\n `^(?<prefix>[\\\\s]*version[\\\\s]*=[\\\\s]*\")(?<version>[^\"']+)(?<suffix>\".*)$`,\n);\nconst constraintLineRegex = regEx(\n `^(?<prefix>[\\\\s]*constraints[\\\\s]*=[\\\\s]*\")(?<constraint>[^\"']+)(?<suffix>\".*)$`,\n);\nconst hashLineRegex = regEx(`^(?<prefix>\\\\s*\")(?<hash>[^\"]+)(?<suffix>\",.*)$`);\n\nconst lockFile = '.terraform.lock.hcl';\n\nexport function findLockFile(packageFilePath: string): Promise<string | null> {\n return findLocalSiblingOrParent(packageFilePath, lockFile);\n}\n\nexport function readLockFile(lockFilePath: string): Promise<string | null> {\n return readLocalFile(lockFilePath, 'utf8');\n}\n\nexport function extractLocks(lockFileContent: string): ProviderLock[] | null {\n const lines = lockFileContent.split(newlineRegex);\n const blockStarts: number[] = [];\n // get first lines of blocks\n lines.forEach((line, index) => {\n if (line.startsWith('provider \"')) {\n blockStarts.push(index);\n }\n });\n\n // sort ascending\n const sortedStarts = blockStarts.sort((a, b) => a - b);\n const contentSlices = sortedStarts.map((start, index, array) => {\n let end: number;\n if (index < array.length - 1) {\n end = array[index + 1];\n } else {\n end = lines.length - 1;\n }\n const slice: ProviderSlice = {\n lines: lines.slice(start, end),\n block: {\n start,\n end,\n },\n };\n return slice;\n });\n\n // generate Lock objects from slices\n const locks = contentSlices.map((slice) => {\n let packageName = '';\n let registryUrl = '';\n let version = '';\n let constraints = '';\n const relativeLineNumbers: LineNumbers = {\n block: slice.block,\n hashes: {\n start: -1,\n end: -1,\n },\n };\n const hashes: string[] = [];\n\n slice.lines.forEach((line, index) => {\n const hashLineResult = hashLineRegex.exec(line);\n if (hashLineResult?.groups) {\n hashes.push(hashLineResult.groups.hash);\n relativeLineNumbers.hashes.start =\n relativeLineNumbers.hashes.start === -1\n ? index\n : relativeLineNumbers.hashes.start;\n relativeLineNumbers.hashes.end = index;\n return;\n }\n\n const providerStartLineResult = providerStartLineRegex.exec(line);\n if (providerStartLineResult?.groups) {\n packageName = `${providerStartLineResult.groups.namespace}/${providerStartLineResult.groups.depName}`;\n registryUrl = providerStartLineResult.groups.registryUrl;\n return;\n }\n\n const versionLineResult = versionLineRegex.exec(line);\n if (versionLineResult?.groups) {\n version = versionLineResult.groups.version;\n relativeLineNumbers.version = index;\n return;\n }\n\n const constraintLineResult = constraintLineRegex.exec(line);\n if (constraintLineResult?.groups) {\n constraints = constraintLineResult.groups.constraint;\n relativeLineNumbers.constraint = index;\n }\n });\n\n const lock: ProviderLock = {\n packageName,\n registryUrl: `https://${registryUrl}`,\n version,\n constraints,\n hashes,\n lineNumbers: relativeLineNumbers,\n };\n return lock;\n });\n\n if (locks.length === 0) {\n return null;\n }\n return locks;\n}\n\nexport function isPinnedVersion(value: string | undefined): boolean {\n const versioning = getVersioning('hashicorp');\n return !!value && !!versioning.isSingleVersion(value);\n}\n\nexport function writeLockUpdates(\n updates: ProviderLockUpdate[],\n lockFilePath: string,\n oldLockFileContent: string,\n): UpdateArtifactsResult {\n const lines = oldLockFileContent.split(newlineRegex);\n\n const sections: string[][] = [];\n\n // sort updates in order of appearance in the lockfile\n // TODO #22198\n updates.sort(\n (a, b) => a.lineNumbers.block!.start - b.lineNumbers.block!.start,\n );\n updates.forEach((update, index, array) => {\n // re add leading whitespace\n let startWhitespace: number | undefined;\n if (index > 0) {\n // get end of the\n // TODO #22198\n startWhitespace = array[index - 1].lineNumbers.block!.end;\n }\n const leadingNonRelevantLines = lines.slice(\n startWhitespace,\n // TODO #22198\n update.lineNumbers.block!.start,\n );\n sections.push(leadingNonRelevantLines);\n\n const providerBlockLines = lines.slice(\n // TODO #22198\n update.lineNumbers.block!.start,\n update.lineNumbers.block!.end,\n );\n const newProviderBlockLines: string[] = [];\n let hashLinePrefix = '';\n let hashLineSuffix = '';\n providerBlockLines.forEach((providerBlockLine) => {\n const versionLine = providerBlockLine.replace(\n versionLineRegex,\n `$<prefix>${update.newVersion}$<suffix>`,\n );\n if (versionLine !== providerBlockLine) {\n newProviderBlockLines.push(versionLine);\n return;\n }\n\n const constraintLine = providerBlockLine.replace(\n constraintLineRegex,\n `$<prefix>${update.newConstraint}$<suffix>`,\n );\n if (constraintLine !== providerBlockLine) {\n newProviderBlockLines.push(constraintLine);\n return;\n }\n\n const hashLineRegexResult = hashLineRegex.exec(providerBlockLine);\n if (hashLineRegexResult?.groups) {\n // skip hash line but safe the whitespace\n hashLinePrefix = hashLineRegexResult.groups.prefix;\n hashLineSuffix = hashLineRegexResult.groups.suffix;\n return;\n }\n newProviderBlockLines.push(providerBlockLine);\n });\n\n const hashesWithWhitespace = update.newHashes.map(\n (value) => `${hashLinePrefix}${value}${hashLineSuffix}`,\n );\n newProviderBlockLines.splice(\n // TODO #22198\n update.lineNumbers.hashes.start!,\n 0,\n ...hashesWithWhitespace,\n );\n sections.push(newProviderBlockLines);\n });\n\n const trailingNotUpdatedLines = lines.slice(\n updates.at(-1)!.lineNumbers.block?.end,\n );\n sections.push(trailingNotUpdatedLines);\n\n const newLines = sections.reduce((previousValue, currentValue) =>\n previousValue.concat(currentValue),\n );\n const newContent = newLines.join('\\n');\n\n return {\n file: {\n type: 'addition',\n path: lockFilePath,\n contents: newContent,\n },\n };\n}\n\nexport function massageNewValue(value: string | undefined): string | undefined {\n if (isNullOrUndefined(value)) {\n return value;\n }\n\n const elements = value.split(',');\n const massagedElements: string[] = [];\n for (const element of elements) {\n // these constraints are allowed to miss precision\n if (element.includes('~>')) {\n massagedElements.push(element);\n continue;\n }\n\n const missing0s = 3 - element.split('.').length;\n\n let massagedElement = element;\n\n for (let i = 0; i < missing0s; i++) {\n massagedElement = `${massagedElement}.0`;\n }\n massagedElements.push(massagedElement);\n }\n\n return massagedElements.join(',');\n}\n"],"mappings":";;;;;AAeA,MAAM,yBAAyB,MAC7B,yEACF;AACA,MAAM,mBAAmB,MACvB,0EACF;AACA,MAAM,sBAAsB,MAC1B,iFACF;AACA,MAAM,gBAAgB,MAAM,iDAAiD;AAE7E,MAAM,WAAW;AAEjB,SAAgB,aAAa,iBAAiD;CAC5E,OAAO,yBAAyB,iBAAiB,QAAQ;AAC3D;AAEA,SAAgB,aAAa,cAA8C;CACzE,OAAO,cAAc,cAAc,MAAM;AAC3C;AAEA,SAAgB,aAAa,iBAAgD;CAC3E,MAAM,QAAQ,gBAAgB,MAAM,YAAY;CAChD,MAAM,cAAwB,CAAC;CAE/B,MAAM,SAAS,MAAM,UAAU;EAC7B,IAAI,KAAK,WAAW,aAAY,GAC9B,YAAY,KAAK,KAAK;CAE1B,CAAC;CAsBD,MAAM,QAnBe,YAAY,MAAM,GAAG,MAAM,IAAI,CACnB,CAAC,CAAC,KAAK,OAAO,OAAO,UAAU;EAC9D,IAAI;EACJ,IAAI,QAAQ,MAAM,SAAS,GACzB,MAAM,MAAM,QAAQ;OAEpB,MAAM,MAAM,SAAS;EASvB,OAAO;GANL,OAAO,MAAM,MAAM,OAAO,GAAG;GAC7B,OAAO;IACL;IACA;GACF;EAES;CACb,CAG0B,CAAC,CAAC,KAAK,UAAU;EACzC,IAAI,cAAc;EAClB,IAAI,cAAc;EAClB,IAAI,UAAU;EACd,IAAI,cAAc;EAClB,MAAM,sBAAmC;GACvC,OAAO,MAAM;GACb,QAAQ;IACN,OAAO;IACP,KAAK;GACP;EACF;EACA,MAAM,SAAmB,CAAC;EAE1B,MAAM,MAAM,SAAS,MAAM,UAAU;GACnC,MAAM,iBAAiB,cAAc,KAAK,IAAI;GAC9C,IAAI,gBAAgB,QAAQ;IAC1B,OAAO,KAAK,eAAe,OAAO,IAAI;IACtC,oBAAoB,OAAO,QACzB,oBAAoB,OAAO,UAAU,KACjC,QACA,oBAAoB,OAAO;IACjC,oBAAoB,OAAO,MAAM;IACjC;GACF;GAEA,MAAM,0BAA0B,uBAAuB,KAAK,IAAI;GAChE,IAAI,yBAAyB,QAAQ;IACnC,cAAc,GAAG,wBAAwB,OAAO,UAAU,GAAG,wBAAwB,OAAO;IAC5F,cAAc,wBAAwB,OAAO;IAC7C;GACF;GAEA,MAAM,oBAAoB,iBAAiB,KAAK,IAAI;GACpD,IAAI,mBAAmB,QAAQ;IAC7B,UAAU,kBAAkB,OAAO;IACnC,oBAAoB,UAAU;IAC9B;GACF;GAEA,MAAM,uBAAuB,oBAAoB,KAAK,IAAI;GAC1D,IAAI,sBAAsB,QAAQ;IAChC,cAAc,qBAAqB,OAAO;IAC1C,oBAAoB,aAAa;GACnC;EACF,CAAC;EAUD,OAAO;GAPL;GACA,aAAa,WAAW;GACxB;GACA;GACA;GACA,aAAa;EAEL;CACZ,CAAC;CAED,IAAI,MAAM,WAAW,GACnB,OAAO;CAET,OAAO;AACT;AAEA,SAAgB,gBAAgB,OAAoC;CAClE,MAAM,aAAaA,IAAc,WAAW;CAC5C,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,gBAAgB,KAAK;AACtD;AAEA,SAAgB,iBACd,SACA,cACA,oBACuB;CACvB,MAAM,QAAQ,mBAAmB,MAAM,YAAY;CAEnD,MAAM,WAAuB,CAAC;CAI9B,QAAQ,MACL,GAAG,MAAM,EAAE,YAAY,MAAO,QAAQ,EAAE,YAAY,MAAO,KAC9D;CACA,QAAQ,SAAS,QAAQ,OAAO,UAAU;EAExC,IAAI;EACJ,IAAI,QAAQ,GAGV,kBAAkB,MAAM,QAAQ,EAAE,CAAC,YAAY,MAAO;EAExD,MAAM,0BAA0B,MAAM,MACpC,iBAEA,OAAO,YAAY,MAAO,KAC5B;EACA,SAAS,KAAK,uBAAuB;EAErC,MAAM,qBAAqB,MAAM,MAE/B,OAAO,YAAY,MAAO,OAC1B,OAAO,YAAY,MAAO,GAC5B;EACA,MAAM,wBAAkC,CAAC;EACzC,IAAI,iBAAiB;EACrB,IAAI,iBAAiB;EACrB,mBAAmB,SAAS,sBAAsB;GAChD,MAAM,cAAc,kBAAkB,QACpC,kBACA,YAAY,OAAO,WAAW,UAChC;GACA,IAAI,gBAAgB,mBAAmB;IACrC,sBAAsB,KAAK,WAAW;IACtC;GACF;GAEA,MAAM,iBAAiB,kBAAkB,QACvC,qBACA,YAAY,OAAO,cAAc,UACnC;GACA,IAAI,mBAAmB,mBAAmB;IACxC,sBAAsB,KAAK,cAAc;IACzC;GACF;GAEA,MAAM,sBAAsB,cAAc,KAAK,iBAAiB;GAChE,IAAI,qBAAqB,QAAQ;IAE/B,iBAAiB,oBAAoB,OAAO;IAC5C,iBAAiB,oBAAoB,OAAO;IAC5C;GACF;GACA,sBAAsB,KAAK,iBAAiB;EAC9C,CAAC;EAED,MAAM,uBAAuB,OAAO,UAAU,KAC3C,UAAU,GAAG,iBAAiB,QAAQ,gBACzC;EACA,sBAAsB,OAEpB,OAAO,YAAY,OAAO,OAC1B,GACA,GAAG,oBACL;EACA,SAAS,KAAK,qBAAqB;CACrC,CAAC;CAED,MAAM,0BAA0B,MAAM,MACpC,QAAQ,GAAG,EAAE,CAAC,CAAE,YAAY,OAAO,GACrC;CACA,SAAS,KAAK,uBAAuB;CAOrC,OAAO,EACL,MAAM;EACJ,MAAM;EACN,MAAM;EACN,UATa,SAAS,QAAQ,eAAe,iBAC/C,cAAc,OAAO,YAAY,CAET,CAAC,CAAC,KAAK,IAMV;CACrB,EACF;AACF;AAEA,SAAgB,gBAAgB,OAA+C;CAC7E,IAAI,kBAAkB,KAAK,GACzB,OAAO;CAGT,MAAM,WAAW,MAAM,MAAM,GAAG;CAChC,MAAM,mBAA6B,CAAC;CACpC,KAAK,MAAM,WAAW,UAAU;EAE9B,IAAI,QAAQ,SAAS,IAAI,GAAG;GAC1B,iBAAiB,KAAK,OAAO;GAC7B;EACF;EAEA,MAAM,YAAY,IAAI,QAAQ,MAAM,GAAG,CAAC,CAAC;EAEzC,IAAI,kBAAkB;EAEtB,KAAK,IAAI,IAAI,GAAG,IAAI,WAAW,KAC7B,kBAAkB,GAAG,gBAAgB;EAEvC,iBAAiB,KAAK,eAAe;CACvC;CAEA,OAAO,iBAAiB,KAAK,GAAG;AAClC"}
@@ -484,15 +484,13 @@ async function getUserIds(users) {
484
484
  reviewer = reviewer.replace(requiredReviewerPrefix, "");
485
485
  isRequired = true;
486
486
  }
487
- if (reviewer.toLowerCase() === m.identity?.displayName?.toLowerCase() || reviewer.toLowerCase() === m.identity?.uniqueName?.toLowerCase()) {
488
- if (ids.filter((c) => c.id === m.identity?.id).length === 0) {
489
- ids.push({
490
- id: m.identity.id,
491
- name: reviewer,
492
- isRequired
493
- });
494
- validReviewers.add(reviewer);
495
- }
487
+ if ((reviewer.toLowerCase() === m.identity?.displayName?.toLowerCase() || reviewer.toLowerCase() === m.identity?.uniqueName?.toLowerCase()) && ids.filter((c) => c.id === m.identity?.id).length === 0) {
488
+ ids.push({
489
+ id: m.identity.id,
490
+ name: reviewer,
491
+ isRequired
492
+ });
493
+ validReviewers.add(reviewer);
496
494
  }
497
495
  });
498
496
  });
@@ -505,16 +503,14 @@ async function getUserIds(users) {
505
503
  reviewer = reviewer.replace(requiredReviewerPrefix, "");
506
504
  isRequired = true;
507
505
  }
508
- if (reviewer.toLowerCase() === t.name?.toLowerCase()) {
509
- // v8 ignore else -- TODO: add test #40625
510
- if (ids.filter((c) => c.id === t.id).length === 0) {
511
- ids.push({
512
- id: t.id,
513
- name: reviewer,
514
- isRequired
515
- });
516
- validReviewers.add(reviewer);
517
- }
506
+ // v8 ignore else -- TODO: add test #40625
507
+ if (reviewer.toLowerCase() === t.name?.toLowerCase() && ids.filter((c) => c.id === t.id).length === 0) {
508
+ ids.push({
509
+ id: t.id,
510
+ name: reviewer,
511
+ isRequired
512
+ });
513
+ validReviewers.add(reviewer);
518
514
  }
519
515
  });
520
516
  });