mirror of
https://github.com/renovatebot/renovate.git
synced 2026-10-31 09:41:46 +00:00
feat/setup-node-https
7 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
b2d3b64c48 |
refactor(lint): enforce err key for errors in logger metadata (#45759)
* refactor(lint): enforce err key for errors in logger metadata * refactor(lint): flag error message and stack strings in logger-err-key |
||
|
|
3412de84ce |
refactor(linters): enable oxlint rule prefer-named-capture-group (#44714)
* refactor(lint): enable oxlint prefer-named-capture-group at error Numbered capture groups (m[1], $1) break silently when a regex is edited and group order shifts. Named groups (?<name>...) make intent explicit and accesses (m.groups.name) resilient to reordering. This enables the built-in eslint rule prefer-named-capture-group, surfacing 321 pre-existing unnamed-group violations across ~121 files to be burned down incrementally in follow-up commits. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017RxHFNsSworLcv23xXk9Hk * refactor(versioning): name capture groups for prefer-named-capture-group Burns down all prefer-named-capture-group violations in lib/modules/versioning/. Unused capture groups (only reachable via .test() or whole-match) become non-capturing (?:...); groups whose value is read become named (?<name>...), with accesses rewritten to match.groups!.<name> (or destructured from .groups!) instead of positional match[n]/$n so a future edit that reorders groups cannot silently break the reader. Two cases needed extra care to preserve behavior: - semver/common.ts and poetry/patterns.ts split() on a regex whose capture group is relied upon by String.prototype.split to keep the separator in the output array; the group is kept capturing and named, not converted to non-capturing. - hashicorp/convertor.ts's semverRegex is only ever embedded via .source into a named `(?<version>...)` group elsewhere and never matched directly, so its internal groups are safe to make non-capturing. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017RxHFNsSworLcv23xXk9Hk * refactor(datasource): name capture groups for prefer-named-capture-group Burns down all prefer-named-capture-group violations under lib/modules/datasource/. Same treatment as the versioning module: unused groups become non-capturing, used groups get names, and positional match[n] reads move to match.groups!.<name>. docker/ecr.ts and pypi/common.ts keep their positional destructuring (`const [, region] = ...`, `!!m &&`) working unchanged since a named capture group is still addressable by its numeric index in JavaScript — only pypi/common.ts's access was rewritten to m.groups!.owner for clarity since it read a single group directly. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017RxHFNsSworLcv23xXk9Hk * refactor(platform): name capture groups for prefer-named-capture-group Burns down all prefer-named-capture-group violations under lib/modules/platform/. Uses the repo's established idiom of `match.groups?.<name>` after an optional-chained exec()/match() (see bitbucket/index.ts hostnameWithoutApiPrefix, gerrit/utils.ts extractSourceBranch) and `$<name>` in String.replace replacement strings. Unused groups (markdown/HTML massaging regexes matched only to be stripped) become non-capturing. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017RxHFNsSworLcv23xXk9Hk * refactor(manager): name capture groups in ansible-galaxy for prefer-named-capture-group Burns down prefer-named-capture-group violations in lib/modules/manager/ansible-galaxy/. newBlockRegEx and blockLineRegEx dropped their unused outer wrapping group (only the inner key/value groups were ever read) and named the key/value groups; nameMatchRegex's remaining unused groups (protocol/user-info/port alternatives) become non-capturing since only source/hostname/depName/version are read via .groups. Accesses in collections.ts and roles.ts move from lineMatch[2]/lineMatch[3] to lineMatch.groups!.key/value. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017RxHFNsSworLcv23xXk9Hk * refactor(manager): name capture groups for prefer-named-capture-group (batch 1) Burns down prefer-named-capture-group violations across the first alphabetical slice of lib/modules/manager/ (ansible through mix). Used groups get names with accesses rewritten to match.groups!.<name> (or $<name> in replacement strings); groups whose value is never read become non-capturing (?:...). Two String.split() call sites (git-submodules/extract.ts, meteor/extract.ts) keep the established "named group still readable positionally from the split() result array" idiom instead of restructuring the destructuring. bazel/rules/go.ts and buildpacks/extract.ts dockerRef verified byte-for-byte equivalent before/after via a quick node script since several nested groups collapsed to non-capturing at once. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017RxHFNsSworLcv23xXk9Hk * refactor(manager): name capture groups for prefer-named-capture-group (batch 2) Burns down prefer-named-capture-group violations across the remaining alphabetical slice of lib/modules/manager/ (npm through terragrunt). Same treatment as batch 1: used groups get names with accesses moved to match.groups!.<name> or $<name> replacement strings; unused groups (wrapping alternations, quantifier repetition groups only consumed via .test(), or values never read from a match) become non-capturing. terraform/extractors/others/modules.ts and terragrunt/modules.ts share near-identical URL-parsing regexes (github/bitbucket/git/azure-devops ref matchers) — the same set of always-unused `depth=`/`&depth=` query-string groups is converted to non-capturing in both files. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017RxHFNsSworLcv23xXk9Hk * refactor(config): name capture groups for prefer-named-capture-group Burns down prefer-named-capture-group violations in lib/config/. Used groups get names with replacement strings switched from $1/$2 to $<name>; the unused separator group in schedule-migration.ts's afterBeforeRegex becomes non-capturing. presets/parse.ts keeps assigning through the already-declared `repo` variable rather than array-destructuring the exec() result, matching this file's existing style for the other named-group regexes just above it. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017RxHFNsSworLcv23xXk9Hk * refactor(util): name capture groups for prefer-named-capture-group Burns down prefer-named-capture-group violations across lib/util/ and lib/logger/. Same treatment as previous batches: named groups for values that are read (via $<name> replacement strings, .groups!.<name>, or destructured from .groups), non-capturing groups where nothing reads the captured value (e.g. semantic.ts's angular-commit .test()-only regex). www-authenticate.ts's tokenizer entries each get their own named group but keep accessing the match generically via match[1], since a positionally-indexed named group is still readable by index. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017RxHFNsSworLcv23xXk9Hk * refactor(workers): name capture groups for prefer-named-capture-group Burns down prefer-named-capture-group violations in lib/workers/. Used groups get names with $<name> replacement strings; unused wrapper/alternation groups (e.g. semantic-commit-message.ts's optional scope/issue wrappers, release-notes.ts's date-heading and horizontal-rule matchers that are only probed with .search()/replaced wholesale) become non-capturing. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017RxHFNsSworLcv23xXk9Hk * refactor(test,tools): name capture groups for prefer-named-capture-group Finishes the prefer-named-capture-group burndown: test/, tools/, and vitest.config.mts. Groups whose value is read get names ($<name> replacement strings or .groups.<name> access); groups only used via .test()/.search() or that feed a .match(/…/g) call (whose return value is the array of whole matches, not captured groups) become non-capturing. This is the last remaining slice of pre-existing violations, so the rule (already enabled at error repo-wide) now passes with zero findings across the whole codebase. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017RxHFNsSworLcv23xXk9Hk * fix prettier failure * refactor(lint): use a named capture group in `v8-ignore-no-count` New rule from main trips the newly enabled `prefer-named-capture-group` oxlint rule. --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com> |
||
|
|
41da033756 | refactor: remove escapeRegExp and replace with RegExp.escape (#45322) | ||
|
|
09ba737f09 |
feat(manager/swift): support SSH URLs in Package.swift (#42297)
* feat(manager/swift): support SSH URLs in Package.swift extraction and artifact matching Swift packages can use SSH URLs (e.g. `git@github.com:owner/repo.git`) for dependencies, but the Swift manager only supported HTTPS URLs. This caused SSH-based dependencies to be silently ignored during extraction, and Package.resolved pin matching to fail when protocols differed. - Convert SCP-style SSH and `ssh://` URLs to HTTPS in `parseUrl()` using the existing `getHttpUrl()` utility before platform detection - Enhance `normalizeUrl()` in artifacts to use `parseGitUrl()` for protocol-agnostic URL comparison (falls back to basic normalization when parsed components are incomplete) * test(manager/swift): add edge case tests to improve coverage - Add test for unparseable SSH URL in extraction - Add test for host-only URL fallback in artifact matching * fix(manager/swift): remove redundant .git stripping in normalizeUrl parseGitUrl() already strips the .git suffix from full_name, so the additional regex replacement is unnecessary. * test(manager/swift): add ssh:// protocol test for artifact matching Cover the ssh://git@github.com/... URL format in addition to the existing git@ SCP-style test for Package.resolved pin matching. * refactor(manager/swift): use trimTrailingSlash helper in normalizeUrl * refactor(manager/swift): always normalize URLs in parseUrl |
||
|
|
35dbc3b640 |
fix(swift): don't write from: range to Package.resolved (#42303)
* fix(swift): don't write `from:` range to `Package.resolved` When a dependency uses a range specifier like `from: "1.0.0"` in Package.swift, the `newValue` produced by the versioning module contains the range expression (e.g. `from: "603.0.0"`) rather than a plain version string. Using `newValue` directly to update `Package.resolved` results in the lock file containing the range expression instead of a resolved version, which corrupts it. Fix by using `dep.newVersion` with the `v` prefix stripped, which is the actual resolved version and the correct value for `Package.resolved`. * Update lib/modules/manager/swift/artifacts.ts Co-authored-by: Michael Kriese <michael.kriese@gmx.de> --------- Co-authored-by: Michael Kriese <michael.kriese@gmx.de> |
||
|
|
25c77c69b2 |
fix(swift): don't use v prefix with Package.resolved (#41782)
As noted in #41780, in the case that a `newVersion` has the `v` prefix, we use that version, which then results in `xcodebuild` failing to build the project. We should instead use `newValue`, which does not include the `v` prefix. To make this clear in our tests, we can align the test data with the expected input from our Datasources. Because we need to use the `newVersion` for digest lookups, we need to make sure that we still require it (or log when it's not found for some reason). Co-authored-by: Claude Sonnet 4.6 <jamie.tanna+claude-code@mend.io> |
||
|
|
5cec680633 |
feat(swift): update Package.resolved when updating Package.swift (#41534)
* feat(swift): update Package.resolved when updating Package.swift Add artifact support to the Swift Package Manager module so that Package.resolved lockfiles are updated alongside Package.swift manifest changes. Uses direct JSON modification (targeted regex replacement of version and revision within each pin block) instead of requiring the Swift toolchain, avoiding the need for a macOS runner or private repo authentication. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(swift): achieve 100% coverage for artifacts.ts Add tests for missing datasource/packageName, missing pins array, and getDigest exceptions. Mark three unreachable defensive guards with istanbul ignore (valid JSON always has matching braces and identities). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor(swift): address review feedback from viceice - Inline test fixtures instead of using fixture files - Remove unnecessary beforeEach/resetAllMocks - Use PackageDependency and Upgrade types instead of inline type literals - Add Zod schema for safe Package.resolved parsing - Move PackageResolvedPin/PackageResolvedJson types to schema.ts - Delete fixture files Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> |