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.
- package/dist/config/app-strings.js +1 -1
- package/dist/config/app-strings.js.map +1 -1
- package/dist/config/decrypt/bcpgp.js +7 -4
- package/dist/config/decrypt/bcpgp.js.map +1 -1
- package/dist/config/migration.js +4 -6
- package/dist/config/migration.js.map +1 -1
- package/dist/config/options/index.js +1 -1
- package/dist/config/options/index.js.map +1 -1
- package/dist/config/validation-helpers/match-base-branches.js +4 -6
- package/dist/config/validation-helpers/match-base-branches.js.map +1 -1
- package/dist/config/validation-helpers/regex-glob-matchers.js +4 -6
- package/dist/config/validation-helpers/regex-glob-matchers.js.map +1 -1
- package/dist/config/validation-helpers/utils.js +2 -4
- package/dist/config/validation-helpers/utils.js.map +1 -1
- package/dist/config/validation.js +4 -6
- package/dist/config/validation.js.map +1 -1
- package/dist/config-validator.js +1 -3
- package/dist/config-validator.js.map +1 -1
- package/dist/global-config-option-defaults.generated.js +1 -1
- package/dist/global-config-option-defaults.generated.js.map +1 -1
- package/dist/modules/datasource/artifactory/index.js +6 -8
- package/dist/modules/datasource/artifactory/index.js.map +1 -1
- package/dist/modules/datasource/aws-machine-image/index.js +1 -2
- package/dist/modules/datasource/aws-machine-image/index.js.map +1 -1
- package/dist/modules/datasource/azure-pipelines-tasks/index.js +2 -3
- package/dist/modules/datasource/azure-pipelines-tasks/index.js.map +1 -1
- package/dist/modules/datasource/conda/index.js +1 -3
- package/dist/modules/datasource/conda/index.js.map +1 -1
- package/dist/modules/datasource/dart-version/index.js +1 -2
- package/dist/modules/datasource/dart-version/index.js.map +1 -1
- package/dist/modules/datasource/datasource.js +1 -3
- package/dist/modules/datasource/datasource.js.map +1 -1
- package/dist/modules/datasource/devbox/index.js +1 -3
- package/dist/modules/datasource/devbox/index.js.map +1 -1
- package/dist/modules/datasource/docker/ecr.js +2 -1
- package/dist/modules/datasource/docker/ecr.js.map +1 -1
- package/dist/modules/datasource/docker/index.js +1 -1
- package/dist/modules/datasource/docker/index.js.map +1 -1
- package/dist/modules/datasource/galaxy-collection/index.js +1 -1
- package/dist/modules/datasource/galaxy-collection/index.js.map +1 -1
- package/dist/modules/datasource/go/releases-goproxy.js +2 -2
- package/dist/modules/datasource/go/releases-goproxy.js.map +1 -1
- package/dist/modules/datasource/java-version/index.js +1 -3
- package/dist/modules/datasource/java-version/index.js.map +1 -1
- package/dist/modules/datasource/maven/util.js +2 -1
- package/dist/modules/datasource/maven/util.js.map +1 -1
- package/dist/modules/datasource/nuget/common.js +6 -4
- package/dist/modules/datasource/nuget/common.js.map +1 -1
- package/dist/modules/datasource/util.js +3 -2
- package/dist/modules/datasource/util.js.map +1 -1
- package/dist/modules/manager/azure-pipelines/extract.js +1 -1
- package/dist/modules/manager/azure-pipelines/extract.js.map +1 -1
- package/dist/modules/manager/bazel/extract.js +1 -3
- package/dist/modules/manager/bazel/extract.js.map +1 -1
- package/dist/modules/manager/bazel/parser.js +1 -1
- package/dist/modules/manager/bazel/parser.js.map +1 -1
- package/dist/modules/manager/buildpacks/extract.js +1 -1
- package/dist/modules/manager/buildpacks/extract.js.map +1 -1
- package/dist/modules/manager/bundler/common.js +23 -25
- package/dist/modules/manager/bundler/common.js.map +1 -1
- package/dist/modules/manager/bundler/extract.js +2 -6
- package/dist/modules/manager/bundler/extract.js.map +1 -1
- package/dist/modules/manager/cargo/extract.js +4 -6
- package/dist/modules/manager/cargo/extract.js.map +1 -1
- package/dist/modules/manager/dockerfile/extract.js +3 -3
- package/dist/modules/manager/dockerfile/extract.js.map +1 -1
- package/dist/modules/manager/fingerprint.generated.js +13 -13
- package/dist/modules/manager/fingerprint.generated.js.map +1 -1
- package/dist/modules/manager/flux/extract.js +2 -1
- package/dist/modules/manager/flux/extract.js.map +1 -1
- package/dist/modules/manager/github-actions/parse.js +1 -1
- package/dist/modules/manager/github-actions/parse.js.map +1 -1
- package/dist/modules/manager/gradle/extract/catalog.js +4 -3
- package/dist/modules/manager/gradle/extract/catalog.js.map +1 -1
- package/dist/modules/manager/gradle/extract.js +2 -2
- package/dist/modules/manager/gradle/extract.js.map +1 -1
- package/dist/modules/manager/gradle/parser/common.js +1 -1
- package/dist/modules/manager/gradle/parser/common.js.map +1 -1
- package/dist/modules/manager/gradle/parser/handlers.js +1 -1
- package/dist/modules/manager/gradle/parser/handlers.js.map +1 -1
- package/dist/modules/manager/helm-values/extract.js.map +1 -1
- package/dist/modules/manager/helmfile/extract.js +1 -1
- package/dist/modules/manager/helmfile/extract.js.map +1 -1
- package/dist/modules/manager/maven/extract.js.map +1 -1
- package/dist/modules/manager/maven/update.js +2 -1
- package/dist/modules/manager/maven/update.js.map +1 -1
- package/dist/modules/manager/mise/utils.js +5 -7
- package/dist/modules/manager/mise/utils.js.map +1 -1
- package/dist/modules/manager/mix/extract.js +3 -6
- package/dist/modules/manager/mix/extract.js.map +1 -1
- package/dist/modules/manager/npm/extract/common/overrides.js +1 -1
- package/dist/modules/manager/npm/extract/common/overrides.js.map +1 -1
- package/dist/modules/manager/npm/extract/yarn.js +1 -1
- package/dist/modules/manager/npm/extract/yarn.js.map +1 -1
- package/dist/modules/manager/npm/npmrc.js +1 -3
- package/dist/modules/manager/npm/npmrc.js.map +1 -1
- package/dist/modules/manager/npm/update/dependency/common.js +2 -3
- package/dist/modules/manager/npm/update/dependency/common.js.map +1 -1
- package/dist/modules/manager/npm/update/dependency/index.js +1 -1
- package/dist/modules/manager/npm/update/dependency/index.js.map +1 -1
- package/dist/modules/manager/npm/update/dependency/pnpm.js +1 -1
- package/dist/modules/manager/npm/update/dependency/pnpm.js.map +1 -1
- package/dist/modules/manager/npm/update/dependency/yarn.js +1 -1
- package/dist/modules/manager/npm/update/dependency/yarn.js.map +1 -1
- package/dist/modules/manager/osgi/extract.js +1 -1
- package/dist/modules/manager/osgi/extract.js.map +1 -1
- package/dist/modules/manager/pep621/processors/uv.js +1 -1
- package/dist/modules/manager/pep621/processors/uv.js.map +1 -1
- package/dist/modules/manager/pep621/schema.js.map +1 -1
- package/dist/modules/manager/pip_setup/extract.js +1 -1
- package/dist/modules/manager/pip_setup/extract.js.map +1 -1
- package/dist/modules/manager/pipenv/artifacts.js.map +1 -1
- package/dist/modules/manager/poetry/schema.js +2 -2
- package/dist/modules/manager/poetry/schema.js.map +1 -1
- package/dist/modules/manager/pub/artifacts.js +4 -6
- package/dist/modules/manager/pub/artifacts.js.map +1 -1
- package/dist/modules/manager/pub/utils.js +2 -2
- package/dist/modules/manager/pub/utils.js.map +1 -1
- package/dist/modules/manager/puppet/common.js +4 -6
- package/dist/modules/manager/puppet/common.js.map +1 -1
- package/dist/modules/manager/sbt/extract.js +1 -1
- package/dist/modules/manager/sbt/extract.js.map +1 -1
- package/dist/modules/manager/sbt/util.js +4 -2
- package/dist/modules/manager/sbt/util.js.map +1 -1
- package/dist/modules/manager/terraform/lockfile/util.js +1 -1
- package/dist/modules/manager/terraform/lockfile/util.js.map +1 -1
- package/dist/modules/platform/azure/index.js +15 -19
- package/dist/modules/platform/azure/index.js.map +1 -1
- package/dist/modules/platform/azure/issue.js +67 -17
- package/dist/modules/platform/azure/issue.js.map +1 -1
- package/dist/modules/platform/bitbucket/index.js +1 -3
- package/dist/modules/platform/bitbucket/index.js.map +1 -1
- package/dist/modules/platform/forgejo/index.js +5 -3
- package/dist/modules/platform/forgejo/index.js.map +1 -1
- package/dist/modules/platform/forgejo/utils.js +1 -1
- package/dist/modules/platform/forgejo/utils.js.map +1 -1
- package/dist/modules/platform/gerrit/scm.js +5 -7
- package/dist/modules/platform/gerrit/scm.js.map +1 -1
- package/dist/modules/platform/gitea/index.js +5 -3
- package/dist/modules/platform/gitea/index.js.map +1 -1
- package/dist/modules/platform/gitea/utils.js +1 -1
- package/dist/modules/platform/gitea/utils.js.map +1 -1
- package/dist/modules/platform/github/index.js +5 -7
- package/dist/modules/platform/github/index.js.map +1 -1
- package/dist/modules/platform/github/pr.js +1 -1
- package/dist/modules/platform/github/pr.js.map +1 -1
- package/dist/modules/platform/gitlab/index.js +2 -1
- package/dist/modules/platform/gitlab/index.js.map +1 -1
- package/dist/modules/platform/utils/pr-body.js +2 -1
- package/dist/modules/platform/utils/pr-body.js.map +1 -1
- package/dist/modules/versioning/apk/index.js +3 -3
- package/dist/modules/versioning/apk/index.js.map +1 -1
- package/dist/modules/versioning/composer/index.js +4 -7
- package/dist/modules/versioning/composer/index.js.map +1 -1
- package/dist/modules/versioning/conan/common.js +4 -6
- package/dist/modules/versioning/conan/common.js.map +1 -1
- package/dist/modules/versioning/conan/index.js +1 -3
- package/dist/modules/versioning/conan/index.js.map +1 -1
- package/dist/modules/versioning/conan/range.js +4 -5
- package/dist/modules/versioning/conan/range.js.map +1 -1
- package/dist/modules/versioning/conda/index.js +1 -1
- package/dist/modules/versioning/conda/index.js.map +1 -1
- package/dist/modules/versioning/gradle/index.js +7 -3
- package/dist/modules/versioning/gradle/index.js.map +1 -1
- package/dist/modules/versioning/hermit/index.js +2 -2
- package/dist/modules/versioning/hermit/index.js.map +1 -1
- package/dist/modules/versioning/ivy/index.js +1 -1
- package/dist/modules/versioning/ivy/index.js.map +1 -1
- package/dist/modules/versioning/maven/compare.js +4 -6
- package/dist/modules/versioning/maven/compare.js.map +1 -1
- package/dist/modules/versioning/npm/range.js +5 -7
- package/dist/modules/versioning/npm/range.js.map +1 -1
- package/dist/modules/versioning/nuget/version.js +6 -6
- package/dist/modules/versioning/nuget/version.js.map +1 -1
- package/dist/modules/versioning/pep440/index.js +1 -1
- package/dist/modules/versioning/pep440/index.js.map +1 -1
- package/dist/modules/versioning/pep440/range.js +2 -6
- package/dist/modules/versioning/pep440/range.js.map +1 -1
- package/dist/modules/versioning/poetry/index.js +1 -1
- package/dist/modules/versioning/poetry/index.js.map +1 -1
- package/dist/modules/versioning/pvp/index.js +2 -2
- package/dist/modules/versioning/pvp/index.js.map +1 -1
- package/dist/modules/versioning/rpm/index.js +4 -3
- package/dist/modules/versioning/rpm/index.js.map +1 -1
- package/dist/modules/versioning/ruby/range.js +2 -2
- package/dist/modules/versioning/ruby/range.js.map +1 -1
- package/dist/modules/versioning/ruby/strategies/bump.js +1 -1
- package/dist/modules/versioning/ruby/strategies/bump.js.map +1 -1
- package/dist/modules/versioning/ruby/strategies/replace.js +13 -12
- package/dist/modules/versioning/ruby/strategies/replace.js.map +1 -1
- package/dist/modules/versioning/ruby/version.js +1 -1
- package/dist/modules/versioning/ruby/version.js.map +1 -1
- package/dist/modules/versioning/rust-release-channel/index.js +1 -1
- package/dist/modules/versioning/rust-release-channel/index.js.map +1 -1
- package/dist/modules/versioning/rust-release-channel/util.js +4 -4
- package/dist/modules/versioning/rust-release-channel/util.js.map +1 -1
- package/dist/util/common.js +1 -3
- package/dist/util/common.js.map +1 -1
- package/dist/util/exec/common.js +4 -6
- package/dist/util/exec/common.js.map +1 -1
- package/dist/util/exec/containerbase.js +1 -3
- package/dist/util/exec/containerbase.js.map +1 -1
- package/dist/util/git/instrument.js +3 -3
- package/dist/util/git/instrument.js.map +1 -1
- package/dist/util/github/graphql/datasource-fetcher.js +5 -4
- package/dist/util/github/graphql/datasource-fetcher.js.map +1 -1
- package/dist/util/http/cache/package-http-cache-provider.js.map +1 -1
- package/dist/util/http/github.js +3 -2
- package/dist/util/http/github.js.map +1 -1
- package/dist/util/http/http.d.ts +1 -1
- package/dist/util/http/http.js.map +1 -1
- package/dist/util/result.d.ts +8 -8
- package/dist/util/result.js +1 -1
- package/dist/util/result.js.map +1 -1
- package/dist/util/url.js +2 -2
- package/dist/util/url.js.map +1 -1
- package/dist/workers/global/config/parse/cli.js +18 -20
- package/dist/workers/global/config/parse/cli.js.map +1 -1
- package/dist/workers/global/config/parse/env.js +3 -5
- package/dist/workers/global/config/parse/env.js.map +1 -1
- package/dist/workers/repository/config-migration/branch/index.js +3 -5
- package/dist/workers/repository/config-migration/branch/index.js.map +1 -1
- package/dist/workers/repository/init/merge.js +2 -3
- package/dist/workers/repository/init/merge.js.map +1 -1
- package/dist/workers/repository/onboarding/branch/check.js +7 -9
- package/dist/workers/repository/onboarding/branch/check.js.map +1 -1
- package/dist/workers/repository/onboarding/branch/index.js +4 -8
- package/dist/workers/repository/onboarding/branch/index.js.map +1 -1
- package/dist/workers/repository/onboarding/branch/onboarding-branch-cache.js +2 -2
- package/dist/workers/repository/onboarding/branch/onboarding-branch-cache.js.map +1 -1
- package/dist/workers/repository/process/extract-update.js.map +1 -1
- package/dist/workers/repository/process/fetch.js.map +1 -1
- package/dist/workers/repository/process/libyear.js +1 -3
- package/dist/workers/repository/process/libyear.js.map +1 -1
- package/dist/workers/repository/process/lookup/filter-checks.js +9 -11
- package/dist/workers/repository/process/lookup/filter-checks.js.map +1 -1
- package/dist/workers/repository/process/lookup/index.js +5 -8
- package/dist/workers/repository/process/lookup/index.js.map +1 -1
- package/dist/workers/repository/process/vulnerabilities.js +3 -3
- package/dist/workers/repository/process/vulnerabilities.js.map +1 -1
- package/dist/workers/repository/reconfigure/index.js +3 -5
- package/dist/workers/repository/reconfigure/index.js.map +1 -1
- package/dist/workers/repository/update/branch/bump-versions.js +1 -1
- package/dist/workers/repository/update/branch/bump-versions.js.map +1 -1
- package/dist/workers/repository/update/branch/get-updated.js +3 -5
- package/dist/workers/repository/update/branch/get-updated.js.map +1 -1
- package/dist/workers/repository/update/pr/body/updates-table.js +1 -3
- package/dist/workers/repository/update/pr/body/updates-table.js.map +1 -1
- package/dist/workers/repository/update/pr/changelog/common.js +1 -1
- package/dist/workers/repository/update/pr/changelog/common.js.map +1 -1
- package/dist/workers/repository/update/pr/index.js +6 -7
- package/dist/workers/repository/update/pr/index.js.map +1 -1
- package/dist/workers/repository/updates/flatten.js +1 -1
- package/dist/workers/repository/updates/flatten.js.map +1 -1
- package/dist/workers/repository/updates/generate.js +1 -1
- package/dist/workers/repository/updates/generate.js.map +1 -1
- package/package.json +2 -2
- package/renovate-schema.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"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
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
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 }
|
|
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
|
-
|
|
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
|
-
|
|
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 }
|
|
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
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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 }
|
|
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"}
|
|
@@ -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":";;;;;;;;;;;;;;;AAiDA,MAAM,QAAQ,KAAK,WAAW,OAAO;AAErC,MAAM,kBAAkB,MACtB,kDACF;AAEA,MAAM,mBAAmB,MACvB,uDACF;AAEA,MAAM,oBAAoBA,MACvB,IAAS,cAAc,CAAC,CACxB,GAAG,IAAI,CAAC,CACR,IAGCA,MAEG,KAAU,KAAK,EAAE,OAAO,sBAAsB;CAC7C,GAAG;CACH;AACF,EAAE,CAAC,CACF,GAAG,GAAG,CAAC,CACP,KAAK,KAAK,EAAE,OAAO,cAAc;CAEhC,MAAM,qBAAqB,GAAG,IAAI,eAAe,GAAG;CACpD,MAAM,eAAe,IAAI,KAAK;CAC9B,IAAI,cACF,IAAI,eAAe;CAErB,OAAO,IAAI;CACX,OAAO;AACT,CAAC,GAEHA,MAAE,KAAU,KAAK,EAAE,OAAO,cAAc;CACtC,MAAM,eAAe,IAAI,KAAK;CAC9B,IAAI,cACF,IAAI,eAAe;CAErB,OAAO;AACT,CAAC,GAEDA,MAAE,KAAU,KAAK,EAAE,OAAO,oBAAoB;CAAE,GAAG;CAAK;AAAa,EAAE,CACzE,CAAC,CACA,SAAS,QAAQ;CAChB,IAAI,IAAI,cAAc;EACpB,MAAM,UAAU,IAAIC,IAAkB;EAEtC,IAAI,cAAc;EAClB,IAAI,QAAQ,SAAS,IAAI,YAAY,MAAM,GACzC,cAAc;EAGhB,MAAM,MAAyB;GAC7B,YAAY,gBAAgB;GAC5B,SAAS;GACT;GACA,cAAc,IAAI;GAClB,oBAAoB;EACtB;EACA,IAAI,eAAe,sBAAsB,IAAI,YAAY;EACzD,IAAI,KAAK,KAAK,GAAG;CACnB;CACA,OAAO;AACT,CAAC;AAEH,MAAM,0BAA0BD,MAC7B,IAAS,SAAS,CAAC,CACnB,GAAG,IAAI,CAAC,CACR,IACCA,MAAE,KAAU,KAAK,EAAE,OAAO,0BAA0B;CAClD,GAAG;CACH;AACF,EAAE,GACFA,MAAE,KAAU,KAAK,EAAE,OAAO,cAAc;CACtC,MAAM,qBAAqB,IAAI,KAAK;CACpC,IAAI,oBACF,IAAI,qBAAqB;CAE3B,OAAO;AACT,CAAC,CACH;AAEF,MAAM,oBAAoBA,MACvB,KAAU,KAAK,EAAE,OAAO,eAAe;CACtC,GAAG;CACH,gBAAgB;AAClB,EAAE,CAAC,CACF,IAAIA,MAAE,GAAQ,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC;AAEnC,MAAM,qBAAqBA,MAAE,KAAU,KAAK,EAAE,YAAY;CACxD,IAAI,KAAK,IAAI,kBAAmB;CAChC,OAAO,IAAI;CACX,OAAO;AACT,CAAC;AAED,MAAM,kBAAkBA,MAAE,IAAS,KAAK,CAAC,CAAC,KAAK,iBAAiB,CAAC,CAAC,GAAG,GAAG;AAExE,MAAM,0BAA0BA,MAC7B,IACCA,MAAE,IAAS,MAAM,CAAC,CAAC,KAAK,eAAe,GACvC,iBACA,kBAAkB,GAAG,IAAI,CAC3B,CAAC,CACA,KAAK,kBAAkB;AAG1B,MAAM,mBAAmBA,MACtB,KAAU,KAAK,EAAE,OAAO,iBAAiB;CACxC,GAAG;CACH,gBAAgB,GAAG,IAAI,kBAAkB,GAAG;AAC9C,EAAE,CAAC,CACF,GAAG,GAAG,CAAC,CACP,KAAK,KAAK,EAAE,YAAY;CACvB,IAAI,KAAK,IAAI,kBAAmB;CAChC,OAAO,IAAI;CACX,OAAO;AACT,CAAC;AAQH,MAAM,wBAAwBA,MAC3B,IAAS,KAAK,CAAC,CACf,KAAK,KAAK,EAAE,OAAO,yBAAyB;CAC3C,GAAG;CACH;AACF,EAAE,CAAC,CACF,GAAG,GAAG,CAAC,CACP,IAAI,KAAK,CAAC,CACV,KAAK,EACJ,QAAQA,MAAE,KAAK,gBAAgB,EACjC,CAAC,CAAC,CACD,SAAS,QAAQ;CAChB,OAAO,IAAI;CACX,OAAO;AACT,CAAC;AAEH,MAAM,eAAeA,MAAE,IACrBA,MAAE,KAAU,KAAK,EAAE,OAAO,cAAc;CACtC,MAAM,iBAAiB,IAAI,KAAK;CAChC,IAAI,gBACF,IAAI,UAAU;CAEhB,OAAO;AACT,CAAC,GACDA,MAAE,KAAU,KAAK,EAAE,OAAO,eAAe;CAAE,GAAG;CAAK;AAAQ,EAAE,CAC/D;AAEA,MAAM,kBAAkBA,MAAE,IACxBA,MAAE,KAAU,KAAK,EAAE,YAAY;CAC7B,MAAM,aAAa,IAAI,KAAK;CAC5B,IAAI,YACF,IAAI,aAAa;CAEnB,OAAO;AACT,CAAC,GACDA,MAAE,KAAU,KAAK,EAAE,OAAO,kBAAkB;CAAE,GAAG;CAAK;AAAW,EAAE,CACrE;AAEA,MAAM,eAAeA,MAAE,IAGrBA,MACG,KAAU,KAAK,EAAE,OAAO,sBAAsB;CAAE,GAAG;CAAK;AAAe,EAAE,CAAC,CAC1E,GAAG,GAAG,CAAC,CACP,KAAK,KAAK,EAAE,OAAO,cAAc;CAEhC,MAAM,qBAAqB,GAAG,IAAI,eAAe,GAAG;CACpD,MAAM,eAAe,IAAI,KAAK;CAC9B,IAAI,cAAc;EAChB,IAAI,eAAe;EACnB,IAAI,eAAe;CACrB;CACA,OAAO,IAAI;CACX,OAAO;AACT,CAAC,GAEHA,MAAE,KAAU,KAAK,EAAE,OAAO,cAAc;CACtC,MAAM,eAAe,IAAI,KAAK;CAC9B,IAAI,cAAc;EAChB,IAAI,eAAe;EACnB,IAAI,eAAe;CACrB;CACA,OAAO;AACT,CAAC,GAEDA,MAAE,KAAU,KAAK,EAAE,OAAO,oBAAoB;CAAE,GAAG;CAAK;AAAa,EAAE,CACzE;AAEA,MAAM,wBAAwB,aAC3B,GAAG,GAAG,CAAC,CACP,KAAK,eAAe,CAAC,CACrB,GAAG,GAAG,CAAC,CACP,KAAK,YAAY;AAEpB,MAAM,2BAA2B,aAC9B,GAAG,IAAI,CAAC,CACR,KAAK,eAAe,CAAC,CACrB,SAAS,SAAS;CAAE,GAAG;CAAK,iBAAiB;AAAK,EAAE,CAAC,CACrD,GAAG,GAAG,CAAC,CACP,KAAK,YAAY;AAEpB,MAAM,uBAAuB,aAC1B,GAAG,KAAK,CAAC,CACT,KAAK,eAAe,CAAC,CACrB,SAAS,SAAS;CAAE,GAAG;CAAK,iBAAiB;AAAK,EAAE,CAAC,CACrD,GAAG,GAAG,CAAC,CACP,KAAK,YAAY;AAEpB,SAAS,WAAW,KAAe;CACjC,MAAM,EACJ,cACA,SACA,YACA,cACA,iBACA,SACA,iBACE;CAEJ,OAAO,IAAI;CACX,OAAO,IAAI;CACX,OAAO,IAAI;CACX,OAAO,IAAI;CACX,OAAO,IAAI;CACX,OAAO,IAAI;CAEX,MAAM,UAAU,GAAG,QAAS,GAAG;CAE/B,MAAM,MAAyB;EAC7B,YAAY,qBAAqB;EACjC;EACA,aACE,gBAAgB,kBAAkB,GAAG,QAAQ,GAAG,iBAAiB;EACnE;CACF;CAEA,IAAI,SACF,IAAI,UAAU;CAGhB,IAAI,YAAY,UACd,IAAI,aAAa,oBAAoB;CAGvC,IAAI,cAAc;EAChB,IAAI,qBAAqB;EACzB,IAAI,eAAe;CACrB;CAEA,IAAI,KAAK,KAAK,GAAG;CAEjB,OAAO;AACT;AAEA,SAAS,eAAe,KAAU,EAAE,OAAO,WAAmC;CAC5E,OAAO;EAAE,GAAG;EAAK;CAAQ;AAC3B;AAEA,MAAM,kBAAkBA,MACrB,IAASA,MAAE,IAAIA,MAAE,IAAS,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAC5D,IAAI,sBAAsB,uBAAuB,wBAAwB,CAAC,CAC1E,IACCA,MAAE,IACAA,MAAE,IAAS,YAAY,CAAC,CAAC,IAAI,cAAc,GAC3CA,MAAE,GAAQ,GAAG,CAAC,CAAC,IAAI,cAAc,GACjCA,MAAE,GAAQ,GAAG,CAAC,CAAC,IAAI,cAAc,CACnC,CACF,CAAC,CACA,QAAQ,UAAU;AAErB,MAAM,iBAAiBA,MACpB,IAAS,MAAM,sCAAsC,CAAC,CAAC,CACvD,KAAK;CACJ,MAAM;CACN,UAAU;CACV,QAAQA,MACL,MAAW,CAAC,CACZ,IAAI,uBAAuB,wBAAwB,CAAC,CACpD,IAAI;AACT,CAAC,CAAC,CACD,SAAS,SAAS;CAAE,GAAG;CAAK,SAAS;AAAS,EAAE,CAAC,CACjD,QAAQ,UAAU;AAErB,MAAM,gBAAgBA,MACnB,IAAS,CAAC,CACV,IAAI,IAAI,CAAC,CACT,KAAK,KAAK,EAAE,YAAY;CACvB,IAAI,SAAS,KAAK,GAChB,IAAI,aAAa,KAAK,KAAK;CAE7B,OAAO;AACT,CAAC;AAEH,MAAM,mBAAmBA,MAAE,IAAS,WAAW,CAAC,CAAC,IAC/CA,MAAE,GAAQ,IAAI,CAAC,CAAC,KAAK,aAAa,GAClCA,MAAE,GAAQ,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK;CAC/B,MAAM;CACN,UAAU;CACV,QAAQ;AACV,CAAC,CACH;AAEA,SAAS,mBAAmB,KAAe;CACzC,KAAK,MAAM,OAAO,IAAI,MACpB,IAAI,eAAe,CAAC,GAAG,IAAI,YAAY;CAEzC,OAAO;AACT;AAEA,MAAME,UAAQF,MAAE,KAAU;CACxB,MAAM;CACN,UAAU;CACV,QAAQA,MAAE,IACR,mBACA,yBACA,iBACA,gBACA,kBACA,yBACA,qBACF;CACA,aAAa;AACf,CAAC;AAED,SAAgB,iBACd,SACA,aACU;CACV,MAAM,qBAA+B,CAAC;CACtC,OAAO,MAAM,iCAAiC,aAAa;CAC3D,KAAK,MAAM,QAAQ,QAAQ,MAAM,YAAY,GAAG;EAC9C,MAAM,aAAa,iBAAiB,KAAK,IAAI;EAC7C,IAAI,YAAY,QAAQ,OACtB,mBAAmB,KAAK,WAAW,OAAO,KAAK;OAC1C,IAAI,KAAK,KAAK,MAAM,iBACzB,mBAAmB,KAAK,UAAU;CAEtC;CACA,OAAO;AACT;AAEA,SAAgB,mBACd,SACA,aAC2B;CAC3B,OAAO,2BAA2B,SAAS,WAAW;AACxD;AAEA,SAAS,2BACP,SACA,aACA,iBAC2B;CAC3B,IACE,gBAAgB,8BAChB,YAAY,SAAS,2BAA2B,GAChD;EACA,MAAM,cAAc,gBAAgB,KAAK,OAAO;EAChD,MAAM,aAAa,aAAa,QAAQ;EACxC,MAAM,cAAc,cAAc;EAClC,IAAI,YAYF,OAAO,EACL,MAAM,CAAC;GAXP,YAAY,yBAAyB;GACrC,SAAS;GACT,aAAa;GACb,YAAYG;GACZ,cAAc;GACd,eAAe;GACf,gBAAgB;GAChB,cAAc,CAAC;EAII,CAAC,EACtB;EAEF,OAAO;CACT;CAEA,IAAI,eAA2B;CAE/B,IAAI;EACF,eAAe,MAAM,MAAM,SAASD,SAAO;GACzC,MAAM,CAAC;GACP,MAAM,CAAC;GACP,cAAc,CAAC;GACf,cAAc;EAChB,CAAC;CACH,SAAS,iCAAgC;EACvC,OAAO,MAAM;GAAE;GAAK;EAAY,GAAG,mBAAmB;CACxD;CAEA,IAAI,CAAC,cACH,OAAO;CAGT,MAAM,EAAE,MAAM,cAAc,uBAAuB;CAEnD,IAAI,CAAC,KAAK,QACR,OAAO;CAGT,OAAO;EAAE;EAAM;EAAoB,aAAa,EAAE,aAAa;CAAE;AACnE;AAEA,eAAsB,uBACpB,SACA,cACwB;CACxB,MAAM,WAA0B,CAAC;CACjC,MAAM,YAAsB,CAAC;CAC7B,IAAI;CAEJ,MAAM,qBAAqB,iBAAiB,YAAY;CAExD,KAAK,MAAM,eAAe,oBAAoB;EAC5C,MAAM,UAAU,MAAM,cAAc,aAAa,MAAM;EACvD,IAAI,CAAC,SAAS;GACZ,OAAO,MAAM,EAAE,YAAY,GAAG,4BAA4B;GAC1D;EACF;EACA,IAAI,gBAAgB,gBAAgB;GAClC,MAAM,OAAO,iBAAiB,SAAS,WAAW;GAClD,UAAU,KAAK,GAAG,IAAI;EACxB,OAAO;GACL,MAAM,MAAM,2BACV,SACA,aACA,eACF;GACA,IAAI,KAAK;IACP,SAAS,KAAK;KAAE,MAAM,IAAI;KAAM;IAAY,CAAC;IAC7C,IAAI,IAAI,aAAa,cACnB,kBAAkB,IAAI,YAAY;GAEtC;EACF;CACF;CACA,KAAK,MAAM,OAAO,UAChB,KAAK,MAAM,OAAO,IAAI,MACpB,IAAI,IAAI,eAAe,yBAAyB,IAC9C,IAAI,UAAU,SAAS,GACrB,IAAI,aAAc,QAAQ,GAAG,SAAS;MACjC,IAAI,IAAI,YAAY,UACzB,IAAI,aAAc,QAAQ,kBAAkB,UAAU;MAEtD,IAAI,aAAc,QAAQ,UAAU;CAK5C,OAAO;AACT"}
|
|
@@ -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))
|
|
15
|
-
|
|
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 }
|
|
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
|
|
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":"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"}
|
|
@@ -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
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
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
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
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
|
});
|