diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index dcf83c5037b3a0..b207507887d8c5 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1 +1,5 @@ -FROM ghcr.io/containerbase/devcontainer:13.7.2 +FROM ghcr.io/containerbase/devcontainer:13.7.7 + +# https://github.com/pnpm/pnpm/issues/8971 +# renovate: datasource=npm +RUN install-tool pnpm 9.15.4 diff --git a/.devcontainer/post-create.sh b/.devcontainer/post-create.sh index eae5da872d27d6..f368a583156f47 100755 --- a/.devcontainer/post-create.sh +++ b/.devcontainer/post-create.sh @@ -7,4 +7,4 @@ if [[ "${CODESPACES}" == true ]]; then sudo chmod 1777 /tmp fi -COREPACK_ENABLE_DOWNLOAD_PROMPT=0 pnpm install +pnpm install --reporter append-only --aggregate-output diff --git a/.github/label-actions.yml b/.github/label-actions.yml index d19aae3bbf4636..21115a3b3f0635 100644 --- a/.github/label-actions.yml +++ b/.github/label-actions.yml @@ -100,16 +100,6 @@ - ### Insufficient logs - -
Select me to read instructions - - - If you already gave us a log, and the Renovate team said it's not enough, then follow the instructions from the **No logs at all** section. - -
- - ### Formatting your logs
Select me to read instructions @@ -137,12 +127,31 @@ The Renovate team +'auto:logs-insufficient': + comment: > + Hi there, + + + The logs you provided are insufficient to help you. + + + Please provide more logs, or more detailed logs, so we can help you. Be sure to include _DEBUG_ logs, and don't excessively redact or truncate them. + + + If you feel the logs are too large to paste here, please use a service like [GitHub Gist](https://gist.github.com/) and paste the link here. + + + Read the [Renovate docs, Troubleshooting](https://docs.renovatebot.com/troubleshooting/) to learn more about getting the correct logs. + + + Thanks, the Renovate team + 'auto:logs-packages': comment: > Hi there, - A maintainer wants you to find and share a specific log message (`packageFiles with updates`) from your repository or environment. + Please locate the debug message `packageFiles with updates` in your logs and paste the contents here. Depending on your question, we may need the full list of packages or only one. If you self-host Renovate: make sure you run Renovate with `LOG_LEVEL=debug` to get the debug log messages! Next, open the debug-level logs and search for `packageFiles with updates`. This text marks the start of a structured log message that shows every package file, dependency, and update that Renovate found. @@ -531,3 +540,25 @@ Thanks, the Renovate team + +'auto:inactive-pr': + comment: > + Hi there, + + + This PR appears to have been inactive for a while. Please let us know if you are still working on it, or if we can close it for now. + + + Thanks, the Renovate team + +'auto:close-inactive-pr': + comment: > + Hi there, + + + We're closing this PR due to inactivity, but we are happy for you, or others, to finish the PR if time allows. + + + Thanks, the Renovate team + + close: true diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 61bf9af519c178..dc740a461c9b83 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -700,7 +700,7 @@ jobs: node-version: ${{ needs.setup-build.outputs.node-version }} os: ${{ runner.os }} - - uses: sigstore/cosign-installer@dc72c7d5c4d10cd6bcb8cf6e3fd625a9e5e537da # v3.7.0 + - uses: sigstore/cosign-installer@c56c2d3e59e4281cc41dea2217323ba5694b171e # v3.8.0 - name: Docker registry login run: | diff --git a/docs/development/local-development.md b/docs/development/local-development.md index 43e0b0ae7f513d..5bdfdef3dcc18f 100644 --- a/docs/development/local-development.md +++ b/docs/development/local-development.md @@ -12,7 +12,7 @@ You need the following dependencies for local development: - Git `>=2.45.1` - Node.js `^20.15.1` -- pnpm `^9.0.0` (use corepack) +- pnpm `^9.0.0` - C++ compiler We recommend you use the version of Node.js defined in the repository's `.nvmrc` or use [Volta](https://volta.sh/) to manage your tool versions. @@ -26,12 +26,12 @@ You can use the following commands on Ubuntu. curl -sL https://deb.nodesource.com/setup_20.x | sudo -E bash - sudo apt-get update sudo apt-get install -y git build-essential nodejs -corepack enable +npm install -g pnpm@latest-10 ``` #### Nix -To enter a development shell with the necessary packages, run `nix-shell --packages gcc gitFull nodejs` and then `corepack enable`. +To enter a development shell with the necessary packages, run `nix-shell --packages gcc gitFull nodejs` and then `npm install -global pnpm@latest-10`. #### Windows @@ -41,7 +41,7 @@ If you already installed a part, skip the corresponding step. - Install [Git](https://git-scm.com/downloads). Make sure you've [configured your username and email](https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup) - Install [Node.js LTS](https://nodejs.org/en/download/) - In an Administrator PowerShell prompt, run `npm install -global npm` and then `npm --debug install --global windows-build-tools` -- Enable corepack with: `corepack enable` +- Install pnpm with: `npm install -global pnpm@latest-10` You can see what versions you're using like this: diff --git a/docs/usage/configuration-options.md b/docs/usage/configuration-options.md index 2691ea9ed826fe..987fdfa0293f1f 100644 --- a/docs/usage/configuration-options.md +++ b/docs/usage/configuration-options.md @@ -849,7 +849,7 @@ It will be compiled using Handlebars and the regex `groups` result. It specifies the syntax of the package file that's managed by the custom `jsonata` manager. This setting helps the system correctly parse and interpret the configuration file's contents. -Only the `json` and `yaml` format is supported. +Only the `json` and `yaml` formats are supported. `yaml` files are parsed as multi document YAML files. ```json title="Parsing a JSON file with a custom manager" @@ -3849,6 +3849,16 @@ The field supports multiple URLs but it is datasource-dependent on whether only Add to this object if you wish to define rules that apply only to PRs that replace dependencies. +## replacementApproach + +For `npm` manager when `replacementApproach=alias` then instead of replacing `"foo": "1.2.3"` with `"@my/foo": "1.2.4"` we would instead replace it with `"foo": "npm:@my/foo@1.2.4"`. + +```json +{ + "replacementApproach": "alias" +} +``` + ## respectLatest Similar to `ignoreUnstable`, this option controls whether to update to versions that are greater than the version tagged as `latest` in the repository. diff --git a/docs/usage/docker.md b/docs/usage/docker.md index 5a89606e671beb..6a9a9f2b973be7 100644 --- a/docs/usage/docker.md +++ b/docs/usage/docker.md @@ -478,7 +478,7 @@ Make sure to install the Google Cloud SDK into the custom image, as you need the For example: ```Dockerfile -FROM renovate/renovate:39.134.0 +FROM renovate/renovate:39.156.2 # Include the "Docker tip" which you can find here https://cloud.google.com/sdk/docs/install # under "Installation" for "Debian/Ubuntu" RUN ... diff --git a/docs/usage/examples/opentelemetry.md b/docs/usage/examples/opentelemetry.md index 6225f08569db35..8bae3a25715464 100644 --- a/docs/usage/examples/opentelemetry.md +++ b/docs/usage/examples/opentelemetry.md @@ -36,7 +36,7 @@ services: otel-collector: # Using the Contrib version to access the spanmetrics connector. # If you don't need the spanmetrics connector, you can use the standard version - image: otel/opentelemetry-collector-contrib:0.118.0 + image: otel/opentelemetry-collector-contrib:0.119.0 volumes: - ./otel-collector-config.yml:/etc/otelcol-contrib/config.yaml ports: diff --git a/docs/usage/examples/self-hosting.md b/docs/usage/examples/self-hosting.md index a333b13848e609..95360482f062d7 100644 --- a/docs/usage/examples/self-hosting.md +++ b/docs/usage/examples/self-hosting.md @@ -25,8 +25,8 @@ It builds `latest` based on the `main` branch and all SemVer tags are published ```sh title="Example of valid tags" docker run --rm renovate/renovate docker run --rm renovate/renovate:39 -docker run --rm renovate/renovate:39.134 -docker run --rm renovate/renovate:39.134.0 +docker run --rm renovate/renovate:39.156 +docker run --rm renovate/renovate:39.156.2 ``` @@ -62,7 +62,7 @@ spec: - name: renovate # Update this to the latest available and then enable Renovate on # the manifest - image: renovate/renovate:39.134.0 + image: renovate/renovate:39.156.2 args: - user/repo # Environment Variables @@ -121,7 +121,7 @@ spec: template: spec: containers: - - image: renovate/renovate:39.134.0 + - image: renovate/renovate:39.156.2 name: renovate-bot env: # For illustration purposes, please use secrets. - name: RENOVATE_PLATFORM @@ -367,7 +367,7 @@ spec: containers: - name: renovate # Update this to the latest available and then enable Renovate on the manifest - image: renovate/renovate:39.134.0 + image: renovate/renovate:39.156.2 volumeMounts: - name: ssh-key-volume readOnly: true diff --git a/docs/usage/self-hosted-configuration.md b/docs/usage/self-hosted-configuration.md index 2f0f680b5f6a04..b33a68677c2e40 100644 --- a/docs/usage/self-hosted-configuration.md +++ b/docs/usage/self-hosted-configuration.md @@ -770,7 +770,6 @@ To handle the case where the underlying Git processes appear to hang, configure ## gitUrl Override the default resolution for Git remote, e.g. to switch GitLab from HTTPS to SSH-based. -Currently works for Bitbucket Server and GitLab only. Possible values: diff --git a/docs/usage/self-hosted-experimental.md b/docs/usage/self-hosted-experimental.md index a16acf51baf1d3..d7945675aaac95 100644 --- a/docs/usage/self-hosted-experimental.md +++ b/docs/usage/self-hosted-experimental.md @@ -99,7 +99,7 @@ If set to any value, Renovate will download `nupkg` files for determining packag ## `RENOVATE_X_PLATFORM_VERSION` -Specify this string for Renovate to skip API checks and provide GitLab/Bitbucket server version directly. +Specify this string for Renovate to skip API checks and provide GitLab/Gitea and Forgejo/Bitbucket server version directly. Particularly useful with GitLab's `CI_JOB_TOKEN` to authenticate Renovate or to reduce API calls for Bitbucket. Read [platform details](modules/platform/gitlab/index.md) to learn why we need the server version on GitLab. diff --git a/lib/config/options/index.ts b/lib/config/options/index.ts index c5ad124c28110c..79cc61f495b4c6 100644 --- a/lib/config/options/index.ts +++ b/lib/config/options/index.ts @@ -1465,6 +1465,16 @@ const options: RenovateOptions[] = [ cli: false, env: false, }, + { + name: 'replacementApproach', + description: + 'Select whether to perform a direct replacement or alias replacement.', + type: 'string', + stage: 'branch', + allowedValues: ['replace', 'alias'], + supportedManagers: ['npm'], + default: 'replace', + }, { name: 'matchConfidence', description: @@ -2904,7 +2914,7 @@ const options: RenovateOptions[] = [ description: 'Overrides the default resolution for Git remote, e.g. to switch GitLab from HTTPS to SSH-based.', type: 'string', - supportedPlatforms: ['gitlab', 'bitbucket-server'], + supportedPlatforms: ['gitea', 'gitlab', 'bitbucket-server'], allowedValues: ['default', 'ssh', 'endpoint'], default: 'default', stage: 'repository', diff --git a/lib/config/types.ts b/lib/config/types.ts index d3c38f602112a3..f3d5a481e5fc57 100644 --- a/lib/config/types.ts +++ b/lib/config/types.ts @@ -463,6 +463,16 @@ export interface RenovateOptionBase { * For internal use only: add it to any config option of type integer that supports negative integers */ allowNegative?: boolean; + + /** + * Managers which support this option, leave undefined if all managers support it. + */ + supportedManagers?: string[]; + + /** + * Platforms which support this option, leave undefined if all platforms support it. + */ + supportedPlatforms?: PlatformId[]; } export interface RenovateArrayOption< @@ -472,35 +482,25 @@ export interface RenovateArrayOption< mergeable?: boolean; type: 'array'; subType?: 'string' | 'object' | 'number'; - supportedManagers?: string[] | 'all'; - supportedPlatforms?: string[] | 'all'; } export interface RenovateStringArrayOption extends RenovateArrayOption { format?: 'regex'; subType: 'string'; - supportedManagers?: string[] | 'all'; - supportedPlatforms?: string[] | 'all'; } export interface RenovateNumberArrayOption extends RenovateArrayOption { subType: 'number'; - supportedManagers?: string[] | 'all'; - supportedPlatforms?: string[] | 'all'; } export interface RenovateBooleanOption extends RenovateOptionBase { default?: boolean | null; type: 'boolean'; - supportedManagers?: string[] | 'all'; - supportedPlatforms?: string[] | 'all'; } export interface RenovateIntegerOption extends RenovateOptionBase { default?: number | null; type: 'integer'; - supportedManagers?: string[] | 'all'; - supportedPlatforms?: string[] | 'all'; } export interface RenovateStringOption extends RenovateOptionBase { @@ -510,8 +510,6 @@ export interface RenovateStringOption extends RenovateOptionBase { // Not used replaceLineReturns?: boolean; type: 'string'; - supportedManagers?: string[] | 'all'; - supportedPlatforms?: string[] | 'all'; } export interface RenovateObjectOption extends RenovateOptionBase { @@ -519,8 +517,6 @@ export interface RenovateObjectOption extends RenovateOptionBase { additionalProperties?: Record | boolean; mergeable?: boolean; type: 'object'; - supportedManagers?: string[] | 'all'; - supportedPlatforms?: string[] | 'all'; } export type RenovateOptions = diff --git a/lib/data/monorepo.json b/lib/data/monorepo.json index e35e42f1af885d..0ab42cab1780e9 100644 --- a/lib/data/monorepo.json +++ b/lib/data/monorepo.json @@ -463,6 +463,7 @@ "orleans": "https://github.com/dotnet/orleans", "panda-css": "https://github.com/chakra-ui/panda", "parcel": "https://github.com/parcel-bundler/parcel", + "payloadcms": "https://github.com/payloadcms/payload", "percy-cli": "https://github.com/percy/cli", "picassojs": "https://github.com/qlik-oss/picasso.js", "pixijs": [ diff --git a/lib/modules/manager/azure-pipelines/readme.md b/lib/modules/manager/azure-pipelines/readme.md index 952462a64103ee..0f68fa5249f4a4 100644 --- a/lib/modules/manager/azure-pipelines/readme.md +++ b/lib/modules/manager/azure-pipelines/readme.md @@ -44,7 +44,7 @@ resources: - container: linux image: ubuntu:24.04 - container: python - image: python:3.13@sha256:137ae4b9f85671bd912a82a19b6966e2655f73e13579b5d6ad4edbddaaf62a9c + image: python:3.13@sha256:7be9b757ea8fa90b43efd604dd5ef2923364230f00564b2ea7f0982d24b374c9 stages: - stage: StageOne diff --git a/lib/modules/manager/gradle/extract.spec.ts b/lib/modules/manager/gradle/extract.spec.ts index 25c24846e3805c..65995556f365cc 100644 --- a/lib/modules/manager/gradle/extract.spec.ts +++ b/lib/modules/manager/gradle/extract.spec.ts @@ -1,7 +1,8 @@ import { codeBlock } from 'common-tags'; import { Fixtures } from '../../../../test/fixtures'; import { fs, logger, partial } from '../../../../test/util'; -import type { ExtractConfig } from '../types'; +import type { ExtractConfig, PackageDependency } from '../types'; +import { matchesContentDescriptor } from './extract'; import * as parser from './parser'; import { extractAllPackageFiles } from '.'; @@ -494,6 +495,215 @@ describe('modules/manager/gradle/extract', () => { }, ]); }); + + describe('content descriptors', () => { + describe('simple descriptor matches', () => { + it.each` + input | output | descriptor + ${'foo:bar:1.2.3'} | ${true} | ${undefined} + ${'foo:bar:1.2.3'} | ${true} | ${[{ mode: 'include', matcher: 'simple', groupId: 'foo' }]} + ${'foo:bar:1.2.3'} | ${false} | ${[{ mode: 'exclude', matcher: 'simple', groupId: 'foo' }]} + ${'foo:bar:1.2.3'} | ${false} | ${[{ mode: 'include', matcher: 'simple', groupId: 'bar' }]} + ${'foo:bar:1.2.3'} | ${true} | ${[{ mode: 'include', matcher: 'simple', groupId: 'foo', artifactId: 'bar' }]} + ${'foo:bar:1.2.3'} | ${false} | ${[{ mode: 'exclude', matcher: 'simple', groupId: 'foo', artifactId: 'bar' }]} + ${'foo:bar:1.2.3'} | ${false} | ${[{ mode: 'include', matcher: 'simple', groupId: 'foo', artifactId: 'baz' }]} + ${'foo:bar:1.2.3'} | ${true} | ${[{ mode: 'include', matcher: 'simple', groupId: 'foo', artifactId: 'bar', version: '1.2.3' }]} + ${'foo:bar:1.2.3'} | ${false} | ${[{ mode: 'exclude', matcher: 'simple', groupId: 'foo', artifactId: 'bar', version: '1.2.3' }]} + ${'foo:bar:1.2.3'} | ${true} | ${[{ mode: 'include', matcher: 'simple', groupId: 'foo', artifactId: 'bar', version: '1.2.+' }]} + ${'foo:bar:1.2.3'} | ${false} | ${[{ mode: 'include', matcher: 'simple', groupId: 'foo', artifactId: 'baz', version: '4.5.6' }]} + ${'foo:bar:1.2.3'} | ${true} | ${[{ mode: 'include', matcher: 'subgroup', groupId: 'foo' }]} + ${'foo.bar.baz:qux:1.2.3'} | ${true} | ${[{ mode: 'include', matcher: 'subgroup', groupId: 'foo.bar.baz' }]} + ${'foo.bar.baz:qux:1.2.3'} | ${true} | ${[{ mode: 'include', matcher: 'subgroup', groupId: 'foo.bar' }]} + ${'foo.bar.baz:qux:1.2.3'} | ${false} | ${[{ mode: 'include', matcher: 'subgroup', groupId: 'foo.barbaz' }]} + ${'foobarbaz:qux:1.2.3'} | ${true} | ${[{ mode: 'include', matcher: 'regex', groupId: '.*bar.*' }]} + ${'foobarbaz:qux:1.2.3'} | ${true} | ${[{ mode: 'include', matcher: 'regex', groupId: '.*bar.*', artifactId: 'qux' }]} + ${'foobar:foobar:1.2.3'} | ${true} | ${[{ mode: 'include', matcher: 'regex', groupId: '.*bar.*', artifactId: 'foo.*' }]} + ${'foobar:foobar:1.2.3'} | ${false} | ${[{ mode: 'include', matcher: 'regex', groupId: 'foobar', artifactId: '^bar' }]} + ${'foobar:foobar:1.2.3'} | ${true} | ${[{ mode: 'include', matcher: 'regex', groupId: 'foobar', artifactId: '^foo.*', version: '1\\.*' }]} + ${'foobar:foobar:1.2.3'} | ${false} | ${[{ mode: 'include', matcher: 'regex', groupId: 'foobar', artifactId: '^foo', version: '3.+' }]} + ${'foobar:foobar:1.2.3'} | ${false} | ${[{ mode: 'include', matcher: 'regex', groupId: 'foobar', artifactId: 'qux', version: '1\\.*' }]} + `('$input | $output', ({ input, output, descriptor }) => { + const [groupId, artifactId, currentValue] = input.split(':'); + const dep: PackageDependency = { + depName: `${groupId}:${artifactId}`, + currentValue, + }; + + expect(matchesContentDescriptor(dep, descriptor)).toBe(output); + }); + }); + + describe('multiple descriptors', () => { + const dep: PackageDependency = { + depName: `foo:bar`, + currentValue: '1.2.3', + }; + + it('if both includes and excludes exist, dep must match include and not match exclude', () => { + expect( + matchesContentDescriptor(dep, [ + { mode: 'include', matcher: 'simple', groupId: 'foo' }, + { + mode: 'exclude', + matcher: 'simple', + groupId: 'foo', + artifactId: 'baz', + }, + ]), + ).toBe(true); + + expect( + matchesContentDescriptor(dep, [ + { mode: 'include', matcher: 'simple', groupId: 'foo' }, + { + mode: 'exclude', + matcher: 'simple', + groupId: 'foo', + artifactId: 'bar', + }, + ]), + ).toBe(false); + }); + + it('if only includes exist, dep must match at least one include', () => { + expect( + matchesContentDescriptor(dep, [ + { mode: 'include', matcher: 'simple', groupId: 'some' }, + { mode: 'include', matcher: 'simple', groupId: 'foo' }, + { mode: 'include', matcher: 'simple', groupId: 'bar' }, + ]), + ).toBe(true); + + expect( + matchesContentDescriptor(dep, [ + { mode: 'include', matcher: 'simple', groupId: 'some' }, + { mode: 'include', matcher: 'simple', groupId: 'other' }, + { mode: 'include', matcher: 'simple', groupId: 'bar' }, + ]), + ).toBe(false); + }); + + it('if only excludes exist, dep must match not match any exclude', () => { + expect( + matchesContentDescriptor(dep, [ + { mode: 'exclude', matcher: 'simple', groupId: 'some' }, + { mode: 'exclude', matcher: 'simple', groupId: 'foo' }, + { mode: 'exclude', matcher: 'simple', groupId: 'bar' }, + ]), + ).toBe(false); + + expect( + matchesContentDescriptor(dep, [ + { mode: 'exclude', matcher: 'simple', groupId: 'some' }, + { mode: 'exclude', matcher: 'simple', groupId: 'other' }, + { mode: 'exclude', matcher: 'simple', groupId: 'bar' }, + ]), + ).toBe(true); + }); + }); + + it('extracts content descriptors', async () => { + const fsMock = { + 'build.gradle': codeBlock` + pluginManagement { + repositories { + maven { + url = "https://foo.bar/baz" + content { + includeModule("com.diffplug.spotless", "com.diffplug.spotless.gradle.plugin") + } + } + } + } + repositories { + mavenCentral() + google { + content { + includeGroupAndSubgroups("foo.bar") + includeModuleByRegex("com\\\\.(google|android).*", "protobuf.*") + includeGroupByRegex("(?!(unsupported|pattern).*)") + includeGroupByRegex "org\\\\.jetbrains\\\\.kotlin.*" + excludeModule("foo.bar.group", "simple.module") + } + } + maven { + name = "some" + url = "https://foo.bar/\${name}" + content { + includeModule("foo.bar.group", "simple.module") + includeVersion("com.google.protobuf", "protobuf-java", "2.17.+") + } + } + } + + plugins { + id("com.diffplug.spotless") version "6.10.0" + } + + dependencies { + implementation "com.google.protobuf:protobuf-java:2.17.1" + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.21" + implementation "foo.bar:protobuf-java:2.17.0" + implementation "foo.bar.group:simple.module:2.17.0" + } + `, + }; + mockFs(fsMock); + + const res = await extractAllPackageFiles( + partial(), + Object.keys(fsMock), + ); + + expect(res).toMatchObject([ + { + deps: [ + { + depName: 'com.diffplug.spotless', + currentValue: '6.10.0', + depType: 'plugin', + packageName: + 'com.diffplug.spotless:com.diffplug.spotless.gradle.plugin', + registryUrls: ['https://foo.bar/baz'], + }, + { + depName: 'com.google.protobuf:protobuf-java', + currentValue: '2.17.1', + registryUrls: [ + 'https://repo.maven.apache.org/maven2', + 'https://dl.google.com/android/maven2/', + 'https://foo.bar/some', + ], + }, + { + depName: 'org.jetbrains.kotlin:kotlin-stdlib-jdk8', + currentValue: '1.4.21', + registryUrls: [ + 'https://repo.maven.apache.org/maven2', + 'https://dl.google.com/android/maven2/', + ], + }, + { + depName: 'foo.bar:protobuf-java', + currentValue: '2.17.0', + registryUrls: [ + 'https://repo.maven.apache.org/maven2', + 'https://dl.google.com/android/maven2/', + ], + }, + { + depName: 'foo.bar.group:simple.module', + currentValue: '2.17.0', + registryUrls: [ + 'https://repo.maven.apache.org/maven2', + 'https://foo.bar/some', + ], + }, + ], + }, + ]); + }); + }); }); describe('version catalogs', () => { diff --git a/lib/modules/manager/gradle/extract.ts b/lib/modules/manager/gradle/extract.ts index d70a5722dbb6e2..3f94060c427b66 100644 --- a/lib/modules/manager/gradle/extract.ts +++ b/lib/modules/manager/gradle/extract.ts @@ -1,7 +1,10 @@ import upath from 'upath'; import { logger } from '../../../logger'; +import { coerceArray } from '../../../util/array'; import { getLocalFiles } from '../../../util/fs'; +import { regEx } from '../../../util/regex'; import { MavenDatasource } from '../../datasource/maven'; +import gradleVersioning from '../../versioning/gradle'; import type { ExtractConfig, PackageDependency, PackageFile } from '../types'; import { parseCatalog } from './extract/catalog'; import { @@ -12,6 +15,7 @@ import { import { parseGradle, parseKotlinSource, parseProps } from './parser'; import { REGISTRY_URLS } from './parser/common'; import type { + ContentDescriptorSpec, GradleManagerData, PackageRegistry, VariableRegistry, @@ -44,6 +48,89 @@ function updatePackageRegistries( } } +export function matchesContentDescriptor( + dep: PackageDependency, + contentDescriptors?: ContentDescriptorSpec[], +): boolean { + const [groupId, artifactId] = (dep.packageName ?? dep.depName!).split(':'); + let hasIncludes = false; + let hasExcludes = false; + let matchesInclude = false; + let matchesExclude = false; + + for (const content of coerceArray(contentDescriptors)) { + const { + mode, + matcher, + groupId: contentGroupId, + artifactId: contentArtifactId, + version: contentVersion, + } = content; + + // group matching + let groupMatch = false; + if (matcher === 'regex') { + groupMatch = regEx(contentGroupId).test(groupId); + } else if (matcher === 'subgroup') { + groupMatch = + groupId === contentGroupId || `${groupId}.`.startsWith(contentGroupId); + } else { + groupMatch = groupId === contentGroupId; + } + + // artifact matching (optional) + let artifactMatch = true; + if (groupMatch && contentArtifactId) { + if (matcher === 'regex') { + artifactMatch = regEx(contentArtifactId).test(artifactId); + } else { + artifactMatch = artifactId === contentArtifactId; + } + } + + // version matching (optional) + let versionMatch = true; + if (groupMatch && artifactMatch && contentVersion && dep.currentValue) { + if (matcher === 'regex') { + versionMatch = regEx(contentVersion).test(dep.currentValue); + } else { + // contentVersion can be an exact version or a gradle-supported version range + versionMatch = gradleVersioning.matches( + dep.currentValue, + contentVersion, + ); + } + } + + const isMatch = groupMatch && artifactMatch && versionMatch; + if (mode === 'include') { + hasIncludes = true; + if (isMatch) { + matchesInclude = true; + } + } else if (mode === 'exclude') { + hasExcludes = true; + if (isMatch) { + matchesExclude = true; + } + } + } + + if (hasIncludes && hasExcludes) { + // if both includes and excludes exist, dep must match include and not match exclude + return matchesInclude && !matchesExclude; + } else if (hasIncludes) { + // if only includes exist, dep must match at least one include + return matchesInclude; + } else if (hasExcludes) { + // if only excludes exist, dep must not match any exclude + return !matchesExclude; + } + + // by default, repositories include everything and exclude nothing + return true; +} + function getRegistryUrlsForDep( packageRegistries: PackageRegistry[], dep: PackageDependency, @@ -52,6 +139,7 @@ function getRegistryUrlsForDep( const registryUrls = packageRegistries .filter((item) => item.scope === scope) + .filter((item) => matchesContentDescriptor(dep, item.content)) .map((item) => item.registryUrl); if (!registryUrls.length && scope === 'plugin') { diff --git a/lib/modules/manager/gradle/parser.spec.ts b/lib/modules/manager/gradle/parser.spec.ts index faa099f3e4345b..3f0281b1d55d67 100644 --- a/lib/modules/manager/gradle/parser.spec.ts +++ b/lib/modules/manager/gradle/parser.spec.ts @@ -728,6 +728,157 @@ describe('modules/manager/gradle/parser', () => { }, ]); }); + + describe('content descriptors', () => { + it('valid combinations', () => { + const input = codeBlock` + maven(url = "https://foo.bar/baz") { + content { + excludeGroup("baz.qux") + } + } + mavenCentral().content { + includeGroup("foo.bar") + } + maven { + url = "https://foo.bar/deps" + content { + includeGroupAndSubgroups("foo.bar") + } + } + maven { + url = "https://some.foo" + content { + includeModule("foo", "bar") + excludeModule("baz", "qux") + includeVersion("foo", "bar", "1.2.3") + excludeVersion("baz", "qux", "4.5.6") + includeGroupByRegex("org\\\\.jetbrains\\\\.kotlin.*") + excludeGroupByRegex(".*google.*") + includeModuleByRegex(".*foo.*", ".*bar.*") + excludeModuleByRegex(".*baz.*", ".*qux.*") + includeVersionByRegex(".*foo.*", ".*bar.*", "1.2.3") + excludeVersionByRegex(".*baz.*", ".*qux.*", ".*4.5.*") + } + } + `; + + const { urls } = parseGradle(input); + expect(urls).toStrictEqual([ + { + registryUrl: 'https://foo.bar/baz', + scope: 'dep', + content: [ + { mode: 'exclude', matcher: 'simple', groupId: 'baz.qux' }, + ], + }, + { + registryUrl: REGISTRY_URLS.mavenCentral, + scope: 'dep', + content: [ + { mode: 'include', matcher: 'simple', groupId: 'foo.bar' }, + ], + }, + { + registryUrl: 'https://foo.bar/deps', + scope: 'dep', + content: [ + { mode: 'include', matcher: 'subgroup', groupId: 'foo.bar' }, + ], + }, + { + registryUrl: 'https://some.foo', + scope: 'dep', + content: [ + { + mode: 'include', + matcher: 'simple', + groupId: 'foo', + artifactId: 'bar', + }, + { + mode: 'exclude', + matcher: 'simple', + groupId: 'baz', + artifactId: 'qux', + }, + { + mode: 'include', + matcher: 'simple', + groupId: 'foo', + artifactId: 'bar', + version: '1.2.3', + }, + { + mode: 'exclude', + matcher: 'simple', + groupId: 'baz', + artifactId: 'qux', + version: '4.5.6', + }, + { + mode: 'include', + matcher: 'regex', + groupId: '^org\\.jetbrains\\.kotlin.*$', + }, + { mode: 'exclude', matcher: 'regex', groupId: '^.*google.*$' }, + { + mode: 'include', + matcher: 'regex', + groupId: '^.*foo.*$', + artifactId: '^.*bar.*$', + }, + { + mode: 'exclude', + matcher: 'regex', + groupId: '^.*baz.*$', + artifactId: '^.*qux.*$', + }, + { + mode: 'include', + matcher: 'regex', + groupId: '^.*foo.*$', + artifactId: '^.*bar.*$', + version: '^1.2.3$', + }, + { + mode: 'exclude', + matcher: 'regex', + groupId: '^.*baz.*$', + artifactId: '^.*qux.*$', + version: '^.*4.5.*$', + }, + ], + }, + ]); + }); + + describe('invalid or unsupported regEx patterns', () => { + it.each` + fieldName | pattern + ${'group'} | ${'includeGroupByRegex(".*so\\me.invalid.pattern.*")'} + ${'group'} | ${'includeModuleByRegex(".*so\\me.invalid.pattern.*", ".*bar.*")'} + ${'module'} | ${'includeModuleByRegex(".*foo.*", ".*so\\me.invalid.pattern.*")'} + ${'module'} | ${'excludeModuleByRegex(".*baz.*", "(?!(foo|bar).*)")'} + ${'version'} | ${'includeVersionByRegex(".*foo.*", ".*bar.*", "(?!(foo|bar).*)")'} + ${'version'} | ${'excludeVersionByRegex(".*baz.*", ".*qux.*", "(?!(foo|bar).*)")'} + `('$pattern', ({ fieldName, pattern }) => { + const input = codeBlock` + mavenCentral { + content { + ${pattern} + } + } + `; + parseGradle(input); + expect(logger.logger.debug).toHaveBeenCalledWith( + expect.stringContaining( + `Skipping content descriptor with unsupported regExp pattern for ${fieldName}`, + ), + ); + }); + }); + }); }); describe('version catalog', () => { diff --git a/lib/modules/manager/gradle/parser.ts b/lib/modules/manager/gradle/parser.ts index b0459572b2d084..92d55a1b09ee0d 100644 --- a/lib/modules/manager/gradle/parser.ts +++ b/lib/modules/manager/gradle/parser.ts @@ -33,6 +33,7 @@ const ctx: Ctx = { varTokens: [], tmpKotlinImportStore: [], tmpNestingDepth: [], + tmpRegistryContent: [], tmpTokenStore: {}, tokenMap: {}, }; diff --git a/lib/modules/manager/gradle/parser/common.spec.ts b/lib/modules/manager/gradle/parser/common.spec.ts index e9625d2c2dbbd1..7b2bf2afdcd521 100644 --- a/lib/modules/manager/gradle/parser/common.spec.ts +++ b/lib/modules/manager/gradle/parser/common.spec.ts @@ -32,6 +32,7 @@ describe('modules/manager/gradle/parser/common', () => { varTokens: [], tmpKotlinImportStore: [], tmpNestingDepth: [], + tmpRegistryContent: [], tmpTokenStore: {}, tokenMap: {}, }; diff --git a/lib/modules/manager/gradle/parser/handlers.ts b/lib/modules/manager/gradle/parser/handlers.ts index 5d983abbd07f31..ca32f64a6e4987 100644 --- a/lib/modules/manager/gradle/parser/handlers.ts +++ b/lib/modules/manager/gradle/parser/handlers.ts @@ -5,7 +5,12 @@ import { getSiblingFileName } from '../../../../util/fs'; import { regEx } from '../../../../util/regex'; import type { PackageDependency } from '../../types'; import type { parseGradle as parseGradleCallback } from '../parser'; -import type { Ctx, GradleManagerData } from '../types'; +import type { + ContentDescriptorMatcher, + ContentDescriptorSpec, + Ctx, + GradleManagerData, +} from '../types'; import { isDependencyString, parseDependencyString } from '../utils'; import { GRADLE_PLUGINS, @@ -264,6 +269,65 @@ export function handlePlugin(ctx: Ctx): Ctx { return ctx; } +function isValidContentDescriptorRegex( + fieldName: string, + pattern: string, +): boolean { + try { + regEx(pattern); + } catch { + logger.debug( + `Skipping content descriptor with unsupported regExp pattern for ${fieldName}: ${pattern}`, + ); + return false; + } + + return true; +} + +export function handleRegistryContent(ctx: Ctx): Ctx { + const methodName = loadFromTokenMap(ctx, 'methodName')[0].value; + let groupId = loadFromTokenMap(ctx, 'groupId')[0].value; + + let matcher: ContentDescriptorMatcher = 'simple'; + if (methodName.includes('Regex')) { + matcher = 'regex'; + groupId = `^${groupId}$`.replaceAll('\\\\', '\\'); + if (!isValidContentDescriptorRegex('group', groupId)) { + return ctx; + } + } else if (methodName.includes('AndSubgroups')) { + matcher = 'subgroup'; + } + + const mode = methodName.startsWith('include') ? 'include' : 'exclude'; + const spec: ContentDescriptorSpec = { mode, matcher, groupId }; + + if (methodName.includes('Module') || methodName.includes('Version')) { + spec.artifactId = loadFromTokenMap(ctx, 'artifactId')[0].value; + if (matcher === 'regex') { + spec.artifactId = `^${spec.artifactId}$`.replaceAll('\\\\', '\\'); + if (!isValidContentDescriptorRegex('module', spec.artifactId)) { + return ctx; + } + } + } + + if (methodName.includes('Version')) { + spec.version = loadFromTokenMap(ctx, 'version')[0].value; + if (matcher === 'regex') { + spec.version = `^${spec.version}$`.replaceAll('\\\\', '\\'); + if (!isValidContentDescriptorRegex('version', spec.version)) { + return ctx; + } + } + } + + ctx.tmpRegistryContent.push(spec); + + return ctx; +} + function isPluginRegistry(ctx: Ctx): boolean { if (ctx.tokenMap.registryScope) { const registryScope = loadFromTokenMap(ctx, 'registryScope')[0].value; @@ -279,6 +343,7 @@ export function handlePredefinedRegistryUrl(ctx: Ctx): Ctx { ctx.registryUrls.push({ registryUrl: REGISTRY_URLS[registryName as keyof typeof REGISTRY_URLS], scope: isPluginRegistry(ctx) ? 'plugin' : 'dep', + content: ctx.tmpRegistryContent, }); return ctx; @@ -314,6 +379,7 @@ export function handleCustomRegistryUrl(ctx: Ctx): Ctx { ctx.registryUrls.push({ registryUrl, scope: isPluginRegistry(ctx) ? 'plugin' : 'dep', + content: ctx.tmpRegistryContent, }); } } catch { diff --git a/lib/modules/manager/gradle/parser/registry-urls.ts b/lib/modules/manager/gradle/parser/registry-urls.ts index e684135f808852..1d602b5c8f61cc 100644 --- a/lib/modules/manager/gradle/parser/registry-urls.ts +++ b/lib/modules/manager/gradle/parser/registry-urls.ts @@ -1,3 +1,4 @@ +import type { parser } from 'good-enough-parser'; import { query as q } from 'good-enough-parser'; import { regEx } from '../../../../util/regex'; import type { Ctx } from '../types'; @@ -6,16 +7,80 @@ import { qAssignments } from './assignments'; import { REGISTRY_URLS, cleanupTempVars, + qArtifactId, + qGroupId, qValueMatcher, + qVersion, storeInTokenMap, storeVarToken, } from './common'; import { handleCustomRegistryUrl, handlePredefinedRegistryUrl, + handleRegistryContent, } from './handlers'; import { qPlugins } from './plugins'; +const cleanupTmpContentSpec = (ctx: Ctx): Ctx => { + ctx.tmpRegistryContent = []; + return ctx; +}; + +const qContentDescriptorSpec = ( + methodName: RegExp, + matcher: q.QueryBuilder, +): q.QueryBuilder => { + return q + .sym(methodName, storeVarToken) + .handler((ctx) => storeInTokenMap(ctx, 'methodName')) + .alt( + // includeGroup "foo.bar" + matcher, + // includeGroup("foo.bar") + q.tree({ + type: 'wrapped-tree', + maxDepth: 1, + startsWith: '(', + endsWith: ')', + search: q.begin().join(matcher).end(), + }), + ); +}; + +// includeModule('foo') +// excludeModuleByRegex('bar') +const qContentDescriptor = ( + mode: 'include' | 'exclude', +): q.QueryBuilder => { + return q + .alt( + qContentDescriptorSpec( + regEx( + `^(?:${mode}Group|${mode}GroupByRegex|${mode}GroupAndSubgroups)$`, + ), + qGroupId, + ), + qContentDescriptorSpec( + regEx(`^(?:${mode}Module|${mode}ModuleByRegex)$`), + q.join(qGroupId, q.op(','), qArtifactId), + ), + qContentDescriptorSpec( + regEx(`^(?:${mode}Version|${mode}VersionByRegex)$`), + q.join(qGroupId, q.op(','), qArtifactId, q.op(','), qVersion), + ), + ) + .handler(handleRegistryContent); +}; + +// content { includeModule('foo'); excludeModule('bar') } +const qRegistryContent = q.sym('content').tree({ + type: 'wrapped-tree', + maxDepth: 1, + startsWith: '{', + endsWith: '}', + search: q.alt(qContentDescriptor('include'), qContentDescriptor('exclude')), +}); + // uri("https://foo.bar/baz") // "https://foo.bar/baz" const qUri = q @@ -34,22 +99,26 @@ const qPredefinedRegistries = q .sym(regEx(`^(?:${Object.keys(REGISTRY_URLS).join('|')})$`), storeVarToken) .handler((ctx) => storeInTokenMap(ctx, 'registryUrl')) .alt( - q.tree({ - type: 'wrapped-tree', - startsWith: '(', - endsWith: ')', - search: q.begin().end(), - }), + q + .tree({ + type: 'wrapped-tree', + startsWith: '(', + endsWith: ')', + search: q.begin().end(), + }) + .opt(q.op('.').join(qRegistryContent)), q.tree({ type: 'wrapped-tree', startsWith: '{', endsWith: '}', + search: q.opt(qRegistryContent), }), ) .handler(handlePredefinedRegistryUrl) + .handler(cleanupTmpContentSpec) .handler(cleanupTempVars); -// { url = "https://some.repo" } +// { url = "https://some.repo"; content { ... } } const qMavenArtifactRegistry = q.tree({ type: 'wrapped-tree', maxDepth: 1, @@ -68,24 +137,29 @@ const qMavenArtifactRegistry = q.tree({ endsWith: ')', search: q.begin().join(qUri).end(), }), + qRegistryContent, ), }); // maven(url = uri("https://foo.bar/baz")) +// maven("https://foo.bar/baz") { content { ... } } // maven { name = some; url = "https://foo.bar/${name}" } const qCustomRegistryUrl = q .sym('maven') .alt( - q.tree({ - type: 'wrapped-tree', - maxDepth: 1, - startsWith: '(', - endsWith: ')', - search: q.begin().opt(q.sym('url').op('=')).join(qUri).end(), - }), + q + .tree({ + type: 'wrapped-tree', + maxDepth: 1, + startsWith: '(', + endsWith: ')', + search: q.begin().opt(q.sym('url').op('=')).join(qUri).end(), + }) + .opt(qMavenArtifactRegistry), qMavenArtifactRegistry, ) .handler(handleCustomRegistryUrl) + .handler(cleanupTmpContentSpec) .handler(cleanupTempVars); const qPluginManagement = q.sym('pluginManagement', storeVarToken).tree({ diff --git a/lib/modules/manager/gradle/types.ts b/lib/modules/manager/gradle/types.ts index 0a6fbe93a1c006..dd7899e652807b 100644 --- a/lib/modules/manager/gradle/types.ts +++ b/lib/modules/manager/gradle/types.ts @@ -68,9 +68,20 @@ export interface RichVersion { export type GradleVersionPointerTarget = string | RichVersion; export type GradleVersionCatalogVersion = string | VersionPointer | RichVersion; +export type ContentDescriptorMatcher = 'simple' | 'regex' | 'subgroup'; + +export interface ContentDescriptorSpec { + mode: 'include' | 'exclude'; + matcher: ContentDescriptorMatcher; + groupId: string; + artifactId?: string; + version?: string; +} + export interface PackageRegistry { registryUrl: string; scope: 'dep' | 'plugin'; + content?: ContentDescriptorSpec[]; } export interface Ctx { @@ -86,6 +97,7 @@ export interface Ctx { varTokens: lexer.Token[]; tmpKotlinImportStore: lexer.Token[][]; tmpNestingDepth: lexer.Token[]; + tmpRegistryContent: ContentDescriptorSpec[]; tmpTokenStore: Record; tokenMap: Record; } diff --git a/lib/modules/manager/mise/upgradeable-tooling.ts b/lib/modules/manager/mise/upgradeable-tooling.ts index ad57d4914fe0d1..3e41baa44ac865 100644 --- a/lib/modules/manager/mise/upgradeable-tooling.ts +++ b/lib/modules/manager/mise/upgradeable-tooling.ts @@ -1,5 +1,6 @@ import { GithubReleasesDatasource } from '../../datasource/github-releases'; import { GithubTagsDatasource } from '../../datasource/github-tags'; +import { HexpmBobDatasource } from '../../datasource/hexpm-bob'; import { JavaVersionDatasource } from '../../datasource/java-version'; import { NodeVersionDatasource } from '../../datasource/node-version'; import { RubyVersionDatasource } from '../../datasource/ruby-version'; @@ -32,6 +33,12 @@ export const miseTooling: Record = { extractVersion: '^v(?\\S+)', }, }, + elixir: { + misePluginUrl: 'https://mise.jdx.dev/lang/elixir.html', + config: { + datasource: HexpmBobDatasource.id, + }, + }, erlang: { misePluginUrl: 'https://mise.jdx.dev/lang/erlang.html', config: { diff --git a/lib/modules/manager/npm/update/dependency/index.spec.ts b/lib/modules/manager/npm/update/dependency/index.spec.ts index e02760aadc42e4..18d871756e6d89 100644 --- a/lib/modules/manager/npm/update/dependency/index.spec.ts +++ b/lib/modules/manager/npm/update/dependency/index.spec.ts @@ -1,5 +1,6 @@ import * as npmUpdater from '../..'; import { Fixtures } from '../../../../../../test/fixtures'; +import { type Upgrade } from '../../../types'; const readFixture = (x: string): string => Fixtures.get(x, '../..'); @@ -254,6 +255,23 @@ describe('modules/manager/npm/update/dependency/index', () => { expect(JSON.parse(testContent!).dependencies.abc).toBe('2.0.0'); }); + it('supports alias-based replacement', () => { + const upgrade: Upgrade = { + depType: 'dependencies', + depName: 'config', + newName: 'abc', + replacementApproach: 'alias', + newValue: '2.0.0', + }; + const testContent = npmUpdater.updateDependency({ + fileContent: input01Content, + upgrade, + }); + expect(JSON.parse(testContent!).dependencies.config).toBe( + 'npm:abc@2.0.0', + ); + }); + it('replaces glob package resolutions', () => { const upgrade = { depType: 'dependencies', diff --git a/lib/modules/manager/npm/update/dependency/index.ts b/lib/modules/manager/npm/update/dependency/index.ts index 0d4bb218f0205e..c86ed856b20761 100644 --- a/lib/modules/manager/npm/update/dependency/index.ts +++ b/lib/modules/manager/npm/update/dependency/index.ts @@ -161,25 +161,38 @@ export function updateDependency({ } // TODO #22198 - let newFileContent = replaceAsString( - parsedContents, - fileContent, - depType as NpmDepType, - depName, - oldVersion!, - newValue!, - overrideDepParents, - ); - if (upgrade.newName) { + let newFileContent: string; + if (upgrade.newName && upgrade.replacementApproach === 'alias') { newFileContent = replaceAsString( parsedContents, - newFileContent, + fileContent, depType as NpmDepType, depName, + oldVersion!, + `npm:${upgrade.newName}@${newValue}`, + overrideDepParents, + ); + } else { + newFileContent = replaceAsString( + parsedContents, + fileContent, + depType as NpmDepType, depName, - upgrade.newName, + oldVersion!, + newValue!, overrideDepParents, ); + if (upgrade.newName) { + newFileContent = replaceAsString( + parsedContents, + newFileContent, + depType as NpmDepType, + depName, + depName, + upgrade.newName, + overrideDepParents, + ); + } } // istanbul ignore if if (!newFileContent) { diff --git a/lib/modules/manager/pip-compile/artifacts.spec.ts b/lib/modules/manager/pip-compile/artifacts.spec.ts index 6818e35d0550d6..d162929e55cd1e 100644 --- a/lib/modules/manager/pip-compile/artifacts.spec.ts +++ b/lib/modules/manager/pip-compile/artifacts.spec.ts @@ -28,6 +28,18 @@ jest.mock('../../../util/host-rules', () => mockDeep()); jest.mock('../../../util/http'); jest.mock('../../datasource', () => mockDeep()); +const requirementsWithUv = `# This file was autogenerated by uv via the following command: +# uv pip compile --generate-hashes --output-file=requirements.txt --universal requirements.in +attrs==21.2.0 \ + --hash=sha256:149e90d6d8ac20db7a955ad60cf0e6881a3f20d37096140088356da6c716b0b1 \ + --hash=sha256:ef6aaac3ca6cd92904cdd0d83f629a15f18053ec84e6432106f7a4d04ae4f5fb + # via -r requirements.in +setuptools==59.2.0 \ + --hash=sha256:157d21de9d055ab9e8ea3186d91e7f4f865e11f42deafa952d90842671fc2576 \ + --hash=sha256:4adde3d1e1c89bde1c643c64d89cdd94cbfd8c75252ee459d4500bccb9c7d05d + # via -r requirements.in +`; + function getCommandInHeader(command: string) { return `# # This file is autogenerated by pip-compile with Python 3.11 @@ -488,6 +500,16 @@ describe('modules/manager/pip-compile/artifacts', () => { ); }); + it('returns extracted arguments for uv ', () => { + expect( + constructPipCompileCmd( + extractHeaderCommand(requirementsWithUv, 'subdir/requirements.txt'), + ), + ).toBe( + 'uv pip compile --generate-hashes --output-file=requirements.txt --universal requirements.in', + ); + }); + it('returns --no-emit-index-url when credentials are found in PIP_INDEX_URL', () => { process.env.PIP_INDEX_URL = 'https://user:pass@example.com/pypi/simple'; expect( diff --git a/lib/modules/manager/pip-compile/artifacts.ts b/lib/modules/manager/pip-compile/artifacts.ts index 5d8bafb46d4220..3608808a6a869b 100644 --- a/lib/modules/manager/pip-compile/artifacts.ts +++ b/lib/modules/manager/pip-compile/artifacts.ts @@ -57,7 +57,7 @@ export function constructPipCompileCmd( compileArgs: PipCompileArgs, upgradePackages: Upgrade[] = [], ): string { - if (compileArgs.isCustomCommand) { + if (compileArgs.commandType === 'custom') { throw new Error( 'Detected custom command, header modified or set by CUSTOM_COMPILE_COMMAND', ); @@ -68,6 +68,7 @@ export function constructPipCompileCmd( } // safeguard against index url leak if not explicitly set by an option if ( + compileArgs.commandType === 'pip-compile' && !compileArgs.noEmitIndexUrl && !compileArgs.emitIndexUrl && haveCredentialsInPipEnvironmentVariables() @@ -115,6 +116,7 @@ export async function updateArtifacts({ } const compileArgs = extractHeaderCommand(existingOutput, outputFileName); const pythonVersion = extractPythonVersion( + compileArgs.commandType, existingOutput, outputFileName, ); diff --git a/lib/modules/manager/pip-compile/common.spec.ts b/lib/modules/manager/pip-compile/common.spec.ts index a465e9a9bccf5f..5c91ad9729abf0 100644 --- a/lib/modules/manager/pip-compile/common.spec.ts +++ b/lib/modules/manager/pip-compile/common.spec.ts @@ -2,7 +2,7 @@ import { mockDeep } from 'jest-mock-extended'; import { hostRules } from '../../../../test/util'; import { logger } from '../../../logger'; import { - allowedPipOptions, + allowedOptions, extractHeaderCommand, extractPythonVersion, getRegistryCredVarsFromPackageFiles, @@ -137,8 +137,8 @@ describe('modules/manager/pip-compile/common', () => { ).toEqual(exampleSourceFiles); }); - it.each(allowedPipOptions)( - 'returned sourceFiles must not contain options', + it.each(allowedOptions['pip-compile'])( + 'returned sourceFiles must not contain options (pip-compile)', (argument: string) => { const sourceFiles = extractHeaderCommand( getCommandInHeader(`pip-compile ${argument}=reqs.txt reqs.in`), @@ -149,13 +149,25 @@ describe('modules/manager/pip-compile/common', () => { }, ); + it.each(allowedOptions['uv'])( + 'returned sourceFiles must not contain options (uv)', + (argument: string) => { + const sourceFiles = extractHeaderCommand( + getCommandInHeader(`uv pip compile ${argument}=reqs.txt reqs.in`), + 'reqs.txt', + ).sourceFiles; + expect(sourceFiles).not.toContainEqual(argument); + expect(sourceFiles).toEqual(['reqs.in']); + }, + ); + it('detects custom command', () => { expect( extractHeaderCommand( getCommandInHeader(`./pip-compile-wrapper reqs.in`), 'reqs.txt', ), - ).toHaveProperty('isCustomCommand', true); + ).toHaveProperty('commandType', 'custom'); }); it.each([ @@ -176,6 +188,7 @@ describe('modules/manager/pip-compile/common', () => { it('extracts Python version from valid header', () => { expect( extractPythonVersion( + 'pip-compile', getCommandInHeader('pip-compile reqs.in'), 'reqs.txt', ), @@ -183,7 +196,13 @@ describe('modules/manager/pip-compile/common', () => { }); it('returns undefined if version cannot be extracted', () => { - expect(extractPythonVersion('', 'reqs.txt')).toBeUndefined(); + expect( + extractPythonVersion('pip-compile', '', 'reqs.txt'), + ).toBeUndefined(); + }); + + it('returns undefined if the command type is uv', () => { + expect(extractPythonVersion('uv', '', 'reqs.txt')).toBeUndefined(); }); }); diff --git a/lib/modules/manager/pip-compile/common.ts b/lib/modules/manager/pip-compile/common.ts index 5a2126198900be..a055edc0329b22 100644 --- a/lib/modules/manager/pip-compile/common.ts +++ b/lib/modules/manager/pip-compile/common.ts @@ -9,7 +9,7 @@ import { ensureLocalPath } from '../../../util/fs/util'; import * as hostRules from '../../../util/host-rules'; import { regEx } from '../../../util/regex'; import type { PackageFileContent, UpdateArtifactsConfig } from '../types'; -import type { PipCompileArgs, SupportedManagers } from './types'; +import type { CommandType, PipCompileArgs, SupportedManagers } from './types'; export function getPythonVersionConstraint( config: UpdateArtifactsConfig, @@ -83,24 +83,45 @@ export const constraintLineRegex = regEx( export const disallowedPipOptions = [ '--no-header', // header is required by this manager ]; -export const optionsWithArguments = [ +const commonOptionsWithArguments = [ '--output-file', '--extra', '--extra-index-url', +]; +const pipOptionsWithArguments = [ '--resolver', '--constraint', + ...commonOptionsWithArguments, ]; -export const allowedPipOptions = [ +const uvOptionsWithArguments = ['--constraints', ...commonOptionsWithArguments]; +export const optionsWithArguments = [ + ...pipOptionsWithArguments, + ...uvOptionsWithArguments, +]; +const allowedCommonOptions = [ '-v', - '--all-extras', - '--allow-unsafe', '--generate-hashes', - '--no-emit-index-url', '--emit-index-url', - '--strip-extras', '--index-url', - ...optionsWithArguments, ]; +export const allowedOptions: Record = { + 'pip-compile': [ + '--all-extras', + '--allow-unsafe', + '--generate-hashes', + '--no-emit-index-url', + '--strip-extras', + ...allowedCommonOptions, + ...pipOptionsWithArguments, + ], + uv: [ + '--no-strip-extras', + '--universal', + ...allowedCommonOptions, + ...uvOptionsWithArguments, + ], + custom: [], +}; // TODO(not7cd): test on all correct headers, even with CUSTOM_COMPILE_COMMAND export function extractHeaderCommand( @@ -118,23 +139,33 @@ export function extractHeaderCommand( ); const command = compileCommand.groups.command; const argv = [command]; - const isCustomCommand = command !== 'pip-compile'; + let commandType: CommandType; + if (command === 'pip-compile') { + commandType = 'pip-compile'; + } else if (command === 'uv') { + commandType = 'uv'; + } else { + commandType = 'custom'; + } if (compileCommand.groups.arguments) { argv.push(...split(compileCommand.groups.arguments)); } logger.debug( - { fileName, argv, isCustomCommand }, + { fileName, argv, commandType }, `pip-compile: extracted command from header`, ); const result: PipCompileArgs = { argv, command, - isCustomCommand, + commandType, outputFile: '', sourceFiles: [], }; for (const arg of argv.slice(1)) { + if (commandType === 'uv' && ['pip', 'compile'].includes(arg)) { + continue; + } // TODO(not7cd): check for "--option -- argument" case if (!arg.startsWith('-')) { result.sourceFiles.push(arg); @@ -142,7 +173,7 @@ export function extractHeaderCommand( } throwForDisallowedOption(arg); throwForNoEqualSignInOptionWithArgument(arg); - throwForUnknownOption(arg); + throwForUnknownOption(commandType, arg); if (arg.includes('=')) { const [option, value] = arg.split('='); @@ -153,7 +184,7 @@ export function extractHeaderCommand( result.extraIndexUrl = result.extraIndexUrl ?? []; result.extraIndexUrl.push(value); // TODO: add to secrets? next PR - } else if (option === '--constraint') { + } else if (['--constraint', '--constraints'].includes(option)) { result.constraintsFiles = result.constraintsFiles ?? []; result.constraintsFiles.push(value); } else if (option === '--output-file') { @@ -210,9 +241,15 @@ const pythonVersionRegex = regEx( ); export function extractPythonVersion( + commandType: CommandType, content: string, fileName: string, ): string | undefined { + // uv's headers do not include the Python version + // https://github.com/astral-sh/uv/issues/3588 + if (commandType === 'uv') { + return; + } const match = pythonVersionRegex.exec(content); if (match?.groups === undefined) { logger.warn( @@ -244,14 +281,14 @@ function throwForNoEqualSignInOptionWithArgument(arg: string): void { ); } } -function throwForUnknownOption(arg: string): void { +function throwForUnknownOption(commandType: CommandType, arg: string): void { if (arg.includes('=')) { const [option] = arg.split('='); - if (allowedPipOptions.includes(option)) { + if (allowedOptions[commandType].includes(option)) { return; } } - if (allowedPipOptions.includes(arg)) { + if (allowedOptions[commandType].includes(arg)) { return; } throw new Error(`Option ${arg} not supported (yet)`); diff --git a/lib/modules/manager/pip-compile/extract.ts b/lib/modules/manager/pip-compile/extract.ts index d040d676015699..4fe0b07aa66ab5 100644 --- a/lib/modules/manager/pip-compile/extract.ts +++ b/lib/modules/manager/pip-compile/extract.ts @@ -1,5 +1,6 @@ import upath from 'upath'; import { logger } from '../../../logger'; +import { coerceArray } from '../../../util/array'; import { readLocalFile } from '../../../util/fs'; import { ensureLocalPath } from '../../../util/fs/util'; import { extractPackageFile as extractRequirementsFile } from '../pip_requirements/extract'; @@ -73,7 +74,7 @@ export async function extractAllPackageFiles( continue; } lockFileArgs.set(fileMatch, compileArgs); - for (const constraint in compileArgs.constraintsFiles) { + for (const constraint of coerceArray(compileArgs.constraintsFiles)) { depsBetweenFiles.push({ sourceFile: constraint, outputFile: fileMatch, diff --git a/lib/modules/manager/pip-compile/readme.md b/lib/modules/manager/pip-compile/readme.md index cb846fb0a78d42..5ef2c4b4d0d094 100644 --- a/lib/modules/manager/pip-compile/readme.md +++ b/lib/modules/manager/pip-compile/readme.md @@ -1,6 +1,8 @@ Due to limited functionality, the `pip-compile` manager should be considered in an "alpha" stage, which means it's not ready for production use for the majority of end users. We welcome feedback and bug reports! +The `uv pip compile` command is also supported through this manager in the same fashion as `pip-compile`. + The current implementation has some limitations. Read the full document before you start using the `pip-compile` manager. @@ -31,10 +33,12 @@ In turn `pip-compile` manager will find all source files and parse them as packa The following files are currently supported: -| Source filename | Manager | -| --------------: | ------------------ | -| `setup.py` | `pip_setup` | -| `*.in` | `pip_requirements` | +| Source filename | Manager | +| ---------------: | ------------------ | +| `setup.py` | `pip_setup` | +| `setup.cfg` | `setup-cfg` | +| `pyproject.toml` | `pep621` | +| `*.in` / `*.txt` | `pip_requirements` | Example header: @@ -58,6 +62,12 @@ Because `pip-compile` will update source files with their associated manager you }, "pip_setup": { "enabled": false + }, + "setup-cfg": { + "enabled": false + }, + "pep621": { + "enabled": false } } ``` diff --git a/lib/modules/manager/pip-compile/types.ts b/lib/modules/manager/pip-compile/types.ts index c496e01c886a7d..ad0b9dcaf6c29b 100644 --- a/lib/modules/manager/pip-compile/types.ts +++ b/lib/modules/manager/pip-compile/types.ts @@ -5,10 +5,12 @@ export type SupportedManagers = | 'setup-cfg' | 'pep621'; +export type CommandType = 'pip-compile' | 'uv' | 'custom'; + export interface PipCompileArgs { argv: string[]; // all arguments as a list command: string; - isCustomCommand: boolean; + commandType: CommandType; constraintsFiles?: string[]; extra?: string[]; allExtras?: boolean; diff --git a/lib/modules/manager/terragrunt/__fixtures__/3.hcl b/lib/modules/manager/terragrunt/__fixtures__/3.hcl index 24e81c345cfc7b..22079aae6c9fe9 100644 --- a/lib/modules/manager/terragrunt/__fixtures__/3.hcl +++ b/lib/modules/manager/terragrunt/__fixtures__/3.hcl @@ -155,6 +155,11 @@ terraform { source = "git::ssh://git@mygit.com/hashicorp/example?ref=v1.0.3&depth=1" } +# gittags_ssh_subdir +terraform { + source = "git::ssh://git@mygit.com/hashicorp/example//subdir/test?ref=v1.0.4&depth=1" +} + # invalid, ignored by test since it does not have source on the next line terraform { } diff --git a/lib/modules/manager/terragrunt/extract.spec.ts b/lib/modules/manager/terragrunt/extract.spec.ts index a87f17f6002fe8..e8533f64f5e1eb 100644 --- a/lib/modules/manager/terragrunt/extract.spec.ts +++ b/lib/modules/manager/terragrunt/extract.spec.ts @@ -418,6 +418,13 @@ describe('modules/manager/terragrunt/extract', () => { depType: 'gitTags', packageName: 'ssh://git@mygit.com/hashicorp/example', }, + { + currentValue: 'v1.0.4', + datasource: 'git-tags', + depName: 'mygit.com/hashicorp/example', + depType: 'gitTags', + packageName: 'ssh://git@mygit.com/hashicorp/example', + }, { skipReason: 'no-source', }, @@ -466,7 +473,7 @@ describe('modules/manager/terragrunt/extract', () => { }, ], }); - expect(res?.deps).toHaveLength(35); + expect(res?.deps).toHaveLength(36); expect(res?.deps.filter((dep) => dep.skipReason)).toHaveLength(4); }); diff --git a/lib/modules/manager/terragrunt/modules.ts b/lib/modules/manager/terragrunt/modules.ts index 0079b18581303b..a6690cdc2c0726 100644 --- a/lib/modules/manager/terragrunt/modules.ts +++ b/lib/modules/manager/terragrunt/modules.ts @@ -71,7 +71,7 @@ export function analyseTerragruntModule( dep.datasource = GithubTagsDatasource.id; } else if (gitTagsRefMatch?.groups) { const { url, tag } = gitTagsRefMatch.groups; - const { hostname, host, origin, pathname, protocol } = new URL(url); + const { hostname, host, pathname, protocol } = new URL(url); const containsSubDirectory = pathname.includes('//'); if (containsSubDirectory) { logger.debug('Terragrunt module contains subdirectory'); @@ -87,7 +87,8 @@ export function analyseTerragruntModule( dep.datasource = detectGitTagDatasource(url); if (dep.datasource === GitTagsDatasource.id) { if (containsSubDirectory) { - dep.packageName = `${origin}${pathname.split('//')[0]}`; + const tempLookupName = url.split('//'); + dep.packageName = tempLookupName[0] + '//' + tempLookupName[1]; } else { dep.packageName = url; } diff --git a/lib/modules/manager/types.ts b/lib/modules/manager/types.ts index 28ede22bda9518..3ce881369af1e5 100644 --- a/lib/modules/manager/types.ts +++ b/lib/modules/manager/types.ts @@ -192,6 +192,7 @@ export interface Upgrade> extends PackageDependency { registryUrls?: string[] | null; currentVersion?: string; replaceString?: string; + replacementApproach?: 'replace' | 'alias'; } export interface ArtifactNotice { diff --git a/lib/modules/platform/gerrit/index.ts b/lib/modules/platform/gerrit/index.ts index 234d9965631f56..bae6b5114090f5 100644 --- a/lib/modules/platform/gerrit/index.ts +++ b/lib/modules/platform/gerrit/index.ts @@ -96,7 +96,7 @@ export async function initRepo({ repository, gitUrl, }: RepoParams): Promise { - logger.debug(`initRepo(${repository}, ${gitUrl!})`); + logger.debug(`initRepo(${repository}, ${gitUrl})`); const projectInfo = await client.getProjectInfo(repository); const branchInfo = await client.getBranchInfo(repository); diff --git a/lib/modules/platform/gitea/index.spec.ts b/lib/modules/platform/gitea/index.spec.ts index 53ce4256adff6b..49c236fe5577fe 100644 --- a/lib/modules/platform/gitea/index.spec.ts +++ b/lib/modules/platform/gitea/index.spec.ts @@ -1222,7 +1222,13 @@ describe('modules/platform/gitea/index', () => { .scope('https://gitea.com/api/v1') .get('/repos/some/repo/pulls') .query({ state: 'all', sort: 'recentupdate' }) - .reply(200, mockPRs); + .reply(200, mockPRs.slice(0, 2), { + // test correct pagination handling, domain should be ignored + link: '; rel="next",; rel="last"', + }) + .get('/repos/some/repo/pulls') + .query({ state: 'all', sort: 'recentupdate', page: 2 }) + .reply(200, mockPRs.slice(2)); await initFakePlatform(scope); await initFakeRepo(scope); diff --git a/lib/modules/platform/gitea/index.ts b/lib/modules/platform/gitea/index.ts index 369edaad369b7b..1c8326c54167cc 100644 --- a/lib/modules/platform/gitea/index.ts +++ b/lib/modules/platform/gitea/index.ts @@ -212,10 +212,18 @@ const platform: Platform = { gitAuthor = `${user.full_name ?? user.username} <${user.email}>`; botUserID = user.id; botUserName = user.username; - defaults.version = await helper.getVersion({ token }); + // istanbul ignore if: experimental feature + if (semver.valid(process.env.RENOVATE_X_PLATFORM_VERSION)) { + defaults.version = process.env.RENOVATE_X_PLATFORM_VERSION!; + } else { + defaults.version = await helper.getVersion({ token }); + } if (defaults.version?.includes('gitea-')) { defaults.isForgejo = true; } + logger.debug( + `${defaults.isForgejo ? 'Forgejo' : 'Gitea'} version: ${defaults.version}`, + ); } catch (err) { logger.debug( { err }, diff --git a/lib/modules/platform/gitea/pr-cache.ts b/lib/modules/platform/gitea/pr-cache.ts index 82d935de312186..7f6268dcdbfe2a 100644 --- a/lib/modules/platform/gitea/pr-cache.ts +++ b/lib/modules/platform/gitea/pr-cache.ts @@ -6,7 +6,7 @@ import * as memCache from '../../../util/cache/memory'; import { getCache } from '../../../util/cache/repository'; import type { GiteaHttp } from '../../../util/http/gitea'; import type { HttpResponse } from '../../../util/http/types'; -import { getQueryString, parseLinkHeader } from '../../../util/url'; +import { getQueryString, parseLinkHeader, parseUrl } from '../../../util/url'; import type { Pr } from '../types'; import type { GiteaPrCacheData, PR } from './types'; import { API_PATH, toRenovatePR } from './utils'; @@ -149,7 +149,8 @@ export class GiteaPrCache { break; } - url = parseLinkHeader(res.headers.link)?.next?.url; + const uri = parseUrl(parseLinkHeader(res.headers.link)?.next?.url); + url = uri ? `${uri.pathname}${uri.search}` : undefined; } this.updateItems(); diff --git a/lib/modules/platform/github/index.ts b/lib/modules/platform/github/index.ts index 2ef5eb87dac3f3..0d1a15f4f34364 100644 --- a/lib/modules/platform/github/index.ts +++ b/lib/modules/platform/github/index.ts @@ -423,7 +423,7 @@ export async function createFork( await githubApi.postJson(`repos/${repository}/forks`, { token, body: { - organization: forkOrg ? forkOrg : undefined, + organization: forkOrg ?? undefined, name: config.parentRepo!.replace('/', '-_-'), default_branch_only: true, // no baseBranches support yet }, diff --git a/lib/modules/versioning/index.ts b/lib/modules/versioning/index.ts index b93c5e8740e812..5267c25d1a6bfa 100644 --- a/lib/modules/versioning/index.ts +++ b/lib/modules/versioning/index.ts @@ -17,9 +17,7 @@ export const getVersionings = (): Map< > => versionings; export function get(versioning: string | null | undefined): VersioningApi { - const res = Versioning.safeParse( - versioning ? versioning : defaultVersioning.id, - ); + const res = Versioning.safeParse(versioning ?? defaultVersioning.id); if (!res.success) { const [issue] = res.error.issues; diff --git a/lib/modules/versioning/ubuntu/index.ts b/lib/modules/versioning/ubuntu/index.ts index ce41ab1a3a0d80..d26cd2a86eefdd 100644 --- a/lib/modules/versioning/ubuntu/index.ts +++ b/lib/modules/versioning/ubuntu/index.ts @@ -66,7 +66,7 @@ function isStable(version: string): boolean { function getVersionByCodename(version: string): string { const datedImgVersion = getDatedContainerImageCodename(version); - const getVersion = datedImgVersion ? datedImgVersion : version; + const getVersion = datedImgVersion ?? version; return di.getVersionByCodename(getVersion); } diff --git a/package.json b/package.json index 5fd097b81e6e9b..43d1cebb17523d 100644 --- a/package.json +++ b/package.json @@ -271,7 +271,7 @@ "@openpgp/web-stream-tools": "0.1.3", "@renovate/eslint-plugin": "file:tools/eslint", "@semantic-release/exec": "6.0.3", - "@swc/core": "1.10.9", + "@swc/core": "1.10.11", "@types/auth-header": "1.0.6", "@types/aws4": "1.11.6", "@types/better-sqlite3": "7.6.12", @@ -293,7 +293,7 @@ "@types/js-yaml": "4.0.9", "@types/json-dup-key-validator": "1.0.2", "@types/linkify-markdown": "1.0.3", - "@types/lodash": "4.17.14", + "@types/lodash": "4.17.15", "@types/luxon": "3.4.2", "@types/markdown-it": "14.1.2", "@types/markdown-table": "2.0.0", @@ -313,8 +313,8 @@ "@types/url-join": "4.0.3", "@types/validate-npm-package-name": "4.0.2", "@types/xmldoc": "1.1.9", - "@typescript-eslint/eslint-plugin": "8.20.0", - "@typescript-eslint/parser": "8.20.0", + "@typescript-eslint/eslint-plugin": "8.22.0", + "@typescript-eslint/parser": "8.22.0", "aws-sdk-client-mock": "4.1.0", "callsite": "1.0.0", "common-tags": "1.8.2", diff --git a/pdm.lock b/pdm.lock index be933f80efbffc..6c5af4212bf5ae 100644 --- a/pdm.lock +++ b/pdm.lock @@ -5,14 +5,14 @@ groups = ["default"] strategy = ["inherit_metadata"] lock_version = "4.5.0" -content_hash = "sha256:cb7ab4ded4a7ff81d1e6f461b57bd06ec2efafa0dbc1f980286e10fbb75c1a57" +content_hash = "sha256:8314f1066faf3c76d51f55ac5db00e1bdb5b99f0a0545a87fa5a83c7efdbeb15" [[metadata.targets]] requires_python = ">=3.11" [[package]] name = "babel" -version = "2.16.0" +version = "2.17.0" requires_python = ">=3.8" summary = "Internationalization utilities" groups = ["default"] @@ -20,8 +20,8 @@ dependencies = [ "pytz>=2015.7; python_version < \"3.9\"", ] files = [ - {file = "babel-2.16.0-py3-none-any.whl", hash = "sha256:368b5b98b37c06b7daf6696391c3240c938b37767d4584413e8438c5c435fa8b"}, - {file = "babel-2.16.0.tar.gz", hash = "sha256:d1f3554ca26605fe173f3de0c65f750f5a42f924499bf134de6423582298e316"}, + {file = "babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2"}, + {file = "babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d"}, ] [[package]] @@ -297,7 +297,7 @@ files = [ [[package]] name = "mkdocs-material" -version = "9.6.1" +version = "9.6.2" requires_python = ">=3.8" summary = "Documentation that simply works" groups = ["default"] @@ -315,8 +315,8 @@ dependencies = [ "requests~=2.26", ] files = [ - {file = "mkdocs_material-9.6.1-py3-none-any.whl", hash = "sha256:c1742d410be29811a9b7e863cb25a578b9e255fe6f04c69f8c6838863a58e141"}, - {file = "mkdocs_material-9.6.1.tar.gz", hash = "sha256:da37dba220d9fbfc5f1fc567fafc4028e3c3d7d828f2779ed09ab726ceca77dc"}, + {file = "mkdocs_material-9.6.2-py3-none-any.whl", hash = "sha256:71d90dbd63b393ad11a4d90151dfe3dcbfcd802c0f29ce80bebd9bbac6abc753"}, + {file = "mkdocs_material-9.6.2.tar.gz", hash = "sha256:a3de1c5d4c745f10afa78b1a02f917b9dce0808fb206adc0f5bb48b58c1ca21f"}, ] [[package]] @@ -397,7 +397,7 @@ files = [ [[package]] name = "pymdown-extensions" -version = "10.14.2" +version = "10.14.3" requires_python = ">=3.8" summary = "Extension pack for Python Markdown." groups = ["default"] @@ -406,8 +406,8 @@ dependencies = [ "pyyaml", ] files = [ - {file = "pymdown_extensions-10.14.2-py3-none-any.whl", hash = "sha256:f45bc5892410e54fd738ab8ccd736098b7ff0cb27fdb4bf24d0a0c6584bc90e1"}, - {file = "pymdown_extensions-10.14.2.tar.gz", hash = "sha256:7a77b8116dc04193f2c01143760a43387bd9dc4aa05efacb7d838885a7791253"}, + {file = "pymdown_extensions-10.14.3-py3-none-any.whl", hash = "sha256:05e0bee73d64b9c71a4ae17c72abc2f700e8bc8403755a00580b49a4e9f189e9"}, + {file = "pymdown_extensions-10.14.3.tar.gz", hash = "sha256:41e576ce3f5d650be59e900e4ceff231e0aed2a88cf30acaee41e02f063a061b"}, ] [[package]] diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 87f4559adb1cb6..10aa2862823a26 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -383,8 +383,8 @@ importers: specifier: 6.0.3 version: 6.0.3(semantic-release@24.2.1(typescript@5.7.3)) '@swc/core': - specifier: 1.10.9 - version: 1.10.9 + specifier: 1.10.11 + version: 1.10.11 '@types/auth-header': specifier: 1.0.6 version: 1.0.6 @@ -449,8 +449,8 @@ importers: specifier: 1.0.3 version: 1.0.3 '@types/lodash': - specifier: 4.17.14 - version: 4.17.14 + specifier: 4.17.15 + version: 4.17.15 '@types/luxon': specifier: 3.4.2 version: 3.4.2 @@ -509,11 +509,11 @@ importers: specifier: 1.1.9 version: 1.1.9 '@typescript-eslint/eslint-plugin': - specifier: 8.20.0 - version: 8.20.0(@typescript-eslint/parser@8.20.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1)(typescript@5.7.3) + specifier: 8.22.0 + version: 8.22.0(@typescript-eslint/parser@8.22.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1)(typescript@5.7.3) '@typescript-eslint/parser': - specifier: 8.20.0 - version: 8.20.0(eslint@8.57.1)(typescript@5.7.3) + specifier: 8.22.0 + version: 8.22.0(eslint@8.57.1)(typescript@5.7.3) aws-sdk-client-mock: specifier: 4.1.0 version: 4.1.0 @@ -540,10 +540,10 @@ importers: 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.20.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1) + version: 2.31.0(@typescript-eslint/parser@8.22.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1) eslint-plugin-jest: specifier: 28.11.0 - version: 28.11.0(@typescript-eslint/eslint-plugin@8.20.0(@typescript-eslint/parser@8.20.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1)(jest@29.7.0(@types/node@22.10.9)(ts-node@10.9.2(@swc/core@1.10.9)(@types/node@22.10.9)(typescript@5.7.3)))(typescript@5.7.3) + version: 28.11.0(@typescript-eslint/eslint-plugin@8.22.0(@typescript-eslint/parser@8.22.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1)(jest@29.7.0(@types/node@22.10.9)(ts-node@10.9.2(@swc/core@1.10.11)(@types/node@22.10.9)(typescript@5.7.3)))(typescript@5.7.3) eslint-plugin-jest-formatting: specifier: 3.1.0 version: 3.1.0(eslint@8.57.1) @@ -567,16 +567,16 @@ importers: version: 9.1.7 jest: specifier: 29.7.0 - version: 29.7.0(@types/node@22.10.9)(ts-node@10.9.2(@swc/core@1.10.9)(@types/node@22.10.9)(typescript@5.7.3)) + version: 29.7.0(@types/node@22.10.9)(ts-node@10.9.2(@swc/core@1.10.11)(@types/node@22.10.9)(typescript@5.7.3)) jest-extended: specifier: 4.0.2 - version: 4.0.2(jest@29.7.0(@types/node@22.10.9)(ts-node@10.9.2(@swc/core@1.10.9)(@types/node@22.10.9)(typescript@5.7.3))) + version: 4.0.2(jest@29.7.0(@types/node@22.10.9)(ts-node@10.9.2(@swc/core@1.10.11)(@types/node@22.10.9)(typescript@5.7.3))) jest-mock: specifier: 29.7.0 version: 29.7.0 jest-mock-extended: specifier: 3.0.7 - version: 3.0.7(jest@29.7.0(@types/node@22.10.9)(ts-node@10.9.2(@swc/core@1.10.9)(@types/node@22.10.9)(typescript@5.7.3)))(typescript@5.7.3) + version: 3.0.7(jest@29.7.0(@types/node@22.10.9)(ts-node@10.9.2(@swc/core@1.10.11)(@types/node@22.10.9)(typescript@5.7.3)))(typescript@5.7.3) jest-snapshot: specifier: 29.7.0 version: 29.7.0 @@ -612,10 +612,10 @@ importers: version: 3.0.3 ts-jest: specifier: 29.2.5 - version: 29.2.5(@babel/core@7.26.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.7))(jest@29.7.0(@types/node@22.10.9)(ts-node@10.9.2(@swc/core@1.10.9)(@types/node@22.10.9)(typescript@5.7.3)))(typescript@5.7.3) + version: 29.2.5(@babel/core@7.26.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.7))(jest@29.7.0(@types/node@22.10.9)(ts-node@10.9.2(@swc/core@1.10.11)(@types/node@22.10.9)(typescript@5.7.3)))(typescript@5.7.3) ts-node: specifier: 10.9.2 - version: 10.9.2(@swc/core@1.10.9)(@types/node@22.10.9)(typescript@5.7.3) + version: 10.9.2(@swc/core@1.10.11)(@types/node@22.10.9)(typescript@5.7.3) type-fest: specifier: 4.33.0 version: 4.33.0 @@ -1214,8 +1214,8 @@ packages: resolution: {integrity: sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==} engines: {node: '>= 18'} - '@octokit/auth-token@5.1.1': - resolution: {integrity: sha512-rh3G3wDO8J9wSjfI436JUKzHIxq8NaiL0tVeB2aXmG6p/9859aUOAjA9pmSPNGGZxfwmaJ9ozOJImuNVJdpvbA==} + '@octokit/auth-token@5.1.2': + resolution: {integrity: sha512-JcQDsBdg49Yky2w2ld20IHAlwr8d/d8N6NiOXbtuoPCqzbsiJgF633mVUw3x4mo0H5ypataQIX7SFu3yy44Mpw==} engines: {node: '>= 18'} '@octokit/core@5.2.0': @@ -1238,8 +1238,8 @@ packages: resolution: {integrity: sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ==} engines: {node: '>= 18'} - '@octokit/graphql@8.1.2': - resolution: {integrity: sha512-bdlj/CJVjpaz06NBpfHhp4kGJaRZfz7AzC+6EwUImRtrwIw8dIgJ63Xg0OzV9pRn3rIzrt5c2sa++BL0JJ8GLw==} + '@octokit/graphql@8.2.0': + resolution: {integrity: sha512-gejfDywEml/45SqbWTWrhfwvLBrcGYhOn50sPOjIeVvH6i7D16/9xcFA8dAJNp2HMcd+g4vru41g4E2RBiZvfQ==} engines: {node: '>= 18'} '@octokit/openapi-types@23.0.1': @@ -1301,8 +1301,8 @@ packages: resolution: {integrity: sha512-MB4AYDsM5jhIHro/dq4ix1iWTLGToIGk6cWF5L6vanFaMble5jTX/UBQyiv05HsWnwUtY8JrfHy2LWfKwihqMw==} engines: {node: '>= 18'} - '@octokit/types@13.7.0': - resolution: {integrity: sha512-BXfRP+3P3IN6fd4uF3SniaHKOO4UXWBfkdR3vA8mIvaoO/wLjGN5qivUtW0QRitBHHMcfC41SLhNVYIZZE+wkA==} + '@octokit/types@13.8.0': + resolution: {integrity: sha512-x7DjTIbEpEWXK99DMd01QfWy0hd5h4EN+Q7shkdKds3otGQP+oWE/y0A76i1OvH9fygo4ddvNf7ZvF0t78P98A==} '@one-ini/wasm@0.1.1': resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==} @@ -1679,8 +1679,8 @@ packages: resolution: {integrity: sha512-Igfg8lKu3dRVkTSEm98QpZUvKEOa71jDX4vKRcvJVyRc3UgN3j7vFMf0s7xLQhYmKa8kyJGQgUJDOV5V3neVlQ==} engines: {node: '>=18.0.0'} - '@smithy/core@3.1.1': - resolution: {integrity: sha512-hhUZlBWYuh9t6ycAcN90XOyG76C1AzwxZZgaCVPMYpWqqk9uMFo7HGG5Zu2cEhCJn7DdOi5krBmlibWWWPgdsw==} + '@smithy/core@3.1.2': + resolution: {integrity: sha512-htwQXkbdF13uwwDevz9BEzL5ABK+1sJpVQXywwGSH973AVOvisHNfpcB8A8761G6XgHoS2kHPqc9DqHJ2gp+/Q==} engines: {node: '>=18.0.0'} '@smithy/credential-provider-imds@4.0.1': @@ -1743,16 +1743,16 @@ packages: resolution: {integrity: sha512-OGXo7w5EkB5pPiac7KNzVtfCW2vKBTZNuCctn++TTSOMpe6RZO/n6WEC1AxJINn3+vWLKW49uad3lo/u0WJ9oQ==} engines: {node: '>=18.0.0'} - '@smithy/middleware-endpoint@4.0.2': - resolution: {integrity: sha512-Z9m67CXizGpj8CF/AW/7uHqYNh1VXXOn9Ap54fenWsCa0HnT4cJuE61zqG3cBkTZJDCy0wHJphilI41co/PE5g==} + '@smithy/middleware-endpoint@4.0.3': + resolution: {integrity: sha512-YdbmWhQF5kIxZjWqPIgboVfi8i5XgiYMM7GGKFMTvBei4XjNQfNv8sukT50ITvgnWKKKpOtp0C0h7qixLgb77Q==} engines: {node: '>=18.0.0'} - '@smithy/middleware-retry@4.0.3': - resolution: {integrity: sha512-TiKwwQTwUDeDtwWW8UWURTqu7s6F3wN2pmziLU215u7bqpVT9Mk2oEvURjpRLA+5XeQhM68R5BpAGzVtomsqgA==} + '@smithy/middleware-retry@4.0.4': + resolution: {integrity: sha512-wmxyUBGHaYUqul0wZiset4M39SMtDBOtUr2KpDuftKNN74Do9Y36Go6Eqzj9tL0mIPpr31ulB5UUtxcsCeGXsQ==} engines: {node: '>=18.0.0'} - '@smithy/middleware-serde@4.0.1': - resolution: {integrity: sha512-Fh0E2SOF+S+P1+CsgKyiBInAt3o2b6Qk7YOp2W0Qx2XnfTdfMuSDKUEcnrtpxCzgKJnqXeLUZYqtThaP0VGqtA==} + '@smithy/middleware-serde@4.0.2': + resolution: {integrity: sha512-Sdr5lOagCn5tt+zKsaW+U2/iwr6bI9p08wOkCp6/eL6iMbgdtc2R5Ety66rf87PeohR0ExI84Txz9GYv5ou3iQ==} engines: {node: '>=18.0.0'} '@smithy/middleware-stack@4.0.1': @@ -1795,8 +1795,8 @@ packages: resolution: {integrity: sha512-nCe6fQ+ppm1bQuw5iKoeJ0MJfz2os7Ic3GBjOkLOPtavbD1ONoyE3ygjBfz2ythFWm4YnRm6OxW+8p/m9uCoIA==} engines: {node: '>=18.0.0'} - '@smithy/smithy-client@4.1.2': - resolution: {integrity: sha512-0yApeHWBqocelHGK22UivZyShNxFbDNrgREBllGh5Ws0D0rg/yId/CJfeoKKpjbfY2ju8j6WgDUGZHYQmINZ5w==} + '@smithy/smithy-client@4.1.3': + resolution: {integrity: sha512-A2Hz85pu8BJJaYFdX8yb1yocqigyqBzn+OVaVgm+Kwi/DkN8vhN2kbDVEfADo6jXf5hPKquMLGA3UINA64UZ7A==} engines: {node: '>=18.0.0'} '@smithy/types@4.1.0': @@ -1831,12 +1831,12 @@ packages: resolution: {integrity: sha512-L1RBVzLyfE8OXH+1hsJ8p+acNUSirQnWQ6/EgpchV88G6zGBTDPdXiiExei6Z1wR2RxYvxY/XLw6AMNCCt8H3w==} engines: {node: '>=18.0.0'} - '@smithy/util-defaults-mode-browser@4.0.3': - resolution: {integrity: sha512-7c5SF1fVK0EOs+2EOf72/qF199zwJflU1d02AevwKbAUPUZyE9RUZiyJxeUmhVxfKDWdUKaaVojNiaDQgnHL9g==} + '@smithy/util-defaults-mode-browser@4.0.4': + resolution: {integrity: sha512-Ej1bV5sbrIfH++KnWxjjzFNq9nyP3RIUq2c9Iqq7SmMO/idUR24sqvKH2LUQFTSPy/K7G4sB2m8n7YYlEAfZaw==} engines: {node: '>=18.0.0'} - '@smithy/util-defaults-mode-node@4.0.3': - resolution: {integrity: sha512-CVnD42qYD3JKgDlImZ9+On+MqJHzq9uJgPbMdeBE8c2x8VJ2kf2R3XO/yVFx+30ts5lD/GlL0eFIShY3x9ROgQ==} + '@smithy/util-defaults-mode-node@4.0.4': + resolution: {integrity: sha512-HE1I7gxa6yP7ZgXPCFfZSDmVmMtY7SHqzFF55gM/GPegzZKaQWZZ+nYn9C2Cc3JltCMyWe63VPR3tSFDEvuGjw==} engines: {node: '>=18.0.0'} '@smithy/util-endpoints@3.0.1': @@ -1875,68 +1875,68 @@ packages: resolution: {integrity: sha512-piUTHyp2Axx3p/kc2CIJkYSv0BAaheBQmbACZgQSSfWUumWNW+R1lL+H9PDBxKJkvOeEX+hKYEFiwO8xagL8AQ==} engines: {node: '>=18.0.0'} - '@swc/core-darwin-arm64@1.10.9': - resolution: {integrity: sha512-XTHLtijFervv2B+i1ngM993umhSj9K1IeMomvU/Db84Asjur2XmD4KXt9QPnGDRFgv2kLSjZ+DDL25Qk0f4r+w==} + '@swc/core-darwin-arm64@1.10.11': + resolution: {integrity: sha512-ZpgEaNcx2e5D+Pd0yZGVbpSrEDOEubn7r2JXoNBf0O85lPjUm3HDzGRfLlV/MwxRPAkwm93eLP4l7gYnc50l3g==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.10.9': - resolution: {integrity: sha512-bi3el9/FV/la8HIsolSjeDar+tM7m9AmSF1w7X6ZByW2qgc4Z1tmq0A4M4H9aH3TfHesZbfq8hgaNtc2/VtzzQ==} + '@swc/core-darwin-x64@1.10.11': + resolution: {integrity: sha512-szObinnq2o7spXMDU5pdunmUeLrfV67Q77rV+DyojAiGJI1RSbEQotLOk+ONOLpoapwGUxOijFG4IuX1xiwQ2g==} engines: {node: '>=10'} cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.10.9': - resolution: {integrity: sha512-xsLHV02S+RTDuI+UJBkA2muNk/s0ETRpoc1K/gNt0i8BqTurPYkrvGDDALN9+leiUPydHvZi9P1qdExbgUJnXw==} + '@swc/core-linux-arm-gnueabihf@1.10.11': + resolution: {integrity: sha512-tVE8aXQwd8JUB9fOGLawFJa76nrpvp3dvErjozMmWSKWqtoeO7HV83aOrVtc8G66cj4Vq7FjTE9pOJeV1FbKRw==} engines: {node: '>=10'} cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.10.9': - resolution: {integrity: sha512-41hJgPoGhIa12U6Tud+yLF/m64YA3mGut3TmBEkj2R7rdJdE0mljdtR0tf4J2RoQaWZPPi0DBSqGdROiAEx9dg==} + '@swc/core-linux-arm64-gnu@1.10.11': + resolution: {integrity: sha512-geFkENU5GMEKO7FqHOaw9HVlpQEW10nICoM6ubFc0hXBv8dwRXU4vQbh9s/isLSFRftw1m4jEEWixAnXSw8bxQ==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-musl@1.10.9': - resolution: {integrity: sha512-DUMRhl49b9r7bLg9oNzCdW4lLcDJKrRBn87Iq5APPvixsm1auGnsVQycGkQcDDKvVllxIFSbmCYzjagx3l8Hnw==} + '@swc/core-linux-arm64-musl@1.10.11': + resolution: {integrity: sha512-2mMscXe/ivq8c4tO3eQSbQDFBvagMJGlalXCspn0DgDImLYTEnt/8KHMUMGVfh0gMJTZ9q4FlGLo7mlnbx99MQ==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-x64-gnu@1.10.9': - resolution: {integrity: sha512-xW0y88vQvmzYo3Gn7yFnY03TfHMwuca4aFH3ZmhwDNOYHmTOi6fmhAkg/13F/NrwjMYO+GnF5uJTjdjb3B6tdQ==} + '@swc/core-linux-x64-gnu@1.10.11': + resolution: {integrity: sha512-eu2apgDbC4xwsigpl6LS+iyw6a3mL6kB4I+6PZMbFF2nIb1Dh7RGnu70Ai6mMn1o80fTmRSKsCT3CKMfVdeNFg==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-linux-x64-musl@1.10.9': - resolution: {integrity: sha512-jYs32BEx+CPVuxN6NdsWEpdehjnmAag25jyJzwjQx+NCGYwHEV3bT5y8TX4eFhaVB1rafmqJOlYQPs4+MSyGCg==} + '@swc/core-linux-x64-musl@1.10.11': + resolution: {integrity: sha512-0n+wPWpDigwqRay4IL2JIvAqSKCXv6nKxPig9M7+epAlEQlqX+8Oq/Ap3yHtuhjNPb7HmnqNJLCXT1Wx+BZo0w==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-win32-arm64-msvc@1.10.9': - resolution: {integrity: sha512-Uhh5T3Fq3Nyom96Bm3ACBNASH3iqNc76in7ewZz8PooUqeTIO8aZpsghnncjctRNE9T819/8btpiFIhHo3sKtg==} + '@swc/core-win32-arm64-msvc@1.10.11': + resolution: {integrity: sha512-7+bMSIoqcbXKosIVd314YjckDRPneA4OpG1cb3/GrkQTEDXmWT3pFBBlJf82hzJfw7b6lfv6rDVEFBX7/PJoLA==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.10.9': - resolution: {integrity: sha512-bD5BpbojEsDfrAvT+1qjQPf5RCKLg4UL+3Uwm019+ZR02hd8qO538BlOnQdOqRqccu+75DF6aRglQ7AJ24Cs0Q==} + '@swc/core-win32-ia32-msvc@1.10.11': + resolution: {integrity: sha512-6hkLl4+3KjP/OFTryWxpW7YFN+w4R689TSPwiII4fFgsFNupyEmLWWakKfkGgV2JVA59L4Oi02elHy/O1sbgtw==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.10.9': - resolution: {integrity: sha512-NwkuUNeBBQnAaXVvcGw8Zr6RR8kylyjFUnlYZZ3G0QkQZ4rYLXYTafAmiRjrfzgVb0LcMF/sBzJvGOk7SwtIDg==} + '@swc/core-win32-x64-msvc@1.10.11': + resolution: {integrity: sha512-kKNE2BGu/La2k2WFHovenqZvGQAHRIU+rd2/6a7D6EiQ6EyimtbhUqjCCZ+N1f5fIAnvM+sMdLiQJq4jdd/oOQ==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@swc/core@1.10.9': - resolution: {integrity: sha512-MQ97YSXu2oibzm7wi4GNa7hhndjLuVt/lmO2sq53+P37oZmyg/JQ/IYYtSiC6UGK3+cHoiVAykrK+glxLjJbag==} + '@swc/core@1.10.11': + resolution: {integrity: sha512-3zGU5y3S20cAwot9ZcsxVFNsSVaptG+dKdmAxORSE3EX7ixe1Xn5kUwLlgIsM4qrwTUWCJDLNhRS+2HLFivcDg==} engines: {node: '>=10'} peerDependencies: '@swc/helpers': '*' @@ -2116,8 +2116,8 @@ packages: '@types/linkify-markdown@1.0.3': resolution: {integrity: sha512-BnuGqDmpzmXCDMXHzgle/vMRUnbFcWclts0+n7Or421exav3XG6efl9gsxamLET6QPhX+pMnxcsHgnAO/daj9w==} - '@types/lodash@4.17.14': - resolution: {integrity: sha512-jsxagdikDiDBeIRaPYtArcT8my4tN1og7MtMRquFT3XNA6axxyHDRUemqDz/taRDdOUn0GnGHRCuff4q48sW9A==} + '@types/lodash@4.17.15': + resolution: {integrity: sha512-w/P33JFeySuhN6JLkysYUK2gEmy9kHHFN7E8ro0tkfmlDOgxBDzWEZ/J8cWA+fHqFevpswDTFZnDx+R9lbL6xw==} '@types/luxon@3.4.2': resolution: {integrity: sha512-TifLZlFudklWlMBfhubvgqTXRzLDI5pCbGa4P8a3wPyUQSW+1xQ5eDsreP9DWHX3tjq1ke96uYG/nwundroWcA==} @@ -2221,8 +2221,8 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@8.20.0': - resolution: {integrity: sha512-naduuphVw5StFfqp4Gq4WhIBE2gN1GEmMUExpJYknZJdRnc+2gDzB8Z3+5+/Kv33hPQRDGzQO/0opHE72lZZ6A==} + '@typescript-eslint/eslint-plugin@8.22.0': + resolution: {integrity: sha512-4Uta6REnz/xEJMvwf72wdUnC3rr4jAQf5jnTkeRQ9b6soxLxhDEbS/pfMPoJLDfFPNVRdryqWUIV/2GZzDJFZw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 @@ -2235,8 +2235,8 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - '@typescript-eslint/parser@8.20.0': - resolution: {integrity: sha512-gKXG7A5HMyjDIedBi6bUrDcun8GIjnI8qOwVLiY3rx6T/sHP/19XLJOnIq/FgQvWLHja5JN/LSE7eklNBr612g==} + '@typescript-eslint/parser@8.22.0': + resolution: {integrity: sha512-MqtmbdNEdoNxTPzpWiWnqNac54h8JDAmkWtJExBVVnSrSmi9z+sZUt0LfKqk9rjqmKOIeRhO4fHHJ1nQIjduIQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -2246,16 +2246,16 @@ packages: resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@typescript-eslint/scope-manager@8.20.0': - resolution: {integrity: sha512-J7+VkpeGzhOt3FeG1+SzhiMj9NzGD/M6KoGn9f4dbz3YzK9hvbhVTmLj/HiTp9DazIzJ8B4XcM80LrR9Dm1rJw==} + '@typescript-eslint/scope-manager@8.22.0': + resolution: {integrity: sha512-/lwVV0UYgkj7wPSw0o8URy6YI64QmcOdwHuGuxWIYznO6d45ER0wXUbksr9pYdViAofpUCNJx/tAzNukgvaaiQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.21.0': - resolution: {integrity: sha512-G3IBKz0/0IPfdeGRMbp+4rbjfSSdnGkXsM/pFZA8zM9t9klXDnB/YnKOBQ0GoPmoROa4bCq2NeHgJa5ydsQ4mA==} + '@typescript-eslint/scope-manager@8.23.0': + resolution: {integrity: sha512-OGqo7+dXHqI7Hfm+WqkZjKjsiRtFUQHPdGMXzk5mYXhJUedO7e/Y7i8AK3MyLMgZR93TX4bIzYrfyVjLC+0VSw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.20.0': - resolution: {integrity: sha512-bPC+j71GGvA7rVNAHAtOjbVXbLN5PkwqMvy1cwGeaxUoRQXVuKCebRoLzm+IPW/NtFFpstn1ummSIasD5t60GA==} + '@typescript-eslint/type-utils@8.22.0': + resolution: {integrity: sha512-NzE3aB62fDEaGjaAYZE4LH7I1MUwHooQ98Byq0G0y3kkibPJQIXVUspzlFOmOfHhiDLwKzMlWxaNv+/qcZurJA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -2265,12 +2265,12 @@ packages: resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@typescript-eslint/types@8.20.0': - resolution: {integrity: sha512-cqaMiY72CkP+2xZRrFt3ExRBu0WmVitN/rYPZErA80mHjHx/Svgp8yfbzkJmDoQ/whcytOPO9/IZXnOc+wigRA==} + '@typescript-eslint/types@8.22.0': + resolution: {integrity: sha512-0S4M4baNzp612zwpD4YOieP3VowOARgK2EkN/GBn95hpyF8E2fbMT55sRHWBq+Huaqk3b3XK+rxxlM8sPgGM6A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.21.0': - resolution: {integrity: sha512-PAL6LUuQwotLW2a8VsySDBwYMm129vFm4tMVlylzdoTybTHaAi0oBp7Ac6LhSrHHOdLM3efH+nAR6hAWoMF89A==} + '@typescript-eslint/types@8.23.0': + resolution: {integrity: sha512-1sK4ILJbCmZOTt9k4vkoulT6/y5CHJ1qUYxqpF1K/DBAd8+ZUL4LlSCxOssuH5m4rUaaN0uS0HlVPvd45zjduQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/typescript-estree@5.62.0': @@ -2282,14 +2282,14 @@ packages: typescript: optional: true - '@typescript-eslint/typescript-estree@8.20.0': - resolution: {integrity: sha512-Y7ncuy78bJqHI35NwzWol8E0X7XkRVS4K4P4TCyzWkOJih5NDvtoRDW4Ba9YJJoB2igm9yXDdYI/+fkiiAxPzA==} + '@typescript-eslint/typescript-estree@8.22.0': + resolution: {integrity: sha512-SJX99NAS2ugGOzpyhMza/tX+zDwjvwAtQFLsBo3GQxiGcvaKlqGBkmZ+Y1IdiSi9h4Q0Lr5ey+Cp9CGWNY/F/w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/typescript-estree@8.21.0': - resolution: {integrity: sha512-x+aeKh/AjAArSauz0GiQZsjT8ciadNMHdkUSwBB9Z6PrKc/4knM4g3UfHml6oDJmKC88a6//cdxnO/+P2LkMcg==} + '@typescript-eslint/typescript-estree@8.23.0': + resolution: {integrity: sha512-LcqzfipsB8RTvH8FX24W4UUFk1bl+0yTOf9ZA08XngFwMg4Kj8A+9hwz8Cr/ZS4KwHrmo9PJiLZkOt49vPnuvQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.8.0' @@ -2300,15 +2300,15 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - '@typescript-eslint/utils@8.20.0': - resolution: {integrity: sha512-dq70RUw6UK9ei7vxc4KQtBRk7qkHZv447OUZ6RPQMQl71I3NZxQJX/f32Smr+iqWrB02pHKn2yAdHBb0KNrRMA==} + '@typescript-eslint/utils@8.22.0': + resolution: {integrity: sha512-T8oc1MbF8L+Bk2msAvCUzjxVB2Z2f+vXYfcucE2wOmYs7ZUwco5Ep0fYZw8quNwOiw9K8GYVL+Kgc2pETNTLOg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/utils@8.21.0': - resolution: {integrity: sha512-xcXBfcq0Kaxgj7dwejMbFyq7IOHgpNMtVuDveK7w3ZGwG9owKzhALVwKpTF2yrZmEwl9SWdetf3fxNzJQaVuxw==} + '@typescript-eslint/utils@8.23.0': + resolution: {integrity: sha512-uB/+PSo6Exu02b5ZEiVtmY6RVYO7YU5xqgzTIVZwTHvvK3HsL8tZZHFaTLFtRG3CsV4A5mhOv+NZx5BlhXPyIA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -2318,12 +2318,12 @@ 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.20.0': - resolution: {integrity: sha512-v/BpkeeYAsPkKCkR8BDwcno0llhzWVqPOamQrAEMdpZav2Y9OVjd9dwJyBLJWwf335B5DmlifECIkZRJCaGaHA==} + '@typescript-eslint/visitor-keys@8.22.0': + resolution: {integrity: sha512-AWpYAXnUgvLNabGTy3uBylkgZoosva/miNd1I8Bz3SjotmQPbVqhO4Cczo8AsZ44XVErEBPr/CRSgaj8sG7g0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/visitor-keys@8.21.0': - resolution: {integrity: sha512-BkLMNpdV6prozk8LlyK/SOoWLmUFi+ZD+pcqti9ILCbVvHGk1ui1g4jJOc2WDLaeExz2qWwojxlPce5PljcT3w==} + '@typescript-eslint/visitor-keys@8.23.0': + resolution: {integrity: sha512-oWWhcWDLwDfu++BGTZcmXWqpwtkwb5o7fxUIGksMQQDSdPW9prsSnfIOZMlsj4vBOSrcnjIUZMiIjODgGosFhQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.3.0': @@ -2685,8 +2685,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001695: - resolution: {integrity: sha512-vHyLade6wTgI2u1ec3WQBxv+2BrTERV28UXQu9LO6lZ9pYeMk34vjXFLOxo1A4UBA8XTL4njRQZdno/yYaSmWw==} + caniuse-lite@1.0.30001697: + resolution: {integrity: sha512-GwNPlWJin8E+d7Gxq96jxM6w0w+VFeyyXRsjU58emtkYqnbwHqXm5uT2uCmO0RQE9htWknOP4xtBlLmM/gWxvQ==} chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} @@ -2748,8 +2748,8 @@ packages: resolution: {integrity: sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==} engines: {node: '>=8'} - cjs-module-lexer@1.4.1: - resolution: {integrity: sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==} + cjs-module-lexer@1.4.3: + resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} clean-git-ref@2.0.1: resolution: {integrity: sha512-bLSptAy2P0s6hU4PzuIMKmMJJSE6gLXGH1cntDu7bWJUksvuM+7ReOK61mozULErYvP6a15rnYl0zFDef+pyPw==} @@ -3107,8 +3107,8 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.88: - resolution: {integrity: sha512-K3C2qf1o+bGzbilTDCTBhTQcMS9KW60yTAaTeeXsfvQuTDDwlokLam/AdqlqcSy9u4UainDgsHV23ksXAOgamw==} + electron-to-chromium@1.5.91: + resolution: {integrity: sha512-sNSHHyq048PFmZY4S90ax61q+gLCs0X0YmcOII9wG9S2XwbVr+h4VW2wWhnbp/Eys3cCwTxVF292W3qPaxIapQ==} email-addresses@5.0.0: resolution: {integrity: sha512-4OIPYlA6JXqtVn8zpHpGiI7vE6EQOAg16aGnDMIAlZVinnoZ8208tW1hAbjWydgN/4PLTT9q+O1K6AH/vALJGw==} @@ -3147,8 +3147,8 @@ packages: end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - enhanced-resolve@5.18.0: - resolution: {integrity: sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==} + enhanced-resolve@5.18.1: + resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} engines: {node: '>=10.13.0'} entities@4.5.0: @@ -3424,8 +3424,8 @@ packages: resolution: {integrity: sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==} hasBin: true - fastq@1.18.0: - resolution: {integrity: sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==} + fastq@1.19.0: + resolution: {integrity: sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==} fb-watchman@2.0.2: resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} @@ -3556,8 +3556,8 @@ packages: resolution: {integrity: sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==} engines: {node: '>=14'} - gcp-metadata@6.1.0: - resolution: {integrity: sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==} + gcp-metadata@6.1.1: + resolution: {integrity: sha512-a4tiq7E0/5fTjxPAaH4jpjkSv/uCaU2p5KC6HVGrvl0cDjA8iBZv4vv1gyzlmK0ZUKqwpOyQMKzZQe3lTit77A==} engines: {node: '>=14'} generic-pool@3.9.0: @@ -3684,6 +3684,10 @@ packages: resolution: {integrity: sha512-Jb6Z0+nvECVz+2lzSMt9u98UsoakXxA2HGHMCxh+so3n90XgYWkq5dur19JAJV7ONiJY22yBTyJB1TSkvPq9Ng==} engines: {node: '>=14'} + google-logging-utils@0.0.2: + resolution: {integrity: sha512-NEgUnEcBiP5HrPzufUkBzJOD/Sxsco3rLNo1F1TNf7ieU8ryUzBhqba8r756CjLX7rn3fHl6iLEwPYuqpoKgQQ==} + engines: {node: '>=14'} + gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} @@ -3860,8 +3864,8 @@ packages: immediate@3.0.6: resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} - import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} import-from-esm@2.0.0: @@ -4104,8 +4108,8 @@ packages: resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} engines: {node: '>= 0.4'} - is-weakref@1.1.0: - resolution: {integrity: sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==} + is-weakref@1.1.1: + resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} engines: {node: '>= 0.4'} is-weakset@2.0.4: @@ -4580,11 +4584,11 @@ packages: resolution: {integrity: sha512-u00joA/syf3VhWh6/ybVFkib5Zpj2e5KB/cfCei8fkSRuums6nyisTWGqjTWIOFoFwuXoTBQQiqlB4qFKp8ncQ==} engines: {node: '>=18'} - marked-terminal@7.2.1: - resolution: {integrity: sha512-rQ1MoMFXZICWNsKMiiHwP/Z+92PLKskTPXj+e7uwXmuMPkNn7iTqC+IvDekVm1MPeC9wYQeLxeFaOvudRR/XbQ==} + marked-terminal@7.3.0: + resolution: {integrity: sha512-t4rBvPsHc57uE/2nJOLmMbZCQ4tgAccAED3ngXQqW6g+TxA488JzJ+FK3lQkzBQOI1mRV/r/Kq+1ZlJ4D0owQw==} engines: {node: '>=16.0.0'} peerDependencies: - marked: '>=1 <15' + marked: '>=1 <16' marked@12.0.2: resolution: {integrity: sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==} @@ -4887,8 +4891,8 @@ packages: resolution: {integrity: sha512-o2zOYiCpzRqSzPj0Zt/dQ/DqZeYoaQ7TUonc/xUPjCGl9WeHpNbxgVvOquXYAaJzI0M9BXV3HTzG0p8IUAbBTQ==} engines: {node: '>= 10.13'} - node-abi@3.73.0: - resolution: {integrity: sha512-z8iYzQGBu35ZkTQ9mtR8RqugJZ9RCLn8fv3d7LsgDBzOijGQP3RdKTX4LA7LXw03ZhU5z0l4xfhIMgSES31+cg==} + node-abi@3.74.0: + resolution: {integrity: sha512-c5XK0MjkGBrQPGYG24GBADZud0NCbznxNx0ZkS+ebUTrmV1qTDxPxSL8zEAPURXSbLRWVexxmP4986BziahL5w==} engines: {node: '>=10'} node-emoji@2.2.0: @@ -5508,8 +5512,8 @@ packages: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} - require-in-the-middle@7.4.0: - resolution: {integrity: sha512-X34iHADNbNDfr6OTStIAHWSAvvKQRYgLO6duASaVf7J2VA3lvmNYboAHOuLC2huav1IwgZJtyEcJCKVzFxOSMQ==} + require-in-the-middle@7.5.0: + resolution: {integrity: sha512-/Tvpny/RVVicqlYTKwt/GtpZRsPG1CmJNhxVKGz+Sy/4MONfXCVNK69MFgGKdUt0/324q3ClI2dICcPgISrC8g==} engines: {node: '>=8.6.0'} require-main-filename@2.0.0: @@ -5900,8 +5904,8 @@ packages: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} engines: {node: '>=10'} - supports-hyperlinks@3.1.0: - resolution: {integrity: sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==} + supports-hyperlinks@3.2.0: + resolution: {integrity: sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==} engines: {node: '>=14.18'} supports-preserve-symlinks-flag@1.0.0: @@ -6016,8 +6020,8 @@ packages: trough@1.0.5: resolution: {integrity: sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==} - ts-api-utils@2.0.0: - resolution: {integrity: sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==} + ts-api-utils@2.0.1: + resolution: {integrity: sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==} engines: {node: '>=18.12'} peerDependencies: typescript: '>=4.8.4' @@ -6548,26 +6552,26 @@ snapshots: '@aws-sdk/util-user-agent-browser': 3.734.0 '@aws-sdk/util-user-agent-node': 3.734.0 '@smithy/config-resolver': 4.0.1 - '@smithy/core': 3.1.1 + '@smithy/core': 3.1.2 '@smithy/fetch-http-handler': 5.0.1 '@smithy/hash-node': 4.0.1 '@smithy/invalid-dependency': 4.0.1 '@smithy/middleware-content-length': 4.0.1 - '@smithy/middleware-endpoint': 4.0.2 - '@smithy/middleware-retry': 4.0.3 - '@smithy/middleware-serde': 4.0.1 + '@smithy/middleware-endpoint': 4.0.3 + '@smithy/middleware-retry': 4.0.4 + '@smithy/middleware-serde': 4.0.2 '@smithy/middleware-stack': 4.0.1 '@smithy/node-config-provider': 4.0.1 '@smithy/node-http-handler': 4.0.2 '@smithy/protocol-http': 5.0.1 - '@smithy/smithy-client': 4.1.2 + '@smithy/smithy-client': 4.1.3 '@smithy/types': 4.1.0 '@smithy/url-parser': 4.0.1 '@smithy/util-base64': 4.0.0 '@smithy/util-body-length-browser': 4.0.0 '@smithy/util-body-length-node': 4.0.0 - '@smithy/util-defaults-mode-browser': 4.0.3 - '@smithy/util-defaults-mode-node': 4.0.3 + '@smithy/util-defaults-mode-browser': 4.0.4 + '@smithy/util-defaults-mode-node': 4.0.4 '@smithy/util-endpoints': 3.0.1 '@smithy/util-middleware': 4.0.1 '@smithy/util-retry': 4.0.1 @@ -6594,26 +6598,26 @@ snapshots: '@aws-sdk/util-user-agent-browser': 3.734.0 '@aws-sdk/util-user-agent-node': 3.734.0 '@smithy/config-resolver': 4.0.1 - '@smithy/core': 3.1.1 + '@smithy/core': 3.1.2 '@smithy/fetch-http-handler': 5.0.1 '@smithy/hash-node': 4.0.1 '@smithy/invalid-dependency': 4.0.1 '@smithy/middleware-content-length': 4.0.1 - '@smithy/middleware-endpoint': 4.0.2 - '@smithy/middleware-retry': 4.0.3 - '@smithy/middleware-serde': 4.0.1 + '@smithy/middleware-endpoint': 4.0.3 + '@smithy/middleware-retry': 4.0.4 + '@smithy/middleware-serde': 4.0.2 '@smithy/middleware-stack': 4.0.1 '@smithy/node-config-provider': 4.0.1 '@smithy/node-http-handler': 4.0.2 '@smithy/protocol-http': 5.0.1 - '@smithy/smithy-client': 4.1.2 + '@smithy/smithy-client': 4.1.3 '@smithy/types': 4.1.0 '@smithy/url-parser': 4.0.1 '@smithy/util-base64': 4.0.0 '@smithy/util-body-length-browser': 4.0.0 '@smithy/util-body-length-node': 4.0.0 - '@smithy/util-defaults-mode-browser': 4.0.3 - '@smithy/util-defaults-mode-node': 4.0.3 + '@smithy/util-defaults-mode-browser': 4.0.4 + '@smithy/util-defaults-mode-node': 4.0.4 '@smithy/util-endpoints': 3.0.1 '@smithy/util-middleware': 4.0.1 '@smithy/util-retry': 4.0.1 @@ -6639,26 +6643,26 @@ snapshots: '@aws-sdk/util-user-agent-browser': 3.734.0 '@aws-sdk/util-user-agent-node': 3.734.0 '@smithy/config-resolver': 4.0.1 - '@smithy/core': 3.1.1 + '@smithy/core': 3.1.2 '@smithy/fetch-http-handler': 5.0.1 '@smithy/hash-node': 4.0.1 '@smithy/invalid-dependency': 4.0.1 '@smithy/middleware-content-length': 4.0.1 - '@smithy/middleware-endpoint': 4.0.2 - '@smithy/middleware-retry': 4.0.3 - '@smithy/middleware-serde': 4.0.1 + '@smithy/middleware-endpoint': 4.0.3 + '@smithy/middleware-retry': 4.0.4 + '@smithy/middleware-serde': 4.0.2 '@smithy/middleware-stack': 4.0.1 '@smithy/node-config-provider': 4.0.1 '@smithy/node-http-handler': 4.0.2 '@smithy/protocol-http': 5.0.1 - '@smithy/smithy-client': 4.1.2 + '@smithy/smithy-client': 4.1.3 '@smithy/types': 4.1.0 '@smithy/url-parser': 4.0.1 '@smithy/util-base64': 4.0.0 '@smithy/util-body-length-browser': 4.0.0 '@smithy/util-body-length-node': 4.0.0 - '@smithy/util-defaults-mode-browser': 4.0.3 - '@smithy/util-defaults-mode-node': 4.0.3 + '@smithy/util-defaults-mode-browser': 4.0.4 + '@smithy/util-defaults-mode-node': 4.0.4 '@smithy/util-endpoints': 3.0.1 '@smithy/util-middleware': 4.0.1 '@smithy/util-retry': 4.0.1 @@ -6686,26 +6690,26 @@ snapshots: '@aws-sdk/util-user-agent-browser': 3.734.0 '@aws-sdk/util-user-agent-node': 3.734.0 '@smithy/config-resolver': 4.0.1 - '@smithy/core': 3.1.1 + '@smithy/core': 3.1.2 '@smithy/fetch-http-handler': 5.0.1 '@smithy/hash-node': 4.0.1 '@smithy/invalid-dependency': 4.0.1 '@smithy/middleware-content-length': 4.0.1 - '@smithy/middleware-endpoint': 4.0.2 - '@smithy/middleware-retry': 4.0.3 - '@smithy/middleware-serde': 4.0.1 + '@smithy/middleware-endpoint': 4.0.3 + '@smithy/middleware-retry': 4.0.4 + '@smithy/middleware-serde': 4.0.2 '@smithy/middleware-stack': 4.0.1 '@smithy/node-config-provider': 4.0.1 '@smithy/node-http-handler': 4.0.2 '@smithy/protocol-http': 5.0.1 - '@smithy/smithy-client': 4.1.2 + '@smithy/smithy-client': 4.1.3 '@smithy/types': 4.1.0 '@smithy/url-parser': 4.0.1 '@smithy/util-base64': 4.0.0 '@smithy/util-body-length-browser': 4.0.0 '@smithy/util-body-length-node': 4.0.0 - '@smithy/util-defaults-mode-browser': 4.0.3 - '@smithy/util-defaults-mode-node': 4.0.3 + '@smithy/util-defaults-mode-browser': 4.0.4 + '@smithy/util-defaults-mode-node': 4.0.4 '@smithy/util-endpoints': 3.0.1 '@smithy/util-middleware': 4.0.1 '@smithy/util-retry': 4.0.1 @@ -6732,26 +6736,26 @@ snapshots: '@aws-sdk/util-user-agent-browser': 3.734.0 '@aws-sdk/util-user-agent-node': 3.734.0 '@smithy/config-resolver': 4.0.1 - '@smithy/core': 3.1.1 + '@smithy/core': 3.1.2 '@smithy/fetch-http-handler': 5.0.1 '@smithy/hash-node': 4.0.1 '@smithy/invalid-dependency': 4.0.1 '@smithy/middleware-content-length': 4.0.1 - '@smithy/middleware-endpoint': 4.0.2 - '@smithy/middleware-retry': 4.0.3 - '@smithy/middleware-serde': 4.0.1 + '@smithy/middleware-endpoint': 4.0.3 + '@smithy/middleware-retry': 4.0.4 + '@smithy/middleware-serde': 4.0.2 '@smithy/middleware-stack': 4.0.1 '@smithy/node-config-provider': 4.0.1 '@smithy/node-http-handler': 4.0.2 '@smithy/protocol-http': 5.0.1 - '@smithy/smithy-client': 4.1.2 + '@smithy/smithy-client': 4.1.3 '@smithy/types': 4.1.0 '@smithy/url-parser': 4.0.1 '@smithy/util-base64': 4.0.0 '@smithy/util-body-length-browser': 4.0.0 '@smithy/util-body-length-node': 4.0.0 - '@smithy/util-defaults-mode-browser': 4.0.3 - '@smithy/util-defaults-mode-node': 4.0.3 + '@smithy/util-defaults-mode-browser': 4.0.4 + '@smithy/util-defaults-mode-node': 4.0.4 '@smithy/util-endpoints': 3.0.1 '@smithy/util-middleware': 4.0.1 '@smithy/util-retry': 4.0.1 @@ -6786,7 +6790,7 @@ snapshots: '@aws-sdk/util-user-agent-node': 3.734.0 '@aws-sdk/xml-builder': 3.734.0 '@smithy/config-resolver': 4.0.1 - '@smithy/core': 3.1.1 + '@smithy/core': 3.1.2 '@smithy/eventstream-serde-browser': 4.0.1 '@smithy/eventstream-serde-config-resolver': 4.0.1 '@smithy/eventstream-serde-node': 4.0.1 @@ -6797,21 +6801,21 @@ snapshots: '@smithy/invalid-dependency': 4.0.1 '@smithy/md5-js': 4.0.1 '@smithy/middleware-content-length': 4.0.1 - '@smithy/middleware-endpoint': 4.0.2 - '@smithy/middleware-retry': 4.0.3 - '@smithy/middleware-serde': 4.0.1 + '@smithy/middleware-endpoint': 4.0.3 + '@smithy/middleware-retry': 4.0.4 + '@smithy/middleware-serde': 4.0.2 '@smithy/middleware-stack': 4.0.1 '@smithy/node-config-provider': 4.0.1 '@smithy/node-http-handler': 4.0.2 '@smithy/protocol-http': 5.0.1 - '@smithy/smithy-client': 4.1.2 + '@smithy/smithy-client': 4.1.3 '@smithy/types': 4.1.0 '@smithy/url-parser': 4.0.1 '@smithy/util-base64': 4.0.0 '@smithy/util-body-length-browser': 4.0.0 '@smithy/util-body-length-node': 4.0.0 - '@smithy/util-defaults-mode-browser': 4.0.3 - '@smithy/util-defaults-mode-node': 4.0.3 + '@smithy/util-defaults-mode-browser': 4.0.4 + '@smithy/util-defaults-mode-node': 4.0.4 '@smithy/util-endpoints': 3.0.1 '@smithy/util-middleware': 4.0.1 '@smithy/util-retry': 4.0.1 @@ -6837,26 +6841,26 @@ snapshots: '@aws-sdk/util-user-agent-browser': 3.734.0 '@aws-sdk/util-user-agent-node': 3.734.0 '@smithy/config-resolver': 4.0.1 - '@smithy/core': 3.1.1 + '@smithy/core': 3.1.2 '@smithy/fetch-http-handler': 5.0.1 '@smithy/hash-node': 4.0.1 '@smithy/invalid-dependency': 4.0.1 '@smithy/middleware-content-length': 4.0.1 - '@smithy/middleware-endpoint': 4.0.2 - '@smithy/middleware-retry': 4.0.3 - '@smithy/middleware-serde': 4.0.1 + '@smithy/middleware-endpoint': 4.0.3 + '@smithy/middleware-retry': 4.0.4 + '@smithy/middleware-serde': 4.0.2 '@smithy/middleware-stack': 4.0.1 '@smithy/node-config-provider': 4.0.1 '@smithy/node-http-handler': 4.0.2 '@smithy/protocol-http': 5.0.1 - '@smithy/smithy-client': 4.1.2 + '@smithy/smithy-client': 4.1.3 '@smithy/types': 4.1.0 '@smithy/url-parser': 4.0.1 '@smithy/util-base64': 4.0.0 '@smithy/util-body-length-browser': 4.0.0 '@smithy/util-body-length-node': 4.0.0 - '@smithy/util-defaults-mode-browser': 4.0.3 - '@smithy/util-defaults-mode-node': 4.0.3 + '@smithy/util-defaults-mode-browser': 4.0.4 + '@smithy/util-defaults-mode-node': 4.0.4 '@smithy/util-endpoints': 3.0.1 '@smithy/util-middleware': 4.0.1 '@smithy/util-retry': 4.0.1 @@ -6868,12 +6872,12 @@ snapshots: '@aws-sdk/core@3.734.0': dependencies: '@aws-sdk/types': 3.734.0 - '@smithy/core': 3.1.1 + '@smithy/core': 3.1.2 '@smithy/node-config-provider': 4.0.1 '@smithy/property-provider': 4.0.1 '@smithy/protocol-http': 5.0.1 '@smithy/signature-v4': 5.0.1 - '@smithy/smithy-client': 4.1.2 + '@smithy/smithy-client': 4.1.3 '@smithy/types': 4.1.0 '@smithy/util-middleware': 4.0.1 fast-xml-parser: 4.4.1 @@ -6905,7 +6909,7 @@ snapshots: '@smithy/node-http-handler': 4.0.2 '@smithy/property-provider': 4.0.1 '@smithy/protocol-http': 5.0.1 - '@smithy/smithy-client': 4.1.2 + '@smithy/smithy-client': 4.1.3 '@smithy/types': 4.1.0 '@smithy/util-stream': 4.0.2 tslib: 2.8.1 @@ -6992,7 +6996,7 @@ snapshots: '@aws-sdk/credential-provider-web-identity': 3.734.0 '@aws-sdk/nested-clients': 3.734.0 '@aws-sdk/types': 3.734.0 - '@smithy/core': 3.1.1 + '@smithy/core': 3.1.2 '@smithy/credential-provider-imds': 4.0.1 '@smithy/property-provider': 4.0.1 '@smithy/types': 4.1.0 @@ -7063,10 +7067,10 @@ snapshots: dependencies: '@aws-sdk/types': 3.734.0 '@aws-sdk/util-format-url': 3.734.0 - '@smithy/middleware-endpoint': 4.0.2 + '@smithy/middleware-endpoint': 4.0.3 '@smithy/protocol-http': 5.0.1 '@smithy/signature-v4': 5.0.1 - '@smithy/smithy-client': 4.1.2 + '@smithy/smithy-client': 4.1.3 '@smithy/types': 4.1.0 tslib: 2.8.1 @@ -7074,7 +7078,7 @@ snapshots: dependencies: '@aws-sdk/types': 3.734.0 '@aws-sdk/util-format-url': 3.734.0 - '@smithy/middleware-endpoint': 4.0.2 + '@smithy/middleware-endpoint': 4.0.3 '@smithy/protocol-http': 5.0.1 '@smithy/signature-v4': 5.0.1 '@smithy/types': 4.1.0 @@ -7085,11 +7089,11 @@ snapshots: '@aws-sdk/core': 3.734.0 '@aws-sdk/types': 3.734.0 '@aws-sdk/util-arn-parser': 3.723.0 - '@smithy/core': 3.1.1 + '@smithy/core': 3.1.2 '@smithy/node-config-provider': 4.0.1 '@smithy/protocol-http': 5.0.1 '@smithy/signature-v4': 5.0.1 - '@smithy/smithy-client': 4.1.2 + '@smithy/smithy-client': 4.1.3 '@smithy/types': 4.1.0 '@smithy/util-config-provider': 4.0.0 '@smithy/util-middleware': 4.0.1 @@ -7108,7 +7112,7 @@ snapshots: '@aws-sdk/core': 3.734.0 '@aws-sdk/types': 3.734.0 '@aws-sdk/util-endpoints': 3.734.0 - '@smithy/core': 3.1.1 + '@smithy/core': 3.1.2 '@smithy/protocol-http': 5.0.1 '@smithy/types': 4.1.0 tslib: 2.8.1 @@ -7128,26 +7132,26 @@ snapshots: '@aws-sdk/util-user-agent-browser': 3.734.0 '@aws-sdk/util-user-agent-node': 3.734.0 '@smithy/config-resolver': 4.0.1 - '@smithy/core': 3.1.1 + '@smithy/core': 3.1.2 '@smithy/fetch-http-handler': 5.0.1 '@smithy/hash-node': 4.0.1 '@smithy/invalid-dependency': 4.0.1 '@smithy/middleware-content-length': 4.0.1 - '@smithy/middleware-endpoint': 4.0.2 - '@smithy/middleware-retry': 4.0.3 - '@smithy/middleware-serde': 4.0.1 + '@smithy/middleware-endpoint': 4.0.3 + '@smithy/middleware-retry': 4.0.4 + '@smithy/middleware-serde': 4.0.2 '@smithy/middleware-stack': 4.0.1 '@smithy/node-config-provider': 4.0.1 '@smithy/node-http-handler': 4.0.2 '@smithy/protocol-http': 5.0.1 - '@smithy/smithy-client': 4.1.2 + '@smithy/smithy-client': 4.1.3 '@smithy/types': 4.1.0 '@smithy/url-parser': 4.0.1 '@smithy/util-base64': 4.0.0 '@smithy/util-body-length-browser': 4.0.0 '@smithy/util-body-length-node': 4.0.0 - '@smithy/util-defaults-mode-browser': 4.0.3 - '@smithy/util-defaults-mode-node': 4.0.3 + '@smithy/util-defaults-mode-browser': 4.0.4 + '@smithy/util-defaults-mode-node': 4.0.4 '@smithy/util-endpoints': 3.0.1 '@smithy/util-middleware': 4.0.1 '@smithy/util-retry': 4.0.1 @@ -7451,7 +7455,7 @@ snapshots: espree: 9.6.1 globals: 13.24.0 ignore: 5.3.2 - import-fresh: 3.3.0 + import-fresh: 3.3.1 js-yaml: 4.1.0 minimatch: 3.1.2 strip-json-comments: 3.1.1 @@ -7508,7 +7512,7 @@ snapshots: jest-util: 29.7.0 slash: 3.0.0 - '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.10.9)(@types/node@22.10.9)(typescript@5.7.3))': + '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.10.11)(@types/node@22.10.9)(typescript@5.7.3))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 @@ -7522,7 +7526,7 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@22.10.9)(ts-node@10.9.2(@swc/core@1.10.9)(@types/node@22.10.9)(typescript@5.7.3)) + jest-config: 29.7.0(@types/node@22.10.9)(ts-node@10.9.2(@swc/core@1.10.11)(@types/node@22.10.9)(typescript@5.7.3)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -7723,7 +7727,7 @@ snapshots: '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.18.0 + fastq: 1.19.0 '@nolyfill/is-core-module@1.0.39': {} @@ -7749,7 +7753,7 @@ snapshots: '@octokit/auth-token@4.0.0': {} - '@octokit/auth-token@5.1.1': {} + '@octokit/auth-token@5.1.2': {} '@octokit/core@5.2.0': dependencies: @@ -7757,40 +7761,40 @@ snapshots: '@octokit/graphql': 7.1.0 '@octokit/request': 8.4.0 '@octokit/request-error': 5.1.0 - '@octokit/types': 13.7.0 + '@octokit/types': 13.8.0 before-after-hook: 2.2.3 universal-user-agent: 6.0.1 '@octokit/core@6.1.3': dependencies: - '@octokit/auth-token': 5.1.1 - '@octokit/graphql': 8.1.2 + '@octokit/auth-token': 5.1.2 + '@octokit/graphql': 8.2.0 '@octokit/request': 9.2.0 '@octokit/request-error': 6.1.6 - '@octokit/types': 13.7.0 + '@octokit/types': 13.8.0 before-after-hook: 3.0.2 universal-user-agent: 7.0.2 '@octokit/endpoint@10.1.2': dependencies: - '@octokit/types': 13.7.0 + '@octokit/types': 13.8.0 universal-user-agent: 7.0.2 '@octokit/endpoint@9.0.5': dependencies: - '@octokit/types': 13.7.0 + '@octokit/types': 13.8.0 universal-user-agent: 6.0.1 '@octokit/graphql@7.1.0': dependencies: '@octokit/request': 8.4.0 - '@octokit/types': 13.7.0 + '@octokit/types': 13.8.0 universal-user-agent: 6.0.1 - '@octokit/graphql@8.1.2': + '@octokit/graphql@8.2.0': dependencies: '@octokit/request': 9.2.0 - '@octokit/types': 13.7.0 + '@octokit/types': 13.8.0 universal-user-agent: 7.0.2 '@octokit/openapi-types@23.0.1': {} @@ -7798,12 +7802,12 @@ snapshots: '@octokit/plugin-paginate-rest@11.3.1(@octokit/core@5.2.0)': dependencies: '@octokit/core': 5.2.0 - '@octokit/types': 13.7.0 + '@octokit/types': 13.8.0 '@octokit/plugin-paginate-rest@11.4.0(@octokit/core@6.1.3)': dependencies: '@octokit/core': 6.1.3 - '@octokit/types': 13.7.0 + '@octokit/types': 13.8.0 '@octokit/plugin-request-log@4.0.1(@octokit/core@5.2.0)': dependencies: @@ -7812,43 +7816,43 @@ snapshots: '@octokit/plugin-rest-endpoint-methods@13.2.2(@octokit/core@5.2.0)': dependencies: '@octokit/core': 5.2.0 - '@octokit/types': 13.7.0 + '@octokit/types': 13.8.0 '@octokit/plugin-retry@7.1.3(@octokit/core@6.1.3)': dependencies: '@octokit/core': 6.1.3 '@octokit/request-error': 6.1.6 - '@octokit/types': 13.7.0 + '@octokit/types': 13.8.0 bottleneck: 2.19.5 '@octokit/plugin-throttling@9.4.0(@octokit/core@6.1.3)': dependencies: '@octokit/core': 6.1.3 - '@octokit/types': 13.7.0 + '@octokit/types': 13.8.0 bottleneck: 2.19.5 '@octokit/request-error@5.1.0': dependencies: - '@octokit/types': 13.7.0 + '@octokit/types': 13.8.0 deprecation: 2.3.1 once: 1.4.0 '@octokit/request-error@6.1.6': dependencies: - '@octokit/types': 13.7.0 + '@octokit/types': 13.8.0 '@octokit/request@8.4.0': dependencies: '@octokit/endpoint': 9.0.5 '@octokit/request-error': 5.1.0 - '@octokit/types': 13.7.0 + '@octokit/types': 13.8.0 universal-user-agent: 6.0.1 '@octokit/request@9.2.0': dependencies: '@octokit/endpoint': 10.1.2 '@octokit/request-error': 6.1.6 - '@octokit/types': 13.7.0 + '@octokit/types': 13.8.0 fast-content-type-parse: 2.0.1 universal-user-agent: 7.0.2 @@ -7859,7 +7863,7 @@ snapshots: '@octokit/plugin-request-log': 4.0.1(@octokit/core@5.2.0) '@octokit/plugin-rest-endpoint-methods': 13.2.2(@octokit/core@5.2.0) - '@octokit/types@13.7.0': + '@octokit/types@13.8.0': dependencies: '@octokit/openapi-types': 23.0.1 @@ -7919,7 +7923,7 @@ snapshots: '@opentelemetry/api-logs': 0.57.1 '@types/shimmer': 1.2.0 import-in-the-middle: 1.12.0 - require-in-the-middle: 7.4.0 + require-in-the-middle: 7.5.0 semver: 7.6.3 shimmer: 1.2.1 transitivePeerDependencies: @@ -8321,9 +8325,9 @@ snapshots: '@smithy/util-middleware': 4.0.1 tslib: 2.8.1 - '@smithy/core@3.1.1': + '@smithy/core@3.1.2': dependencies: - '@smithy/middleware-serde': 4.0.1 + '@smithy/middleware-serde': 4.0.2 '@smithy/protocol-http': 5.0.1 '@smithy/types': 4.1.0 '@smithy/util-body-length-browser': 4.0.0 @@ -8423,10 +8427,10 @@ snapshots: '@smithy/types': 4.1.0 tslib: 2.8.1 - '@smithy/middleware-endpoint@4.0.2': + '@smithy/middleware-endpoint@4.0.3': dependencies: - '@smithy/core': 3.1.1 - '@smithy/middleware-serde': 4.0.1 + '@smithy/core': 3.1.2 + '@smithy/middleware-serde': 4.0.2 '@smithy/node-config-provider': 4.0.1 '@smithy/shared-ini-file-loader': 4.0.1 '@smithy/types': 4.1.0 @@ -8434,19 +8438,19 @@ snapshots: '@smithy/util-middleware': 4.0.1 tslib: 2.8.1 - '@smithy/middleware-retry@4.0.3': + '@smithy/middleware-retry@4.0.4': dependencies: '@smithy/node-config-provider': 4.0.1 '@smithy/protocol-http': 5.0.1 '@smithy/service-error-classification': 4.0.1 - '@smithy/smithy-client': 4.1.2 + '@smithy/smithy-client': 4.1.3 '@smithy/types': 4.1.0 '@smithy/util-middleware': 4.0.1 '@smithy/util-retry': 4.0.1 tslib: 2.8.1 uuid: 9.0.1 - '@smithy/middleware-serde@4.0.1': + '@smithy/middleware-serde@4.0.2': dependencies: '@smithy/types': 4.1.0 tslib: 2.8.1 @@ -8512,10 +8516,10 @@ snapshots: '@smithy/util-utf8': 4.0.0 tslib: 2.8.1 - '@smithy/smithy-client@4.1.2': + '@smithy/smithy-client@4.1.3': dependencies: - '@smithy/core': 3.1.1 - '@smithy/middleware-endpoint': 4.0.2 + '@smithy/core': 3.1.2 + '@smithy/middleware-endpoint': 4.0.3 '@smithy/middleware-stack': 4.0.1 '@smithy/protocol-http': 5.0.1 '@smithy/types': 4.1.0 @@ -8560,21 +8564,21 @@ snapshots: dependencies: tslib: 2.8.1 - '@smithy/util-defaults-mode-browser@4.0.3': + '@smithy/util-defaults-mode-browser@4.0.4': dependencies: '@smithy/property-provider': 4.0.1 - '@smithy/smithy-client': 4.1.2 + '@smithy/smithy-client': 4.1.3 '@smithy/types': 4.1.0 bowser: 2.11.0 tslib: 2.8.1 - '@smithy/util-defaults-mode-node@4.0.3': + '@smithy/util-defaults-mode-node@4.0.4': dependencies: '@smithy/config-resolver': 4.0.1 '@smithy/credential-provider-imds': 4.0.1 '@smithy/node-config-provider': 4.0.1 '@smithy/property-provider': 4.0.1 - '@smithy/smithy-client': 4.1.2 + '@smithy/smithy-client': 4.1.3 '@smithy/types': 4.1.0 tslib: 2.8.1 @@ -8630,51 +8634,51 @@ snapshots: '@smithy/types': 4.1.0 tslib: 2.8.1 - '@swc/core-darwin-arm64@1.10.9': + '@swc/core-darwin-arm64@1.10.11': optional: true - '@swc/core-darwin-x64@1.10.9': + '@swc/core-darwin-x64@1.10.11': optional: true - '@swc/core-linux-arm-gnueabihf@1.10.9': + '@swc/core-linux-arm-gnueabihf@1.10.11': optional: true - '@swc/core-linux-arm64-gnu@1.10.9': + '@swc/core-linux-arm64-gnu@1.10.11': optional: true - '@swc/core-linux-arm64-musl@1.10.9': + '@swc/core-linux-arm64-musl@1.10.11': optional: true - '@swc/core-linux-x64-gnu@1.10.9': + '@swc/core-linux-x64-gnu@1.10.11': optional: true - '@swc/core-linux-x64-musl@1.10.9': + '@swc/core-linux-x64-musl@1.10.11': optional: true - '@swc/core-win32-arm64-msvc@1.10.9': + '@swc/core-win32-arm64-msvc@1.10.11': optional: true - '@swc/core-win32-ia32-msvc@1.10.9': + '@swc/core-win32-ia32-msvc@1.10.11': optional: true - '@swc/core-win32-x64-msvc@1.10.9': + '@swc/core-win32-x64-msvc@1.10.11': optional: true - '@swc/core@1.10.9': + '@swc/core@1.10.11': dependencies: '@swc/counter': 0.1.3 '@swc/types': 0.1.17 optionalDependencies: - '@swc/core-darwin-arm64': 1.10.9 - '@swc/core-darwin-x64': 1.10.9 - '@swc/core-linux-arm-gnueabihf': 1.10.9 - '@swc/core-linux-arm64-gnu': 1.10.9 - '@swc/core-linux-arm64-musl': 1.10.9 - '@swc/core-linux-x64-gnu': 1.10.9 - '@swc/core-linux-x64-musl': 1.10.9 - '@swc/core-win32-arm64-msvc': 1.10.9 - '@swc/core-win32-ia32-msvc': 1.10.9 - '@swc/core-win32-x64-msvc': 1.10.9 + '@swc/core-darwin-arm64': 1.10.11 + '@swc/core-darwin-x64': 1.10.11 + '@swc/core-linux-arm-gnueabihf': 1.10.11 + '@swc/core-linux-arm64-gnu': 1.10.11 + '@swc/core-linux-arm64-musl': 1.10.11 + '@swc/core-linux-x64-gnu': 1.10.11 + '@swc/core-linux-x64-musl': 1.10.11 + '@swc/core-win32-arm64-msvc': 1.10.11 + '@swc/core-win32-ia32-msvc': 1.10.11 + '@swc/core-win32-x64-msvc': 1.10.11 '@swc/counter@0.1.3': {} @@ -8859,7 +8863,7 @@ snapshots: '@types/linkify-markdown@1.0.3': {} - '@types/lodash@4.17.14': {} + '@types/lodash@4.17.15': {} '@types/luxon@3.4.2': {} @@ -8950,19 +8954,19 @@ snapshots: '@types/node': 22.10.9 optional: true - '@typescript-eslint/eslint-plugin@8.20.0(@typescript-eslint/parser@8.20.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1)(typescript@5.7.3)': + '@typescript-eslint/eslint-plugin@8.22.0(@typescript-eslint/parser@8.22.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1)(typescript@5.7.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.20.0(eslint@8.57.1)(typescript@5.7.3) - '@typescript-eslint/scope-manager': 8.20.0 - '@typescript-eslint/type-utils': 8.20.0(eslint@8.57.1)(typescript@5.7.3) - '@typescript-eslint/utils': 8.20.0(eslint@8.57.1)(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 8.20.0 + '@typescript-eslint/parser': 8.22.0(eslint@8.57.1)(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.22.0 + '@typescript-eslint/type-utils': 8.22.0(eslint@8.57.1)(typescript@5.7.3) + '@typescript-eslint/utils': 8.22.0(eslint@8.57.1)(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.22.0 eslint: 8.57.1 graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 2.0.0(typescript@5.7.3) + ts-api-utils: 2.0.1(typescript@5.7.3) typescript: 5.7.3 transitivePeerDependencies: - supports-color @@ -8975,12 +8979,12 @@ snapshots: - supports-color - typescript - '@typescript-eslint/parser@8.20.0(eslint@8.57.1)(typescript@5.7.3)': + '@typescript-eslint/parser@8.22.0(eslint@8.57.1)(typescript@5.7.3)': dependencies: - '@typescript-eslint/scope-manager': 8.20.0 - '@typescript-eslint/types': 8.20.0 - '@typescript-eslint/typescript-estree': 8.20.0(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 8.20.0 + '@typescript-eslint/scope-manager': 8.22.0 + '@typescript-eslint/types': 8.22.0 + '@typescript-eslint/typescript-estree': 8.22.0(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.22.0 debug: 4.4.0 eslint: 8.57.1 typescript: 5.7.3 @@ -8992,32 +8996,32 @@ snapshots: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - '@typescript-eslint/scope-manager@8.20.0': + '@typescript-eslint/scope-manager@8.22.0': dependencies: - '@typescript-eslint/types': 8.20.0 - '@typescript-eslint/visitor-keys': 8.20.0 + '@typescript-eslint/types': 8.22.0 + '@typescript-eslint/visitor-keys': 8.22.0 - '@typescript-eslint/scope-manager@8.21.0': + '@typescript-eslint/scope-manager@8.23.0': dependencies: - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/visitor-keys': 8.21.0 + '@typescript-eslint/types': 8.23.0 + '@typescript-eslint/visitor-keys': 8.23.0 - '@typescript-eslint/type-utils@8.20.0(eslint@8.57.1)(typescript@5.7.3)': + '@typescript-eslint/type-utils@8.22.0(eslint@8.57.1)(typescript@5.7.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.20.0(typescript@5.7.3) - '@typescript-eslint/utils': 8.20.0(eslint@8.57.1)(typescript@5.7.3) + '@typescript-eslint/typescript-estree': 8.22.0(typescript@5.7.3) + '@typescript-eslint/utils': 8.22.0(eslint@8.57.1)(typescript@5.7.3) debug: 4.4.0 eslint: 8.57.1 - ts-api-utils: 2.0.0(typescript@5.7.3) + ts-api-utils: 2.0.1(typescript@5.7.3) typescript: 5.7.3 transitivePeerDependencies: - supports-color '@typescript-eslint/types@5.62.0': {} - '@typescript-eslint/types@8.20.0': {} + '@typescript-eslint/types@8.22.0': {} - '@typescript-eslint/types@8.21.0': {} + '@typescript-eslint/types@8.23.0': {} '@typescript-eslint/typescript-estree@5.62.0(typescript@5.7.3)': dependencies: @@ -9033,30 +9037,30 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.20.0(typescript@5.7.3)': + '@typescript-eslint/typescript-estree@8.22.0(typescript@5.7.3)': dependencies: - '@typescript-eslint/types': 8.20.0 - '@typescript-eslint/visitor-keys': 8.20.0 + '@typescript-eslint/types': 8.22.0 + '@typescript-eslint/visitor-keys': 8.22.0 debug: 4.4.0 fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 - ts-api-utils: 2.0.0(typescript@5.7.3) + ts-api-utils: 2.0.1(typescript@5.7.3) typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.21.0(typescript@5.7.3)': + '@typescript-eslint/typescript-estree@8.23.0(typescript@5.7.3)': dependencies: - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/visitor-keys': 8.21.0 + '@typescript-eslint/types': 8.23.0 + '@typescript-eslint/visitor-keys': 8.23.0 debug: 4.4.0 fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 - ts-api-utils: 2.0.0(typescript@5.7.3) + ts-api-utils: 2.0.1(typescript@5.7.3) typescript: 5.7.3 transitivePeerDependencies: - supports-color @@ -9076,23 +9080,23 @@ snapshots: - supports-color - typescript - '@typescript-eslint/utils@8.20.0(eslint@8.57.1)(typescript@5.7.3)': + '@typescript-eslint/utils@8.22.0(eslint@8.57.1)(typescript@5.7.3)': dependencies: '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) - '@typescript-eslint/scope-manager': 8.20.0 - '@typescript-eslint/types': 8.20.0 - '@typescript-eslint/typescript-estree': 8.20.0(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.22.0 + '@typescript-eslint/types': 8.22.0 + '@typescript-eslint/typescript-estree': 8.22.0(typescript@5.7.3) eslint: 8.57.1 typescript: 5.7.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.21.0(eslint@8.57.1)(typescript@5.7.3)': + '@typescript-eslint/utils@8.23.0(eslint@8.57.1)(typescript@5.7.3)': dependencies: '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) - '@typescript-eslint/scope-manager': 8.21.0 - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.23.0 + '@typescript-eslint/types': 8.23.0 + '@typescript-eslint/typescript-estree': 8.23.0(typescript@5.7.3) eslint: 8.57.1 typescript: 5.7.3 transitivePeerDependencies: @@ -9103,14 +9107,14 @@ snapshots: '@typescript-eslint/types': 5.62.0 eslint-visitor-keys: 3.4.3 - '@typescript-eslint/visitor-keys@8.20.0': + '@typescript-eslint/visitor-keys@8.22.0': dependencies: - '@typescript-eslint/types': 8.20.0 + '@typescript-eslint/types': 8.22.0 eslint-visitor-keys: 4.2.0 - '@typescript-eslint/visitor-keys@8.21.0': + '@typescript-eslint/visitor-keys@8.23.0': dependencies: - '@typescript-eslint/types': 8.21.0 + '@typescript-eslint/types': 8.23.0 eslint-visitor-keys: 4.2.0 '@ungap/structured-clone@1.3.0': {} @@ -9455,8 +9459,8 @@ snapshots: browserslist@4.24.4: dependencies: - caniuse-lite: 1.0.30001695 - electron-to-chromium: 1.5.88 + caniuse-lite: 1.0.30001697 + electron-to-chromium: 1.5.91 node-releases: 2.0.19 update-browserslist-db: 1.1.2(browserslist@4.24.4) @@ -9569,7 +9573,7 @@ snapshots: camelcase@6.3.0: {} - caniuse-lite@1.0.30001695: {} + caniuse-lite@1.0.30001697: {} chalk@2.4.2: dependencies: @@ -9616,7 +9620,7 @@ snapshots: ci-info@4.1.0: {} - cjs-module-lexer@1.4.1: {} + cjs-module-lexer@1.4.3: {} clean-git-ref@2.0.1: {} @@ -9749,19 +9753,19 @@ snapshots: cosmiconfig@9.0.0(typescript@5.7.3): dependencies: env-paths: 2.2.1 - import-fresh: 3.3.0 + import-fresh: 3.3.1 js-yaml: 4.1.0 parse-json: 5.2.0 optionalDependencies: typescript: 5.7.3 - create-jest@29.7.0(@types/node@22.10.9)(ts-node@10.9.2(@swc/core@1.10.9)(@types/node@22.10.9)(typescript@5.7.3)): + create-jest@29.7.0(@types/node@22.10.9)(ts-node@10.9.2(@swc/core@1.10.11)(@types/node@22.10.9)(typescript@5.7.3)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@22.10.9)(ts-node@10.9.2(@swc/core@1.10.9)(@types/node@22.10.9)(typescript@5.7.3)) + jest-config: 29.7.0(@types/node@22.10.9)(ts-node@10.9.2(@swc/core@1.10.11)(@types/node@22.10.9)(typescript@5.7.3)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -9958,7 +9962,7 @@ snapshots: dependencies: jake: 10.9.2 - electron-to-chromium@1.5.88: {} + electron-to-chromium@1.5.91: {} email-addresses@5.0.0: {} @@ -9989,7 +9993,7 @@ snapshots: dependencies: once: 1.4.0 - enhanced-resolve@5.18.0: + enhanced-resolve@5.18.1: dependencies: graceful-fs: 4.2.11 tapable: 2.2.1 @@ -10045,7 +10049,7 @@ snapshots: is-shared-array-buffer: 1.0.4 is-string: 1.1.1 is-typed-array: 1.1.15 - is-weakref: 1.1.0 + is-weakref: 1.1.1 math-intrinsics: 1.1.0 object-inspect: 1.13.3 object-keys: 1.1.1 @@ -10128,7 +10132,7 @@ snapshots: dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.0 - enhanced-resolve: 5.18.0 + enhanced-resolve: 5.18.1 eslint: 8.57.1 fast-glob: 3.3.3 get-tsconfig: 4.10.0 @@ -10136,22 +10140,22 @@ snapshots: is-glob: 4.0.3 stable-hash: 0.0.4 optionalDependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.20.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.22.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.20.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.22.0(eslint@8.57.1)(typescript@5.7.3))(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.20.0(eslint@8.57.1)(typescript@5.7.3) + '@typescript-eslint/parser': 8.22.0(eslint@8.57.1)(typescript@5.7.3) eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 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.20.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.22.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -10162,7 +10166,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.20.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@8.57.1) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.22.0(eslint@8.57.1)(typescript@5.7.3))(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.1 is-glob: 4.0.3 @@ -10174,7 +10178,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.20.0(eslint@8.57.1)(typescript@5.7.3) + '@typescript-eslint/parser': 8.22.0(eslint@8.57.1)(typescript@5.7.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -10184,13 +10188,13 @@ snapshots: dependencies: eslint: 8.57.1 - eslint-plugin-jest@28.11.0(@typescript-eslint/eslint-plugin@8.20.0(@typescript-eslint/parser@8.20.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1)(jest@29.7.0(@types/node@22.10.9)(ts-node@10.9.2(@swc/core@1.10.9)(@types/node@22.10.9)(typescript@5.7.3)))(typescript@5.7.3): + eslint-plugin-jest@28.11.0(@typescript-eslint/eslint-plugin@8.22.0(@typescript-eslint/parser@8.22.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1)(jest@29.7.0(@types/node@22.10.9)(ts-node@10.9.2(@swc/core@1.10.11)(@types/node@22.10.9)(typescript@5.7.3)))(typescript@5.7.3): dependencies: - '@typescript-eslint/utils': 8.21.0(eslint@8.57.1)(typescript@5.7.3) + '@typescript-eslint/utils': 8.23.0(eslint@8.57.1)(typescript@5.7.3) eslint: 8.57.1 optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.20.0(@typescript-eslint/parser@8.20.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1)(typescript@5.7.3) - jest: 29.7.0(@types/node@22.10.9)(ts-node@10.9.2(@swc/core@1.10.9)(@types/node@22.10.9)(typescript@5.7.3)) + '@typescript-eslint/eslint-plugin': 8.22.0(@typescript-eslint/parser@8.22.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1)(typescript@5.7.3) + jest: 29.7.0(@types/node@22.10.9)(ts-node@10.9.2(@swc/core@1.10.11)(@types/node@22.10.9)(typescript@5.7.3)) transitivePeerDependencies: - supports-color - typescript @@ -10384,7 +10388,7 @@ snapshots: dependencies: strnum: 1.0.5 - fastq@1.18.0: + fastq@1.19.0: dependencies: reusify: 1.0.4 @@ -10539,9 +10543,10 @@ snapshots: - encoding - supports-color - gcp-metadata@6.1.0(encoding@0.1.13): + gcp-metadata@6.1.1(encoding@0.1.13): dependencies: gaxios: 6.7.1(encoding@0.1.13) + google-logging-utils: 0.0.2 json-bigint: 1.0.0 transitivePeerDependencies: - encoding @@ -10714,13 +10719,15 @@ snapshots: base64-js: 1.5.1 ecdsa-sig-formatter: 1.0.11 gaxios: 6.7.1(encoding@0.1.13) - gcp-metadata: 6.1.0(encoding@0.1.13) + gcp-metadata: 6.1.1(encoding@0.1.13) gtoken: 7.1.0(encoding@0.1.13) jws: 4.0.0 transitivePeerDependencies: - encoding - supports-color + google-logging-utils@0.0.2: {} + gopd@1.2.0: {} got@11.8.6: @@ -10882,7 +10889,7 @@ snapshots: immediate@3.0.6: {} - import-fresh@3.3.0: + import-fresh@3.3.1: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 @@ -10898,7 +10905,7 @@ snapshots: dependencies: acorn: 8.14.0 acorn-import-attributes: 1.9.5(acorn@8.14.0) - cjs-module-lexer: 1.4.1 + cjs-module-lexer: 1.4.3 module-details-from-path: 1.0.3 import-local@3.2.0: @@ -11109,7 +11116,7 @@ snapshots: is-weakmap@2.0.2: {} - is-weakref@1.1.0: + is-weakref@1.1.1: dependencies: call-bound: 1.0.3 @@ -11241,16 +11248,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@22.10.9)(ts-node@10.9.2(@swc/core@1.10.9)(@types/node@22.10.9)(typescript@5.7.3)): + jest-cli@29.7.0(@types/node@22.10.9)(ts-node@10.9.2(@swc/core@1.10.11)(@types/node@22.10.9)(typescript@5.7.3)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.9)(@types/node@22.10.9)(typescript@5.7.3)) + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.11)(@types/node@22.10.9)(typescript@5.7.3)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@22.10.9)(ts-node@10.9.2(@swc/core@1.10.9)(@types/node@22.10.9)(typescript@5.7.3)) + create-jest: 29.7.0(@types/node@22.10.9)(ts-node@10.9.2(@swc/core@1.10.11)(@types/node@22.10.9)(typescript@5.7.3)) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@22.10.9)(ts-node@10.9.2(@swc/core@1.10.9)(@types/node@22.10.9)(typescript@5.7.3)) + jest-config: 29.7.0(@types/node@22.10.9)(ts-node@10.9.2(@swc/core@1.10.11)(@types/node@22.10.9)(typescript@5.7.3)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -11260,7 +11267,7 @@ snapshots: - supports-color - ts-node - jest-config@29.7.0(@types/node@22.10.9)(ts-node@10.9.2(@swc/core@1.10.9)(@types/node@22.10.9)(typescript@5.7.3)): + jest-config@29.7.0(@types/node@22.10.9)(ts-node@10.9.2(@swc/core@1.10.11)(@types/node@22.10.9)(typescript@5.7.3)): dependencies: '@babel/core': 7.26.7 '@jest/test-sequencer': 29.7.0 @@ -11286,7 +11293,7 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 22.10.9 - ts-node: 10.9.2(@swc/core@1.10.9)(@types/node@22.10.9)(typescript@5.7.3) + ts-node: 10.9.2(@swc/core@1.10.11)(@types/node@22.10.9)(typescript@5.7.3) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -11319,12 +11326,12 @@ snapshots: jest-mock: 29.7.0 jest-util: 29.7.0 - jest-extended@4.0.2(jest@29.7.0(@types/node@22.10.9)(ts-node@10.9.2(@swc/core@1.10.9)(@types/node@22.10.9)(typescript@5.7.3))): + jest-extended@4.0.2(jest@29.7.0(@types/node@22.10.9)(ts-node@10.9.2(@swc/core@1.10.11)(@types/node@22.10.9)(typescript@5.7.3))): dependencies: jest-diff: 29.7.0 jest-get-type: 29.6.3 optionalDependencies: - jest: 29.7.0(@types/node@22.10.9)(ts-node@10.9.2(@swc/core@1.10.9)(@types/node@22.10.9)(typescript@5.7.3)) + jest: 29.7.0(@types/node@22.10.9)(ts-node@10.9.2(@swc/core@1.10.11)(@types/node@22.10.9)(typescript@5.7.3)) jest-get-type@29.6.3: {} @@ -11375,9 +11382,9 @@ snapshots: slash: 3.0.0 stack-utils: 2.0.6 - jest-mock-extended@3.0.7(jest@29.7.0(@types/node@22.10.9)(ts-node@10.9.2(@swc/core@1.10.9)(@types/node@22.10.9)(typescript@5.7.3)))(typescript@5.7.3): + jest-mock-extended@3.0.7(jest@29.7.0(@types/node@22.10.9)(ts-node@10.9.2(@swc/core@1.10.11)(@types/node@22.10.9)(typescript@5.7.3)))(typescript@5.7.3): dependencies: - jest: 29.7.0(@types/node@22.10.9)(ts-node@10.9.2(@swc/core@1.10.9)(@types/node@22.10.9)(typescript@5.7.3)) + jest: 29.7.0(@types/node@22.10.9)(ts-node@10.9.2(@swc/core@1.10.11)(@types/node@22.10.9)(typescript@5.7.3)) ts-essentials: 10.0.4(typescript@5.7.3) typescript: 5.7.3 @@ -11449,7 +11456,7 @@ snapshots: '@jest/types': 29.6.3 '@types/node': 22.10.9 chalk: 4.1.2 - cjs-module-lexer: 1.4.1 + cjs-module-lexer: 1.4.3 collect-v8-coverage: 1.0.2 glob: 7.2.3 graceful-fs: 4.2.11 @@ -11526,12 +11533,12 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@22.10.9)(ts-node@10.9.2(@swc/core@1.10.9)(@types/node@22.10.9)(typescript@5.7.3)): + jest@29.7.0(@types/node@22.10.9)(ts-node@10.9.2(@swc/core@1.10.11)(@types/node@22.10.9)(typescript@5.7.3)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.9)(@types/node@22.10.9)(typescript@5.7.3)) + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.10.11)(@types/node@22.10.9)(typescript@5.7.3)) '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@22.10.9)(ts-node@10.9.2(@swc/core@1.10.9)(@types/node@22.10.9)(typescript@5.7.3)) + jest-cli: 29.7.0(@types/node@22.10.9)(ts-node@10.9.2(@swc/core@1.10.11)(@types/node@22.10.9)(typescript@5.7.3)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -11794,7 +11801,7 @@ snapshots: transitivePeerDependencies: - supports-color - marked-terminal@7.2.1(marked@12.0.2): + marked-terminal@7.3.0(marked@12.0.2): dependencies: ansi-escapes: 7.0.0 ansi-regex: 6.1.0 @@ -11803,7 +11810,7 @@ snapshots: cli-table3: 0.6.5 marked: 12.0.2 node-emoji: 2.2.0 - supports-hyperlinks: 3.1.0 + supports-hyperlinks: 3.2.0 marked@12.0.2: {} @@ -12217,7 +12224,7 @@ snapshots: transitivePeerDependencies: - supports-color - node-abi@3.73.0: + node-abi@3.74.0: dependencies: semver: 7.6.3 optional: true @@ -12634,7 +12641,7 @@ snapshots: minimist: 1.2.8 mkdirp-classic: 0.5.3 napi-build-utils: 2.0.0 - node-abi: 3.73.0 + node-abi: 3.74.0 pump: 3.0.2 rc: 1.2.8 simple-get: 4.0.1 @@ -12865,7 +12872,7 @@ snapshots: require-directory@2.1.1: {} - require-in-the-middle@7.4.0: + require-in-the-middle@7.5.0: dependencies: debug: 4.4.0 module-details-from-path: 1.0.3 @@ -12981,7 +12988,7 @@ snapshots: import-from-esm: 2.0.0 lodash-es: 4.17.21 marked: 12.0.2 - marked-terminal: 7.2.1(marked@12.0.2) + marked-terminal: 7.3.0(marked@12.0.2) micromatch: 4.0.8 p-each-series: 3.0.0 p-reduce: 3.0.0 @@ -13318,7 +13325,7 @@ snapshots: dependencies: has-flag: 4.0.0 - supports-hyperlinks@3.1.0: + supports-hyperlinks@3.2.0: dependencies: has-flag: 4.0.0 supports-color: 7.2.0 @@ -13449,7 +13456,7 @@ snapshots: trough@1.0.5: {} - ts-api-utils@2.0.0(typescript@5.7.3): + ts-api-utils@2.0.1(typescript@5.7.3): dependencies: typescript: 5.7.3 @@ -13457,12 +13464,12 @@ snapshots: optionalDependencies: typescript: 5.7.3 - ts-jest@29.2.5(@babel/core@7.26.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.7))(jest@29.7.0(@types/node@22.10.9)(ts-node@10.9.2(@swc/core@1.10.9)(@types/node@22.10.9)(typescript@5.7.3)))(typescript@5.7.3): + ts-jest@29.2.5(@babel/core@7.26.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.7))(jest@29.7.0(@types/node@22.10.9)(ts-node@10.9.2(@swc/core@1.10.11)(@types/node@22.10.9)(typescript@5.7.3)))(typescript@5.7.3): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@22.10.9)(ts-node@10.9.2(@swc/core@1.10.9)(@types/node@22.10.9)(typescript@5.7.3)) + jest: 29.7.0(@types/node@22.10.9)(ts-node@10.9.2(@swc/core@1.10.11)(@types/node@22.10.9)(typescript@5.7.3)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -13476,7 +13483,7 @@ snapshots: '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.26.7) - ts-node@10.9.2(@swc/core@1.10.9)(@types/node@22.10.9)(typescript@5.7.3): + ts-node@10.9.2(@swc/core@1.10.11)(@types/node@22.10.9)(typescript@5.7.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 @@ -13494,7 +13501,7 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: - '@swc/core': 1.10.9 + '@swc/core': 1.10.11 tsconfig-paths@3.15.0: dependencies: @@ -13768,7 +13775,7 @@ snapshots: is-finalizationregistry: 1.1.1 is-generator-function: 1.1.0 is-regex: 1.2.1 - is-weakref: 1.1.0 + is-weakref: 1.1.1 isarray: 2.0.5 which-boxed-primitive: 1.1.1 which-collection: 1.0.2 diff --git a/pyproject.toml b/pyproject.toml index ab231c3855bc30..ff290ef1b9ea69 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] dependencies = [ - "mkdocs-material==9.6.1", + "mkdocs-material==9.6.2", "mkdocs-awesome-pages-plugin==2.10.1", ] requires-python = ">=3.11" diff --git a/tools/docker/Dockerfile b/tools/docker/Dockerfile index 6b67d454c5c790..6caca5c726d78d 100644 --- a/tools/docker/Dockerfile +++ b/tools/docker/Dockerfile @@ -23,6 +23,10 @@ FROM --platform=$BUILDPLATFORM ghcr.io/renovatebot/base-image:9.38.3@sha256:e4d3 # renovate: datasource=node-version RUN install-tool node 22.13.1 +# corepack is too buggy 😞 +# renovate: datasource=npm +RUN install-tool pnpm 9.15.4 + WORKDIR /usr/local/renovate ARG TARGETPLATFORM @@ -63,14 +67,14 @@ ENV npm_config_arch=${ARCH} npm_config_platform_arch=${ARCH} # only fetch deps from lockfile https://pnpm.io/cli/fetch RUN set -ex; \ - corepack pnpm fetch --prod; \ + pnpm fetch --prod; \ true COPY --link . ./ # install npm packages RUN set -ex; \ - corepack pnpm install --prod --offline --ignore-scripts; \ + pnpm install --prod --offline --ignore-scripts; \ true # --------------------------------------