From fc36735f0c7dcf174122b455ab499d6d41e34127 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 18 Dec 2024 18:20:56 +0000 Subject: [PATCH 01/21] fix(deps): update ghcr.io/renovatebot/base-image docker tag to v9.23.3 (#33195) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- tools/docker/Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/docker/Dockerfile b/tools/docker/Dockerfile index b90a86fc9f98f3..a3cd4a68d641bd 100644 --- a/tools/docker/Dockerfile +++ b/tools/docker/Dockerfile @@ -5,19 +5,19 @@ ARG BASE_IMAGE_TYPE=slim # -------------------------------------- # slim image # -------------------------------------- -FROM ghcr.io/renovatebot/base-image:9.23.2@sha256:9d9bd9f3769a4a168ad68dc6fcc664dd370909fc1db4f665a2b9d1fe0ed73828 AS slim-base +FROM ghcr.io/renovatebot/base-image:9.23.3@sha256:865f2a173a0a8cc8dd8014ab5646085843be46e87c3ffe41e172aa5b19f04b14 AS slim-base # -------------------------------------- # full image # -------------------------------------- -FROM ghcr.io/renovatebot/base-image:9.23.2-full@sha256:85c47daceb3f56ee8934c3772bb78dfd5e798b55eadf6b4a1a35ed226056e961 AS full-base +FROM ghcr.io/renovatebot/base-image:9.23.3-full@sha256:44388d2da133d08b1e1bc99d0de33788d3851ab2af9251eb679e063321723f45 AS full-base ENV RENOVATE_BINARY_SOURCE=global # -------------------------------------- # build image # -------------------------------------- -FROM --platform=$BUILDPLATFORM ghcr.io/renovatebot/base-image:9.23.2@sha256:9d9bd9f3769a4a168ad68dc6fcc664dd370909fc1db4f665a2b9d1fe0ed73828 AS build +FROM --platform=$BUILDPLATFORM ghcr.io/renovatebot/base-image:9.23.3@sha256:865f2a173a0a8cc8dd8014ab5646085843be46e87c3ffe41e172aa5b19f04b14 AS build # We want a specific node version here # renovate: datasource=node-version From 3425aef3d352e3aa9b04663f817915cb72f08f4a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 19 Dec 2024 00:14:12 +0000 Subject: [PATCH 02/21] chore(deps): update codecov/codecov-action action to v5.1.2 (#33197) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bfcc54a25cf8e5..9a07912103e8f3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -438,7 +438,7 @@ jobs: merge-multiple: true - name: Codecov - uses: codecov/codecov-action@7f8b4b4bde536c465e797be725718b88c5d95e0e # v5.1.1 + uses: codecov/codecov-action@1e68e06f1dbfde0e4cefc87efeba9e4643565303 # v5.1.2 with: token: ${{ secrets.CODECOV_TOKEN }} directory: coverage/lcov From 3b8735d68cd02546244026ea028aae6044d598e9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 19 Dec 2024 00:14:31 +0000 Subject: [PATCH 03/21] feat(deps): update ghcr.io/renovatebot/base-image docker tag to v9.24.0 (#33198) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- tools/docker/Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/docker/Dockerfile b/tools/docker/Dockerfile index a3cd4a68d641bd..8d3d9a370fc221 100644 --- a/tools/docker/Dockerfile +++ b/tools/docker/Dockerfile @@ -5,19 +5,19 @@ ARG BASE_IMAGE_TYPE=slim # -------------------------------------- # slim image # -------------------------------------- -FROM ghcr.io/renovatebot/base-image:9.23.3@sha256:865f2a173a0a8cc8dd8014ab5646085843be46e87c3ffe41e172aa5b19f04b14 AS slim-base +FROM ghcr.io/renovatebot/base-image:9.24.0@sha256:8d920b79a242ebae9da79b0a4714692a83f7404a5f87bece828c9681dc3d9448 AS slim-base # -------------------------------------- # full image # -------------------------------------- -FROM ghcr.io/renovatebot/base-image:9.23.3-full@sha256:44388d2da133d08b1e1bc99d0de33788d3851ab2af9251eb679e063321723f45 AS full-base +FROM ghcr.io/renovatebot/base-image:9.24.0-full@sha256:cbae76905cd436b519285051cd6b3fae8be12837924aaae579751a054e6c68f6 AS full-base ENV RENOVATE_BINARY_SOURCE=global # -------------------------------------- # build image # -------------------------------------- -FROM --platform=$BUILDPLATFORM ghcr.io/renovatebot/base-image:9.23.3@sha256:865f2a173a0a8cc8dd8014ab5646085843be46e87c3ffe41e172aa5b19f04b14 AS build +FROM --platform=$BUILDPLATFORM ghcr.io/renovatebot/base-image:9.24.0@sha256:8d920b79a242ebae9da79b0a4714692a83f7404a5f87bece828c9681dc3d9448 AS build # We want a specific node version here # renovate: datasource=node-version From 6a0885a61a6ed1e52b1a4cb5d731aada6cddd8c9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 19 Dec 2024 10:43:42 +0000 Subject: [PATCH 04/21] chore(deps): update dependency pdm to v2.22.1 (#33202) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9a07912103e8f3..9f0c4158bb27d0 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -31,7 +31,7 @@ concurrency: env: DEFAULT_BRANCH: ${{ github.event.repository.default_branch }} NODE_VERSION: 22 - PDM_VERSION: 2.22.0 # renovate: datasource=pypi depName=pdm + PDM_VERSION: 2.22.1 # renovate: datasource=pypi depName=pdm DRY_RUN: true TEST_LEGACY_DECRYPTION: true SPARSE_CHECKOUT: |- From 94ccb91d316811a775aa46165817f4f4c6000336 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 19 Dec 2024 10:44:03 +0000 Subject: [PATCH 05/21] fix(deps): update ghcr.io/renovatebot/base-image docker tag to v9.24.1 (#33203) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- tools/docker/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/docker/Dockerfile b/tools/docker/Dockerfile index 8d3d9a370fc221..3275c332cdfd50 100644 --- a/tools/docker/Dockerfile +++ b/tools/docker/Dockerfile @@ -5,7 +5,7 @@ ARG BASE_IMAGE_TYPE=slim # -------------------------------------- # slim image # -------------------------------------- -FROM ghcr.io/renovatebot/base-image:9.24.0@sha256:8d920b79a242ebae9da79b0a4714692a83f7404a5f87bece828c9681dc3d9448 AS slim-base +FROM ghcr.io/renovatebot/base-image:9.24.1@sha256:f15f5d0b45f1a6d7f81fc826affe8433068a8189ee6e1f8e205d3ccc6fb57c44 AS slim-base # -------------------------------------- # full image @@ -17,7 +17,7 @@ ENV RENOVATE_BINARY_SOURCE=global # -------------------------------------- # build image # -------------------------------------- -FROM --platform=$BUILDPLATFORM ghcr.io/renovatebot/base-image:9.24.0@sha256:8d920b79a242ebae9da79b0a4714692a83f7404a5f87bece828c9681dc3d9448 AS build +FROM --platform=$BUILDPLATFORM ghcr.io/renovatebot/base-image:9.24.1@sha256:f15f5d0b45f1a6d7f81fc826affe8433068a8189ee6e1f8e205d3ccc6fb57c44 AS build # We want a specific node version here # renovate: datasource=node-version From f98db7404be885925d4fdde15f2128710f7e2bd7 Mon Sep 17 00:00:00 2001 From: RahulGautamSingh Date: Thu, 19 Dec 2024 19:55:35 +0530 Subject: [PATCH 06/21] refactor(config/validation): move helper fns to separate file (#33206) --- lib/config/validation-helpers/utils.spec.ts | 17 +++ lib/config/validation-helpers/utils.ts | 138 ++++++++++++++++++ lib/config/validation.spec.ts | 16 --- lib/config/validation.ts | 151 +++----------------- 4 files changed, 174 insertions(+), 148 deletions(-) create mode 100644 lib/config/validation-helpers/utils.spec.ts create mode 100644 lib/config/validation-helpers/utils.ts diff --git a/lib/config/validation-helpers/utils.spec.ts b/lib/config/validation-helpers/utils.spec.ts new file mode 100644 index 00000000000000..8344eed039e323 --- /dev/null +++ b/lib/config/validation-helpers/utils.spec.ts @@ -0,0 +1,17 @@ +import { getParentName } from './utils'; + +describe('config/validation-helpers/utils', () => { + describe('getParentName()', () => { + it('ignores encrypted in root', () => { + expect(getParentName('encrypted')).toBeEmptyString(); + }); + + it('handles array types', () => { + expect(getParentName('hostRules[1]')).toBe('hostRules'); + }); + + it('handles encrypted within array types', () => { + expect(getParentName('hostRules[0].encrypted')).toBe('hostRules'); + }); + }); +}); diff --git a/lib/config/validation-helpers/utils.ts b/lib/config/validation-helpers/utils.ts new file mode 100644 index 00000000000000..5d676bed324800 --- /dev/null +++ b/lib/config/validation-helpers/utils.ts @@ -0,0 +1,138 @@ +import is from '@sindresorhus/is'; +import { logger } from '../../logger'; +import type { + RegexManagerConfig, + RegexManagerTemplates, +} from '../../modules/manager/custom/regex/types'; +import { regEx } from '../../util/regex'; +import type { ValidationMessage } from '../types'; + +export function getParentName(parentPath: string | undefined): string { + return parentPath + ? parentPath + .replace(regEx(/\.?encrypted$/), '') + .replace(regEx(/\[\d+\]$/), '') + .split('.') + .pop()! + : '.'; +} + +export function validatePlainObject( + val: Record, +): true | string { + for (const [key, value] of Object.entries(val)) { + if (!is.string(value)) { + return key; + } + } + return true; +} + +export function validateNumber( + key: string, + val: unknown, + allowsNegative: boolean, + currentPath?: string, + subKey?: string, +): ValidationMessage[] { + const errors: ValidationMessage[] = []; + const path = `${currentPath}${subKey ? '.' + subKey : ''}`; + if (is.number(val)) { + if (val < 0 && !allowsNegative) { + errors.push({ + topic: 'Configuration Error', + message: `Configuration option \`${path}\` should be a positive integer. Found negative value instead.`, + }); + } + } else { + errors.push({ + topic: 'Configuration Error', + message: `Configuration option \`${path}\` should be an integer. Found: ${JSON.stringify( + val, + )} (${typeof val}).`, + }); + } + + return errors; +} + +/** An option is a false global if it has the same name as a global only option + * but is actually just the field of a non global option or field an children of the non global option + * eg. token: it's global option used as the bot's token as well and + * also it can be the token used for a platform inside the hostRules configuration + */ +export function isFalseGlobal( + optionName: string, + parentPath?: string, +): boolean { + if (parentPath?.includes('hostRules')) { + if ( + optionName === 'token' || + optionName === 'username' || + optionName === 'password' + ) { + return true; + } + } + + return false; +} + +function hasField( + customManager: Partial, + field: string, +): boolean { + const templateField = `${field}Template` as keyof RegexManagerTemplates; + return !!( + customManager[templateField] ?? + customManager.matchStrings?.some((matchString) => + matchString.includes(`(?<${field}>`), + ) + ); +} + +export function validateRegexManagerFields( + customManager: Partial, + currentPath: string, + errors: ValidationMessage[], +): void { + if (is.nonEmptyArray(customManager.matchStrings)) { + for (const matchString of customManager.matchStrings) { + try { + regEx(matchString); + } catch (err) { + logger.debug( + { err }, + 'customManager.matchStrings regEx validation error', + ); + errors.push({ + topic: 'Configuration Error', + message: `Invalid regExp for ${currentPath}: \`${matchString}\``, + }); + } + } + } else { + errors.push({ + topic: 'Configuration Error', + message: `Each Custom Manager must contain a non-empty matchStrings array`, + }); + } + + const mandatoryFields = ['currentValue', 'datasource']; + for (const field of mandatoryFields) { + if (!hasField(customManager, field)) { + errors.push({ + topic: 'Configuration Error', + message: `Regex Managers must contain ${field}Template configuration or regex group named ${field}`, + }); + } + } + + const nameFields = ['depName', 'packageName']; + if (!nameFields.some((field) => hasField(customManager, field))) { + errors.push({ + topic: 'Configuration Error', + message: `Regex Managers must contain depName or packageName regex groups or templates`, + }); + } +} diff --git a/lib/config/validation.spec.ts b/lib/config/validation.spec.ts index a49e75c0de319e..927650a07d732d 100644 --- a/lib/config/validation.spec.ts +++ b/lib/config/validation.spec.ts @@ -4,22 +4,6 @@ import type { RenovateConfig } from './types'; import * as configValidation from './validation'; describe('config/validation', () => { - describe('getParentName()', () => { - it('ignores encrypted in root', () => { - expect(configValidation.getParentName('encrypted')).toBeEmptyString(); - }); - - it('handles array types', () => { - expect(configValidation.getParentName('hostRules[1]')).toBe('hostRules'); - }); - - it('handles encrypted within array types', () => { - expect(configValidation.getParentName('hostRules[0].encrypted')).toBe( - 'hostRules', - ); - }); - }); - describe('validateConfig(config)', () => { it('returns deprecation warnings', async () => { const config = { diff --git a/lib/config/validation.ts b/lib/config/validation.ts index d139cb42c10436..551c07ba9f0863 100644 --- a/lib/config/validation.ts +++ b/lib/config/validation.ts @@ -1,11 +1,6 @@ import is from '@sindresorhus/is'; -import { logger } from '../logger'; import { allManagersList, getManagerList } from '../modules/manager'; import { isCustomManager } from '../modules/manager/custom'; -import type { - RegexManagerConfig, - RegexManagerTemplates, -} from '../modules/manager/custom/regex/types'; import type { CustomManager } from '../modules/manager/custom/types'; import type { HostRule } from '../types'; import { getExpression } from '../util/jsonata'; @@ -39,6 +34,13 @@ import { allowedStatusCheckStrings } from './types'; import * as managerValidator from './validation-helpers/managers'; import * as matchBaseBranchesValidator from './validation-helpers/match-base-branches'; import * as regexOrGlobValidator from './validation-helpers/regex-glob-matchers'; +import { + getParentName, + isFalseGlobal, + validateNumber, + validatePlainObject, + validateRegexManagerFields, +} from './validation-helpers/utils'; const options = getOptions(); @@ -84,42 +86,6 @@ function isIgnored(key: string): boolean { return ignoredNodes.includes(key); } -function validatePlainObject(val: Record): true | string { - for (const [key, value] of Object.entries(val)) { - if (!is.string(value)) { - return key; - } - } - return true; -} - -function validateNumber( - key: string, - val: unknown, - currentPath?: string, - subKey?: string, -): ValidationMessage[] { - const errors: ValidationMessage[] = []; - const path = `${currentPath}${subKey ? '.' + subKey : ''}`; - if (is.number(val)) { - if (val < 0 && !optionAllowsNegativeIntegers.has(key)) { - errors.push({ - topic: 'Configuration Error', - message: `Configuration option \`${path}\` should be a positive integer. Found negative value instead.`, - }); - } - } else { - errors.push({ - topic: 'Configuration Error', - message: `Configuration option \`${path}\` should be an integer. Found: ${JSON.stringify( - val, - )} (${typeof val}).`, - }); - } - - return errors; -} - function getUnsupportedEnabledManagers(enabledManagers: string[]): string[] { return enabledManagers.filter( (manager) => !allManagersList.includes(manager.replace('custom.', '')), @@ -186,16 +152,6 @@ function initOptions(): void { optionsInitialized = true; } -export function getParentName(parentPath: string | undefined): string { - return parentPath - ? parentPath - .replace(regEx(/\.?encrypted$/), '') - .replace(regEx(/\[\d+\]$/), '') - .split('.') - .pop()! - : '.'; -} - export async function validateConfig( configType: 'global' | 'inherit' | 'repo', config: RenovateConfig, @@ -370,7 +326,8 @@ export async function validateConfig( }); } } else if (type === 'integer') { - errors.push(...validateNumber(key, val, currentPath)); + const allowsNegative = optionAllowsNegativeIntegers.has(key); + errors.push(...validateNumber(key, val, allowsNegative, currentPath)); } else if (type === 'array' && val) { if (is.array(val)) { for (const [subIndex, subval] of val.entries()) { @@ -865,65 +822,6 @@ export async function validateConfig( return { errors, warnings }; } -function hasField( - customManager: Partial, - field: string, -): boolean { - const templateField = `${field}Template` as keyof RegexManagerTemplates; - return !!( - customManager[templateField] ?? - customManager.matchStrings?.some((matchString) => - matchString.includes(`(?<${field}>`), - ) - ); -} - -function validateRegexManagerFields( - customManager: Partial, - currentPath: string, - errors: ValidationMessage[], -): void { - if (is.nonEmptyArray(customManager.matchStrings)) { - for (const matchString of customManager.matchStrings) { - try { - regEx(matchString); - } catch (err) { - logger.debug( - { err }, - 'customManager.matchStrings regEx validation error', - ); - errors.push({ - topic: 'Configuration Error', - message: `Invalid regExp for ${currentPath}: \`${matchString}\``, - }); - } - } - } else { - errors.push({ - topic: 'Configuration Error', - message: `Each Custom Manager must contain a non-empty matchStrings array`, - }); - } - - const mandatoryFields = ['currentValue', 'datasource']; - for (const field of mandatoryFields) { - if (!hasField(customManager, field)) { - errors.push({ - topic: 'Configuration Error', - message: `Regex Managers must contain ${field}Template configuration or regex group named ${field}`, - }); - } - } - - const nameFields = ['depName', 'packageName']; - if (!nameFields.some((field) => hasField(customManager, field))) { - errors.push({ - topic: 'Configuration Error', - message: `Regex Managers must contain depName or packageName regex groups or templates`, - }); - } -} - /** * Basic validation for global config options */ @@ -1013,7 +911,8 @@ async function validateGlobalConfig( }); } } else if (type === 'integer') { - warnings.push(...validateNumber(key, val, currentPath)); + const allowsNegative = optionAllowsNegativeIntegers.has(key); + warnings.push(...validateNumber(key, val, allowsNegative, currentPath)); } else if (type === 'boolean') { if (val !== true && val !== false) { warnings.push({ @@ -1079,8 +978,15 @@ async function validateGlobalConfig( } } else if (key === 'cacheTtlOverride') { for (const [subKey, subValue] of Object.entries(val)) { + const allowsNegative = optionAllowsNegativeIntegers.has(key); warnings.push( - ...validateNumber(key, subValue, currentPath, subKey), + ...validateNumber( + key, + subValue, + allowsNegative, + currentPath, + subKey, + ), ); } } else { @@ -1101,22 +1007,3 @@ async function validateGlobalConfig( } } } - -/** An option is a false global if it has the same name as a global only option - * but is actually just the field of a non global option or field an children of the non global option - * eg. token: it's global option used as the bot's token as well and - * also it can be the token used for a platform inside the hostRules configuration - */ -function isFalseGlobal(optionName: string, parentPath?: string): boolean { - if (parentPath?.includes('hostRules')) { - if ( - optionName === 'token' || - optionName === 'username' || - optionName === 'password' - ) { - return true; - } - } - - return false; -} From 1677d5387d26ba68fc29aabbe5ca91ef1e51d1d0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 19 Dec 2024 20:18:39 +0000 Subject: [PATCH 07/21] chore(deps): update dependency type-fest to v4.30.1 (#33215) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- pnpm-lock.yaml | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 2a08e3885127e8..aad6884ad8ab2b 100644 --- a/package.json +++ b/package.json @@ -347,7 +347,7 @@ "tmp-promise": "3.0.3", "ts-jest": "29.2.5", "ts-node": "10.9.2", - "type-fest": "4.30.0", + "type-fest": "4.30.1", "typescript": "5.7.2", "unified": "9.2.2" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7f6865abc45790..fb9988649180f6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -614,8 +614,8 @@ importers: specifier: 10.9.2 version: 10.9.2(@swc/core@1.10.1)(@types/node@20.17.10)(typescript@5.7.2) type-fest: - specifier: 4.30.0 - version: 4.30.0 + specifier: 4.30.1 + version: 4.30.1 typescript: specifier: 5.7.2 version: 5.7.2 @@ -5991,8 +5991,8 @@ packages: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} - type-fest@4.30.0: - resolution: {integrity: sha512-G6zXWS1dLj6eagy6sVhOMQiLtJdxQBHIA9Z6HFUNLOlr6MFOgzV8wvmidtPONfPtEUv0uZsy77XJNzTAfwPDaA==} + type-fest@4.30.1: + resolution: {integrity: sha512-ojFL7eDMX2NF0xMbDwPZJ8sb7ckqtlAi1GsmgsFXvErT9kFTk1r0DuQKvrCh73M6D4nngeHJmvogF9OluXs7Hw==} engines: {node: '>=16'} typed-array-buffer@1.0.2: @@ -12176,7 +12176,7 @@ snapshots: dependencies: '@babel/code-frame': 7.26.2 index-to-position: 0.1.2 - type-fest: 4.30.0 + type-fest: 4.30.1 parse-link-header@2.0.0: dependencies: @@ -12380,7 +12380,7 @@ snapshots: dependencies: find-up-simple: 1.0.0 read-pkg: 9.0.1 - type-fest: 4.30.0 + type-fest: 4.30.1 read-pkg-up@7.0.1: dependencies: @@ -12400,7 +12400,7 @@ snapshots: '@types/normalize-package-data': 2.4.4 normalize-package-data: 6.0.2 parse-json: 8.1.0 - type-fest: 4.30.0 + type-fest: 4.30.1 unicorn-magic: 0.1.0 read-yaml-file@2.1.0: @@ -13165,7 +13165,7 @@ snapshots: type-fest@2.19.0: {} - type-fest@4.30.0: {} + type-fest@4.30.1: {} typed-array-buffer@1.0.2: dependencies: From 10f1f46d382e83dbc92140186b2e4fbf972ea645 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 20 Dec 2024 08:22:39 +0100 Subject: [PATCH 08/21] feat(deps): update ghcr.io/renovatebot/base-image docker tag to v9.25.1 (#33207) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- tools/docker/Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/docker/Dockerfile b/tools/docker/Dockerfile index 3275c332cdfd50..1240fbc5e0d4ab 100644 --- a/tools/docker/Dockerfile +++ b/tools/docker/Dockerfile @@ -5,19 +5,19 @@ ARG BASE_IMAGE_TYPE=slim # -------------------------------------- # slim image # -------------------------------------- -FROM ghcr.io/renovatebot/base-image:9.24.1@sha256:f15f5d0b45f1a6d7f81fc826affe8433068a8189ee6e1f8e205d3ccc6fb57c44 AS slim-base +FROM ghcr.io/renovatebot/base-image:9.25.1@sha256:886a31c0e6384d8b9673e41051da4421abdc2aa78b5a5fdd831713f0ca51a44b AS slim-base # -------------------------------------- # full image # -------------------------------------- -FROM ghcr.io/renovatebot/base-image:9.24.0-full@sha256:cbae76905cd436b519285051cd6b3fae8be12837924aaae579751a054e6c68f6 AS full-base +FROM ghcr.io/renovatebot/base-image:9.25.1-full@sha256:ce2f4079137e50eb551d4b9cf8b8107c5459ecde3ed8e448e1f42c4810113758 AS full-base ENV RENOVATE_BINARY_SOURCE=global # -------------------------------------- # build image # -------------------------------------- -FROM --platform=$BUILDPLATFORM ghcr.io/renovatebot/base-image:9.24.1@sha256:f15f5d0b45f1a6d7f81fc826affe8433068a8189ee6e1f8e205d3ccc6fb57c44 AS build +FROM --platform=$BUILDPLATFORM ghcr.io/renovatebot/base-image:9.25.1@sha256:886a31c0e6384d8b9673e41051da4421abdc2aa78b5a5fdd831713f0ca51a44b AS build # We want a specific node version here # renovate: datasource=node-version From aa0c7d284ba16e209ffb9b7e93bb526c06f7be22 Mon Sep 17 00:00:00 2001 From: Omer Cohen Date: Fri, 20 Dec 2024 15:20:17 +0200 Subject: [PATCH 09/21] feat(manager/gomod): option to always run go mod vendor (#33066) Co-authored-by: Rhys Arkins --- docs/usage/configuration-options.md | 1 + lib/config/options/index.ts | 1 + lib/modules/manager/gomod/artifacts.spec.ts | 106 ++++++++++++++++++++ lib/modules/manager/gomod/artifacts.ts | 6 +- 4 files changed, 111 insertions(+), 3 deletions(-) diff --git a/docs/usage/configuration-options.md b/docs/usage/configuration-options.md index d96d93cf9e207d..a55d0fa601e80e 100644 --- a/docs/usage/configuration-options.md +++ b/docs/usage/configuration-options.md @@ -3357,6 +3357,7 @@ Table with options: | `gomodTidyE` | Run `go mod tidy -e` after Go module updates. | | `gomodUpdateImportPaths` | Update source import paths on major module updates, using [mod](https://github.com/marwan-at-work/mod). | | `gomodSkipVendor` | Never run `go mod vendor` after Go module updates. | +| `gomodVendor` | Always run `go mod vendor` after Go module updates even if vendor files aren't detected. | | `helmUpdateSubChartArchives` | Update subchart archives in the `/charts` folder. | | `npmDedupe` | Run `npm install` with `--prefer-dedupe` for npm >= 7 or `npm dedupe` after `package-lock.json` update for npm <= 6. | | `pnpmDedupe` | Run `pnpm dedupe --config.ignore-scripts=true` after `pnpm-lock.yaml` updates. | diff --git a/lib/config/options/index.ts b/lib/config/options/index.ts index 263cc69f123a74..c5f677d67e58a2 100644 --- a/lib/config/options/index.ts +++ b/lib/config/options/index.ts @@ -2390,6 +2390,7 @@ const options: RenovateOptions[] = [ 'gomodTidyE', 'gomodUpdateImportPaths', 'gomodSkipVendor', + 'gomodVendor', 'helmUpdateSubChartArchives', 'npmDedupe', 'pnpmDedupe', diff --git a/lib/modules/manager/gomod/artifacts.spec.ts b/lib/modules/manager/gomod/artifacts.spec.ts index 308904a603356b..4310e6887c16ab 100644 --- a/lib/modules/manager/gomod/artifacts.spec.ts +++ b/lib/modules/manager/gomod/artifacts.spec.ts @@ -189,6 +189,112 @@ describe('modules/manager/gomod/artifacts', () => { ]); }); + it('runs go mod vendor with gomodVendor', async () => { + fs.readLocalFile.mockResolvedValueOnce('Current go.sum'); + fs.readLocalFile.mockResolvedValueOnce('New go.sum'); + fs.readLocalFile.mockResolvedValueOnce('New go.mod'); + + const execSnapshots = mockExecAll(); + git.getRepoStatus.mockResolvedValueOnce( + partial({ + modified: ['go.sum'], + not_added: [], + deleted: [], + }), + ); + const res = await gomod.updateArtifacts({ + packageFileName: 'go.mod', + updatedDeps: [], + newPackageFileContent: gomod1, + config: { + ...config, + postUpdateOptions: ['gomodVendor'], + }, + }); + expect(res).toEqual([ + { + file: { + contents: 'New go.sum', + path: 'go.sum', + type: 'addition', + }, + }, + { + file: { + contents: 'New go.mod', + path: 'go.mod', + type: 'addition', + }, + }, + ]); + + expect(execSnapshots).toMatchObject([ + { + cmd: 'go get -d -t ./...', + options: { cwd: '/tmp/github/some/repo' }, + }, + { + cmd: 'go mod vendor', + options: { cwd: '/tmp/github/some/repo' }, + }, + ]); + }); + + it('runs go work vendor with gomodVendor and go.work', async () => { + fs.readLocalFile.mockResolvedValueOnce('Current go.sum'); + fs.findLocalSiblingOrParent.mockResolvedValueOnce('go.work'); + const execSnapshots = mockExecAll(); + git.getRepoStatus.mockResolvedValueOnce( + partial({ + modified: ['go.sum'], + not_added: [], + deleted: [], + }), + ); + fs.readLocalFile.mockResolvedValueOnce('New go.sum'); + fs.readLocalFile.mockResolvedValueOnce('New go.mod'); + const res = await gomod.updateArtifacts({ + packageFileName: 'go.mod', + updatedDeps: [], + newPackageFileContent: gomod1, + config: { + ...config, + postUpdateOptions: ['gomodVendor'], + }, + }); + expect(res).toEqual([ + { + file: { + contents: 'New go.sum', + path: 'go.sum', + type: 'addition', + }, + }, + { + file: { + contents: 'New go.mod', + path: 'go.mod', + type: 'addition', + }, + }, + ]); + + expect(execSnapshots).toMatchObject([ + { + cmd: 'go get -d -t ./...', + options: { cwd: '/tmp/github/some/repo' }, + }, + { + cmd: 'go work vendor', + options: { cwd: '/tmp/github/some/repo' }, + }, + { + cmd: 'go work sync', + options: { cwd: '/tmp/github/some/repo' }, + }, + ]); + }); + it('supports vendor directory update', async () => { const foo = join('vendor/github.com/foo/foo/go.mod'); const bar = join('vendor/github.com/bar/bar/go.mod'); diff --git a/lib/modules/manager/gomod/artifacts.ts b/lib/modules/manager/gomod/artifacts.ts index bf5f65a41d1920..e77b357251786d 100644 --- a/lib/modules/manager/gomod/artifacts.ts +++ b/lib/modules/manager/gomod/artifacts.ts @@ -134,9 +134,9 @@ export async function updateArtifacts({ const vendorDir = upath.join(goModDir, 'vendor/'); const vendorModulesFileName = upath.join(vendorDir, 'modules.txt'); const useVendor = - !config.postUpdateOptions?.includes('gomodSkipVendor') && - (await readLocalFile(vendorModulesFileName)) !== null; - + !!config.postUpdateOptions?.includes('gomodVendor') || + (!config.postUpdateOptions?.includes('gomodSkipVendor') && + (await readLocalFile(vendorModulesFileName)) !== null); let massagedGoMod = newGoModContent; if (config.postUpdateOptions?.includes('gomodMassage')) { From 1743d814489307a2879bf34f685fd9e95b9874d3 Mon Sep 17 00:00:00 2001 From: Markus Hofbauer Date: Fri, 20 Dec 2024 14:23:37 +0100 Subject: [PATCH 10/21] feat(bazel-module): Support *.MODULE.bazel (#33211) Co-authored-by: Rhys Arkins --- lib/modules/manager/bazel-module/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/modules/manager/bazel-module/index.ts b/lib/modules/manager/bazel-module/index.ts index fe9461b7f8cceb..3bad62944b8b6f 100644 --- a/lib/modules/manager/bazel-module/index.ts +++ b/lib/modules/manager/bazel-module/index.ts @@ -11,7 +11,7 @@ export const url = 'https://bazel.build/external/module'; export const categories: Category[] = ['bazel']; export const defaultConfig = { - fileMatch: ['(^|/)MODULE\\.bazel$'], + fileMatch: ['(^|/|\\.)MODULE\\.bazel$'], }; export const supportedDatasources = [ From c69df699dab74df010de1e6306d8b6ab7b994574 Mon Sep 17 00:00:00 2001 From: Rhys Arkins Date: Fri, 20 Dec 2024 15:21:13 +0100 Subject: [PATCH 11/21] chore: use redirects for missing labels issue (#33221) --- tools/find-issues-with-missing-labels.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/find-issues-with-missing-labels.sh b/tools/find-issues-with-missing-labels.sh index 26bdc15eadc7ed..3fe03b89a4fd29 100755 --- a/tools/find-issues-with-missing-labels.sh +++ b/tools/find-issues-with-missing-labels.sh @@ -27,7 +27,7 @@ for FILTER in "$TYPE_LABELS_FILTER" "$PRIORITY_LABELS_FILTER"; do HAS_ISSUES_MISSING_LABELS=true # Create a list of issue numbers - FORMATTED_OUTPUT=$(echo "$ISSUES_MISSING_LABEL" | jq -r '.[].number' | sed 's/^/- #/') + FORMATTED_OUTPUT=$(echo "$ISSUES_MISSING_LABEL" | jq -r '.[].number' | sed 's/^/- https:\/\/redirect.github.com\/renovatebot\/renovate\/issues\//') # Count the issues and decide if the output should be singular or plural ISSUE_COUNT=$(echo "$ISSUES_MISSING_LABEL" | jq '. | length') From 6072a3577f319caa65e40ca6faea8ac341f9a9ea Mon Sep 17 00:00:00 2001 From: Sergei Zharinov Date: Fri, 20 Dec 2024 12:01:58 -0300 Subject: [PATCH 12/21] fix(go): Request only info for versions with the same major (#33169) --- .../datasource/go/releases-goproxy.spec.ts | 5 ++++- lib/modules/datasource/go/releases-goproxy.ts | 15 ++++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/lib/modules/datasource/go/releases-goproxy.spec.ts b/lib/modules/datasource/go/releases-goproxy.spec.ts index de9313b8c575c4..2d6950d057f79e 100644 --- a/lib/modules/datasource/go/releases-goproxy.spec.ts +++ b/lib/modules/datasource/go/releases-goproxy.spec.ts @@ -494,7 +494,10 @@ describe('modules/datasource/go/releases-goproxy', () => { .get('.v2/@latest') .reply(200, { Version: 'v2.4.0' }) .get('.v3/@v/list') - .reply(200, ['v3.0.0', 'v3.0.1', ' \n'].join('\n')) + .reply( + 200, + ['v1.0.0', 'v2.0.0', 'v3.0.0', 'v3.0.1', 'v4.0.0', ' \n'].join('\n'), + ) .get('.v3/@v/v3.0.0.info') .reply(200, { Version: 'v3.0.0', Time: '2022-05-21T10:33:21Z' }) .get('.v3/@v/v3.0.1.info') diff --git a/lib/modules/datasource/go/releases-goproxy.ts b/lib/modules/datasource/go/releases-goproxy.ts index 951a857afab056..1a2a9d301cbf1e 100644 --- a/lib/modules/datasource/go/releases-goproxy.ts +++ b/lib/modules/datasource/go/releases-goproxy.ts @@ -217,7 +217,20 @@ export class GoProxyDatasource extends Datasource { try { const res = await this.listVersions(baseUrl, pkg); - releases = await p.map(res, async (versionInfo) => { + + // Artifactory returns all versions in any major (past and future), + // so starting from v2, we filter them in order to avoid the infinite loop + const filteredReleases = res.filter(({ version }) => { + if (major < 2) { + return true; + } + + return ( + version.split(regEx(/[^\d]+/)).find(is.truthy) === major.toString() + ); + }); + + releases = await p.map(filteredReleases, async (versionInfo) => { const { version, newDigest, releaseTimestamp } = versionInfo; if (releaseTimestamp) { From dc6bf16c371978663072f831fb5784404b8ace71 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 20 Dec 2024 16:02:34 +0100 Subject: [PATCH 13/21] chore(deps): update linters (#32318) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Rhys Arkins --- lib/config/types.ts | 3 + lib/modules/manager/npm/post-update/index.ts | 2 +- lib/workers/global/config/parse/env.ts | 2 +- lib/workers/repository/init/vulnerability.ts | 6 +- .../repository/onboarding/branch/index.ts | 2 +- .../repository/process/extract-update.ts | 2 +- package.json | 12 +- pnpm-lock.yaml | 203 ++++++------------ 8 files changed, 81 insertions(+), 151 deletions(-) diff --git a/lib/config/types.ts b/lib/config/types.ts index 20d97dad3c991a..0798f99d7ca662 100644 --- a/lib/config/types.ts +++ b/lib/config/types.ts @@ -306,6 +306,9 @@ export interface RenovateConfig statusCheckNames?: Record; env?: UserEnv; logLevelRemap?: LogLevelRemap[]; + + branchTopic?: string; + additionalBranchPrefix?: string; } const CustomDatasourceFormats = ['json', 'plain', 'yaml', 'html'] as const; diff --git a/lib/modules/manager/npm/post-update/index.ts b/lib/modules/manager/npm/post-update/index.ts index d7f559dc34bb57..b77df6d1b0d86f 100644 --- a/lib/modules/manager/npm/post-update/index.ts +++ b/lib/modules/manager/npm/post-update/index.ts @@ -312,7 +312,7 @@ export async function updateYarnBinary( let yarnrcYml = existingYarnrcYmlContent; try { const yarnrcYmlFilename = upath.join(lockFileDir, '.yarnrc.yml'); - yarnrcYml ||= (await getFile(yarnrcYmlFilename)) ?? undefined; + yarnrcYml ??= (await getFile(yarnrcYmlFilename)) ?? undefined; const newYarnrcYml = await readLocalFile(yarnrcYmlFilename, 'utf8'); if (!is.string(yarnrcYml) || !is.string(newYarnrcYml)) { return existingYarnrcYmlContent; diff --git a/lib/workers/global/config/parse/env.ts b/lib/workers/global/config/parse/env.ts index e1b273a4ec1ce0..3467b1ec1ada8b 100644 --- a/lib/workers/global/config/parse/env.ts +++ b/lib/workers/global/config/parse/env.ts @@ -142,7 +142,7 @@ export async function getConfig( } } - config.hostRules ||= []; + config.hostRules ??= []; options.forEach((option) => { if (option.env !== false) { diff --git a/lib/workers/repository/init/vulnerability.ts b/lib/workers/repository/init/vulnerability.ts index 8c8c06bfbb8510..1d90436a9e42b4 100644 --- a/lib/workers/repository/init/vulnerability.ts +++ b/lib/workers/repository/init/vulnerability.ts @@ -113,9 +113,9 @@ export async function detectVulnerabilityAlerts( alert.security_vulnerability.first_patched_version.identifier; const advisory = alert.security_advisory; - combinedAlerts[fileName] ||= {}; - combinedAlerts[fileName][datasource] ||= {}; - combinedAlerts[fileName][datasource][depName] ||= { + combinedAlerts[fileName] ??= {}; + combinedAlerts[fileName][datasource] ??= {}; + combinedAlerts[fileName][datasource][depName] ??= { advisories: [], }; const alertDetails = combinedAlerts[fileName][datasource][depName]; diff --git a/lib/workers/repository/onboarding/branch/index.ts b/lib/workers/repository/onboarding/branch/index.ts index bc8645cfbcc676..b0f9970727f8ee 100644 --- a/lib/workers/repository/onboarding/branch/index.ts +++ b/lib/workers/repository/onboarding/branch/index.ts @@ -160,7 +160,7 @@ function handleOnboardingManualRebase(onboardingPr: Pr): void { function invalidateExtractCache(baseBranch: string): void { const cache = getCache(); - cache.scan ||= {}; + cache.scan ??= {}; if (cache.scan?.[baseBranch]) { delete cache.scan[baseBranch]; diff --git a/lib/workers/repository/process/extract-update.ts b/lib/workers/repository/process/extract-update.ts index 610e519da73a53..8cc0163d84d363 100644 --- a/lib/workers/repository/process/extract-update.ts +++ b/lib/workers/repository/process/extract-update.ts @@ -136,7 +136,7 @@ export async function extract( const baseBranchSha = await scm.getBranchCommit(baseBranch!); let packageFiles: Record; const cache = getCache(); - cache.scan ||= {}; + cache.scan ??= {}; const cachedExtract = cache.scan[baseBranch!]; const configHash = fingerprint(generateFingerprintConfig(config)); // istanbul ignore if diff --git a/package.json b/package.json index aad6884ad8ab2b..4f90762891caaa 100644 --- a/package.json +++ b/package.json @@ -311,20 +311,20 @@ "@types/url-join": "4.0.3", "@types/validate-npm-package-name": "4.0.2", "@types/xmldoc": "1.1.9", - "@typescript-eslint/eslint-plugin": "8.11.0", - "@typescript-eslint/parser": "8.11.0", + "@typescript-eslint/eslint-plugin": "8.18.0", + "@typescript-eslint/parser": "8.18.0", "aws-sdk-client-mock": "4.1.0", "callsite": "1.0.0", "common-tags": "1.8.2", "conventional-changelog-conventionalcommits": "8.0.0", "emojibase-data": "16.0.2", "eslint": "8.57.1", - "eslint-formatter-gha": "1.5.1", - "eslint-import-resolver-typescript": "3.6.3", + "eslint-formatter-gha": "1.5.2", + "eslint-import-resolver-typescript": "3.7.0", "eslint-plugin-import": "2.31.0", - "eslint-plugin-jest": "28.8.3", + "eslint-plugin-jest": "28.9.0", "eslint-plugin-jest-formatting": "3.1.0", - "eslint-plugin-promise": "7.1.0", + "eslint-plugin-promise": "7.2.1", "eslint-plugin-typescript-enum": "2.1.0", "expect": "29.7.0", "expect-more-jest": "5.5.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fb9988649180f6..9333e531b77ca4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -506,11 +506,11 @@ importers: specifier: 1.1.9 version: 1.1.9 '@typescript-eslint/eslint-plugin': - specifier: 8.11.0 - version: 8.11.0(@typescript-eslint/parser@8.11.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2) + specifier: 8.18.0 + version: 8.18.0(@typescript-eslint/parser@8.18.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2) '@typescript-eslint/parser': - specifier: 8.11.0 - version: 8.11.0(eslint@8.57.1)(typescript@5.7.2) + specifier: 8.18.0 + version: 8.18.0(eslint@8.57.1)(typescript@5.7.2) aws-sdk-client-mock: specifier: 4.1.0 version: 4.1.0 @@ -530,23 +530,23 @@ importers: specifier: 8.57.1 version: 8.57.1 eslint-formatter-gha: - specifier: 1.5.1 - version: 1.5.1 + specifier: 1.5.2 + version: 1.5.2 eslint-import-resolver-typescript: - specifier: 3.6.3 - version: 3.6.3(@typescript-eslint/parser@8.11.0(eslint@8.57.1)(typescript@5.7.2))(eslint-plugin-import@2.31.0)(eslint@8.57.1) + specifier: 3.7.0 + version: 3.7.0(eslint-plugin-import@2.31.0)(eslint@8.57.1) eslint-plugin-import: specifier: 2.31.0 - version: 2.31.0(@typescript-eslint/parser@8.11.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) + version: 2.31.0(@typescript-eslint/parser@8.18.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1) eslint-plugin-jest: - specifier: 28.8.3 - version: 28.8.3(@typescript-eslint/eslint-plugin@8.11.0(@typescript-eslint/parser@8.11.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(jest@29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.1)(@types/node@20.17.10)(typescript@5.7.2)))(typescript@5.7.2) + specifier: 28.9.0 + version: 28.9.0(@typescript-eslint/eslint-plugin@8.18.0(@typescript-eslint/parser@8.18.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(jest@29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.1)(@types/node@20.17.10)(typescript@5.7.2)))(typescript@5.7.2) eslint-plugin-jest-formatting: specifier: 3.1.0 version: 3.1.0(eslint@8.57.1) eslint-plugin-promise: - specifier: 7.1.0 - version: 7.1.0(eslint@8.57.1) + specifier: 7.2.1 + version: 7.2.1(eslint@8.57.1) eslint-plugin-typescript-enum: specifier: 2.1.0 version: 2.1.0(eslint@8.57.1)(typescript@5.7.2) @@ -2201,16 +2201,13 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@8.11.0': - resolution: {integrity: sha512-KhGn2LjW1PJT2A/GfDpiyOfS4a8xHQv2myUagTM5+zsormOmBlYsnQ6pobJ8XxJmh6hnHwa2Mbe3fPrDJoDhbA==} + '@typescript-eslint/eslint-plugin@8.18.0': + resolution: {integrity: sha512-NR2yS7qUqCL7AIxdJUQf2MKKNDVNaig/dEB0GBLU7D+ZdHgK1NoH/3wsgO3OnPVipn51tG3MAwaODEGil70WEw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + typescript: '>=4.8.4 <5.8.0' '@typescript-eslint/experimental-utils@5.62.0': resolution: {integrity: sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==} @@ -2218,45 +2215,32 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - '@typescript-eslint/parser@8.11.0': - resolution: {integrity: sha512-lmt73NeHdy1Q/2ul295Qy3uninSqi6wQI18XwSpm8w0ZbQXUpjCAWP1Vlv/obudoBiIjJVjlztjQ+d/Md98Yxg==} + '@typescript-eslint/parser@8.18.0': + resolution: {integrity: sha512-hgUZ3kTEpVzKaK3uNibExUYm6SKKOmTU2BOxBSvOYwtJEPdVQ70kZJpPjstlnhCHcuc2WGfSbpKlb/69ttyN5Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + typescript: '>=4.8.4 <5.8.0' '@typescript-eslint/scope-manager@5.62.0': resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@typescript-eslint/scope-manager@8.11.0': - resolution: {integrity: sha512-Uholz7tWhXmA4r6epo+vaeV7yjdKy5QFCERMjs1kMVsLRKIrSdM6o21W2He9ftp5PP6aWOVpD5zvrvuHZC0bMQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.18.0': resolution: {integrity: sha512-PNGcHop0jkK2WVYGotk/hxj+UFLhXtGPiGtiaWgVBVP1jhMoMCHlTyJA+hEj4rszoSdLTK3fN4oOatrL0Cp+Xw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.11.0': - resolution: {integrity: sha512-ItiMfJS6pQU0NIKAaybBKkuVzo6IdnAhPFZA/2Mba/uBjuPQPet/8+zh5GtLHwmuFRShZx+8lhIs7/QeDHflOg==} + '@typescript-eslint/type-utils@8.18.0': + resolution: {integrity: sha512-er224jRepVAVLnMF2Q7MZJCq5CsdH2oqjP4dT7K6ij09Kyd+R21r7UVJrF0buMVdZS5QRhDzpvzAxHxabQadow==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' '@typescript-eslint/types@5.62.0': resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@typescript-eslint/types@8.11.0': - resolution: {integrity: sha512-tn6sNMHf6EBAYMvmPUaKaVeYvhUsrE6x+bXQTxjQRp360h1giATU0WvgeEys1spbvb5R+VpNOZ+XJmjD8wOUHw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.18.0': resolution: {integrity: sha512-FNYxgyTCAnFwTrzpBGq+zrnoTO4x0c1CKYY5MuUTzpScqmY5fmsh2o3+57lqdI3NZucBDCzDgdEbIaNfAjAHQA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2270,15 +2254,6 @@ packages: typescript: optional: true - '@typescript-eslint/typescript-estree@8.11.0': - resolution: {integrity: sha512-yHC3s1z1RCHoCz5t06gf7jH24rr3vns08XXhfEqzYpd6Hll3z/3g23JRi0jM8A47UFKNc3u/y5KIMx8Ynbjohg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - '@typescript-eslint/typescript-estree@8.18.0': resolution: {integrity: sha512-rqQgFRu6yPkauz+ms3nQpohwejS8bvgbPyIDq13cgEDbkXt4LH4OkDMT0/fN1RUtzG8e8AKJyDBoocuQh8qNeg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2291,12 +2266,6 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - '@typescript-eslint/utils@8.11.0': - resolution: {integrity: sha512-CYiX6WZcbXNJV7UNB4PLDIBtSdRmRI/nb0FMyqHPTQD1rMjA0foPLaPUV39C/MxkTd/QKSeX+Gb34PPsDVC35g==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - '@typescript-eslint/utils@8.18.0': resolution: {integrity: sha512-p6GLdY383i7h5b0Qrfbix3Vc3+J2k6QWw6UMUeY5JGfm3C5LbZ4QIZzJNoNOfgyRe0uuYKjvVOsO/jD4SJO+xg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2308,10 +2277,6 @@ packages: resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@typescript-eslint/visitor-keys@8.11.0': - resolution: {integrity: sha512-EaewX6lxSjRJnc+99+dqzTeoDZUfyrA52d2/HRrkI830kgovWsmIiTfmr0NZorzqic7ga+1bS60lRBUgR3n/Bw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/visitor-keys@8.18.0': resolution: {integrity: sha512-pCh/qEA8Lb1wVIqNvBke8UaRjJ6wrAWkJO5yyIbs8Yx6TNGYyfNjOo61tLv+WwLvoLPp4BQ8B7AHKijl8NGUfw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -3187,8 +3152,8 @@ packages: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} - eslint-formatter-gha@1.5.1: - resolution: {integrity: sha512-OSMS0XdM2Z5DhTMfRJx/1NiOH+zMYvrq6VXoARgR7mikwkQ5lG8uKBE2GIbM6sxcX13gI4M8x0vyhLNp3RIG7A==} + eslint-formatter-gha@1.5.2: + resolution: {integrity: sha512-1TY8AYbrIP9DCcbydYW467nTP67eW79bT+oVKdUehO3WPMP8pn2oOZVkDc8yDcWf35+t2Li1elY5Dh6jTjJ3/Q==} eslint-formatter-json@8.40.0: resolution: {integrity: sha512-0bXo4At1EoEU23gFfN7wcDeqRXDHLJnvDOuQKD3Q6FkBlk7L2oVNPYg/sciIWdYrUnCBcKuMit3IWXkdSfzChg==} @@ -3201,8 +3166,8 @@ packages: eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - eslint-import-resolver-typescript@3.6.3: - resolution: {integrity: sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==} + eslint-import-resolver-typescript@3.7.0: + resolution: {integrity: sha512-Vrwyi8HHxY97K5ebydMtffsWAn1SCR9eol49eCd5fJS4O1WV7PaAjbcjmbfJJSMz/t4Mal212Uz/fQZrOB8mow==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -3251,8 +3216,8 @@ packages: peerDependencies: eslint: '>=0.8.0' - eslint-plugin-jest@28.8.3: - resolution: {integrity: sha512-HIQ3t9hASLKm2IhIOqnu+ifw7uLZkIlR7RYNv7fMcEi/p0CIiJmfriStQS2LDkgtY4nyLbIZAD+JL347Yc2ETQ==} + eslint-plugin-jest@28.9.0: + resolution: {integrity: sha512-rLu1s1Wf96TgUUxSw6loVIkNtUjq1Re7A9QdCCHSohnvXEBAjuL420h0T/fMmkQlNsQP2GhQzEUpYHPfxBkvYQ==} engines: {node: ^16.10.0 || ^18.12.0 || >=20.0.0} peerDependencies: '@typescript-eslint/eslint-plugin': ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -3264,8 +3229,8 @@ packages: jest: optional: true - eslint-plugin-promise@7.1.0: - resolution: {integrity: sha512-8trNmPxdAy3W620WKDpaS65NlM5yAumod6XeC4LOb+jxlkG4IVcp68c6dXY2ev+uT4U1PtG57YDV6EGAXN0GbQ==} + eslint-plugin-promise@7.2.1: + resolution: {integrity: sha512-SWKjd+EuvWkYaS+uN2csvj0KoP43YTu7+phKQ5v+xw6+A0gutVX2yqCeCkC3uLCJFiPfR2dD8Es5L7yUsmvEaA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 @@ -5649,6 +5614,9 @@ packages: resolution: {integrity: sha512-S7iGNosepx9RadX82oimUkvr0Ct7IjJbEbs4mJcTxst8um95J3sDYU1RBEOvdu6oL1Wek2ODI5i4MAw+dZ6cAQ==} engines: {node: ^18.17.0 || >=20.5.0} + stable-hash@0.0.4: + resolution: {integrity: sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==} + stack-utils@2.0.6: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} @@ -8838,20 +8806,19 @@ snapshots: '@types/node': 20.17.10 optional: true - '@typescript-eslint/eslint-plugin@8.11.0(@typescript-eslint/parser@8.11.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2)': + '@typescript-eslint/eslint-plugin@8.18.0(@typescript-eslint/parser@8.18.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.11.0(eslint@8.57.1)(typescript@5.7.2) - '@typescript-eslint/scope-manager': 8.11.0 - '@typescript-eslint/type-utils': 8.11.0(eslint@8.57.1)(typescript@5.7.2) - '@typescript-eslint/utils': 8.11.0(eslint@8.57.1)(typescript@5.7.2) - '@typescript-eslint/visitor-keys': 8.11.0 + '@typescript-eslint/parser': 8.18.0(eslint@8.57.1)(typescript@5.7.2) + '@typescript-eslint/scope-manager': 8.18.0 + '@typescript-eslint/type-utils': 8.18.0(eslint@8.57.1)(typescript@5.7.2) + '@typescript-eslint/utils': 8.18.0(eslint@8.57.1)(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.18.0 eslint: 8.57.1 graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 ts-api-utils: 1.4.3(typescript@5.7.2) - optionalDependencies: typescript: 5.7.2 transitivePeerDependencies: - supports-color @@ -8864,15 +8831,14 @@ snapshots: - supports-color - typescript - '@typescript-eslint/parser@8.11.0(eslint@8.57.1)(typescript@5.7.2)': + '@typescript-eslint/parser@8.18.0(eslint@8.57.1)(typescript@5.7.2)': dependencies: - '@typescript-eslint/scope-manager': 8.11.0 - '@typescript-eslint/types': 8.11.0 - '@typescript-eslint/typescript-estree': 8.11.0(typescript@5.7.2) - '@typescript-eslint/visitor-keys': 8.11.0 + '@typescript-eslint/scope-manager': 8.18.0 + '@typescript-eslint/types': 8.18.0 + '@typescript-eslint/typescript-estree': 8.18.0(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.18.0 debug: 4.4.0 eslint: 8.57.1 - optionalDependencies: typescript: 5.7.2 transitivePeerDependencies: - supports-color @@ -8882,32 +8848,24 @@ snapshots: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - '@typescript-eslint/scope-manager@8.11.0': - dependencies: - '@typescript-eslint/types': 8.11.0 - '@typescript-eslint/visitor-keys': 8.11.0 - '@typescript-eslint/scope-manager@8.18.0': dependencies: '@typescript-eslint/types': 8.18.0 '@typescript-eslint/visitor-keys': 8.18.0 - '@typescript-eslint/type-utils@8.11.0(eslint@8.57.1)(typescript@5.7.2)': + '@typescript-eslint/type-utils@8.18.0(eslint@8.57.1)(typescript@5.7.2)': dependencies: - '@typescript-eslint/typescript-estree': 8.11.0(typescript@5.7.2) - '@typescript-eslint/utils': 8.11.0(eslint@8.57.1)(typescript@5.7.2) + '@typescript-eslint/typescript-estree': 8.18.0(typescript@5.7.2) + '@typescript-eslint/utils': 8.18.0(eslint@8.57.1)(typescript@5.7.2) debug: 4.4.0 + eslint: 8.57.1 ts-api-utils: 1.4.3(typescript@5.7.2) - optionalDependencies: typescript: 5.7.2 transitivePeerDependencies: - - eslint - supports-color '@typescript-eslint/types@5.62.0': {} - '@typescript-eslint/types@8.11.0': {} - '@typescript-eslint/types@8.18.0': {} '@typescript-eslint/typescript-estree@5.62.0(typescript@5.7.2)': @@ -8924,21 +8882,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.11.0(typescript@5.7.2)': - dependencies: - '@typescript-eslint/types': 8.11.0 - '@typescript-eslint/visitor-keys': 8.11.0 - debug: 4.4.0 - fast-glob: 3.3.2 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.6.3 - ts-api-utils: 1.4.3(typescript@5.7.2) - optionalDependencies: - typescript: 5.7.2 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/typescript-estree@8.18.0(typescript@5.7.2)': dependencies: '@typescript-eslint/types': 8.18.0 @@ -8968,17 +8911,6 @@ snapshots: - supports-color - typescript - '@typescript-eslint/utils@8.11.0(eslint@8.57.1)(typescript@5.7.2)': - dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) - '@typescript-eslint/scope-manager': 8.11.0 - '@typescript-eslint/types': 8.11.0 - '@typescript-eslint/typescript-estree': 8.11.0(typescript@5.7.2) - eslint: 8.57.1 - transitivePeerDependencies: - - supports-color - - typescript - '@typescript-eslint/utils@8.18.0(eslint@8.57.1)(typescript@5.7.2)': dependencies: '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) @@ -8995,11 +8927,6 @@ snapshots: '@typescript-eslint/types': 5.62.0 eslint-visitor-keys: 3.4.3 - '@typescript-eslint/visitor-keys@8.11.0': - dependencies: - '@typescript-eslint/types': 8.11.0 - eslint-visitor-keys: 3.4.3 - '@typescript-eslint/visitor-keys@8.18.0': dependencies: '@typescript-eslint/types': 8.18.0 @@ -9967,7 +9894,7 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-formatter-gha@1.5.1: + eslint-formatter-gha@1.5.2: dependencies: eslint-formatter-json: 8.40.0 eslint-formatter-stylish: 8.40.0 @@ -9988,37 +9915,34 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.11.0(eslint@8.57.1)(typescript@5.7.2))(eslint-plugin-import@2.31.0)(eslint@8.57.1): + eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0)(eslint@8.57.1): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.0 enhanced-resolve: 5.17.1 eslint: 8.57.1 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.11.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) fast-glob: 3.3.2 get-tsconfig: 4.8.1 is-bun-module: 1.3.0 is-glob: 4.0.3 + stable-hash: 0.0.4 optionalDependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.11.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.18.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1) transitivePeerDependencies: - - '@typescript-eslint/parser' - - eslint-import-resolver-node - - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.11.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.18.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.11.0(eslint@8.57.1)(typescript@5.7.2) + '@typescript-eslint/parser': 8.18.0(eslint@8.57.1)(typescript@5.7.2) eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.11.0(eslint@8.57.1)(typescript@5.7.2))(eslint-plugin-import@2.31.0)(eslint@8.57.1) + eslint-import-resolver-typescript: 3.7.0(eslint-plugin-import@2.31.0)(eslint@8.57.1) transitivePeerDependencies: - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.11.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.18.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -10029,7 +9953,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.11.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.18.0(eslint@8.57.1)(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1) hasown: 2.0.2 is-core-module: 2.16.0 is-glob: 4.0.3 @@ -10041,7 +9965,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.11.0(eslint@8.57.1)(typescript@5.7.2) + '@typescript-eslint/parser': 8.18.0(eslint@8.57.1)(typescript@5.7.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -10051,19 +9975,20 @@ snapshots: dependencies: eslint: 8.57.1 - eslint-plugin-jest@28.8.3(@typescript-eslint/eslint-plugin@8.11.0(@typescript-eslint/parser@8.11.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(jest@29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.1)(@types/node@20.17.10)(typescript@5.7.2)))(typescript@5.7.2): + eslint-plugin-jest@28.9.0(@typescript-eslint/eslint-plugin@8.18.0(@typescript-eslint/parser@8.18.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(jest@29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.1)(@types/node@20.17.10)(typescript@5.7.2)))(typescript@5.7.2): dependencies: '@typescript-eslint/utils': 8.18.0(eslint@8.57.1)(typescript@5.7.2) eslint: 8.57.1 optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.11.0(@typescript-eslint/parser@8.11.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2) + '@typescript-eslint/eslint-plugin': 8.18.0(@typescript-eslint/parser@8.18.0(eslint@8.57.1)(typescript@5.7.2))(eslint@8.57.1)(typescript@5.7.2) jest: 29.7.0(@types/node@20.17.10)(ts-node@10.9.2(@swc/core@1.10.1)(@types/node@20.17.10)(typescript@5.7.2)) transitivePeerDependencies: - supports-color - typescript - eslint-plugin-promise@7.1.0(eslint@8.57.1): + eslint-plugin-promise@7.2.1(eslint@8.57.1): dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) eslint: 8.57.1 eslint-plugin-typescript-enum@2.1.0(eslint@8.57.1)(typescript@5.7.2): @@ -12830,6 +12755,8 @@ snapshots: dependencies: minipass: 7.1.2 + stable-hash@0.0.4: {} + stack-utils@2.0.6: dependencies: escape-string-regexp: 2.0.0 From 01a3c2ff8ff464040868f98de9e88ae544b0dc48 Mon Sep 17 00:00:00 2001 From: Will Brennan Date: Sat, 21 Dec 2024 02:05:23 +1100 Subject: [PATCH 14/21] feat(versioning): add devbox versioning module (#31408) Co-authored-by: Rhys Arkins --- lib/modules/versioning/api.ts | 2 + lib/modules/versioning/devbox/index.spec.ts | 103 ++++++++++++++++++++ lib/modules/versioning/devbox/index.ts | 74 ++++++++++++++ lib/modules/versioning/devbox/readme.md | 2 + 4 files changed, 181 insertions(+) create mode 100644 lib/modules/versioning/devbox/index.spec.ts create mode 100644 lib/modules/versioning/devbox/index.ts create mode 100644 lib/modules/versioning/devbox/readme.md diff --git a/lib/modules/versioning/api.ts b/lib/modules/versioning/api.ts index 211c3f8740fe29..454d0f631ade1a 100644 --- a/lib/modules/versioning/api.ts +++ b/lib/modules/versioning/api.ts @@ -6,6 +6,7 @@ import * as composer from './composer'; import * as conan from './conan'; import * as deb from './deb'; import * as debian from './debian'; +import * as devbox from './devbox'; import * as docker from './docker'; import * as git from './git'; import * as glasskube from './glasskube'; @@ -52,6 +53,7 @@ api.set(composer.id, composer.api); api.set(conan.id, conan.api); api.set(deb.id, deb.api); api.set(debian.id, debian.api); +api.set(devbox.id, devbox.api); api.set(docker.id, docker.api); api.set(git.id, git.api); api.set(glasskube.id, glasskube.api); diff --git a/lib/modules/versioning/devbox/index.spec.ts b/lib/modules/versioning/devbox/index.spec.ts new file mode 100644 index 00000000000000..542a28eeed6a4d --- /dev/null +++ b/lib/modules/versioning/devbox/index.spec.ts @@ -0,0 +1,103 @@ +import devbox from '.'; + +describe('modules/versioning/devbox/index', () => { + it.each` + version | expected + ${'1'} | ${false} + ${'01'} | ${false} + ${'1.01'} | ${false} + ${'1.1'} | ${false} + ${'1.3.0'} | ${true} + ${'2.1.20'} | ${true} + ${'v1.4'} | ${false} + ${'V0.5'} | ${false} + ${'3.5.0'} | ${true} + ${'4.2.21.Final'} | ${false} + ${'1234'} | ${false} + ${'foo'} | ${false} + ${'latest'} | ${false} + ${''} | ${false} + ${'3.5.0-beta.3'} | ${false} + ${'*'} | ${false} + ${'x'} | ${false} + ${'X'} | ${false} + ${'~1.2.3'} | ${false} + ${'>1.2.3'} | ${false} + ${'^1.2.3'} | ${false} + ${'1.2.3-foo'} | ${false} + ${'1.2.3foo'} | ${false} + `('isVersion("$version") === $expected', ({ version, expected }) => { + expect(!!devbox.isVersion(version)).toBe(expected); + }); + + it.each` + version | isValid + ${'1'} | ${true} + ${'01'} | ${false} + ${'1.01'} | ${false} + ${'1.1'} | ${true} + ${'1.3.0'} | ${true} + ${'2.1.20'} | ${true} + ${'v1.4'} | ${false} + ${'V0.5'} | ${false} + ${'3.5.0'} | ${true} + ${'4.2.21.Final'} | ${false} + ${'1234'} | ${true} + ${'foo'} | ${false} + ${'latest'} | ${true} + ${''} | ${false} + ${'3.5.0-beta.3'} | ${false} + ${'*'} | ${false} + ${'x'} | ${false} + ${'X'} | ${false} + ${'~1.2.3'} | ${false} + ${'>1.2.3'} | ${false} + ${'^1.2.3'} | ${false} + ${'1.2.3-foo'} | ${false} + ${'1.2.3foo'} | ${false} + `('isValid("$version") === $isValid', ({ version, isValid }) => { + expect(!!devbox.isValid(version)).toBe(isValid); + }); + + it.each` + version | range | expected + ${'1'} | ${'1'} | ${false} + ${'1'} | ${'0'} | ${false} + ${'1.2.3'} | ${'1'} | ${true} + ${'1.2'} | ${'1'} | ${false} + ${'1.0.0'} | ${'1'} | ${true} + ${'1.2.0'} | ${'1.2'} | ${true} + ${'1.2.3'} | ${'1.2'} | ${true} + ${'0'} | ${'latest'} | ${false} + ${'1.2.3'} | ${'latest'} | ${true} + ${'1.2.3.5'} | ${'1.2.3.5'} | ${false} + ${'1.2'} | ${'1.2.3'} | ${false} + `( + 'matches("$version", "$range") === $expected', + ({ version, range, expected }) => { + expect(devbox.matches(version, range)).toBe(expected); + }, + ); + + it.each` + version | range | expected + ${'1'} | ${'1'} | ${true} + ${'1'} | ${'0'} | ${false} + ${'1.2.3'} | ${'1'} | ${true} + ${'1.2'} | ${'1'} | ${true} + ${'1.0.0'} | ${'1'} | ${true} + ${'1.2.0'} | ${'1.2'} | ${true} + ${'1.2.3'} | ${'1.2'} | ${true} + ${'0'} | ${'latest'} | ${true} + ${'1.2.3'} | ${'latest'} | ${true} + ${'1.2.3.5'} | ${'1.2.3.5'} | ${false} + ${'latest'} | ${'latest'} | ${false} + ${'latest'} | ${'1.2.3'} | ${false} + ${'1.2'} | ${'1.2.3'} | ${true} + `( + 'equals("$version", "$range") === $expected', + ({ version, range, expected }) => { + expect(devbox.equals(version, range)).toBe(expected); + }, + ); +}); diff --git a/lib/modules/versioning/devbox/index.ts b/lib/modules/versioning/devbox/index.ts new file mode 100644 index 00000000000000..153f01f4f4de30 --- /dev/null +++ b/lib/modules/versioning/devbox/index.ts @@ -0,0 +1,74 @@ +import { regEx } from '../../../util/regex'; +import type { GenericVersion } from '../generic'; +import { GenericVersioningApi } from '../generic'; +import type { VersioningApi } from '../types'; + +export const id = 'devbox'; +export const displayName = 'devbox'; +export const urls = []; +export const supportsRanges = false; + +const validPattern = regEx(/^((\d|[1-9]\d*)(\.(\d|[1-9]\d*)){0,2})$/); +const versionPattern = regEx(/^((\d|[1-9]\d*)(\.(\d|[1-9]\d*)){2})$/); + +class DevboxVersioningApi extends GenericVersioningApi { + protected _parse(version: string): GenericVersion | null { + const matches = validPattern.exec(version); + if (!matches) { + return null; + } + const release = matches[0].split('.').map(Number); + return { release }; + } + + override isValid(version: string): boolean { + if (version === 'latest') { + return true; + } + return this._parse(version) !== null; + } + + override isVersion(version: string): boolean { + if (version === 'latest') { + return false; + } + const matches = versionPattern.exec(version); + return !!matches; + } + + override matches(version: string, range: string): boolean { + return this.isVersion(version) && this.equals(version, range); + } + + protected override _compare(version: string, other: string): number { + const parsed1 = this._parse(version); + const parsed2 = this._parse(other); + + // Treat "latest" as * and always return equal + if (other === 'latest' && parsed1) { + return 0; + } + + // If either version is invalid, return unequal + if (!(parsed1 && parsed2)) { + return 1; + } + // support variable length compare + const length = Math.max(parsed1.release.length, parsed2.release.length); + for (let i = 0; i < length; i += 1) { + // 2.1 and 2.1.0 are equivalent + const part1 = parsed1.release[i]; + const part2 = parsed2.release[i]; + // if part1 or part2 is undefined, we should treat them as equal + // e.g. 1.0.0 === 1.0 + if (part1 !== undefined && part2 !== undefined && part1 !== part2) { + return part1 - part2; + } + } + return 0; + } +} + +export const api: VersioningApi = new DevboxVersioningApi(); + +export default api; diff --git a/lib/modules/versioning/devbox/readme.md b/lib/modules/versioning/devbox/readme.md new file mode 100644 index 00000000000000..e7eff534d5cfef --- /dev/null +++ b/lib/modules/versioning/devbox/readme.md @@ -0,0 +1,2 @@ +Devbox's Nixhub uses fairly strict versioning, characters such as ~, ^ and >= are not allowed. +The semver values must not include "\*" or "x". "1.2.3" "1.2" and "1" are the only valid formats. From 91c0483543576e60a3af3cf858c931147f7c850e Mon Sep 17 00:00:00 2001 From: Marc Vornetran Date: Fri, 20 Dec 2024 16:12:49 +0100 Subject: [PATCH 15/21] chore: Add k8s.io/component-helpers to group:kubernetes (#33223) --- lib/config/presets/internal/group.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/config/presets/internal/group.ts b/lib/config/presets/internal/group.ts index e600ed3f318664..51a13f529b4e61 100644 --- a/lib/config/presets/internal/group.ts +++ b/lib/config/presets/internal/group.ts @@ -316,9 +316,10 @@ const staticGroups = { 'k8s.io/cluster-bootstrap**', 'k8s.io/code-generator**', 'k8s.io/component-base**', + 'k8s.io/component-helpers**', 'k8s.io/controller-manager**', 'k8s.io/cri-api**', - // 'k8s.io/csi-api', has not go.mod set up and does not follow the versioning of other repos + // 'k8s.io/csi-api', has no go.mod set up and does not follow the versioning of other repos 'k8s.io/csi-translation-lib**', 'k8s.io/kube-aggregator**', 'k8s.io/kube-controller-manager**', From 7eef0d3ed0acd1c67224c55b87395df06bde9753 Mon Sep 17 00:00:00 2001 From: Mike Glazer Date: Fri, 20 Dec 2024 08:07:28 -0800 Subject: [PATCH 16/21] feat(datasource/orb): Add support for internal CircleCI Registries (#33213) Co-authored-by: Michael Kriese --- .../datasource/orb/__snapshots__/index.spec.ts.snap | 4 ++-- lib/modules/datasource/orb/index.spec.ts | 13 +++++++++++++ lib/modules/datasource/orb/index.ts | 6 ++++-- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/lib/modules/datasource/orb/__snapshots__/index.spec.ts.snap b/lib/modules/datasource/orb/__snapshots__/index.spec.ts.snap index b3583fe0121db5..b6f1650795302d 100644 --- a/lib/modules/datasource/orb/__snapshots__/index.spec.ts.snap +++ b/lib/modules/datasource/orb/__snapshots__/index.spec.ts.snap @@ -4,7 +4,7 @@ exports[`modules/datasource/orb/index getReleases processes homeUrl 1`] = ` { "homepage": "https://google.com", "isPrivate": false, - "registryUrl": "https://circleci.com/", + "registryUrl": "https://circleci.com", "releases": [ { "releaseTimestamp": "2018-12-11T05:28:14.080Z", @@ -53,7 +53,7 @@ exports[`modules/datasource/orb/index getReleases processes real data 1`] = ` { "homepage": "https://circleci.com/developer/orbs/orb/hyper-expanse/library-release-workflows", "isPrivate": false, - "registryUrl": "https://circleci.com/", + "registryUrl": "https://circleci.com", "releases": [ { "releaseTimestamp": "2018-12-11T05:28:14.080Z", diff --git a/lib/modules/datasource/orb/index.spec.ts b/lib/modules/datasource/orb/index.spec.ts index e2dd13dd7b817c..1cb1e8519d4ac5 100644 --- a/lib/modules/datasource/orb/index.spec.ts +++ b/lib/modules/datasource/orb/index.spec.ts @@ -92,5 +92,18 @@ describe('modules/datasource/orb/index', () => { expect(res).toMatchSnapshot(); expect(res?.homepage).toBe('https://google.com'); }); + + it('supports other registries', async () => { + httpMock + .scope('https://cci.internal.dev') + .post('/graphql-unstable') + .reply(200, orbData); + const res = await getPkgReleases({ + datasource, + packageName: 'hyper-expanse/library-release-workflows', + registryUrls: ['https://cci.internal.dev'], + }); + expect(res?.registryUrl).toBe('https://cci.internal.dev'); + }); }); }); diff --git a/lib/modules/datasource/orb/index.ts b/lib/modules/datasource/orb/index.ts index 12e3bc834d5eee..80fa61e4e93204 100644 --- a/lib/modules/datasource/orb/index.ts +++ b/lib/modules/datasource/orb/index.ts @@ -1,5 +1,6 @@ import { logger } from '../../../logger'; import { cache } from '../../../util/cache/package/decorator'; +import { joinUrlParts } from '../../../util/url'; import { Datasource } from '../datasource'; import type { GetReleasesConfig, ReleaseResult } from '../types'; import type { OrbResponse } from './types'; @@ -27,9 +28,10 @@ export class OrbDatasource extends Datasource { super(OrbDatasource.id); } - override readonly customRegistrySupport = false; + override readonly customRegistrySupport = true; override readonly defaultRegistryUrls = ['https://circleci.com/']; + override readonly registryStrategy = 'hunt'; override readonly releaseTimestampSupport = true; override readonly releaseTimestampNote = @@ -47,7 +49,7 @@ export class OrbDatasource extends Datasource { if (!registryUrl) { return null; } - const url = `${registryUrl}graphql-unstable`; + const url = joinUrlParts(registryUrl, 'graphql-unstable'); const body = { query, variables: { packageName, maxVersions: MAX_VERSIONS }, From b20eaf6403ecbdc20787860ad5a8a16c59ed9d6b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 20 Dec 2024 20:05:57 +0000 Subject: [PATCH 17/21] chore(deps): update github/codeql-action action to v3.28.0 (#33225) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecard.yml | 2 +- .github/workflows/trivy.yml | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 75e0567225d421..fbcd8f0dd563ad 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -41,7 +41,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@df409f7d9260372bd5f19e5b04e83cb3c43714ae # v3.27.9 + uses: github/codeql-action/init@48ab28a6f5dbc2a99bf1e0131198dd8f1df78169 # v3.28.0 with: languages: javascript @@ -51,7 +51,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@df409f7d9260372bd5f19e5b04e83cb3c43714ae # v3.27.9 + uses: github/codeql-action/autobuild@48ab28a6f5dbc2a99bf1e0131198dd8f1df78169 # v3.28.0 # ℹī¸ Command-line programs to run using the OS shell. # 📚 https://git.io/JvXDl @@ -65,4 +65,4 @@ jobs: # make release - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@df409f7d9260372bd5f19e5b04e83cb3c43714ae # v3.27.9 + uses: github/codeql-action/analyze@48ab28a6f5dbc2a99bf1e0131198dd8f1df78169 # v3.28.0 diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index d2b0c20e30924d..b3cfe0671e90ed 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -51,6 +51,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: 'Upload to code-scanning' - uses: github/codeql-action/upload-sarif@df409f7d9260372bd5f19e5b04e83cb3c43714ae # v3.27.9 + uses: github/codeql-action/upload-sarif@48ab28a6f5dbc2a99bf1e0131198dd8f1df78169 # v3.28.0 with: sarif_file: results.sarif diff --git a/.github/workflows/trivy.yml b/.github/workflows/trivy.yml index 36bfabaa8bd3fd..4bb06dc0427ed2 100644 --- a/.github/workflows/trivy.yml +++ b/.github/workflows/trivy.yml @@ -31,7 +31,7 @@ jobs: format: 'sarif' output: 'trivy-results.sarif' - - uses: github/codeql-action/upload-sarif@df409f7d9260372bd5f19e5b04e83cb3c43714ae # v3.27.9 + - uses: github/codeql-action/upload-sarif@48ab28a6f5dbc2a99bf1e0131198dd8f1df78169 # v3.28.0 with: sarif_file: trivy-results.sarif category: 'docker-image-${{ matrix.tag }}' From 64b6e888d016e59097edf95bf58b9702a2a41639 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 20 Dec 2024 21:06:26 +0100 Subject: [PATCH 18/21] build(deps): update opentelemetry-js monorepo (#33046) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: secustor --- lib/instrumentation/index.spec.ts | 16 ++- package.json | 14 +- pnpm-lock.yaml | 206 +++++++++++++----------------- 3 files changed, 104 insertions(+), 132 deletions(-) diff --git a/lib/instrumentation/index.spec.ts b/lib/instrumentation/index.spec.ts index 3c67320d1193e2..7657622c48e9c9 100644 --- a/lib/instrumentation/index.spec.ts +++ b/lib/instrumentation/index.spec.ts @@ -59,10 +59,12 @@ describe('instrumentation/index', () => { _registeredSpanProcessors: [ { _exporter: { - _transport: { + _delegate: { _transport: { - _parameters: { - url: 'https://collector.example.com/v1/traces', + _transport: { + _parameters: { + url: 'https://collector.example.com/v1/traces', + }, }, }, }, @@ -88,10 +90,12 @@ describe('instrumentation/index', () => { { _exporter: {} }, { _exporter: { - _transport: { + _delegate: { _transport: { - _parameters: { - url: 'https://collector.example.com/v1/traces', + _transport: { + _parameters: { + url: 'https://collector.example.com/v1/traces', + }, }, }, }, diff --git a/package.json b/package.json index 4f90762891caaa..60eb94ec52603b 100644 --- a/package.json +++ b/package.json @@ -152,14 +152,14 @@ "@breejs/later": "4.2.0", "@cdktf/hcl2json": "0.20.10", "@opentelemetry/api": "1.9.0", - "@opentelemetry/context-async-hooks": "1.28.0", - "@opentelemetry/exporter-trace-otlp-http": "0.55.0", - "@opentelemetry/instrumentation": "0.55.0", + "@opentelemetry/context-async-hooks": "1.29.0", + "@opentelemetry/exporter-trace-otlp-http": "0.56.0", + "@opentelemetry/instrumentation": "0.56.0", "@opentelemetry/instrumentation-bunyan": "0.44.0", - "@opentelemetry/instrumentation-http": "0.55.0", - "@opentelemetry/resources": "1.28.0", - "@opentelemetry/sdk-trace-base": "1.28.0", - "@opentelemetry/sdk-trace-node": "1.28.0", + "@opentelemetry/instrumentation-http": "0.56.0", + "@opentelemetry/resources": "1.29.0", + "@opentelemetry/sdk-trace-base": "1.29.0", + "@opentelemetry/sdk-trace-node": "1.29.0", "@opentelemetry/semantic-conventions": "1.28.0", "@qnighy/marshal": "0.1.3", "@renovatebot/detect-tools": "1.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9333e531b77ca4..3950891b9121b4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -39,29 +39,29 @@ importers: specifier: 1.9.0 version: 1.9.0 '@opentelemetry/context-async-hooks': - specifier: 1.28.0 - version: 1.28.0(@opentelemetry/api@1.9.0) + specifier: 1.29.0 + version: 1.29.0(@opentelemetry/api@1.9.0) '@opentelemetry/exporter-trace-otlp-http': - specifier: 0.55.0 - version: 0.55.0(@opentelemetry/api@1.9.0) + specifier: 0.56.0 + version: 0.56.0(@opentelemetry/api@1.9.0) '@opentelemetry/instrumentation': - specifier: 0.55.0 - version: 0.55.0(@opentelemetry/api@1.9.0) + specifier: 0.56.0 + version: 0.56.0(@opentelemetry/api@1.9.0) '@opentelemetry/instrumentation-bunyan': specifier: 0.44.0 version: 0.44.0(@opentelemetry/api@1.9.0) '@opentelemetry/instrumentation-http': - specifier: 0.55.0 - version: 0.55.0(@opentelemetry/api@1.9.0) + specifier: 0.56.0 + version: 0.56.0(@opentelemetry/api@1.9.0) '@opentelemetry/resources': - specifier: 1.28.0 - version: 1.28.0(@opentelemetry/api@1.9.0) + specifier: 1.29.0 + version: 1.29.0(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-trace-base': - specifier: 1.28.0 - version: 1.28.0(@opentelemetry/api@1.9.0) + specifier: 1.29.0 + version: 1.29.0(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-trace-node': - specifier: 1.28.0 - version: 1.28.0(@opentelemetry/api@1.9.0) + specifier: 1.29.0 + version: 1.29.0(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': specifier: 1.28.0 version: 1.28.0 @@ -1325,10 +1325,6 @@ packages: typescript: optional: true - '@opentelemetry/api-logs@0.55.0': - resolution: {integrity: sha512-3cpa+qI45VHYcA5c0bHM6VHo9gicv3p5mlLHNG3rLyjQU8b7e0st1rWtrUn3JbZ3DwwCfhKop4eQ9UuYlC6Pkg==} - engines: {node: '>=14'} - '@opentelemetry/api-logs@0.56.0': resolution: {integrity: sha512-Wr39+94UNNG3Ei9nv3pHd4AJ63gq5nSemMRpCd8fPwDL9rN3vK26lzxfH27mw16XzOSO+TpyQwBAMaLxaPWG0g==} engines: {node: '>=14'} @@ -1337,20 +1333,20 @@ packages: resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} engines: {node: '>=8.0.0'} - '@opentelemetry/context-async-hooks@1.28.0': - resolution: {integrity: sha512-igcl4Ve+F1N2063PJUkesk/GkYyuGIWinYkSyAFTnIj3gzrOgvOA4k747XNdL47HRRL1w/qh7UW8NDuxOLvKFA==} + '@opentelemetry/context-async-hooks@1.29.0': + resolution: {integrity: sha512-TKT91jcFXgHyIDF1lgJF3BHGIakn6x0Xp7Tq3zoS3TMPzT9IlP0xEavWP8C1zGjU9UmZP2VR1tJhW9Az1A3w8Q==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/core@1.28.0': - resolution: {integrity: sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==} + '@opentelemetry/core@1.29.0': + resolution: {integrity: sha512-gmT7vAreXl0DTHD2rVZcw3+l2g84+5XiHIqdBUxXbExymPCvSsGOpiwMmn8nkiJur28STV31wnhIDrzWDPzjfA==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/exporter-trace-otlp-http@0.55.0': - resolution: {integrity: sha512-lMiNic63EVHpW+eChmLD2CieDmwQBFi72+LFbh8+5hY0ShrDGrsGP/zuT5MRh7M/vM/UZYO/2A/FYd7CMQGR7A==} + '@opentelemetry/exporter-trace-otlp-http@0.56.0': + resolution: {integrity: sha512-vqVuJvcwameA0r0cNrRzrZqPLB0otS+95g0XkZdiKOXUo81wYdY6r4kyrwz4nSChqTBEFm0lqi/H2OWGboOa6g==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 @@ -1361,14 +1357,8 @@ packages: peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/instrumentation-http@0.55.0': - resolution: {integrity: sha512-AO27XSjkgNicfy/YBthskFAwx9VfaO7tChrLaTONTfOWv14GlB3Rs2eTYpywZIHWsW2cR5hvVkcDte4GV0stoA==} - engines: {node: '>=14'} - peerDependencies: - '@opentelemetry/api': ^1.3.0 - - '@opentelemetry/instrumentation@0.55.0': - resolution: {integrity: sha512-YDCMlaQRZkziLL3t6TONRgmmGxDx6MyQDXRD0dknkkgUZtOK5+8MWft1OXzmNu6XfBOdT12MKN5rz+jHUkafKQ==} + '@opentelemetry/instrumentation-http@0.56.0': + resolution: {integrity: sha512-/bWHBUAq8VoATnH9iLk5w8CE9+gj+RgYSUphe7hry472n6fYl7+4PvuScoQMdmSUTprKq/gyr2kOWL6zrC7FkQ==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 @@ -1379,64 +1369,60 @@ packages: peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/otlp-exporter-base@0.55.0': - resolution: {integrity: sha512-iHQI0Zzq3h1T6xUJTVFwmFl5Dt5y1es+fl4kM+k5T/3YvmVyeYkSiF+wHCg6oKrlUAJfk+t55kaAu3sYmt7ZYA==} + '@opentelemetry/otlp-exporter-base@0.56.0': + resolution: {integrity: sha512-eURvv0fcmBE+KE1McUeRo+u0n18ZnUeSc7lDlW/dzlqFYasEbsztTK4v0Qf8C4vEY+aMTjPKUxBG0NX2Te3Pmw==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/otlp-transformer@0.55.0': - resolution: {integrity: sha512-kVqEfxtp6mSN2Dhpy0REo1ghP4PYhC1kMHQJ2qVlO99Pc+aigELjZDfg7/YKmL71gR6wVGIeJfiql/eXL7sQPA==} + '@opentelemetry/otlp-transformer@0.56.0': + resolution: {integrity: sha512-kVkH/W2W7EpgWWpyU5VnnjIdSD7Y7FljQYObAQSKdRcejiwMj2glypZtUdfq1LTJcv4ht0jyTrw1D3CCxssNtQ==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 - '@opentelemetry/propagator-b3@1.28.0': - resolution: {integrity: sha512-Q7HVDIMwhN5RxL4bECMT4BdbyYSAKkC6U/RGn4NpO/cbqP6ZRg+BS7fPo/pGZi2w8AHfpIGQFXQmE8d2PC5xxQ==} + '@opentelemetry/propagator-b3@1.29.0': + resolution: {integrity: sha512-ktsNDlqhu+/IPGEJRMj81upg2JupUp+SwW3n1ZVZTnrDiYUiMUW41vhaziA7Q6UDhbZvZ58skDpQhe2ZgNIPvg==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/propagator-jaeger@1.28.0': - resolution: {integrity: sha512-wKJ94+s8467CnIRgoSRh0yXm/te0QMOwTq9J01PfG/RzYZvlvN8aRisN2oZ9SznB45dDGnMj3BhUlchSA9cEKA==} + '@opentelemetry/propagator-jaeger@1.29.0': + resolution: {integrity: sha512-EXIEYmFgybnFMijVgqx1mq/diWwSQcd0JWVksytAVQEnAiaDvP45WuncEVQkFIAC0gVxa2+Xr8wL5pF5jCVKbg==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/resources@1.28.0': - resolution: {integrity: sha512-cIyXSVJjGeTICENN40YSvLDAq4Y2502hGK3iN7tfdynQLKWb3XWZQEkPc+eSx47kiy11YeFAlYkEfXwR1w8kfw==} + '@opentelemetry/resources@1.29.0': + resolution: {integrity: sha512-s7mLXuHZE7RQr1wwweGcaRp3Q4UJJ0wazeGlc/N5/XSe6UyXfsh1UQGMADYeg7YwD+cEdMtU1yJAUXdnFzYzyQ==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/sdk-logs@0.55.0': - resolution: {integrity: sha512-TSx+Yg/d48uWW6HtjS1AD5x6WPfLhDWLl/WxC7I2fMevaiBuKCuraxTB8MDXieCNnBI24bw9ytyXrDCswFfWgA==} + '@opentelemetry/sdk-logs@0.56.0': + resolution: {integrity: sha512-OS0WPBJF++R/cSl+terUjQH5PebloidB1Jbbecgg2rnCmQbTST9xsRes23bLfDQVRvmegmHqDh884h0aRdJyLw==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': '>=1.4.0 <1.10.0' - '@opentelemetry/sdk-metrics@1.28.0': - resolution: {integrity: sha512-43tqMK/0BcKTyOvm15/WQ3HLr0Vu/ucAl/D84NO7iSlv6O4eOprxSHa3sUtmYkaZWHqdDJV0AHVz/R6u4JALVQ==} + '@opentelemetry/sdk-metrics@1.29.0': + resolution: {integrity: sha512-MkVtuzDjXZaUJSuJlHn6BSXjcQlMvHcsDV7LjY4P6AJeffMa4+kIGDjzsCf6DkAh6Vqlwag5EWEam3KZOX5Drw==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': '>=1.3.0 <1.10.0' - '@opentelemetry/sdk-trace-base@1.28.0': - resolution: {integrity: sha512-ceUVWuCpIao7Y5xE02Xs3nQi0tOGmMea17ecBdwtCvdo9ekmO+ijc9RFDgfifMl7XCBf41zne/1POM3LqSTZDA==} + '@opentelemetry/sdk-trace-base@1.29.0': + resolution: {integrity: sha512-hEOpAYLKXF3wGJpXOtWsxEtqBgde0SCv+w+jvr3/UusR4ll3QrENEGnSl1WDCyRrpqOQ5NCNOvZch9UFVa7MnQ==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/sdk-trace-node@1.28.0': - resolution: {integrity: sha512-N0sYfYXvHpP0FNIyc+UfhLnLSTOuZLytV0qQVrDWIlABeD/DWJIGttS7nYeR14gQLXch0M1DW8zm3VeN6Opwtg==} + '@opentelemetry/sdk-trace-node@1.29.0': + resolution: {integrity: sha512-ZpGYt+VnMu6O0SRKzhuIivr7qJm3GpWnTCMuJspu4kt3QWIpIenwixo5Vvjuu3R4h2Onl/8dtqAiPIs92xd5ww==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/semantic-conventions@1.27.0': - resolution: {integrity: sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==} - engines: {node: '>=14'} - '@opentelemetry/semantic-conventions@1.28.0': resolution: {integrity: sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==} engines: {node: '>=14'} @@ -7739,33 +7725,29 @@ snapshots: optionalDependencies: typescript: 5.7.2 - '@opentelemetry/api-logs@0.55.0': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs@0.56.0': dependencies: '@opentelemetry/api': 1.9.0 '@opentelemetry/api@1.9.0': {} - '@opentelemetry/context-async-hooks@1.28.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/context-async-hooks@1.29.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core@1.28.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/core@1.29.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/semantic-conventions': 1.27.0 + '@opentelemetry/semantic-conventions': 1.28.0 - '@opentelemetry/exporter-trace-otlp-http@0.55.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/exporter-trace-otlp-http@0.56.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.28.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-exporter-base': 0.55.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.55.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 1.28.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 1.28.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 1.29.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-exporter-base': 0.56.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.56.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.29.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.29.0(@opentelemetry/api@1.9.0) '@opentelemetry/instrumentation-bunyan@0.44.0(@opentelemetry/api@1.9.0)': dependencies: @@ -7776,29 +7758,17 @@ snapshots: transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation-http@0.55.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/instrumentation-http@0.56.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.28.0(@opentelemetry/api@1.9.0) - '@opentelemetry/instrumentation': 0.55.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.27.0 + '@opentelemetry/core': 1.29.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.56.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.28.0 forwarded-parse: 2.1.2 semver: 7.6.3 transitivePeerDependencies: - supports-color - '@opentelemetry/instrumentation@0.55.0(@opentelemetry/api@1.9.0)': - dependencies: - '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.55.0 - '@types/shimmer': 1.2.0 - import-in-the-middle: 1.11.3 - require-in-the-middle: 7.4.0 - semver: 7.6.3 - shimmer: 1.2.1 - transitivePeerDependencies: - - supports-color - '@opentelemetry/instrumentation@0.56.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 @@ -7811,71 +7781,69 @@ snapshots: transitivePeerDependencies: - supports-color - '@opentelemetry/otlp-exporter-base@0.55.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/otlp-exporter-base@0.56.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.28.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer': 0.55.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 1.29.0(@opentelemetry/api@1.9.0) + '@opentelemetry/otlp-transformer': 0.56.0(@opentelemetry/api@1.9.0) - '@opentelemetry/otlp-transformer@0.55.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/otlp-transformer@0.56.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.55.0 - '@opentelemetry/core': 1.28.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 1.28.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-logs': 0.55.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-metrics': 1.28.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 1.28.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api-logs': 0.56.0 + '@opentelemetry/core': 1.29.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.29.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-logs': 0.56.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 1.29.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.29.0(@opentelemetry/api@1.9.0) protobufjs: 7.4.0 - '@opentelemetry/propagator-b3@1.28.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/propagator-b3@1.29.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.28.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 1.29.0(@opentelemetry/api@1.9.0) - '@opentelemetry/propagator-jaeger@1.28.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/propagator-jaeger@1.29.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.28.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 1.29.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources@1.28.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/resources@1.29.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.28.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.27.0 + '@opentelemetry/core': 1.29.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.28.0 - '@opentelemetry/sdk-logs@0.55.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/sdk-logs@0.56.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/api-logs': 0.55.0 - '@opentelemetry/core': 1.28.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 1.28.0(@opentelemetry/api@1.9.0) + '@opentelemetry/api-logs': 0.56.0 + '@opentelemetry/core': 1.29.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.29.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-metrics@1.28.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/sdk-metrics@1.29.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.28.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 1.28.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 1.29.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.29.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base@1.28.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/sdk-trace-base@1.29.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/core': 1.28.0(@opentelemetry/api@1.9.0) - '@opentelemetry/resources': 1.28.0(@opentelemetry/api@1.9.0) - '@opentelemetry/semantic-conventions': 1.27.0 + '@opentelemetry/core': 1.29.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.29.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.28.0 - '@opentelemetry/sdk-trace-node@1.28.0(@opentelemetry/api@1.9.0)': + '@opentelemetry/sdk-trace-node@1.29.0(@opentelemetry/api@1.9.0)': dependencies: '@opentelemetry/api': 1.9.0 - '@opentelemetry/context-async-hooks': 1.28.0(@opentelemetry/api@1.9.0) - '@opentelemetry/core': 1.28.0(@opentelemetry/api@1.9.0) - '@opentelemetry/propagator-b3': 1.28.0(@opentelemetry/api@1.9.0) - '@opentelemetry/propagator-jaeger': 1.28.0(@opentelemetry/api@1.9.0) - '@opentelemetry/sdk-trace-base': 1.28.0(@opentelemetry/api@1.9.0) + '@opentelemetry/context-async-hooks': 1.29.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 1.29.0(@opentelemetry/api@1.9.0) + '@opentelemetry/propagator-b3': 1.29.0(@opentelemetry/api@1.9.0) + '@opentelemetry/propagator-jaeger': 1.29.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.29.0(@opentelemetry/api@1.9.0) semver: 7.6.3 - '@opentelemetry/semantic-conventions@1.27.0': {} - '@opentelemetry/semantic-conventions@1.28.0': {} '@pkgjs/parseargs@0.11.0': From ea902acdd99667552c826fd0c4aeff7cb7ecfb9f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 20 Dec 2024 23:52:29 +0000 Subject: [PATCH 19/21] feat(deps): update ghcr.io/renovatebot/base-image docker tag to v9.26.0 (#33228) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- tools/docker/Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/docker/Dockerfile b/tools/docker/Dockerfile index 1240fbc5e0d4ab..65ec800919250e 100644 --- a/tools/docker/Dockerfile +++ b/tools/docker/Dockerfile @@ -5,19 +5,19 @@ ARG BASE_IMAGE_TYPE=slim # -------------------------------------- # slim image # -------------------------------------- -FROM ghcr.io/renovatebot/base-image:9.25.1@sha256:886a31c0e6384d8b9673e41051da4421abdc2aa78b5a5fdd831713f0ca51a44b AS slim-base +FROM ghcr.io/renovatebot/base-image:9.26.0@sha256:02405ce6467fac5c5a48ab36e51a582ec72026a86e9641b185032b396388eec3 AS slim-base # -------------------------------------- # full image # -------------------------------------- -FROM ghcr.io/renovatebot/base-image:9.25.1-full@sha256:ce2f4079137e50eb551d4b9cf8b8107c5459ecde3ed8e448e1f42c4810113758 AS full-base +FROM ghcr.io/renovatebot/base-image:9.26.0-full@sha256:6b828c94fe7b4d3f4b2154df888c83926c46715846871d3a1794a66bb86da86a AS full-base ENV RENOVATE_BINARY_SOURCE=global # -------------------------------------- # build image # -------------------------------------- -FROM --platform=$BUILDPLATFORM ghcr.io/renovatebot/base-image:9.25.1@sha256:886a31c0e6384d8b9673e41051da4421abdc2aa78b5a5fdd831713f0ca51a44b AS build +FROM --platform=$BUILDPLATFORM ghcr.io/renovatebot/base-image:9.26.0@sha256:02405ce6467fac5c5a48ab36e51a582ec72026a86e9641b185032b396388eec3 AS build # We want a specific node version here # renovate: datasource=node-version From 88e3d6bc610dfa780a9adcc9d5d869721f10b612 Mon Sep 17 00:00:00 2001 From: RahulGautamSingh Date: Sun, 22 Dec 2024 18:48:01 +0530 Subject: [PATCH 20/21] Update lib/workers/repository/update/pr/body/config-description.ts Co-authored-by: Michael Kriese --- lib/workers/repository/update/pr/body/config-description.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/workers/repository/update/pr/body/config-description.ts b/lib/workers/repository/update/pr/body/config-description.ts index cc5122ae8230cd..6ae75726daeb49 100644 --- a/lib/workers/repository/update/pr/body/config-description.ts +++ b/lib/workers/repository/update/pr/body/config-description.ts @@ -84,7 +84,7 @@ function getReadableCronSchedule(scheduleText: string[]): string | null { throwExceptionOnParseError: false, }) .replace('Every minute, ', ''), - ) + ` ( ${String(cron)} )`, + ) + ` (${cron})`, ) .join(', '); } catch { From ef0052a1579c9373c004fc6dda9bf7318be89fca Mon Sep 17 00:00:00 2001 From: RahulGautamSingh Date: Sun, 22 Dec 2024 19:16:09 +0530 Subject: [PATCH 21/21] Update lib/workers/repository/update/pr/body/config-description.ts --- lib/workers/repository/update/pr/body/config-description.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/workers/repository/update/pr/body/config-description.ts b/lib/workers/repository/update/pr/body/config-description.ts index 6ae75726daeb49..8cea8e4d68df10 100644 --- a/lib/workers/repository/update/pr/body/config-description.ts +++ b/lib/workers/repository/update/pr/body/config-description.ts @@ -84,7 +84,7 @@ function getReadableCronSchedule(scheduleText: string[]): string | null { throwExceptionOnParseError: false, }) .replace('Every minute, ', ''), - ) + ` (${cron})`, + ) + ` ( ${cron} )`, ) .join(', '); } catch {