renovate 44.90.3 → 44.92.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config/options/index.js +1 -1
- package/dist/config/options/index.js.map +1 -1
- package/dist/global-config-option-defaults.generated.js +1 -1
- package/dist/global-config-option-defaults.generated.js.map +1 -1
- package/dist/modules/datasource/cdnjs/index.js +2 -0
- package/dist/modules/datasource/cdnjs/index.js.map +1 -1
- package/dist/modules/manager/ansible-galaxy/collections.js +4 -6
- package/dist/modules/manager/ansible-galaxy/collections.js.map +1 -1
- package/dist/modules/manager/azure-pipelines/extract.js +1 -0
- package/dist/modules/manager/azure-pipelines/extract.js.map +1 -1
- package/dist/modules/manager/bazel/artifacts.js +5 -1
- package/dist/modules/manager/bazel/artifacts.js.map +1 -1
- package/dist/modules/manager/bazel/parser.js +15 -0
- package/dist/modules/manager/bazel/parser.js.map +1 -1
- package/dist/modules/manager/bazel/rules/http.js.map +1 -1
- package/dist/modules/manager/bundler/common.js +1 -0
- package/dist/modules/manager/bundler/common.js.map +1 -1
- package/dist/modules/manager/cargo/artifacts.js +2 -0
- package/dist/modules/manager/cargo/artifacts.js.map +1 -1
- package/dist/modules/manager/cargo/extract.js.map +1 -1
- package/dist/modules/manager/cocoapods/extract.js +3 -0
- package/dist/modules/manager/cocoapods/extract.js.map +1 -1
- package/dist/modules/manager/composer/artifacts.js +1 -0
- package/dist/modules/manager/composer/artifacts.js.map +1 -1
- package/dist/modules/manager/composer/schema.js.map +1 -1
- package/dist/modules/manager/cpanfile/parser.js +2 -0
- package/dist/modules/manager/cpanfile/parser.js.map +1 -1
- package/dist/modules/manager/deps-edn/extract.js +3 -1
- package/dist/modules/manager/deps-edn/extract.js.map +1 -1
- package/dist/modules/manager/droneci/extract.js +4 -6
- package/dist/modules/manager/droneci/extract.js.map +1 -1
- package/dist/modules/manager/fingerprint.generated.js +11 -11
- package/dist/modules/manager/fingerprint.generated.js.map +1 -1
- package/dist/modules/manager/flux/extract.js +1 -0
- package/dist/modules/manager/flux/extract.js.map +1 -1
- package/dist/modules/manager/github-actions/extract.js +3 -0
- package/dist/modules/manager/github-actions/extract.js.map +1 -1
- package/dist/modules/manager/github-actions/known-actions.js +268 -2
- package/dist/modules/manager/github-actions/known-actions.js.map +1 -1
- package/dist/modules/manager/gitlabci/extract.js +1 -0
- package/dist/modules/manager/gitlabci/extract.js.map +1 -1
- package/dist/modules/manager/glasskube/extract.js +2 -0
- package/dist/modules/manager/glasskube/extract.js.map +1 -1
- package/dist/modules/manager/gomod/artifacts-extra.js +1 -0
- package/dist/modules/manager/gomod/artifacts-extra.js.map +1 -1
- package/dist/modules/manager/gomod/artifacts.js +1 -0
- package/dist/modules/manager/gomod/artifacts.js.map +1 -1
- package/dist/modules/manager/gomod/extract.js +1 -0
- package/dist/modules/manager/gomod/extract.js.map +1 -1
- package/dist/modules/manager/gradle/artifacts.js +1 -1
- package/dist/modules/manager/gradle/artifacts.js.map +1 -1
- package/dist/modules/manager/gradle-wrapper/utils.js +1 -0
- package/dist/modules/manager/gradle-wrapper/utils.js.map +1 -1
- package/dist/modules/manager/npm/extract/common/dependency.js +2 -1
- package/dist/modules/manager/npm/extract/common/dependency.js.map +1 -1
- package/dist/modules/manager/pep621/extract.js +1 -2
- package/dist/modules/manager/pep621/extract.js.map +1 -1
- package/dist/modules/manager/quadlet/extract.js +2 -4
- package/dist/modules/manager/quadlet/extract.js.map +1 -1
- package/dist/modules/manager/swift/artifacts.js +3 -1
- package/dist/modules/manager/swift/artifacts.js.map +1 -1
- package/dist/modules/manager/swift/extract.js +1 -0
- package/dist/modules/manager/swift/extract.js.map +1 -1
- package/dist/modules/manager/terraform/extractors/others/modules.js.map +1 -1
- package/dist/modules/manager/terraform/lockfile/index.js +1 -0
- package/dist/modules/manager/terraform/lockfile/index.js.map +1 -1
- package/dist/modules/manager/terragrunt/extract.js +1 -0
- package/dist/modules/manager/terragrunt/extract.js.map +1 -1
- package/dist/modules/manager/tflint-plugin/extract.js +1 -0
- package/dist/modules/manager/tflint-plugin/extract.js.map +1 -1
- package/dist/modules/manager/tflint-plugin/plugins.js.map +1 -1
- package/package.json +3 -3
- package/renovate-schema.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract.js","names":[],"sources":["../../../../lib/modules/manager/swift/extract.ts"],"sourcesContent":["import { detectPlatform } from '../../../util/common.ts';\nimport { getHttpUrl } from '../../../util/git/url.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { parseUrl } from '../../../util/url.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 type { PackageDependency, PackageFileContent } from '../types.ts';\nimport type { MatchResult } from './types.ts';\n\nconst regExps = {\n wildcard: regEx(/^.*?/),\n space: regEx(/(?:\\s+|\\/\\/[^\\n]*|\\/\\*.*\\*\\/)+/s),\n depsKeyword: regEx(/dependencies/),\n colon: regEx(/:/),\n beginSection: regEx(/\\[/),\n endSection: regEx(/],?/),\n package: regEx(/\\s*.\\s*package\\s*\\(\\s*/),\n urlKey: regEx(/url/),\n stringLiteral: regEx(/\"[^\"]+\"/),\n comma: regEx(/,/),\n from: regEx(/from/),\n rangeOp: regEx(/\\.\\.[.<]/),\n exactVersion: regEx(/\\.\\s*exact\\s*\\(\\s*/),\n exactVersionLabel: regEx(/\\s*exact:/),\n traitsLabel: regEx(/\\s*traits\\s*:/),\n // This pattern consumes any `traits` content until the next package declaration,\n // as the traits syntax can be quite complex and does not need to be parsed in detail for package extraction.\n traitsConsumeToNextPackage: regEx(/.*\\.\\s*package\\s*\\(\\s*/),\n};\n\nconst WILDCARD = 'wildcard';\nconst SPACE = 'space';\nconst DEPS = 'depsKeyword';\nconst COLON = 'colon';\nconst BEGIN_SECTION = 'beginSection';\nconst END_SECTION = 'endSection';\nconst PACKAGE = 'package';\nconst URL_KEY = 'urlKey';\nconst STRING_LITERAL = 'stringLiteral';\nconst COMMA = 'comma';\nconst FROM = 'from';\nconst RANGE_OP = 'rangeOp';\nconst EXACT_VERSION = 'exactVersion';\nconst EXACT_VERSION_LABEL = 'exactVersionLabel';\nconst TRAITS_LABEL = 'traitsLabel';\nconst TRAITS_CONSUME_TO_NEXT_PACKAGE = 'traitsConsumeToNextPackage';\n\nconst searchLabels = {\n wildcard: WILDCARD,\n space: SPACE,\n depsKeyword: DEPS,\n colon: COLON,\n beginSection: BEGIN_SECTION,\n endSection: END_SECTION,\n package: PACKAGE,\n urlKey: URL_KEY,\n stringLiteral: STRING_LITERAL,\n comma: COMMA,\n from: FROM,\n rangeOp: RANGE_OP,\n exactVersion: EXACT_VERSION,\n exactVersionLabel: EXACT_VERSION_LABEL,\n traitsLabel: TRAITS_LABEL,\n traitsConsumeToNextPackage: TRAITS_CONSUME_TO_NEXT_PACKAGE,\n};\n\nfunction searchKeysForState(state: string | null): (keyof typeof regExps)[] {\n switch (state) {\n case 'dependencies':\n return [SPACE, COLON, WILDCARD];\n case 'dependencies:':\n return [SPACE, BEGIN_SECTION, WILDCARD];\n case 'dependencies: [':\n return [SPACE, PACKAGE, COMMA, TRAITS_LABEL, END_SECTION];\n case '.package(':\n return [SPACE, URL_KEY, PACKAGE, END_SECTION];\n case '.package(url':\n return [SPACE, COLON, PACKAGE, END_SECTION];\n case '.package(url:':\n return [SPACE, STRING_LITERAL, PACKAGE, END_SECTION];\n case '.package(url: [depName]':\n return [SPACE, COMMA, PACKAGE, END_SECTION];\n case '.package(url: [depName],':\n return [\n SPACE,\n FROM,\n STRING_LITERAL,\n RANGE_OP,\n EXACT_VERSION,\n EXACT_VERSION_LABEL,\n PACKAGE,\n END_SECTION,\n ];\n case '.package(url: [depName], .exact(':\n return [SPACE, STRING_LITERAL, PACKAGE, COMMA, TRAITS_LABEL, END_SECTION];\n case '.package(url: [depName], exact:':\n return [SPACE, STRING_LITERAL, PACKAGE, COMMA, TRAITS_LABEL, END_SECTION];\n case '.package(url: [depName], from':\n return [SPACE, COLON, PACKAGE, COMMA, TRAITS_LABEL, END_SECTION];\n case '.package(url: [depName], from:':\n return [SPACE, STRING_LITERAL, PACKAGE, COMMA, TRAITS_LABEL, END_SECTION];\n case '.package(url: [depName], [value]':\n return [SPACE, RANGE_OP, PACKAGE, COMMA, TRAITS_LABEL, END_SECTION];\n case '.package(url: [depName], [rangeFrom][rangeOp]':\n return [SPACE, STRING_LITERAL, PACKAGE, COMMA, TRAITS_LABEL, END_SECTION];\n case 'traits:':\n return [SPACE, TRAITS_CONSUME_TO_NEXT_PACKAGE];\n default:\n return [DEPS];\n }\n}\nfunction getMatch(str: string, state: string | null): MatchResult | null {\n const keys = searchKeysForState(state);\n let result: MatchResult | null = null;\n for (const key of keys) {\n const regex = regExps[key];\n const label = searchLabels[key];\n const match = regex.exec(str);\n if (match) {\n const idx = match.index;\n const substr = match[0];\n const len = substr.length;\n if (idx === 0) {\n return { idx, len, label, substr };\n }\n if (!result || idx < result.idx) {\n result = { idx, len, label, substr };\n }\n }\n }\n return result;\n}\n\nfunction parseDependencyUrl(\n url: string | null,\n): { depName: string; datasource: string; registryUrls?: string[] } | null {\n // istanbul ignore if\n if (!url) {\n return null;\n }\n\n let normalizedUrl: string;\n try {\n normalizedUrl = getHttpUrl(url);\n } catch {\n return null;\n }\n\n const parsedUrl = parseUrl(normalizedUrl);\n // v8 ignore if -- getHttpUrl always returns a parseable URL\n if (!parsedUrl) {\n return null;\n }\n const { host, pathname, protocol } = parsedUrl;\n const platform = detectPlatform(normalizedUrl);\n if (platform === 'github' || platform === 'gitlab') {\n const depName = pathname\n .replace(regEx(/^\\//), '')\n .replace(regEx(/\\.git$/), '')\n .replace(regEx(/\\/$/), '');\n const datasource =\n platform === 'github' ? GithubTagsDatasource.id : GitlabTagsDatasource.id;\n\n const isGitHubPublic = host === 'github.com';\n const isGitLabPublic = host === 'gitlab.com';\n\n if (!isGitHubPublic && !isGitLabPublic) {\n const baseUrl = `${protocol}//${host}`;\n return { depName, datasource, registryUrls: [baseUrl] };\n }\n\n return { depName, datasource };\n }\n return { depName: url, datasource: GitTagsDatasource.id };\n}\n\nexport function extractPackageFile(content: string): PackageFileContent | null {\n if (!content) {\n return null;\n }\n\n const deps: PackageDependency[] = [];\n const result: PackageFileContent = {\n deps,\n };\n\n let restStr = content;\n let state: string | null = null;\n let match = getMatch(restStr, state);\n\n let packageName: string | null = null;\n let currentValue: string | null = null;\n\n function yieldDep(): void {\n // istanbul ignore if\n if (!packageName) {\n return;\n }\n const parsedUrl = parseDependencyUrl(packageName);\n if (parsedUrl && currentValue) {\n const { depName, datasource, registryUrls } = parsedUrl;\n\n const dep: PackageDependency = {\n datasource,\n depName,\n currentValue,\n ...(registryUrls?.length && { registryUrls }),\n };\n\n deps.push(dep);\n }\n packageName = null;\n currentValue = null;\n }\n\n while (match) {\n const { idx, len, label, substr } = match;\n\n switch (state) {\n case null:\n if (deps.length) {\n break;\n }\n if (label === DEPS) {\n state = 'dependencies';\n }\n break;\n case 'dependencies':\n if (label === COLON) {\n state = 'dependencies:';\n } else if (label !== SPACE) {\n state = null;\n }\n break;\n case 'dependencies:':\n if (label === BEGIN_SECTION) {\n state = 'dependencies: [';\n } else if (label !== SPACE) {\n state = null;\n }\n break;\n case 'dependencies: [':\n if (label === END_SECTION) {\n yieldDep();\n state = null;\n } else if (label === PACKAGE) {\n yieldDep();\n state = '.package(';\n } else if (label === TRAITS_LABEL) {\n state = 'traits:';\n }\n break;\n case '.package(':\n if (label === END_SECTION) {\n yieldDep();\n state = null;\n } else if (label === URL_KEY) {\n state = '.package(url';\n } else if (label === PACKAGE) {\n yieldDep();\n }\n break;\n case '.package(url':\n if (label === END_SECTION) {\n yieldDep();\n state = null;\n } else if (label === COLON) {\n state = '.package(url:';\n } else if (label === PACKAGE) {\n yieldDep();\n state = '.package(';\n }\n break;\n case '.package(url:':\n if (label === END_SECTION) {\n yieldDep();\n state = null;\n } else if (label === STRING_LITERAL) {\n packageName = substr\n .replace(regEx(/^\"/), '')\n .replace(regEx(/\"$/), '');\n state = '.package(url: [depName]';\n } else if (label === PACKAGE) {\n yieldDep();\n state = '.package(';\n }\n break;\n case '.package(url: [depName]':\n if (label === END_SECTION) {\n yieldDep();\n state = null;\n } else if (label === COMMA) {\n state = '.package(url: [depName],';\n } else if (label === PACKAGE) {\n yieldDep();\n state = '.package(';\n }\n break;\n case '.package(url: [depName],':\n if (label === END_SECTION) {\n yieldDep();\n state = null;\n } else if (label === FROM) {\n currentValue = substr;\n state = '.package(url: [depName], from';\n } else if (label === STRING_LITERAL) {\n currentValue = substr;\n state = '.package(url: [depName], [value]';\n } else if (label === RANGE_OP) {\n currentValue = substr;\n state = '.package(url: [depName], [rangeFrom][rangeOp]';\n } else if (label === EXACT_VERSION) {\n state = '.package(url: [depName], .exact(';\n } else if (label === EXACT_VERSION_LABEL) {\n state = '.package(url: [depName], exact:';\n } else if (label === PACKAGE) {\n yieldDep();\n state = '.package(';\n }\n break;\n case '.package(url: [depName], .exact(':\n if (label === END_SECTION) {\n yieldDep();\n state = null;\n } else if (label === STRING_LITERAL) {\n currentValue = substr.slice(1, substr.length - 1);\n yieldDep();\n } else if (label === PACKAGE) {\n yieldDep();\n state = '.package(';\n }\n break;\n case '.package(url: [depName], exact:':\n if (label === END_SECTION) {\n yieldDep();\n state = null;\n } else if (label === STRING_LITERAL) {\n currentValue = substr.slice(1, substr.length - 1);\n yieldDep();\n state = 'dependencies: [';\n } else if (label === PACKAGE) {\n yieldDep();\n state = '.package(';\n }\n break;\n case '.package(url: [depName], from':\n if (label === END_SECTION) {\n yieldDep();\n state = null;\n } else if (label === COLON) {\n currentValue += substr;\n state = '.package(url: [depName], from:';\n } else if (label === SPACE) {\n currentValue += substr;\n } else if (label === PACKAGE) {\n yieldDep();\n state = '.package(';\n }\n break;\n case '.package(url: [depName], from:':\n if (label === END_SECTION) {\n yieldDep();\n state = null;\n } else if (label === STRING_LITERAL) {\n currentValue += substr;\n yieldDep();\n state = 'dependencies: [';\n } else if (label === SPACE) {\n currentValue += substr;\n } else if (label === PACKAGE) {\n yieldDep();\n state = '.package(';\n }\n break;\n case '.package(url: [depName], [value]':\n if (label === END_SECTION) {\n yieldDep();\n state = null;\n } else if (label === RANGE_OP) {\n currentValue += substr;\n state = '.package(url: [depName], [rangeFrom][rangeOp]';\n } else if (label === SPACE) {\n currentValue += substr;\n } else if (label === PACKAGE) {\n yieldDep();\n state = '.package(';\n }\n break;\n case '.package(url: [depName], [rangeFrom][rangeOp]':\n if (label === END_SECTION) {\n yieldDep();\n state = null;\n } else if (label === STRING_LITERAL) {\n currentValue += substr;\n state = 'dependencies: [';\n } else if (label === SPACE) {\n currentValue += substr;\n } else if (label === PACKAGE) {\n yieldDep();\n state = '.package(';\n }\n break;\n case 'traits:':\n if (label === TRAITS_CONSUME_TO_NEXT_PACKAGE) {\n yieldDep();\n state = '.package(';\n }\n break;\n }\n restStr = restStr.slice(idx + len);\n match = getMatch(restStr, state);\n }\n return deps.length ? result : null;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"extract.js","names":[],"sources":["../../../../lib/modules/manager/swift/extract.ts"],"sourcesContent":["import { detectPlatform } from '../../../util/common.ts';\nimport { getHttpUrl } from '../../../util/git/url.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { parseUrl } from '../../../util/url.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 type { PackageDependency, PackageFileContent } from '../types.ts';\nimport type { MatchResult } from './types.ts';\n\nconst regExps = {\n wildcard: regEx(/^.*?/),\n space: regEx(/(?:\\s+|\\/\\/[^\\n]*|\\/\\*.*\\*\\/)+/s),\n depsKeyword: regEx(/dependencies/),\n colon: regEx(/:/),\n beginSection: regEx(/\\[/),\n endSection: regEx(/],?/),\n package: regEx(/\\s*.\\s*package\\s*\\(\\s*/),\n urlKey: regEx(/url/),\n stringLiteral: regEx(/\"[^\"]+\"/),\n comma: regEx(/,/),\n from: regEx(/from/),\n rangeOp: regEx(/\\.\\.[.<]/),\n exactVersion: regEx(/\\.\\s*exact\\s*\\(\\s*/),\n exactVersionLabel: regEx(/\\s*exact:/),\n traitsLabel: regEx(/\\s*traits\\s*:/),\n // This pattern consumes any `traits` content until the next package declaration,\n // as the traits syntax can be quite complex and does not need to be parsed in detail for package extraction.\n traitsConsumeToNextPackage: regEx(/.*\\.\\s*package\\s*\\(\\s*/),\n};\n\nconst WILDCARD = 'wildcard';\nconst SPACE = 'space';\nconst DEPS = 'depsKeyword';\nconst COLON = 'colon';\nconst BEGIN_SECTION = 'beginSection';\nconst END_SECTION = 'endSection';\nconst PACKAGE = 'package';\nconst URL_KEY = 'urlKey';\nconst STRING_LITERAL = 'stringLiteral';\nconst COMMA = 'comma';\nconst FROM = 'from';\nconst RANGE_OP = 'rangeOp';\nconst EXACT_VERSION = 'exactVersion';\nconst EXACT_VERSION_LABEL = 'exactVersionLabel';\nconst TRAITS_LABEL = 'traitsLabel';\nconst TRAITS_CONSUME_TO_NEXT_PACKAGE = 'traitsConsumeToNextPackage';\n\nconst searchLabels = {\n wildcard: WILDCARD,\n space: SPACE,\n depsKeyword: DEPS,\n colon: COLON,\n beginSection: BEGIN_SECTION,\n endSection: END_SECTION,\n package: PACKAGE,\n urlKey: URL_KEY,\n stringLiteral: STRING_LITERAL,\n comma: COMMA,\n from: FROM,\n rangeOp: RANGE_OP,\n exactVersion: EXACT_VERSION,\n exactVersionLabel: EXACT_VERSION_LABEL,\n traitsLabel: TRAITS_LABEL,\n traitsConsumeToNextPackage: TRAITS_CONSUME_TO_NEXT_PACKAGE,\n};\n\nfunction searchKeysForState(state: string | null): (keyof typeof regExps)[] {\n switch (state) {\n case 'dependencies':\n return [SPACE, COLON, WILDCARD];\n case 'dependencies:':\n return [SPACE, BEGIN_SECTION, WILDCARD];\n case 'dependencies: [':\n return [SPACE, PACKAGE, COMMA, TRAITS_LABEL, END_SECTION];\n case '.package(':\n return [SPACE, URL_KEY, PACKAGE, END_SECTION];\n case '.package(url':\n return [SPACE, COLON, PACKAGE, END_SECTION];\n case '.package(url:':\n return [SPACE, STRING_LITERAL, PACKAGE, END_SECTION];\n case '.package(url: [depName]':\n return [SPACE, COMMA, PACKAGE, END_SECTION];\n case '.package(url: [depName],':\n return [\n SPACE,\n FROM,\n STRING_LITERAL,\n RANGE_OP,\n EXACT_VERSION,\n EXACT_VERSION_LABEL,\n PACKAGE,\n END_SECTION,\n ];\n case '.package(url: [depName], .exact(':\n return [SPACE, STRING_LITERAL, PACKAGE, COMMA, TRAITS_LABEL, END_SECTION];\n case '.package(url: [depName], exact:':\n return [SPACE, STRING_LITERAL, PACKAGE, COMMA, TRAITS_LABEL, END_SECTION];\n case '.package(url: [depName], from':\n return [SPACE, COLON, PACKAGE, COMMA, TRAITS_LABEL, END_SECTION];\n case '.package(url: [depName], from:':\n return [SPACE, STRING_LITERAL, PACKAGE, COMMA, TRAITS_LABEL, END_SECTION];\n case '.package(url: [depName], [value]':\n return [SPACE, RANGE_OP, PACKAGE, COMMA, TRAITS_LABEL, END_SECTION];\n case '.package(url: [depName], [rangeFrom][rangeOp]':\n return [SPACE, STRING_LITERAL, PACKAGE, COMMA, TRAITS_LABEL, END_SECTION];\n case 'traits:':\n return [SPACE, TRAITS_CONSUME_TO_NEXT_PACKAGE];\n default:\n return [DEPS];\n }\n}\nfunction getMatch(str: string, state: string | null): MatchResult | null {\n const keys = searchKeysForState(state);\n let result: MatchResult | null = null;\n for (const key of keys) {\n const regex = regExps[key];\n const label = searchLabels[key];\n const match = regex.exec(str);\n if (match) {\n const idx = match.index;\n const substr = match[0];\n const len = substr.length;\n if (idx === 0) {\n return { idx, len, label, substr };\n }\n if (!result || idx < result.idx) {\n result = { idx, len, label, substr };\n }\n }\n }\n return result;\n}\n\nfunction parseDependencyUrl(\n url: string | null,\n): { depName: string; datasource: string; registryUrls?: string[] } | null {\n // istanbul ignore if\n if (!url) {\n return null;\n }\n\n let normalizedUrl: string;\n try {\n normalizedUrl = getHttpUrl(url);\n } catch {\n return null;\n }\n\n const parsedUrl = parseUrl(normalizedUrl);\n // v8 ignore if -- getHttpUrl always returns a parseable URL\n if (!parsedUrl) {\n return null;\n }\n const { host, pathname, protocol } = parsedUrl;\n const platform = detectPlatform(normalizedUrl);\n if (platform === 'github' || platform === 'gitlab') {\n const depName = pathname\n .replace(regEx(/^\\//), '')\n .replace(regEx(/\\.git$/), '')\n .replace(regEx(/\\/$/), '');\n const datasource =\n platform === 'github' ? GithubTagsDatasource.id : GitlabTagsDatasource.id;\n\n const isGitHubPublic = host === 'github.com';\n const isGitLabPublic = host === 'gitlab.com';\n\n if (!isGitHubPublic && !isGitLabPublic) {\n const baseUrl = `${protocol}//${host}`;\n return { depName, datasource, registryUrls: [baseUrl] };\n }\n\n return { depName, datasource };\n }\n return { depName: url, datasource: GitTagsDatasource.id };\n}\n\nexport function extractPackageFile(content: string): PackageFileContent | null {\n if (!content) {\n return null;\n }\n\n const deps: PackageDependency[] = [];\n const result: PackageFileContent = {\n deps,\n };\n\n let restStr = content;\n let state: string | null = null;\n let match = getMatch(restStr, state);\n\n let packageName: string | null = null;\n let currentValue: string | null = null;\n\n function yieldDep(): void {\n // istanbul ignore if\n if (!packageName) {\n return;\n }\n const parsedUrl = parseDependencyUrl(packageName);\n if (parsedUrl && currentValue) {\n const { depName, datasource, registryUrls } = parsedUrl;\n\n const dep: PackageDependency = {\n datasource,\n depName,\n currentValue,\n ...(registryUrls?.length && { registryUrls }),\n };\n\n deps.push(dep);\n }\n packageName = null;\n currentValue = null;\n }\n\n while (match) {\n const { idx, len, label, substr } = match;\n\n switch (state) {\n case null:\n if (deps.length) {\n break;\n }\n // v8 ignore else -- this state is only re-entered at a deps boundary\n if (label === DEPS) {\n state = 'dependencies';\n }\n break;\n case 'dependencies':\n if (label === COLON) {\n state = 'dependencies:';\n } else if (label !== SPACE) {\n state = null;\n }\n break;\n case 'dependencies:':\n if (label === BEGIN_SECTION) {\n state = 'dependencies: [';\n } else if (label !== SPACE) {\n state = null;\n }\n break;\n case 'dependencies: [':\n if (label === END_SECTION) {\n yieldDep();\n state = null;\n } else if (label === PACKAGE) {\n yieldDep();\n state = '.package(';\n } else if (label === TRAITS_LABEL) {\n state = 'traits:';\n }\n break;\n case '.package(':\n if (label === END_SECTION) {\n yieldDep();\n state = null;\n } else if (label === URL_KEY) {\n state = '.package(url';\n } else if (label === PACKAGE) {\n yieldDep();\n }\n break;\n case '.package(url':\n if (label === END_SECTION) {\n yieldDep();\n state = null;\n } else if (label === COLON) {\n state = '.package(url:';\n } else if (label === PACKAGE) {\n yieldDep();\n state = '.package(';\n }\n break;\n case '.package(url:':\n if (label === END_SECTION) {\n yieldDep();\n state = null;\n } else if (label === STRING_LITERAL) {\n packageName = substr\n .replace(regEx(/^\"/), '')\n .replace(regEx(/\"$/), '');\n state = '.package(url: [depName]';\n } else if (label === PACKAGE) {\n yieldDep();\n state = '.package(';\n }\n break;\n case '.package(url: [depName]':\n if (label === END_SECTION) {\n yieldDep();\n state = null;\n } else if (label === COMMA) {\n state = '.package(url: [depName],';\n } else if (label === PACKAGE) {\n yieldDep();\n state = '.package(';\n }\n break;\n case '.package(url: [depName],':\n if (label === END_SECTION) {\n yieldDep();\n state = null;\n } else if (label === FROM) {\n currentValue = substr;\n state = '.package(url: [depName], from';\n } else if (label === STRING_LITERAL) {\n currentValue = substr;\n state = '.package(url: [depName], [value]';\n } else if (label === RANGE_OP) {\n currentValue = substr;\n state = '.package(url: [depName], [rangeFrom][rangeOp]';\n } else if (label === EXACT_VERSION) {\n state = '.package(url: [depName], .exact(';\n } else if (label === EXACT_VERSION_LABEL) {\n state = '.package(url: [depName], exact:';\n } else if (label === PACKAGE) {\n yieldDep();\n state = '.package(';\n }\n break;\n case '.package(url: [depName], .exact(':\n if (label === END_SECTION) {\n yieldDep();\n state = null;\n } else if (label === STRING_LITERAL) {\n currentValue = substr.slice(1, substr.length - 1);\n yieldDep();\n } else if (label === PACKAGE) {\n yieldDep();\n state = '.package(';\n }\n break;\n case '.package(url: [depName], exact:':\n if (label === END_SECTION) {\n yieldDep();\n state = null;\n } else if (label === STRING_LITERAL) {\n currentValue = substr.slice(1, substr.length - 1);\n yieldDep();\n state = 'dependencies: [';\n } else if (label === PACKAGE) {\n yieldDep();\n state = '.package(';\n }\n break;\n case '.package(url: [depName], from':\n if (label === END_SECTION) {\n yieldDep();\n state = null;\n } else if (label === COLON) {\n currentValue += substr;\n state = '.package(url: [depName], from:';\n } else if (label === SPACE) {\n currentValue += substr;\n // NOTE: a label that is none of the above ends the manifest, so the\n // implicit else never runs. A coverage-ignore hint cannot suppress it\n // on an `else if`.\n } else if (label === PACKAGE) {\n yieldDep();\n state = '.package(';\n }\n break;\n case '.package(url: [depName], from:':\n if (label === END_SECTION) {\n yieldDep();\n state = null;\n } else if (label === STRING_LITERAL) {\n currentValue += substr;\n yieldDep();\n state = 'dependencies: [';\n } else if (label === SPACE) {\n currentValue += substr;\n // NOTE: a label that is none of the above ends the manifest, so the\n // implicit else never runs. A coverage-ignore hint cannot suppress it\n // on an `else if`.\n } else if (label === PACKAGE) {\n yieldDep();\n state = '.package(';\n }\n break;\n case '.package(url: [depName], [value]':\n if (label === END_SECTION) {\n yieldDep();\n state = null;\n } else if (label === RANGE_OP) {\n currentValue += substr;\n state = '.package(url: [depName], [rangeFrom][rangeOp]';\n } else if (label === SPACE) {\n currentValue += substr;\n // NOTE: a label that is none of the above ends the manifest, so the\n // implicit else never runs. A coverage-ignore hint cannot suppress it\n // on an `else if`.\n } else if (label === PACKAGE) {\n yieldDep();\n state = '.package(';\n }\n break;\n case '.package(url: [depName], [rangeFrom][rangeOp]':\n if (label === END_SECTION) {\n yieldDep();\n state = null;\n } else if (label === STRING_LITERAL) {\n currentValue += substr;\n state = 'dependencies: [';\n } else if (label === SPACE) {\n currentValue += substr;\n // NOTE: a label that is none of the above ends the manifest, so the\n // implicit else never runs. A coverage-ignore hint cannot suppress it\n // on an `else if`.\n } else if (label === PACKAGE) {\n yieldDep();\n state = '.package(';\n }\n break;\n case 'traits:':\n if (label === TRAITS_CONSUME_TO_NEXT_PACKAGE) {\n yieldDep();\n state = '.package(';\n }\n break;\n }\n restStr = restStr.slice(idx + len);\n match = getMatch(restStr, state);\n }\n return deps.length ? result : null;\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modules.js","names":[],"sources":["../../../../../../lib/modules/manager/terraform/extractors/others/modules.ts"],"sourcesContent":["import { isNullOrUndefined, isPlainObject } from '@sindresorhus/is';\nimport { logger } from '../../../../../logger/index.ts';\nimport { regEx } from '../../../../../util/regex.ts';\nimport { BitbucketTagsDatasource } from '../../../../datasource/bitbucket-tags/index.ts';\nimport { GitTagsDatasource } from '../../../../datasource/git-tags/index.ts';\nimport { GithubTagsDatasource } from '../../../../datasource/github-tags/index.ts';\nimport { TerraformModuleDatasource } from '../../../../datasource/terraform-module/index.ts';\nimport { isOCIRegistry } from '../../../helmv3/oci.ts';\nimport type { ExtractConfig, PackageDependency } from '../../../types.ts';\nimport { DependencyExtractor } from '../../base.ts';\nimport type { TerraformDefinitionFile } from '../../hcl/types.ts';\nimport type { ProviderLock } from '../../lockfile/types.ts';\nimport { applyOciDependency } from '../../util.ts';\n\nexport const githubRefMatchRegex = regEx(\n /github\\.com(?:[/:])(?<project>[^/]+\\/[a-z0-9-_.]+).*\\?(?:depth=\\d+&)?ref=(?<tag>.*?)(?:&depth=\\d+)?$/i,\n);\nexport const bitbucketRefMatchRegex = regEx(\n /(?:git::)?(?<url>(?:http|https|ssh)?(?::\\/\\/)?(?:.*@)?(?<path>bitbucket\\.org\\/(?<workspace>.*)\\/(?<project>.*)\\.git\\/?(?<subfolder>.*)))\\?(?:depth=\\d+&)?ref=(?<tag>.*?)(?:&depth=\\d+)?$/,\n);\nexport const gitTagsRefMatchRegex = regEx(\n /(?:git::)?(?<url>(?:(?:http|https|ssh):\\/\\/)?(?:.*@)?(?<path>[^:/]+[:/](?<project>[^/]+(?:\\/[^/]+)*))(?:\\.git)?)(?:(?:\\/\\/)?(?<subfolder>[^?]*))?\\?(?:depth=\\d+&)?ref=(?<tag>.*?)(?:&depth=\\d+)?$/,\n);\nexport const azureDevOpsSshRefMatchRegex = regEx(\n /(?:git::)?(?<url>git@ssh\\.dev\\.azure\\.com:v3\\/(?<organization>[^/]*)\\/(?<project>[^/]*)\\/(?<repository>[^/]*))(?<modulepath>.*)?\\?(?:depth=\\d+&)?ref=(?<tag>.*?)(?:&depth=\\d+)?$/,\n);\n\nexport const hostnameMatchRegex = regEx(\n /^(?<hostname>[a-zA-Z\\d](?:[a-zA-Z\\d-]*\\.)+[a-zA-Z\\d]+)/,\n);\n\nexport class ModuleExtractor extends DependencyExtractor {\n getCheckList(): string[] {\n return ['module'];\n }\n\n extract(\n hclRoot: TerraformDefinitionFile,\n _locks: ProviderLock[],\n config: ExtractConfig,\n ): PackageDependency[] {\n const modules = hclRoot.module;\n if (isNullOrUndefined(modules)) {\n return [];\n }\n\n /* v8 ignore next -- needs test */\n if (!isPlainObject(modules)) {\n logger.debug({ modules }, 'Terraform: unexpected `modules` value');\n return [];\n }\n\n const dependencies = [];\n for (const [depName, moduleElements] of Object.entries(modules)) {\n for (const moduleElement of moduleElements) {\n const dep = {\n depName,\n depType: 'module',\n currentValue: moduleElement.version,\n managerData: {\n source: moduleElement.source,\n },\n };\n dependencies.push(this.analyseTerraformModule(dep, config));\n }\n }\n\n return dependencies;\n }\n\n private analyseTerraformModule(\n dep: PackageDependency,\n config: ExtractConfig,\n ): PackageDependency {\n // TODO #22198\n const source = dep.managerData!.source as string;\n\n if (isOCIRegistry(source)) {\n applyOciDependency(dep, source, config.registryAliases);\n return dep;\n }\n\n const githubRefMatch = githubRefMatchRegex.exec(source);\n const bitbucketRefMatch = bitbucketRefMatchRegex.exec(source);\n const gitTagsRefMatch = gitTagsRefMatchRegex.exec(source);\n const azureDevOpsSshRefMatch = azureDevOpsSshRefMatchRegex.exec(source);\n\n if (githubRefMatch?.groups) {\n dep.packageName = githubRefMatch.groups.project.replace(\n regEx(/\\.git$/),\n '',\n );\n dep.depName = `github.com/${dep.packageName}`;\n dep.currentValue = githubRefMatch.groups.tag;\n dep.datasource = GithubTagsDatasource.id;\n } else if (bitbucketRefMatch?.groups) {\n dep.depName = `${bitbucketRefMatch.groups.workspace}/${bitbucketRefMatch.groups.project}`;\n dep.packageName = dep.depName;\n dep.currentValue = bitbucketRefMatch.groups.tag;\n dep.datasource = BitbucketTagsDatasource.id;\n } else if (azureDevOpsSshRefMatch?.groups) {\n dep.depName = `${azureDevOpsSshRefMatch.groups.organization}/${azureDevOpsSshRefMatch.groups.project}/${azureDevOpsSshRefMatch.groups.repository}${azureDevOpsSshRefMatch.groups.modulepath}`;\n dep.packageName = azureDevOpsSshRefMatch.groups.url;\n dep.currentValue = azureDevOpsSshRefMatch.groups.tag;\n dep.datasource = GitTagsDatasource.id;\n } else if (gitTagsRefMatch?.groups) {\n if (gitTagsRefMatch.groups.subfolder) {\n logger.debug('Terraform module contains subdirectory');\n }\n dep.depName = gitTagsRefMatch.groups.path.replace(regEx(/\\.git$/), '');\n dep.packageName = gitTagsRefMatch.groups.url.replace(regEx(/\\.git$/), '');\n dep.currentValue = gitTagsRefMatch.groups.tag;\n dep.datasource = GitTagsDatasource.id;\n } else if (source) {\n const moduleParts = source.split('//')[0].split('/');\n if (moduleParts[0] === '.' || moduleParts[0] === '..') {\n dep.skipReason = 'local';\n } else if (moduleParts.length >= 3) {\n const hostnameMatch = hostnameMatchRegex.exec(source);\n if (hostnameMatch?.groups) {\n dep.registryUrls = [`https://${hostnameMatch.groups.hostname}`];\n }\n dep.depName = moduleParts.join('/');\n dep.datasource = TerraformModuleDatasource.id;\n }\n } else {\n logger.debug({ dep }, 'terraform dep has no source');\n dep.skipReason = 'no-source';\n }\n\n return dep;\n }\n}\n"],"mappings":";;;;;;;;;;;AAcA,MAAa,sBAAsB,MACjC,uGACF;AACA,MAAa,yBAAyB,MACpC,0LACF;AACA,MAAa,uBAAuB,MAClC,mMACF;AACA,MAAa,8BAA8B,MACzC,kLACF;AAEA,MAAa,qBAAqB,MAChC,wDACF;AAEA,IAAa,kBAAb,cAAqC,oBAAoB;CACvD,eAAyB;EACvB,OAAO,CAAC,QAAQ;CAClB;CAEA,QACE,SACA,QACA,QACqB;EACrB,MAAM,UAAU,QAAQ;EACxB,IAAI,kBAAkB,OAAO,GAC3B,OAAO,CAAC;;EAIV,IAAI,CAAC,cAAc,OAAO,GAAG;GAC3B,OAAO,MAAM,EAAE,QAAQ,GAAG,uCAAuC;GACjE,OAAO,CAAC;EACV;EAEA,MAAM,eAAe,CAAC;EACtB,KAAK,MAAM,CAAC,SAAS,mBAAmB,OAAO,QAAQ,OAAO,GAC5D,KAAK,MAAM,iBAAiB,gBAAgB;GAC1C,MAAM,MAAM;IACV;IACA,SAAS;IACT,cAAc,cAAc;IAC5B,aAAa,EACX,QAAQ,cAAc,OACxB;GACF;GACA,aAAa,KAAK,KAAK,uBAAuB,KAAK,MAAM,CAAC;EAC5D;EAGF,OAAO;CACT;CAEA,uBACE,KACA,QACmB;EAEnB,MAAM,SAAS,IAAI,YAAa;EAEhC,IAAI,cAAc,MAAM,GAAG;GACzB,mBAAmB,KAAK,QAAQ,OAAO,eAAe;GACtD,OAAO;EACT;EAEA,MAAM,iBAAiB,oBAAoB,KAAK,MAAM;EACtD,MAAM,oBAAoB,uBAAuB,KAAK,MAAM;EAC5D,MAAM,kBAAkB,qBAAqB,KAAK,MAAM;EACxD,MAAM,yBAAyB,4BAA4B,KAAK,MAAM;EAEtE,IAAI,gBAAgB,QAAQ;GAC1B,IAAI,cAAc,eAAe,OAAO,QAAQ,QAC9C,MAAM,QAAQ,GACd,EACF;GACA,IAAI,UAAU,cAAc,IAAI;GAChC,IAAI,eAAe,eAAe,OAAO;GACzC,IAAI,aAAa,qBAAqB;EACxC,OAAO,IAAI,mBAAmB,QAAQ;GACpC,IAAI,UAAU,GAAG,kBAAkB,OAAO,UAAU,GAAG,kBAAkB,OAAO;GAChF,IAAI,cAAc,IAAI;GACtB,IAAI,eAAe,kBAAkB,OAAO;GAC5C,IAAI,aAAa,wBAAwB;EAC3C,OAAO,IAAI,wBAAwB,QAAQ;GACzC,IAAI,UAAU,GAAG,uBAAuB,OAAO,aAAa,GAAG,uBAAuB,OAAO,QAAQ,GAAG,uBAAuB,OAAO,aAAa,uBAAuB,OAAO;GACjL,IAAI,cAAc,uBAAuB,OAAO;GAChD,IAAI,eAAe,uBAAuB,OAAO;GACjD,IAAI,aAAa,kBAAkB;EACrC,OAAO,IAAI,iBAAiB,QAAQ;GAClC,IAAI,gBAAgB,OAAO,WACzB,OAAO,MAAM,wCAAwC;GAEvD,IAAI,UAAU,gBAAgB,OAAO,KAAK,QAAQ,MAAM,QAAQ,GAAG,EAAE;GACrE,IAAI,cAAc,gBAAgB,OAAO,IAAI,QAAQ,MAAM,QAAQ,GAAG,EAAE;GACxE,IAAI,eAAe,gBAAgB,OAAO;GAC1C,IAAI,aAAa,kBAAkB;EACrC,OAAO,IAAI,QAAQ;GACjB,MAAM,cAAc,OAAO,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG;GACnD,IAAI,YAAY,OAAO,OAAO,YAAY,OAAO,MAC/C,IAAI,aAAa;
|
|
1
|
+
{"version":3,"file":"modules.js","names":[],"sources":["../../../../../../lib/modules/manager/terraform/extractors/others/modules.ts"],"sourcesContent":["import { isNullOrUndefined, isPlainObject } from '@sindresorhus/is';\nimport { logger } from '../../../../../logger/index.ts';\nimport { regEx } from '../../../../../util/regex.ts';\nimport { BitbucketTagsDatasource } from '../../../../datasource/bitbucket-tags/index.ts';\nimport { GitTagsDatasource } from '../../../../datasource/git-tags/index.ts';\nimport { GithubTagsDatasource } from '../../../../datasource/github-tags/index.ts';\nimport { TerraformModuleDatasource } from '../../../../datasource/terraform-module/index.ts';\nimport { isOCIRegistry } from '../../../helmv3/oci.ts';\nimport type { ExtractConfig, PackageDependency } from '../../../types.ts';\nimport { DependencyExtractor } from '../../base.ts';\nimport type { TerraformDefinitionFile } from '../../hcl/types.ts';\nimport type { ProviderLock } from '../../lockfile/types.ts';\nimport { applyOciDependency } from '../../util.ts';\n\nexport const githubRefMatchRegex = regEx(\n /github\\.com(?:[/:])(?<project>[^/]+\\/[a-z0-9-_.]+).*\\?(?:depth=\\d+&)?ref=(?<tag>.*?)(?:&depth=\\d+)?$/i,\n);\nexport const bitbucketRefMatchRegex = regEx(\n /(?:git::)?(?<url>(?:http|https|ssh)?(?::\\/\\/)?(?:.*@)?(?<path>bitbucket\\.org\\/(?<workspace>.*)\\/(?<project>.*)\\.git\\/?(?<subfolder>.*)))\\?(?:depth=\\d+&)?ref=(?<tag>.*?)(?:&depth=\\d+)?$/,\n);\nexport const gitTagsRefMatchRegex = regEx(\n /(?:git::)?(?<url>(?:(?:http|https|ssh):\\/\\/)?(?:.*@)?(?<path>[^:/]+[:/](?<project>[^/]+(?:\\/[^/]+)*))(?:\\.git)?)(?:(?:\\/\\/)?(?<subfolder>[^?]*))?\\?(?:depth=\\d+&)?ref=(?<tag>.*?)(?:&depth=\\d+)?$/,\n);\nexport const azureDevOpsSshRefMatchRegex = regEx(\n /(?:git::)?(?<url>git@ssh\\.dev\\.azure\\.com:v3\\/(?<organization>[^/]*)\\/(?<project>[^/]*)\\/(?<repository>[^/]*))(?<modulepath>.*)?\\?(?:depth=\\d+&)?ref=(?<tag>.*?)(?:&depth=\\d+)?$/,\n);\n\nexport const hostnameMatchRegex = regEx(\n /^(?<hostname>[a-zA-Z\\d](?:[a-zA-Z\\d-]*\\.)+[a-zA-Z\\d]+)/,\n);\n\nexport class ModuleExtractor extends DependencyExtractor {\n getCheckList(): string[] {\n return ['module'];\n }\n\n extract(\n hclRoot: TerraformDefinitionFile,\n _locks: ProviderLock[],\n config: ExtractConfig,\n ): PackageDependency[] {\n const modules = hclRoot.module;\n if (isNullOrUndefined(modules)) {\n return [];\n }\n\n /* v8 ignore next -- needs test */\n if (!isPlainObject(modules)) {\n logger.debug({ modules }, 'Terraform: unexpected `modules` value');\n return [];\n }\n\n const dependencies = [];\n for (const [depName, moduleElements] of Object.entries(modules)) {\n for (const moduleElement of moduleElements) {\n const dep = {\n depName,\n depType: 'module',\n currentValue: moduleElement.version,\n managerData: {\n source: moduleElement.source,\n },\n };\n dependencies.push(this.analyseTerraformModule(dep, config));\n }\n }\n\n return dependencies;\n }\n\n private analyseTerraformModule(\n dep: PackageDependency,\n config: ExtractConfig,\n ): PackageDependency {\n // TODO #22198\n const source = dep.managerData!.source as string;\n\n if (isOCIRegistry(source)) {\n applyOciDependency(dep, source, config.registryAliases);\n return dep;\n }\n\n const githubRefMatch = githubRefMatchRegex.exec(source);\n const bitbucketRefMatch = bitbucketRefMatchRegex.exec(source);\n const gitTagsRefMatch = gitTagsRefMatchRegex.exec(source);\n const azureDevOpsSshRefMatch = azureDevOpsSshRefMatchRegex.exec(source);\n\n if (githubRefMatch?.groups) {\n dep.packageName = githubRefMatch.groups.project.replace(\n regEx(/\\.git$/),\n '',\n );\n dep.depName = `github.com/${dep.packageName}`;\n dep.currentValue = githubRefMatch.groups.tag;\n dep.datasource = GithubTagsDatasource.id;\n } else if (bitbucketRefMatch?.groups) {\n dep.depName = `${bitbucketRefMatch.groups.workspace}/${bitbucketRefMatch.groups.project}`;\n dep.packageName = dep.depName;\n dep.currentValue = bitbucketRefMatch.groups.tag;\n dep.datasource = BitbucketTagsDatasource.id;\n } else if (azureDevOpsSshRefMatch?.groups) {\n dep.depName = `${azureDevOpsSshRefMatch.groups.organization}/${azureDevOpsSshRefMatch.groups.project}/${azureDevOpsSshRefMatch.groups.repository}${azureDevOpsSshRefMatch.groups.modulepath}`;\n dep.packageName = azureDevOpsSshRefMatch.groups.url;\n dep.currentValue = azureDevOpsSshRefMatch.groups.tag;\n dep.datasource = GitTagsDatasource.id;\n } else if (gitTagsRefMatch?.groups) {\n if (gitTagsRefMatch.groups.subfolder) {\n logger.debug('Terraform module contains subdirectory');\n }\n dep.depName = gitTagsRefMatch.groups.path.replace(regEx(/\\.git$/), '');\n dep.packageName = gitTagsRefMatch.groups.url.replace(regEx(/\\.git$/), '');\n dep.currentValue = gitTagsRefMatch.groups.tag;\n dep.datasource = GitTagsDatasource.id;\n } else if (source) {\n const moduleParts = source.split('//')[0].split('/');\n if (moduleParts[0] === '.' || moduleParts[0] === '..') {\n dep.skipReason = 'local';\n // NOTE: a shorter path is not a registry module, so the implicit else\n // never runs. A coverage-ignore hint cannot suppress it on an `else if`.\n } else if (moduleParts.length >= 3) {\n const hostnameMatch = hostnameMatchRegex.exec(source);\n if (hostnameMatch?.groups) {\n dep.registryUrls = [`https://${hostnameMatch.groups.hostname}`];\n }\n dep.depName = moduleParts.join('/');\n dep.datasource = TerraformModuleDatasource.id;\n }\n } else {\n logger.debug({ dep }, 'terraform dep has no source');\n dep.skipReason = 'no-source';\n }\n\n return dep;\n }\n}\n"],"mappings":"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"}
|
|
@@ -89,6 +89,7 @@ async function updateArtifacts({ packageFileName, updatedDeps, config }) {
|
|
|
89
89
|
continue;
|
|
90
90
|
}
|
|
91
91
|
if (dep.isLockfileUpdate) {
|
|
92
|
+
// v8 ignore else -- needs a lockfile update that also produces a change
|
|
92
93
|
if (!get(dep.versioning).getSatisfyingVersion([dep.newVersion], updateLock.constraints)) {
|
|
93
94
|
logger.debug(`Skipping. Lockfile update with "${newVersion}" does not statisfy constraints "${updateLock.constraints}" for "${packageName}"`);
|
|
94
95
|
continue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["p.map","getVersioning"],"sources":["../../../../../lib/modules/manager/terraform/lockfile/index.ts"],"sourcesContent":["import { isTruthy } from '@sindresorhus/is';\nimport { logger } from '../../../../logger/index.ts';\nimport { coerceArray } from '../../../../util/array.ts';\nimport { coerceObject } from '../../../../util/object.ts';\nimport * as p from '../../../../util/promises.ts';\nimport { regEx } from '../../../../util/regex.ts';\nimport { getDefaultVersioning } from '../../../datasource/common.ts';\nimport type { GetPkgReleasesConfig } from '../../../datasource/index.ts';\nimport { getPkgReleases } from '../../../datasource/index.ts';\nimport { get as getVersioning } from '../../../versioning/index.ts';\nimport type {\n UpdateArtifact,\n UpdateArtifactsResult,\n Upgrade,\n} from '../../types.ts';\nimport { massageProviderLookupName } from '../util.ts';\nimport { TerraformProviderHash } from './hash.ts';\nimport type { ProviderLock, ProviderLockUpdate } from './types.ts';\nimport {\n extractLocks,\n findLockFile,\n isPinnedVersion,\n massageNewValue,\n readLockFile,\n sortConstraints,\n writeLockUpdates,\n} from './util.ts';\n\nasync function updateAllLocks(\n locks: ProviderLock[],\n): Promise<ProviderLockUpdate[]> {\n const updates = await p.map(\n locks,\n async (lock) => {\n const updateConfig: GetPkgReleasesConfig = {\n datasource: 'terraform-provider',\n packageName: lock.packageName,\n registryUrls: [lock.registryUrl],\n };\n const { releases } = coerceObject(await getPkgReleases(updateConfig));\n if (!releases) {\n return null;\n }\n const versioning = getVersioning(\n getDefaultVersioning('terraform-provider'),\n );\n const versionsList = releases.map((release) => release.version);\n const newVersion = versioning.getSatisfyingVersion(\n versionsList,\n lock.constraints,\n );\n\n // if the new version is the same as the last, signal that no update is needed\n if (!newVersion || newVersion === lock.version) {\n return null;\n }\n const update: ProviderLockUpdate = {\n newVersion,\n newConstraint: lock.constraints,\n newHashes: coerceArray(\n await TerraformProviderHash.createHashes(\n lock.registryUrl,\n lock.packageName,\n newVersion,\n ),\n ),\n ...lock,\n };\n return update;\n },\n { concurrency: 4 },\n );\n\n return updates.filter(isTruthy);\n}\n\nexport function getNewConstraint(\n dep: Upgrade<Record<string, unknown>>,\n oldConstraint: string | undefined,\n): string | undefined {\n const {\n currentValue,\n currentVersion,\n newValue: rawNewValue,\n newVersion,\n packageName,\n } = dep;\n\n const newValue = massageNewValue(rawNewValue);\n\n if (oldConstraint && currentValue && newValue && currentValue === newValue) {\n logger.debug(\n `Leaving constraints \"${oldConstraint}\" unchanged for \"${packageName}\" as current and new values are the same`,\n );\n return oldConstraint;\n }\n\n if (\n oldConstraint &&\n currentValue &&\n newValue &&\n oldConstraint.includes(currentValue)\n ) {\n logger.debug(\n `Updating constraint \"${oldConstraint}\" to replace \"${currentValue}\" with \"${newValue}\" for \"${packageName}\"`,\n );\n //remove surplus .0 version\n return sortConstraints(\n oldConstraint.replace(\n regEx(`(,\\\\s|^)${RegExp.escape(currentValue)}(\\\\.0)*`),\n `$1${newValue}`,\n ),\n );\n }\n\n if (\n oldConstraint &&\n currentVersion &&\n newVersion &&\n oldConstraint.includes(currentVersion)\n ) {\n logger.debug(\n `Updating constraint \"${oldConstraint}\" to replace \"${currentVersion}\" with \"${newVersion}\" for \"${packageName}\"`,\n );\n return sortConstraints(oldConstraint.replace(currentVersion, newVersion));\n }\n\n if (isPinnedVersion(newValue)) {\n logger.debug(`Pinning constraint for \"${packageName}\" to \"${newVersion}\"`);\n return newVersion;\n }\n\n logger.debug(\n `Could not detect constraint to update for \"${packageName}\" so setting to newValue \"${newValue}\"`,\n );\n return newValue;\n}\n\nexport async function updateArtifacts({\n packageFileName,\n updatedDeps,\n config,\n}: UpdateArtifact): Promise<UpdateArtifactsResult[] | null> {\n logger.debug(`terraform.updateArtifacts(${packageFileName})`);\n\n const lockFilePath = await findLockFile(packageFileName);\n\n if (!lockFilePath) {\n logger.debug('No .terraform.lock.hcl found');\n return null;\n }\n\n try {\n const lockFileContent = await readLockFile(lockFilePath);\n if (!lockFileContent) {\n logger.debug('No .terraform.lock.hcl found');\n return null;\n }\n const locks = extractLocks(lockFileContent);\n if (!locks) {\n logger.debug('No Locks in .terraform.lock.hcl found');\n return null;\n }\n\n const updates: ProviderLockUpdate[] = [];\n if (config.isLockFileMaintenance) {\n // update all locks in the file during maintenance --> only update version in constraints\n const maintenanceUpdates = await updateAllLocks(locks);\n updates.push(...maintenanceUpdates);\n } else {\n const providerDeps = updatedDeps.filter((dep) =>\n // TODO #22198\n ['provider', 'required_provider'].includes(dep.depType!),\n );\n logger.debug(`Found ${providerDeps.length} provider deps`);\n for (const dep of providerDeps) {\n massageProviderLookupName(dep);\n const { registryUrls, newVersion, packageName } = dep;\n\n const updateLock = locks.find(\n (value) => value.packageName === packageName,\n );\n /* v8 ignore next -- needs test */\n if (!updateLock) {\n logger.debug(`Skipping. No lock found for \"${packageName}\"`);\n continue;\n }\n if (dep.isLockfileUpdate) {\n const versioning = getVersioning(dep.versioning);\n const satisfyingVersion = versioning.getSatisfyingVersion(\n [dep.newVersion!],\n updateLock.constraints,\n );\n\n if (!satisfyingVersion) {\n logger.debug(\n `Skipping. Lockfile update with \"${newVersion}\" does not statisfy constraints \"${updateLock.constraints}\" for \"${packageName}\"`,\n );\n continue;\n }\n }\n\n // use registryURL defined in the update and fall back to the one defined in the lockfile\n const registryUrl = registryUrls?.[0] ?? updateLock.registryUrl;\n\n const newConstraint = getNewConstraint(dep, updateLock.constraints);\n const update: ProviderLockUpdate = {\n // TODO #22198\n newVersion: newVersion!,\n newConstraint: newConstraint!,\n newHashes: coerceArray(\n await TerraformProviderHash.createHashes(\n registryUrl,\n updateLock.packageName,\n newVersion!,\n ),\n ),\n ...updateLock,\n };\n updates.push(update);\n }\n }\n // if no updates have been found or there are failed hashes abort\n if (\n updates.length === 0 ||\n updates.some((value) => !value.newHashes?.length)\n ) {\n logger.debug('No updates found or hash creation failed');\n return null;\n }\n logger.debug(`Writing updates to ${lockFilePath}`);\n const res = writeLockUpdates(updates, lockFilePath, lockFileContent);\n return [res];\n } catch (err) {\n return [\n {\n artifactError: {\n fileName: lockFilePath,\n stderr: err.message,\n },\n },\n ];\n }\n}\n"],"mappings":";;;;;;;;;;;;;AA4BA,eAAe,eACb,OAC+B;CA2C/B,QAAO,MA1CeA,IACpB,OACA,OAAO,SAAS;EACd,MAAM,eAAqC;GACzC,YAAY;GACZ,aAAa,KAAK;GAClB,cAAc,CAAC,KAAK,WAAW;EACjC;EACA,MAAM,EAAE,aAAa,aAAa,MAAM,eAAe,YAAY,CAAC;EACpE,IAAI,CAAC,UACH,OAAO;EAET,MAAM,aAAaC,IACjB,qBAAqB,oBAAoB,CAC3C;EACA,MAAM,eAAe,SAAS,KAAK,YAAY,QAAQ,OAAO;EAC9D,MAAM,aAAa,WAAW,qBAC5B,cACA,KAAK,WACP;EAGA,IAAI,CAAC,cAAc,eAAe,KAAK,SACrC,OAAO;EAcT,OAAO;GAXL;GACA,eAAe,KAAK;GACpB,WAAW,YACT,MAAM,sBAAsB,aAC1B,KAAK,aACL,KAAK,aACL,UACF,CACF;GACA,GAAG;EAEO;CACd,GACA,EAAE,aAAa,EAAE,CACnB,EAAA,CAEe,OAAO,QAAQ;AAChC;AAEA,SAAgB,iBACd,KACA,eACoB;CACpB,MAAM,EACJ,cACA,gBACA,UAAU,aACV,YACA,gBACE;CAEJ,MAAM,WAAW,gBAAgB,WAAW;CAE5C,IAAI,iBAAiB,gBAAgB,YAAY,iBAAiB,UAAU;EAC1E,OAAO,MACL,wBAAwB,cAAc,mBAAmB,YAAY,yCACvE;EACA,OAAO;CACT;CAEA,IACE,iBACA,gBACA,YACA,cAAc,SAAS,YAAY,GACnC;EACA,OAAO,MACL,wBAAwB,cAAc,gBAAgB,aAAa,UAAU,SAAS,SAAS,YAAY,EAC7G;EAEA,OAAO,gBACL,cAAc,QACZ,MAAM,WAAW,OAAO,OAAO,YAAY,EAAE,QAAQ,GACrD,KAAK,UACP,CACF;CACF;CAEA,IACE,iBACA,kBACA,cACA,cAAc,SAAS,cAAc,GACrC;EACA,OAAO,MACL,wBAAwB,cAAc,gBAAgB,eAAe,UAAU,WAAW,SAAS,YAAY,EACjH;EACA,OAAO,gBAAgB,cAAc,QAAQ,gBAAgB,UAAU,CAAC;CAC1E;CAEA,IAAI,gBAAgB,QAAQ,GAAG;EAC7B,OAAO,MAAM,2BAA2B,YAAY,QAAQ,WAAW,EAAE;EACzE,OAAO;CACT;CAEA,OAAO,MACL,8CAA8C,YAAY,4BAA4B,SAAS,EACjG;CACA,OAAO;AACT;AAEA,eAAsB,gBAAgB,EACpC,iBACA,aACA,UAC0D;CAC1D,OAAO,MAAM,6BAA6B,gBAAgB,EAAE;CAE5D,MAAM,eAAe,MAAM,aAAa,eAAe;CAEvD,IAAI,CAAC,cAAc;EACjB,OAAO,MAAM,8BAA8B;EAC3C,OAAO;CACT;CAEA,IAAI;EACF,MAAM,kBAAkB,MAAM,aAAa,YAAY;EACvD,IAAI,CAAC,iBAAiB;GACpB,OAAO,MAAM,8BAA8B;GAC3C,OAAO;EACT;EACA,MAAM,QAAQ,aAAa,eAAe;EAC1C,IAAI,CAAC,OAAO;GACV,OAAO,MAAM,uCAAuC;GACpD,OAAO;EACT;EAEA,MAAM,UAAgC,CAAC;EACvC,IAAI,OAAO,uBAAuB;GAEhC,MAAM,qBAAqB,MAAM,eAAe,KAAK;GACrD,QAAQ,KAAK,GAAG,kBAAkB;EACpC,OAAO;GACL,MAAM,eAAe,YAAY,QAAQ,QAEvC,CAAC,YAAY,mBAAmB,CAAC,CAAC,SAAS,IAAI,OAAQ,CACzD;GACA,OAAO,MAAM,SAAS,aAAa,OAAO,eAAe;GACzD,KAAK,MAAM,OAAO,cAAc;IAC9B,0BAA0B,GAAG;IAC7B,MAAM,EAAE,cAAc,YAAY,gBAAgB;IAElD,MAAM,aAAa,MAAM,MACtB,UAAU,MAAM,gBAAgB,WACnC;;IAEA,IAAI,CAAC,YAAY;KACf,OAAO,MAAM,gCAAgC,YAAY,EAAE;KAC3D;IACF;IACA,IAAI,IAAI,kBAOF;SAAA,CANeA,IAAc,IAAI,UACF,CAAC,CAAC,qBACnC,CAAC,IAAI,UAAW,GAChB,WAAW,WAGQ,GAAG;MACtB,OAAO,MACL,mCAAmC,WAAW,mCAAmC,WAAW,YAAY,SAAS,YAAY,EAC/H;MACA;KACF;;IAIF,MAAM,cAAc,eAAe,MAAM,WAAW;IAGpD,MAAM,SAA6B;KAErB;KACZ,eAJoB,iBAAiB,KAAK,WAAW,WAI1B;KAC3B,WAAW,YACT,MAAM,sBAAsB,aAC1B,aACA,WAAW,aACX,UACF,CACF;KACA,GAAG;IACL;IACA,QAAQ,KAAK,MAAM;GACrB;EACF;EAEA,IACE,QAAQ,WAAW,KACnB,QAAQ,MAAM,UAAU,CAAC,MAAM,WAAW,MAAM,GAChD;GACA,OAAO,MAAM,0CAA0C;GACvD,OAAO;EACT;EACA,OAAO,MAAM,sBAAsB,cAAc;EAEjD,OAAO,CADK,iBAAiB,SAAS,cAAc,eAC1C,CAAC;CACb,SAAS,KAAK;EACZ,OAAO,CACL,EACE,eAAe;GACb,UAAU;GACV,QAAQ,IAAI;EACd,EACF,CACF;CACF;AACF"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["p.map","getVersioning"],"sources":["../../../../../lib/modules/manager/terraform/lockfile/index.ts"],"sourcesContent":["import { isTruthy } from '@sindresorhus/is';\nimport { logger } from '../../../../logger/index.ts';\nimport { coerceArray } from '../../../../util/array.ts';\nimport { coerceObject } from '../../../../util/object.ts';\nimport * as p from '../../../../util/promises.ts';\nimport { regEx } from '../../../../util/regex.ts';\nimport { getDefaultVersioning } from '../../../datasource/common.ts';\nimport type { GetPkgReleasesConfig } from '../../../datasource/index.ts';\nimport { getPkgReleases } from '../../../datasource/index.ts';\nimport { get as getVersioning } from '../../../versioning/index.ts';\nimport type {\n UpdateArtifact,\n UpdateArtifactsResult,\n Upgrade,\n} from '../../types.ts';\nimport { massageProviderLookupName } from '../util.ts';\nimport { TerraformProviderHash } from './hash.ts';\nimport type { ProviderLock, ProviderLockUpdate } from './types.ts';\nimport {\n extractLocks,\n findLockFile,\n isPinnedVersion,\n massageNewValue,\n readLockFile,\n sortConstraints,\n writeLockUpdates,\n} from './util.ts';\n\nasync function updateAllLocks(\n locks: ProviderLock[],\n): Promise<ProviderLockUpdate[]> {\n const updates = await p.map(\n locks,\n async (lock) => {\n const updateConfig: GetPkgReleasesConfig = {\n datasource: 'terraform-provider',\n packageName: lock.packageName,\n registryUrls: [lock.registryUrl],\n };\n const { releases } = coerceObject(await getPkgReleases(updateConfig));\n if (!releases) {\n return null;\n }\n const versioning = getVersioning(\n getDefaultVersioning('terraform-provider'),\n );\n const versionsList = releases.map((release) => release.version);\n const newVersion = versioning.getSatisfyingVersion(\n versionsList,\n lock.constraints,\n );\n\n // if the new version is the same as the last, signal that no update is needed\n if (!newVersion || newVersion === lock.version) {\n return null;\n }\n const update: ProviderLockUpdate = {\n newVersion,\n newConstraint: lock.constraints,\n newHashes: coerceArray(\n await TerraformProviderHash.createHashes(\n lock.registryUrl,\n lock.packageName,\n newVersion,\n ),\n ),\n ...lock,\n };\n return update;\n },\n { concurrency: 4 },\n );\n\n return updates.filter(isTruthy);\n}\n\nexport function getNewConstraint(\n dep: Upgrade<Record<string, unknown>>,\n oldConstraint: string | undefined,\n): string | undefined {\n const {\n currentValue,\n currentVersion,\n newValue: rawNewValue,\n newVersion,\n packageName,\n } = dep;\n\n const newValue = massageNewValue(rawNewValue);\n\n if (oldConstraint && currentValue && newValue && currentValue === newValue) {\n logger.debug(\n `Leaving constraints \"${oldConstraint}\" unchanged for \"${packageName}\" as current and new values are the same`,\n );\n return oldConstraint;\n }\n\n if (\n oldConstraint &&\n currentValue &&\n newValue &&\n oldConstraint.includes(currentValue)\n ) {\n logger.debug(\n `Updating constraint \"${oldConstraint}\" to replace \"${currentValue}\" with \"${newValue}\" for \"${packageName}\"`,\n );\n //remove surplus .0 version\n return sortConstraints(\n oldConstraint.replace(\n regEx(`(,\\\\s|^)${RegExp.escape(currentValue)}(\\\\.0)*`),\n `$1${newValue}`,\n ),\n );\n }\n\n if (\n oldConstraint &&\n currentVersion &&\n newVersion &&\n oldConstraint.includes(currentVersion)\n ) {\n logger.debug(\n `Updating constraint \"${oldConstraint}\" to replace \"${currentVersion}\" with \"${newVersion}\" for \"${packageName}\"`,\n );\n return sortConstraints(oldConstraint.replace(currentVersion, newVersion));\n }\n\n if (isPinnedVersion(newValue)) {\n logger.debug(`Pinning constraint for \"${packageName}\" to \"${newVersion}\"`);\n return newVersion;\n }\n\n logger.debug(\n `Could not detect constraint to update for \"${packageName}\" so setting to newValue \"${newValue}\"`,\n );\n return newValue;\n}\n\nexport async function updateArtifacts({\n packageFileName,\n updatedDeps,\n config,\n}: UpdateArtifact): Promise<UpdateArtifactsResult[] | null> {\n logger.debug(`terraform.updateArtifacts(${packageFileName})`);\n\n const lockFilePath = await findLockFile(packageFileName);\n\n if (!lockFilePath) {\n logger.debug('No .terraform.lock.hcl found');\n return null;\n }\n\n try {\n const lockFileContent = await readLockFile(lockFilePath);\n if (!lockFileContent) {\n logger.debug('No .terraform.lock.hcl found');\n return null;\n }\n const locks = extractLocks(lockFileContent);\n if (!locks) {\n logger.debug('No Locks in .terraform.lock.hcl found');\n return null;\n }\n\n const updates: ProviderLockUpdate[] = [];\n if (config.isLockFileMaintenance) {\n // update all locks in the file during maintenance --> only update version in constraints\n const maintenanceUpdates = await updateAllLocks(locks);\n updates.push(...maintenanceUpdates);\n } else {\n const providerDeps = updatedDeps.filter((dep) =>\n // TODO #22198\n ['provider', 'required_provider'].includes(dep.depType!),\n );\n logger.debug(`Found ${providerDeps.length} provider deps`);\n for (const dep of providerDeps) {\n massageProviderLookupName(dep);\n const { registryUrls, newVersion, packageName } = dep;\n\n const updateLock = locks.find(\n (value) => value.packageName === packageName,\n );\n /* v8 ignore next -- needs test */\n if (!updateLock) {\n logger.debug(`Skipping. No lock found for \"${packageName}\"`);\n continue;\n }\n if (dep.isLockfileUpdate) {\n const versioning = getVersioning(dep.versioning);\n const satisfyingVersion = versioning.getSatisfyingVersion(\n [dep.newVersion!],\n updateLock.constraints,\n );\n\n // v8 ignore else -- needs a lockfile update that also produces a change\n if (!satisfyingVersion) {\n logger.debug(\n `Skipping. Lockfile update with \"${newVersion}\" does not statisfy constraints \"${updateLock.constraints}\" for \"${packageName}\"`,\n );\n continue;\n }\n }\n\n // use registryURL defined in the update and fall back to the one defined in the lockfile\n const registryUrl = registryUrls?.[0] ?? updateLock.registryUrl;\n\n const newConstraint = getNewConstraint(dep, updateLock.constraints);\n const update: ProviderLockUpdate = {\n // TODO #22198\n newVersion: newVersion!,\n newConstraint: newConstraint!,\n newHashes: coerceArray(\n await TerraformProviderHash.createHashes(\n registryUrl,\n updateLock.packageName,\n newVersion!,\n ),\n ),\n ...updateLock,\n };\n updates.push(update);\n }\n }\n // if no updates have been found or there are failed hashes abort\n if (\n updates.length === 0 ||\n updates.some((value) => !value.newHashes?.length)\n ) {\n logger.debug('No updates found or hash creation failed');\n return null;\n }\n logger.debug(`Writing updates to ${lockFilePath}`);\n const res = writeLockUpdates(updates, lockFilePath, lockFileContent);\n return [res];\n } catch (err) {\n return [\n {\n artifactError: {\n fileName: lockFilePath,\n stderr: err.message,\n },\n },\n ];\n }\n}\n"],"mappings":"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"}
|
|
@@ -29,6 +29,7 @@ function extractPackageFile(content, packageFile) {
|
|
|
29
29
|
/* istanbul ignore next */
|
|
30
30
|
default: logger.trace(`Could not identify TerragruntDependencyType ${terragruntDependency.groups.type} on line ${lineNumber}.`);
|
|
31
31
|
}
|
|
32
|
+
// v8 ignore else -- only the ignored default case leaves this unset
|
|
32
33
|
if (result) {
|
|
33
34
|
lineNumber = result.lineNumber;
|
|
34
35
|
deps = deps.concat(result.dependencies);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract.js","names":[],"sources":["../../../../lib/modules/manager/terragrunt/extract.ts"],"sourcesContent":["import { logger } from '../../../logger/index.ts';\nimport { newlineRegex, regEx } from '../../../util/regex.ts';\nimport type { PackageDependency, PackageFileContent } from '../types.ts';\nimport { analyseTerragruntModule, extractTerragruntModule } from './modules.ts';\nimport type { ExtractionResult, TerraformManagerData } from './types.ts';\nimport {\n checkFileContainsDependency,\n getTerragruntDependencyType,\n} from './util.ts';\n\nconst dependencyBlockExtractionRegex = regEx(/^\\s*(?<type>[a-z_]+)\\s+{\\s*$/);\nconst contentCheckList = ['terraform {'];\nconst includeBlockCheck = regEx(/include\\s*(?:\".*\")?\\s*\\{/);\n\nexport function extractPackageFile(\n content: string,\n packageFile?: string,\n): PackageFileContent | null {\n logger.trace({ content }, `terragrunt.extractPackageFile(${packageFile!})`);\n if (!checkFileContainsDependency(content, contentCheckList)) {\n if (content.match(includeBlockCheck)) {\n return { deps: [] };\n }\n return null;\n }\n let deps: PackageDependency<TerraformManagerData>[] = [];\n try {\n const lines = content.split(newlineRegex);\n for (let lineNumber = 0; lineNumber < lines.length; lineNumber += 1) {\n const line = lines[lineNumber];\n const terragruntDependency = dependencyBlockExtractionRegex.exec(line);\n if (terragruntDependency?.groups) {\n logger.trace(\n `Matched ${terragruntDependency.groups.type} on line ${lineNumber}`,\n );\n const tfDepType = getTerragruntDependencyType(\n terragruntDependency.groups.type,\n );\n let result: ExtractionResult | null = null;\n switch (tfDepType) {\n case 'terraform': {\n result = extractTerragruntModule(lineNumber, lines);\n break;\n }\n /* istanbul ignore next */\n default:\n logger.trace(\n `Could not identify TerragruntDependencyType ${terragruntDependency.groups.type} on line ${lineNumber}.`,\n );\n break;\n }\n if (result) {\n lineNumber = result.lineNumber;\n deps = deps.concat(result.dependencies);\n result = null;\n }\n }\n }\n } catch (err) /* istanbul ignore next */ {\n logger.debug({ err, packageFile }, 'Error extracting terragrunt plugins');\n }\n deps.forEach((dep) => {\n // TODO #22198\n switch (dep.managerData!.terragruntDependencyType) {\n case 'terraform':\n analyseTerragruntModule(dep);\n break;\n /* istanbul ignore next */\n default:\n }\n\n delete dep.managerData;\n });\n return { deps };\n}\n"],"mappings":";;;;;AAUA,MAAM,iCAAiC,MAAM,8BAA8B;AAC3E,MAAM,mBAAmB,CAAC,aAAa;AACvC,MAAM,oBAAoB,MAAM,0BAA0B;AAE1D,SAAgB,mBACd,SACA,aAC2B;CAC3B,OAAO,MAAM,EAAE,QAAQ,GAAG,iCAAiC,YAAa,EAAE;CAC1E,IAAI,CAAC,4BAA4B,SAAS,gBAAgB,GAAG;EAC3D,IAAI,QAAQ,MAAM,iBAAiB,GACjC,OAAO,EAAE,MAAM,CAAC,EAAE;EAEpB,OAAO;CACT;CACA,IAAI,OAAkD,CAAC;CACvD,IAAI;EACF,MAAM,QAAQ,QAAQ,MAAM,YAAY;EACxC,KAAK,IAAI,aAAa,GAAG,aAAa,MAAM,QAAQ,cAAc,GAAG;GACnE,MAAM,OAAO,MAAM;GACnB,MAAM,uBAAuB,+BAA+B,KAAK,IAAI;GACrE,IAAI,sBAAsB,QAAQ;IAChC,OAAO,MACL,WAAW,qBAAqB,OAAO,KAAK,WAAW,YACzD;IACA,MAAM,YAAY,4BAChB,qBAAqB,OAAO,IAC9B;IACA,IAAI,SAAkC;IACtC,QAAQ,WAAR;KACE,KAAK;MACH,SAAS,wBAAwB,YAAY,KAAK;MAClD;;KAGF,SACE,OAAO,MACL,+CAA+C,qBAAqB,OAAO,KAAK,WAAW,WAAW,EACxG;IAEJ
|
|
1
|
+
{"version":3,"file":"extract.js","names":[],"sources":["../../../../lib/modules/manager/terragrunt/extract.ts"],"sourcesContent":["import { logger } from '../../../logger/index.ts';\nimport { newlineRegex, regEx } from '../../../util/regex.ts';\nimport type { PackageDependency, PackageFileContent } from '../types.ts';\nimport { analyseTerragruntModule, extractTerragruntModule } from './modules.ts';\nimport type { ExtractionResult, TerraformManagerData } from './types.ts';\nimport {\n checkFileContainsDependency,\n getTerragruntDependencyType,\n} from './util.ts';\n\nconst dependencyBlockExtractionRegex = regEx(/^\\s*(?<type>[a-z_]+)\\s+{\\s*$/);\nconst contentCheckList = ['terraform {'];\nconst includeBlockCheck = regEx(/include\\s*(?:\".*\")?\\s*\\{/);\n\nexport function extractPackageFile(\n content: string,\n packageFile?: string,\n): PackageFileContent | null {\n logger.trace({ content }, `terragrunt.extractPackageFile(${packageFile!})`);\n if (!checkFileContainsDependency(content, contentCheckList)) {\n if (content.match(includeBlockCheck)) {\n return { deps: [] };\n }\n return null;\n }\n let deps: PackageDependency<TerraformManagerData>[] = [];\n try {\n const lines = content.split(newlineRegex);\n for (let lineNumber = 0; lineNumber < lines.length; lineNumber += 1) {\n const line = lines[lineNumber];\n const terragruntDependency = dependencyBlockExtractionRegex.exec(line);\n if (terragruntDependency?.groups) {\n logger.trace(\n `Matched ${terragruntDependency.groups.type} on line ${lineNumber}`,\n );\n const tfDepType = getTerragruntDependencyType(\n terragruntDependency.groups.type,\n );\n let result: ExtractionResult | null = null;\n switch (tfDepType) {\n case 'terraform': {\n result = extractTerragruntModule(lineNumber, lines);\n break;\n }\n /* istanbul ignore next */\n default:\n logger.trace(\n `Could not identify TerragruntDependencyType ${terragruntDependency.groups.type} on line ${lineNumber}.`,\n );\n break;\n }\n // v8 ignore else -- only the ignored default case leaves this unset\n if (result) {\n lineNumber = result.lineNumber;\n deps = deps.concat(result.dependencies);\n result = null;\n }\n }\n }\n } catch (err) /* istanbul ignore next */ {\n logger.debug({ err, packageFile }, 'Error extracting terragrunt plugins');\n }\n deps.forEach((dep) => {\n // TODO #22198\n switch (dep.managerData!.terragruntDependencyType) {\n case 'terraform':\n analyseTerragruntModule(dep);\n break;\n /* istanbul ignore next */\n default:\n }\n\n delete dep.managerData;\n });\n return { deps };\n}\n"],"mappings":";;;;;AAUA,MAAM,iCAAiC,MAAM,8BAA8B;AAC3E,MAAM,mBAAmB,CAAC,aAAa;AACvC,MAAM,oBAAoB,MAAM,0BAA0B;AAE1D,SAAgB,mBACd,SACA,aAC2B;CAC3B,OAAO,MAAM,EAAE,QAAQ,GAAG,iCAAiC,YAAa,EAAE;CAC1E,IAAI,CAAC,4BAA4B,SAAS,gBAAgB,GAAG;EAC3D,IAAI,QAAQ,MAAM,iBAAiB,GACjC,OAAO,EAAE,MAAM,CAAC,EAAE;EAEpB,OAAO;CACT;CACA,IAAI,OAAkD,CAAC;CACvD,IAAI;EACF,MAAM,QAAQ,QAAQ,MAAM,YAAY;EACxC,KAAK,IAAI,aAAa,GAAG,aAAa,MAAM,QAAQ,cAAc,GAAG;GACnE,MAAM,OAAO,MAAM;GACnB,MAAM,uBAAuB,+BAA+B,KAAK,IAAI;GACrE,IAAI,sBAAsB,QAAQ;IAChC,OAAO,MACL,WAAW,qBAAqB,OAAO,KAAK,WAAW,YACzD;IACA,MAAM,YAAY,4BAChB,qBAAqB,OAAO,IAC9B;IACA,IAAI,SAAkC;IACtC,QAAQ,WAAR;KACE,KAAK;MACH,SAAS,wBAAwB,YAAY,KAAK;MAClD;;KAGF,SACE,OAAO,MACL,+CAA+C,qBAAqB,OAAO,KAAK,WAAW,WAAW,EACxG;IAEJ;;IAEA,IAAI,QAAQ;KACV,aAAa,OAAO;KACpB,OAAO,KAAK,OAAO,OAAO,YAAY;KACtC,SAAS;IACX;GACF;EACF;CACF,SAAS,gCAAgC;EACvC,OAAO,MAAM;GAAE;GAAK;EAAY,GAAG,qCAAqC;CAC1E;CACA,KAAK,SAAS,QAAQ;EAEpB,QAAQ,IAAI,YAAa,0BAAzB;GACE,KAAK,aACH,wBAAwB,GAAG;EAI/B;EAEA,OAAO,IAAI;CACb,CAAC;CACD,OAAO,EAAE,KAAK;AAChB"}
|
|
@@ -20,6 +20,7 @@ function extractPackageFile(content, packageFile, _config) {
|
|
|
20
20
|
logger.trace(`Matched TFLint plugin on line ${lineNumber}`);
|
|
21
21
|
let result = null;
|
|
22
22
|
result = extractTFLintPlugin(lineNumber, lines, tfLintPlugin.groups.pluginName);
|
|
23
|
+
// v8 ignore else -- `extractTFLintPlugin()` always returns a result
|
|
23
24
|
if (result) {
|
|
24
25
|
lineNumber = result.lineNumber;
|
|
25
26
|
deps = deps.concat(result.dependencies);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract.js","names":[],"sources":["../../../../lib/modules/manager/tflint-plugin/extract.ts"],"sourcesContent":["import { logger } from '../../../logger/index.ts';\nimport { newlineRegex, regEx } from '../../../util/regex.ts';\nimport type {\n ExtractConfig,\n PackageDependency,\n PackageFileContent,\n} from '../types.ts';\nimport { extractTFLintPlugin } from './plugins.ts';\nimport type { ExtractionResult } from './types.ts';\nimport { checkFileContainsPlugins } from './util.ts';\n\nconst dependencyBlockExtractionRegex = regEx(\n /^\\s*plugin\\s+\"(?<pluginName>[^\"]+)\"\\s+{\\s*$/,\n);\n\nexport function extractPackageFile(\n content: string,\n packageFile: string,\n _config: ExtractConfig,\n): PackageFileContent | null {\n logger.trace({ content }, `tflint.extractPackageFile(${packageFile})`);\n if (!checkFileContainsPlugins(content)) {\n logger.debug(\n { packageFile },\n 'preflight content check has not found any relevant content',\n );\n return null;\n }\n\n let deps: PackageDependency[] = [];\n\n try {\n const lines = content.split(newlineRegex);\n\n for (let lineNumber = 0; lineNumber < lines.length; lineNumber += 1) {\n const line = lines[lineNumber];\n const tfLintPlugin = dependencyBlockExtractionRegex.exec(line);\n if (tfLintPlugin?.groups) {\n logger.trace(`Matched TFLint plugin on line ${lineNumber}`);\n let result: ExtractionResult | null = null;\n result = extractTFLintPlugin(\n lineNumber,\n lines,\n tfLintPlugin.groups.pluginName,\n );\n if (result) {\n lineNumber = result.lineNumber;\n deps = deps.concat(result.dependencies);\n result = null;\n }\n }\n }\n } catch (err) /* istanbul ignore next */ {\n logger.debug({ err, packageFile }, 'Error extracting TFLint plugins');\n }\n\n return deps.length ? { deps } : null;\n}\n"],"mappings":";;;;;AAWA,MAAM,iCAAiC,MACrC,6CACF;AAEA,SAAgB,mBACd,SACA,aACA,SAC2B;CAC3B,OAAO,MAAM,EAAE,QAAQ,GAAG,6BAA6B,YAAY,EAAE;CACrE,IAAI,CAAC,yBAAyB,OAAO,GAAG;EACtC,OAAO,MACL,EAAE,YAAY,GACd,4DACF;EACA,OAAO;CACT;CAEA,IAAI,OAA4B,CAAC;CAEjC,IAAI;EACF,MAAM,QAAQ,QAAQ,MAAM,YAAY;EAExC,KAAK,IAAI,aAAa,GAAG,aAAa,MAAM,QAAQ,cAAc,GAAG;GACnE,MAAM,OAAO,MAAM;GACnB,MAAM,eAAe,+BAA+B,KAAK,IAAI;GAC7D,IAAI,cAAc,QAAQ;IACxB,OAAO,MAAM,iCAAiC,YAAY;IAC1D,IAAI,SAAkC;IACtC,SAAS,oBACP,YACA,OACA,aAAa,OAAO,UACtB
|
|
1
|
+
{"version":3,"file":"extract.js","names":[],"sources":["../../../../lib/modules/manager/tflint-plugin/extract.ts"],"sourcesContent":["import { logger } from '../../../logger/index.ts';\nimport { newlineRegex, regEx } from '../../../util/regex.ts';\nimport type {\n ExtractConfig,\n PackageDependency,\n PackageFileContent,\n} from '../types.ts';\nimport { extractTFLintPlugin } from './plugins.ts';\nimport type { ExtractionResult } from './types.ts';\nimport { checkFileContainsPlugins } from './util.ts';\n\nconst dependencyBlockExtractionRegex = regEx(\n /^\\s*plugin\\s+\"(?<pluginName>[^\"]+)\"\\s+{\\s*$/,\n);\n\nexport function extractPackageFile(\n content: string,\n packageFile: string,\n _config: ExtractConfig,\n): PackageFileContent | null {\n logger.trace({ content }, `tflint.extractPackageFile(${packageFile})`);\n if (!checkFileContainsPlugins(content)) {\n logger.debug(\n { packageFile },\n 'preflight content check has not found any relevant content',\n );\n return null;\n }\n\n let deps: PackageDependency[] = [];\n\n try {\n const lines = content.split(newlineRegex);\n\n for (let lineNumber = 0; lineNumber < lines.length; lineNumber += 1) {\n const line = lines[lineNumber];\n const tfLintPlugin = dependencyBlockExtractionRegex.exec(line);\n if (tfLintPlugin?.groups) {\n logger.trace(`Matched TFLint plugin on line ${lineNumber}`);\n let result: ExtractionResult | null = null;\n result = extractTFLintPlugin(\n lineNumber,\n lines,\n tfLintPlugin.groups.pluginName,\n );\n // v8 ignore else -- `extractTFLintPlugin()` always returns a result\n if (result) {\n lineNumber = result.lineNumber;\n deps = deps.concat(result.dependencies);\n result = null;\n }\n }\n }\n } catch (err) /* istanbul ignore next */ {\n logger.debug({ err, packageFile }, 'Error extracting TFLint plugins');\n }\n\n return deps.length ? { deps } : null;\n}\n"],"mappings":";;;;;AAWA,MAAM,iCAAiC,MACrC,6CACF;AAEA,SAAgB,mBACd,SACA,aACA,SAC2B;CAC3B,OAAO,MAAM,EAAE,QAAQ,GAAG,6BAA6B,YAAY,EAAE;CACrE,IAAI,CAAC,yBAAyB,OAAO,GAAG;EACtC,OAAO,MACL,EAAE,YAAY,GACd,4DACF;EACA,OAAO;CACT;CAEA,IAAI,OAA4B,CAAC;CAEjC,IAAI;EACF,MAAM,QAAQ,QAAQ,MAAM,YAAY;EAExC,KAAK,IAAI,aAAa,GAAG,aAAa,MAAM,QAAQ,cAAc,GAAG;GACnE,MAAM,OAAO,MAAM;GACnB,MAAM,eAAe,+BAA+B,KAAK,IAAI;GAC7D,IAAI,cAAc,QAAQ;IACxB,OAAO,MAAM,iCAAiC,YAAY;IAC1D,IAAI,SAAkC;IACtC,SAAS,oBACP,YACA,OACA,aAAa,OAAO,UACtB;;IAEA,IAAI,QAAQ;KACV,aAAa,OAAO;KACpB,OAAO,KAAK,OAAO,OAAO,YAAY;KACtC,SAAS;IACX;GACF;EACF;CACF,SAAS,gCAAgC;EACvC,OAAO,MAAM;GAAE;GAAK;EAAY,GAAG,iCAAiC;CACtE;CAEA,OAAO,KAAK,SAAS,EAAE,KAAK,IAAI;AAClC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugins.js","names":[],"sources":["../../../../lib/modules/manager/tflint-plugin/plugins.ts"],"sourcesContent":["import { isString } from '@sindresorhus/is';\nimport { logger } from '../../../logger/index.ts';\nimport { coerceArray } from '../../../util/array.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { GithubReleasesDatasource } from '../../datasource/github-releases/index.ts';\nimport type { PackageDependency } from '../types.ts';\nimport type { ExtractionResult } from './types.ts';\nimport { keyValueExtractionRegex } from './util.ts';\n\nexport function extractTFLintPlugin(\n startingLine: number,\n lines: string[],\n // TODO: remove unused parameter\n _pluginName: string,\n): ExtractionResult {\n let lineNumber = startingLine;\n const deps: PackageDependency[] = [];\n\n let pluginSource: string | null = null;\n let currentVersion: string | null = null;\n\n let braceCounter = 0;\n do {\n // istanbul ignore if\n if (lineNumber > lines.length - 1) {\n logger.debug(`Malformed TFLint configuration file detected.`);\n }\n\n const line = lines[lineNumber];\n\n // istanbul ignore else\n if (isString(line)) {\n // `{` will be counted with +1 and `}` with -1.\n // Therefore if we reach braceCounter == 0 then we found the end of the tflint configuration block.\n const openBrackets = coerceArray(line.match(regEx(/\\{/g))).length;\n const closedBrackets = coerceArray(line.match(regEx(/\\}/g))).length;\n braceCounter = braceCounter + openBrackets - closedBrackets;\n\n // only update fields inside the root block\n if (braceCounter === 1) {\n const kvMatch = keyValueExtractionRegex.exec(line);\n if (kvMatch?.groups) {\n if (kvMatch.groups.key === 'version') {\n currentVersion = kvMatch.groups.value;\n } else if (kvMatch.groups.key === 'source') {\n pluginSource = kvMatch.groups.value;\n }\n }\n }\n } else {\n // stop - something went wrong\n braceCounter = 0;\n }\n lineNumber += 1;\n } while (braceCounter !== 0);\n\n const dep = analyseTFLintPlugin(pluginSource, currentVersion);\n deps.push(dep);\n\n // remove last lineNumber addition to not skip a line after the last bracket\n lineNumber -= 1;\n return { lineNumber, dependencies: deps };\n}\n\nfunction analyseTFLintPlugin(\n source: string | null,\n version: string | null,\n): PackageDependency {\n const dep: PackageDependency = {};\n\n if (source) {\n dep.depType = 'plugin';\n\n const sourceParts = source.split('/');\n if (sourceParts[0] === 'github.com') {\n dep.currentValue = version;\n dep.datasource = GithubReleasesDatasource.id;\n dep.depName = sourceParts.slice(1).join('/');\n } else {\n dep.skipReason = 'unsupported-datasource';\n dep.depName = source;\n }\n } else {\n logger.debug({ dep }, 'tflint plugin has no source');\n dep.skipReason = 'no-source';\n }\n\n return dep;\n}\n"],"mappings":";;;;;;;AASA,SAAgB,oBACd,cACA,OAEA,aACkB;CAClB,IAAI,aAAa;CACjB,MAAM,OAA4B,CAAC;CAEnC,IAAI,eAA8B;CAClC,IAAI,iBAAgC;CAEpC,IAAI,eAAe;CACnB,GAAG;;EAED,IAAI,aAAa,MAAM,SAAS,GAC9B,OAAO,MAAM,+CAA+C;EAG9D,MAAM,OAAO,MAAM;;EAGnB,IAAI,SAAS,IAAI,GAAG;GAGlB,MAAM,eAAe,YAAY,KAAK,MAAM,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;GAC3D,MAAM,iBAAiB,YAAY,KAAK,MAAM,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;GAC7D,eAAe,eAAe,eAAe;GAG7C,IAAI,iBAAiB,GAAG;IACtB,MAAM,UAAU,wBAAwB,KAAK,IAAI;IACjD,IAAI,SAAS,QAAQ;KACnB,IAAI,QAAQ,OAAO,QAAQ,WACzB,iBAAiB,QAAQ,OAAO;
|
|
1
|
+
{"version":3,"file":"plugins.js","names":[],"sources":["../../../../lib/modules/manager/tflint-plugin/plugins.ts"],"sourcesContent":["import { isString } from '@sindresorhus/is';\nimport { logger } from '../../../logger/index.ts';\nimport { coerceArray } from '../../../util/array.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { GithubReleasesDatasource } from '../../datasource/github-releases/index.ts';\nimport type { PackageDependency } from '../types.ts';\nimport type { ExtractionResult } from './types.ts';\nimport { keyValueExtractionRegex } from './util.ts';\n\nexport function extractTFLintPlugin(\n startingLine: number,\n lines: string[],\n // TODO: remove unused parameter\n _pluginName: string,\n): ExtractionResult {\n let lineNumber = startingLine;\n const deps: PackageDependency[] = [];\n\n let pluginSource: string | null = null;\n let currentVersion: string | null = null;\n\n let braceCounter = 0;\n do {\n // istanbul ignore if\n if (lineNumber > lines.length - 1) {\n logger.debug(`Malformed TFLint configuration file detected.`);\n }\n\n const line = lines[lineNumber];\n\n // istanbul ignore else\n if (isString(line)) {\n // `{` will be counted with +1 and `}` with -1.\n // Therefore if we reach braceCounter == 0 then we found the end of the tflint configuration block.\n const openBrackets = coerceArray(line.match(regEx(/\\{/g))).length;\n const closedBrackets = coerceArray(line.match(regEx(/\\}/g))).length;\n braceCounter = braceCounter + openBrackets - closedBrackets;\n\n // only update fields inside the root block\n if (braceCounter === 1) {\n const kvMatch = keyValueExtractionRegex.exec(line);\n if (kvMatch?.groups) {\n if (kvMatch.groups.key === 'version') {\n currentVersion = kvMatch.groups.value;\n // NOTE: the key regex only matches these two, so the implicit else\n // never runs. A coverage-ignore hint cannot suppress it on an\n // `else if`.\n } else if (kvMatch.groups.key === 'source') {\n pluginSource = kvMatch.groups.value;\n }\n }\n }\n } else {\n // stop - something went wrong\n braceCounter = 0;\n }\n lineNumber += 1;\n } while (braceCounter !== 0);\n\n const dep = analyseTFLintPlugin(pluginSource, currentVersion);\n deps.push(dep);\n\n // remove last lineNumber addition to not skip a line after the last bracket\n lineNumber -= 1;\n return { lineNumber, dependencies: deps };\n}\n\nfunction analyseTFLintPlugin(\n source: string | null,\n version: string | null,\n): PackageDependency {\n const dep: PackageDependency = {};\n\n if (source) {\n dep.depType = 'plugin';\n\n const sourceParts = source.split('/');\n if (sourceParts[0] === 'github.com') {\n dep.currentValue = version;\n dep.datasource = GithubReleasesDatasource.id;\n dep.depName = sourceParts.slice(1).join('/');\n } else {\n dep.skipReason = 'unsupported-datasource';\n dep.depName = source;\n }\n } else {\n logger.debug({ dep }, 'tflint plugin has no source');\n dep.skipReason = 'no-source';\n }\n\n return dep;\n}\n"],"mappings":";;;;;;;AASA,SAAgB,oBACd,cACA,OAEA,aACkB;CAClB,IAAI,aAAa;CACjB,MAAM,OAA4B,CAAC;CAEnC,IAAI,eAA8B;CAClC,IAAI,iBAAgC;CAEpC,IAAI,eAAe;CACnB,GAAG;;EAED,IAAI,aAAa,MAAM,SAAS,GAC9B,OAAO,MAAM,+CAA+C;EAG9D,MAAM,OAAO,MAAM;;EAGnB,IAAI,SAAS,IAAI,GAAG;GAGlB,MAAM,eAAe,YAAY,KAAK,MAAM,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;GAC3D,MAAM,iBAAiB,YAAY,KAAK,MAAM,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;GAC7D,eAAe,eAAe,eAAe;GAG7C,IAAI,iBAAiB,GAAG;IACtB,MAAM,UAAU,wBAAwB,KAAK,IAAI;IACjD,IAAI,SAAS,QAAQ;KACnB,IAAI,QAAQ,OAAO,QAAQ,WACzB,iBAAiB,QAAQ,OAAO;UAI3B,IAAI,QAAQ,OAAO,QAAQ,UAChC,eAAe,QAAQ,OAAO;IAElC;GACF;EACF,OAEE,eAAe;EAEjB,cAAc;CAChB,SAAS,iBAAiB;CAE1B,MAAM,MAAM,oBAAoB,cAAc,cAAc;CAC5D,KAAK,KAAK,GAAG;CAGb,cAAc;CACd,OAAO;EAAE;EAAY,cAAc;CAAK;AAC1C;AAEA,SAAS,oBACP,QACA,SACmB;CACnB,MAAM,MAAyB,CAAC;CAEhC,IAAI,QAAQ;EACV,IAAI,UAAU;EAEd,MAAM,cAAc,OAAO,MAAM,GAAG;EACpC,IAAI,YAAY,OAAO,cAAc;GACnC,IAAI,eAAe;GACnB,IAAI,aAAa,yBAAyB;GAC1C,IAAI,UAAU,YAAY,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;EAC7C,OAAO;GACL,IAAI,aAAa;GACjB,IAAI,UAAU;EAChB;CACF,OAAO;EACL,OAAO,MAAM,EAAE,IAAI,GAAG,6BAA6B;EACnD,IAAI,aAAa;CACnB;CAEA,OAAO;AACT"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "renovate",
|
|
3
3
|
"description": "Automated dependency updates. Flexible so you don't need to be.",
|
|
4
|
-
"version": "44.
|
|
4
|
+
"version": "44.92.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"renovate": "dist/renovate.js",
|
|
@@ -223,7 +223,7 @@
|
|
|
223
223
|
"@hyrious/marshal": "0.3.4",
|
|
224
224
|
"@ls-lint/ls-lint": "2.3.1",
|
|
225
225
|
"@openpgp/web-stream-tools": "0.3.1",
|
|
226
|
-
"@oxlint/plugins": "1.
|
|
226
|
+
"@oxlint/plugins": "1.82.0",
|
|
227
227
|
"@semantic-release/exec": "7.1.0",
|
|
228
228
|
"@smithy/util-stream": "4.8.2",
|
|
229
229
|
"@types/adm-zip": "0.5.8",
|
|
@@ -279,7 +279,7 @@
|
|
|
279
279
|
"nock": "14.0.17",
|
|
280
280
|
"npm-run-all2": "9.0.3",
|
|
281
281
|
"nyc": "18.0.0",
|
|
282
|
-
"oxlint": "1.
|
|
282
|
+
"oxlint": "1.82.0",
|
|
283
283
|
"oxlint-tsgolint": "7.0.2001",
|
|
284
284
|
"rimraf": "6.1.3",
|
|
285
285
|
"semantic-release": "25.0.9",
|
package/renovate-schema.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$id": "https://docs.renovatebot.com/renovate-schema.json",
|
|
3
|
-
"title": "JSON schema for Renovate 44.
|
|
3
|
+
"title": "JSON schema for Renovate 44.92.0 config files (https://renovatebot.com/)",
|
|
4
4
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
5
|
-
"x-renovate-version": "44.
|
|
5
|
+
"x-renovate-version": "44.92.0",
|
|
6
6
|
"allowComments": true,
|
|
7
7
|
"type": "object",
|
|
8
8
|
"definitions": {
|