From c49935bc0c9eaae1a7434563a101a6f7e6887ab6 Mon Sep 17 00:00:00 2001 From: Sreeja Milkuri Date: Mon, 3 Nov 2025 19:35:23 +0000 Subject: [PATCH 1/3] feat(credential-providers): add login credential provider --- packages/credential-provider-ini/package.json | 1 + .../credential-provider-ini/src/fromIni.ts | 7 +- .../src/resolveLoginCredentials.spec.ts | 110 + .../src/resolveLoginCredentials.ts | 27 + .../src/resolveProfileData.spec.ts | 29 +- .../src/resolveProfileData.ts | 5 + packages/credential-provider-login/README.md | 7 + .../credential-provider-login/package.json | 68 + .../src/LoginCredentialsFetcher.spec.ts | 349 +++ .../src/LoginCredentialsFetcher.ts | 372 +++ .../src/fromLoginCredentials.spec.ts | 146 ++ .../src/fromLoginCredentials.ts | 39 + .../credential-provider-login/src/index.ts | 8 + .../credential-provider-login/src/types.ts | 68 + .../tsconfig.cjs.json | 10 + .../tsconfig.es.json | 11 + .../tsconfig.types.json | 9 + .../vitest.config.mts | 9 + .../credential-provider-node/package.json | 1 + .../credential-provider-node.integ.spec.ts | 42 + packages/credential-providers/README.md | 106 + packages/credential-providers/package.json | 1 + .../src/fromLoginCredentials.spec.ts | 28 + .../src/fromLoginCredentials.ts | 14 + packages/credential-providers/src/index.ts | 3 +- .../credential-providers/tests/_test-lib.ts | 80 +- .../tests/fromLoginCredentials.integ.spec.ts | 137 ++ packages/nested-clients/package.json | 11 + packages/nested-clients/signin.d.ts | 7 + packages/nested-clients/signin.js | 5 + .../src/submodules/signin/Signin.ts | 18 + .../src/submodules/signin/SigninClient.ts | 332 +++ .../auth/httpAuthExtensionConfiguration.ts | 72 + .../signin/auth/httpAuthSchemeProvider.ts | 154 ++ .../src/submodules/signin/commands/index.ts | 2 + .../signin/endpoint/EndpointParameters.ts | 40 + .../signin/endpoint/endpointResolver.ts | 26 + .../src/submodules/signin/endpoint/ruleset.ts | 34 + .../signin/extensionConfiguration.ts | 15 + .../src/submodules/signin/index.ts | 19 + .../signin/models/SigninServiceException.ts | 24 + .../src/submodules/signin/models/index.ts | 2 + .../signin/runtimeConfig.browser.ts | 42 + .../submodules/signin/runtimeConfig.native.ts | 18 + .../submodules/signin/runtimeConfig.shared.ts | 40 + .../src/submodules/signin/runtimeConfig.ts | 70 + .../submodules/signin/runtimeExtensions.ts | 46 + .../submodules/signin/schemas/schemas_0.ts | 12 + .../submodules/sso-oidc/schemas/schemas_0.ts | 84 +- .../src/submodules/sts/schemas/schemas_0.ts | 118 +- packages/nested-clients/tsconfig.cjs.json | 3 +- packages/nested-clients/tsconfig.es.json | 3 +- packages/nested-clients/tsconfig.types.json | 3 +- packages/types/src/feature-ids.ts | 2 + .../nested-clients/generate-nested-clients.js | 4 + scripts/generate-clients/single-service.js | 2 +- .../check-dependencies.js | 7 +- yarn.lock | 2066 +++++++---------- 58 files changed, 3657 insertions(+), 1311 deletions(-) create mode 100644 packages/credential-provider-ini/src/resolveLoginCredentials.spec.ts create mode 100644 packages/credential-provider-ini/src/resolveLoginCredentials.ts create mode 100644 packages/credential-provider-login/README.md create mode 100644 packages/credential-provider-login/package.json create mode 100644 packages/credential-provider-login/src/LoginCredentialsFetcher.spec.ts create mode 100644 packages/credential-provider-login/src/LoginCredentialsFetcher.ts create mode 100644 packages/credential-provider-login/src/fromLoginCredentials.spec.ts create mode 100644 packages/credential-provider-login/src/fromLoginCredentials.ts create mode 100644 packages/credential-provider-login/src/index.ts create mode 100644 packages/credential-provider-login/src/types.ts create mode 100644 packages/credential-provider-login/tsconfig.cjs.json create mode 100644 packages/credential-provider-login/tsconfig.es.json create mode 100644 packages/credential-provider-login/tsconfig.types.json create mode 100644 packages/credential-provider-login/vitest.config.mts create mode 100644 packages/credential-providers/src/fromLoginCredentials.spec.ts create mode 100644 packages/credential-providers/src/fromLoginCredentials.ts create mode 100644 packages/credential-providers/tests/fromLoginCredentials.integ.spec.ts create mode 100644 packages/nested-clients/signin.d.ts create mode 100644 packages/nested-clients/signin.js create mode 100644 packages/nested-clients/src/submodules/signin/Signin.ts create mode 100644 packages/nested-clients/src/submodules/signin/SigninClient.ts create mode 100644 packages/nested-clients/src/submodules/signin/auth/httpAuthExtensionConfiguration.ts create mode 100644 packages/nested-clients/src/submodules/signin/auth/httpAuthSchemeProvider.ts create mode 100644 packages/nested-clients/src/submodules/signin/commands/index.ts create mode 100644 packages/nested-clients/src/submodules/signin/endpoint/EndpointParameters.ts create mode 100644 packages/nested-clients/src/submodules/signin/endpoint/endpointResolver.ts create mode 100644 packages/nested-clients/src/submodules/signin/endpoint/ruleset.ts create mode 100644 packages/nested-clients/src/submodules/signin/extensionConfiguration.ts create mode 100644 packages/nested-clients/src/submodules/signin/index.ts create mode 100644 packages/nested-clients/src/submodules/signin/models/SigninServiceException.ts create mode 100644 packages/nested-clients/src/submodules/signin/models/index.ts create mode 100644 packages/nested-clients/src/submodules/signin/runtimeConfig.browser.ts create mode 100644 packages/nested-clients/src/submodules/signin/runtimeConfig.native.ts create mode 100644 packages/nested-clients/src/submodules/signin/runtimeConfig.shared.ts create mode 100644 packages/nested-clients/src/submodules/signin/runtimeConfig.ts create mode 100644 packages/nested-clients/src/submodules/signin/runtimeExtensions.ts create mode 100644 packages/nested-clients/src/submodules/signin/schemas/schemas_0.ts diff --git a/packages/credential-provider-ini/package.json b/packages/credential-provider-ini/package.json index 0880d815c197d..65b236dcd499d 100644 --- a/packages/credential-provider-ini/package.json +++ b/packages/credential-provider-ini/package.json @@ -31,6 +31,7 @@ "@aws-sdk/core": "*", "@aws-sdk/credential-provider-env": "*", "@aws-sdk/credential-provider-http": "*", + "@aws-sdk/credential-provider-login": "*", "@aws-sdk/credential-provider-process": "*", "@aws-sdk/credential-provider-sso": "*", "@aws-sdk/credential-provider-web-identity": "*", diff --git a/packages/credential-provider-ini/src/fromIni.ts b/packages/credential-provider-ini/src/fromIni.ts index 46e8cd0c5236a..bbcad0ddc8a17 100644 --- a/packages/credential-provider-ini/src/fromIni.ts +++ b/packages/credential-provider-ini/src/fromIni.ts @@ -1,3 +1,4 @@ +import type { FromLoginCredentialsInit } from "@aws-sdk/credential-provider-login"; import type { AssumeRoleWithWebIdentityParams } from "@aws-sdk/credential-provider-web-identity"; import type { CredentialProviderOptions } from "@aws-sdk/types"; import type { RuntimeConfigAwsCredentialIdentityProvider } from "@aws-sdk/types"; @@ -10,7 +11,7 @@ import { resolveProfileData } from "./resolveProfileData"; /** * @public */ -export interface FromIniInit extends SourceProfileInit, CredentialProviderOptions { +export interface FromIniInit extends SourceProfileInit, CredentialProviderOptions, FromLoginCredentialsInit { /** * A function that returns a promise fulfilled with an MFA token code for * the provided MFA Serial code. If a profile requires an MFA code and @@ -40,8 +41,8 @@ export interface FromIniInit extends SourceProfileInit, CredentialProviderOption roleAssumerWithWebIdentity?: (params: AssumeRoleWithWebIdentityParams) => Promise; /** - * STSClientConfig or SSOClientConfig to be used for creating inner client - * for auth operations. + * AWS SDK Client configuration to be used for creating inner client + * for auth operations. Inner clients include STS, SSO, and Signin clients. * @internal */ clientConfig?: any; diff --git a/packages/credential-provider-ini/src/resolveLoginCredentials.spec.ts b/packages/credential-provider-ini/src/resolveLoginCredentials.spec.ts new file mode 100644 index 0000000000000..a6eb8820d83c4 --- /dev/null +++ b/packages/credential-provider-ini/src/resolveLoginCredentials.spec.ts @@ -0,0 +1,110 @@ +import { setCredentialFeature } from "@aws-sdk/core/client"; +import { fromLoginCredentials } from "@aws-sdk/credential-provider-login"; +import type { AwsCredentialIdentity } from "@smithy/types"; +import { afterEach, describe, expect, test as it, vi } from "vitest"; + +import { isLoginProfile, resolveLoginCredentials } from "./resolveLoginCredentials"; + +vi.mock("@aws-sdk/credential-provider-login", () => ({ + fromLoginCredentials: vi.fn(), +})); + +vi.mock("@aws-sdk/core/client", () => ({ + setCredentialFeature: vi.fn(), +})); + +describe(isLoginProfile.name, () => { + it("returns false for empty profile", () => { + expect(isLoginProfile({})).toEqual(false); + }); + + it("returns false for profile without login_session", () => { + expect(isLoginProfile({ region: "us-west-2" })).toEqual(false); + }); + + it("returns true for profile with login_session", () => { + expect(isLoginProfile({ login_session: "arn:aws:sts::123456789101:assumed-role/MyRole/user" })).toEqual(true); + }); +}); + +describe(resolveLoginCredentials.name, () => { + const mockCreds: AwsCredentialIdentity = { + accessKeyId: "mockAccessKeyId", + secretAccessKey: "mockSecretAccessKey", + sessionToken: "mockSessionToken", + accountId: "123456789101", + }; + + const mockCredsWithFeature = { + ...mockCreds, + $source: { CREDENTIALS_PROFILE_LOGIN: "AC" as const }, + }; + + afterEach(() => { + vi.clearAllMocks(); + }); + + it("calls fromLoginCredentials and adds profile feature", async () => { + const mockProfileName = "mockProfileName"; + const mockOptions = { + logger: { + debug: vi.fn(), + info: vi.fn(), + warn: vi.fn(), + error: vi.fn(), + }, + }; + + vi.mocked(fromLoginCredentials).mockReturnValue(() => Promise.resolve(mockCreds)); + vi.mocked(setCredentialFeature).mockReturnValue(mockCredsWithFeature); + + const receivedCreds = await resolveLoginCredentials(mockProfileName, mockOptions); + + expect(receivedCreds).toStrictEqual(mockCredsWithFeature); + expect(fromLoginCredentials).toHaveBeenCalledWith({ + ...mockOptions, + profile: mockProfileName, + }); + expect(setCredentialFeature).toHaveBeenCalledWith(mockCreds, "CREDENTIALS_PROFILE_LOGIN", "AC"); + }); + + it("throws error when fromLoginCredentials throws error", async () => { + const mockProfileName = "mockProfileName"; + const expectedError = new Error("error from fromLoginCredentials"); + + vi.mocked(fromLoginCredentials).mockReturnValue(() => Promise.reject(expectedError)); + + try { + await resolveLoginCredentials(mockProfileName, {}); + fail(`expected ${expectedError}`); + } catch (error) { + expect(error).toStrictEqual(expectedError); + } + expect(fromLoginCredentials).toHaveBeenCalledWith({ + profile: mockProfileName, + }); + }); + + it("passes options to fromLoginCredentials", async () => { + const mockProfileName = "mockProfileName"; + const mockOptions = { + logger: { + debug: vi.fn(), + info: vi.fn(), + warn: vi.fn(), + error: vi.fn(), + }, + clientConfig: { region: "us-east-1" }, + }; + + vi.mocked(fromLoginCredentials).mockReturnValue(() => Promise.resolve(mockCreds)); + vi.mocked(setCredentialFeature).mockReturnValue(mockCredsWithFeature); + + await resolveLoginCredentials(mockProfileName, mockOptions); + + expect(fromLoginCredentials).toHaveBeenCalledWith({ + ...mockOptions, + profile: mockProfileName, + }); + }); +}); diff --git a/packages/credential-provider-ini/src/resolveLoginCredentials.ts b/packages/credential-provider-ini/src/resolveLoginCredentials.ts new file mode 100644 index 0000000000000..61398d627a417 --- /dev/null +++ b/packages/credential-provider-ini/src/resolveLoginCredentials.ts @@ -0,0 +1,27 @@ +import { setCredentialFeature } from "@aws-sdk/core/client"; +import { fromLoginCredentials } from "@aws-sdk/credential-provider-login"; +import type { AwsCredentialIdentity, ParsedIniData } from "@smithy/types"; + +import type { FromIniInit } from "./fromIni"; + +/** + * @internal + */ +export const isLoginProfile = (data: ParsedIniData[string]): boolean => { + return Boolean(data && data.login_session); +}; + +/** + * @internal + */ +export const resolveLoginCredentials = async ( + profileName: string, + options: FromIniInit +): Promise => { + const credentials = await fromLoginCredentials({ + ...options, + profile: profileName, + })(); + + return setCredentialFeature(credentials, "CREDENTIALS_PROFILE_LOGIN", "AC"); +}; diff --git a/packages/credential-provider-ini/src/resolveProfileData.spec.ts b/packages/credential-provider-ini/src/resolveProfileData.spec.ts index 16c92400eab76..7546bc244a135 100644 --- a/packages/credential-provider-ini/src/resolveProfileData.spec.ts +++ b/packages/credential-provider-ini/src/resolveProfileData.spec.ts @@ -2,12 +2,14 @@ import { CredentialsProviderError } from "@smithy/property-provider"; import { afterEach, beforeEach, describe, expect, test as it, vi } from "vitest"; import { isAssumeRoleProfile, resolveAssumeRoleCredentials } from "./resolveAssumeRoleCredentials"; +import { isLoginProfile, resolveLoginCredentials } from "./resolveLoginCredentials"; import { resolveProfileData } from "./resolveProfileData"; import { isSsoProfile, resolveSsoCredentials } from "./resolveSsoCredentials"; import { isStaticCredsProfile, resolveStaticCredentials } from "./resolveStaticCredentials"; import { isWebIdentityProfile, resolveWebIdentityCredentials } from "./resolveWebIdentityCredentials"; vi.mock("./resolveAssumeRoleCredentials"); +vi.mock("./resolveLoginCredentials"); vi.mock("./resolveSsoCredentials"); vi.mock("./resolveStaticCredentials"); vi.mock("./resolveWebIdentityCredentials"); @@ -37,6 +39,7 @@ describe(resolveProfileData.name, () => { beforeEach(() => { [ resolveAssumeRoleCredentials, + resolveLoginCredentials, resolveSsoCredentials, resolveStaticCredentials, resolveWebIdentityCredentials, @@ -46,9 +49,11 @@ describe(resolveProfileData.name, () => { }); beforeEach(() => { - [isAssumeRoleProfile, isSsoProfile, isStaticCredsProfile, isWebIdentityProfile].forEach((isProfileFn) => { - vi.mocked(isProfileFn).mockReturnValue(true); - }); + [isAssumeRoleProfile, isLoginProfile, isSsoProfile, isStaticCredsProfile, isWebIdentityProfile].forEach( + (isProfileFn) => { + vi.mocked(isProfileFn).mockReturnValue(true); + } + ); }); afterEach(() => { @@ -56,9 +61,11 @@ describe(resolveProfileData.name, () => { }); it("throws error if all profile checks fail", async () => { - [isAssumeRoleProfile, isSsoProfile, isStaticCredsProfile, isWebIdentityProfile].forEach((isProfileFn) => { - vi.mocked(isProfileFn).mockReturnValue(false); - }); + [isAssumeRoleProfile, isLoginProfile, isSsoProfile, isStaticCredsProfile, isWebIdentityProfile].forEach( + (isProfileFn) => { + vi.mocked(isProfileFn).mockReturnValue(false); + } + ); try { await resolveProfileData(mockProfileName, mockProfiles, mockOptions); fail(`expected ${mockError}`); @@ -132,4 +139,14 @@ describe(resolveProfileData.name, () => { expect(receivedCreds).toStrictEqual(mockCreds); expect(resolveSsoCredentials).toHaveBeenCalledWith(mockProfileName, {}, mockOptions); }); + + it("resolves with login profile, when it's not static or assume role or web identity or sso", async () => { + [isAssumeRoleProfile, isStaticCredsProfile, isWebIdentityProfile, isSsoProfile].forEach((isProfileFn) => { + vi.mocked(isProfileFn).mockReturnValue(false); + }); + vi.mocked(resolveLoginCredentials).mockImplementation(() => Promise.resolve(mockCreds)); + const receivedCreds = await resolveProfileData(mockProfileName, mockProfiles, mockOptions); + expect(receivedCreds).toStrictEqual(mockCreds); + expect(resolveLoginCredentials).toHaveBeenCalledWith(mockProfileName, mockOptions); + }); }); diff --git a/packages/credential-provider-ini/src/resolveProfileData.ts b/packages/credential-provider-ini/src/resolveProfileData.ts index 3851757ac1c83..d5729c9dee13d 100644 --- a/packages/credential-provider-ini/src/resolveProfileData.ts +++ b/packages/credential-provider-ini/src/resolveProfileData.ts @@ -3,6 +3,7 @@ import type { AwsCredentialIdentity, ParsedIniData } from "@smithy/types"; import { FromIniInit } from "./fromIni"; import { isAssumeRoleProfile, resolveAssumeRoleCredentials } from "./resolveAssumeRoleCredentials"; +import { isLoginProfile, resolveLoginCredentials } from "./resolveLoginCredentials"; import { isProcessProfile, resolveProcessCredentials } from "./resolveProcessCredentials"; import { isSsoProfile, resolveSsoCredentials } from "./resolveSsoCredentials"; import { isStaticCredsProfile, resolveStaticCredentials } from "./resolveStaticCredentials"; @@ -67,6 +68,10 @@ export const resolveProfileData = async ( return await resolveSsoCredentials(profileName, data, options); } + if (isLoginProfile(data)) { + return resolveLoginCredentials(profileName, options); + } + // If the profile cannot be parsed or contains neither static credentials // nor role assumption metadata, throw an error. This should be considered a // terminal resolution error if a profile has been specified by the user diff --git a/packages/credential-provider-login/README.md b/packages/credential-provider-login/README.md new file mode 100644 index 0000000000000..81b84ffb2fb70 --- /dev/null +++ b/packages/credential-provider-login/README.md @@ -0,0 +1,7 @@ +# @aws-sdk/credential-provider-login + +> An internal package + +## Usage + +You probably shouldn't, at least directly. Please use [@aws-sdk/credential-providers](https://www.npmjs.com/package/@aws-sdk/credential-providers) instead. diff --git a/packages/credential-provider-login/package.json b/packages/credential-provider-login/package.json new file mode 100644 index 0000000000000..55d95c64b8bc3 --- /dev/null +++ b/packages/credential-provider-login/package.json @@ -0,0 +1,68 @@ +{ + "name": "@aws-sdk/credential-provider-login", + "version": "3.0.0", + "description": "AWS credential provider that sources credentials from aws login cached tokens", + "main": "./dist-cjs/index.js", + "module": "./dist-es/index.js", + "scripts": { + "build": "concurrently 'yarn:build:cjs' 'yarn:build:es' 'yarn:build:types'", + "build:cjs": "node ../../scripts/compilation/inline credential-provider-login", + "build:es": "tsc -p tsconfig.es.json", + "build:include:deps": "lerna run --scope $npm_package_name --include-dependencies build", + "build:types": "tsc -p tsconfig.types.json", + "build:types:downlevel": "downlevel-dts dist-types dist-types/ts3.4", + "clean": "rimraf ./dist-* && rimraf *.tsbuildinfo", + "test": "yarn g:vitest run", + "test:watch": "yarn g:vitest watch" + }, + "keywords": [ + "aws", + "credentials", + "signin", + "login" + ], + "sideEffects": false, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "*", + "@aws-sdk/nested-clients": "*", + "@aws-sdk/types": "*", + "@smithy/property-provider": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "devDependencies": { + "@tsconfig/recommended": "1.0.1", + "@types/node": "^18.19.69", + "concurrently": "7.0.0", + "downlevel-dts": "0.10.1", + "rimraf": "3.0.2", + "typescript": "~5.8.3" + }, + "types": "./dist-types/index.d.ts", + "engines": { + "node": ">=18.0.0" + }, + "typesVersions": { + "<4.0": { + "dist-types/*": [ + "dist-types/ts3.4/*" + ] + } + }, + "files": [ + "dist-*/**" + ], + "homepage": "https://github.com/aws/aws-sdk-js-v3/tree/main/packages/credential-provider-login", + "repository": { + "type": "git", + "url": "https://github.com/aws/aws-sdk-js-v3.git", + "directory": "packages/credential-provider-login" + } +} diff --git a/packages/credential-provider-login/src/LoginCredentialsFetcher.spec.ts b/packages/credential-provider-login/src/LoginCredentialsFetcher.spec.ts new file mode 100644 index 0000000000000..bfe6532ca2542 --- /dev/null +++ b/packages/credential-provider-login/src/LoginCredentialsFetcher.spec.ts @@ -0,0 +1,349 @@ +import { CredentialsProviderError } from "@smithy/property-provider"; +import { beforeEach, describe, expect, it, vi } from "vitest"; + +import { LoginCredentialsFetcher } from "./LoginCredentialsFetcher"; + +vi.mock("fs", () => ({ + promises: { + readFile: vi.fn(), + writeFile: vi.fn(), + mkdir: vi.fn(), + rename: vi.fn(), + }, +})); + +vi.mock("@aws-sdk/nested-clients/signin", async () => ({ + SigninClient: vi.fn(() => mockClient), + CreateOAuth2TokenCommand: vi.fn(), +})); + +vi.mock("os", () => ({ + homedir: vi.fn(() => "/mock/home"), +})); + +vi.mock("path"); + +vi.mock("crypto"); + +vi.mock("@aws-sdk/core/client", () => ({ + setCredentialFeature: vi.fn((credentials) => credentials), +})); + +const mock_login_session = "arn:aws:sts::012345678910:assumed-role/Admin/admin"; +const mockProfile = { login_session: mock_login_session }; + +import { createHash } from "crypto"; +import { promises as fs } from "fs"; +import { dirname, join } from "path"; + +const mockReadFile = vi.mocked(fs.readFile); +const mockMkdir = vi.mocked(fs.mkdir); +const mockWriteFile = vi.mocked(fs.writeFile); +const mockClient = { + send: vi.fn(), + middlewareStack: { + add: vi.fn(), + }, +}; + +const mockValidCreds = { + accessToken: { + accessKeyId: "AKIAIOSFODNN7EXAMPLE", + secretAccessKey: "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", + sessionToken: "session-token", + accountId: "123456789012", + expiresAt: "2026-01-01T00:00:00.000Z", + }, + clientId: "test-client-id", + refreshToken: "test-refresh-token", + dpopKey: "test-dpop-key", +}; + +const mockExpiredCreds = { + accessToken: { + accessKeyId: "OLDEXPIREDKEY", + secretAccessKey: "oldExpiredSecretKey", + sessionToken: "oldExpiredSessionToken", + accountId: "012345678901", + expiresAt: "2020-01-01T00:00:00Z", + }, + clientId: "arn:aws:signin:::devtools/same-device", + refreshToken: "valid_refresh_token", + dpopKey: + "-----BEGIN EC PRIVATE KEY-----\nEXAMPLEkeyyqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg+PNauWi/ihtwHHbq\n1tgc8Vgpwx0qQlNSN38y+z0igWehRANCAAR2Ntw6BXJ1v8jb9XjzKZJ+gL5f/3Jq\nIqiH2PUGKWxoFwNlcNB83FivEXEzlTbuCQK5OezOYb3gbvHuzKkB0nDX\n-----END EC PRIVATE KEY-----", +}; + +describe("LoginCredentialsFetcher", () => { + const mockDigest = vi.fn().mockReturnValue("mockedhash"); + const mockUpdate = vi.fn().mockReturnValue({ digest: mockDigest }); + + beforeEach(() => { + vi.clearAllMocks(); + mockReadFile.mockReset(); + mockClient.send.mockReset(); + delete process.env.AWS_LOGIN_CACHE_DIRECTORY; + vi.mocked(createHash).mockReturnValue({ update: mockUpdate } as any); + vi.mocked(join).mockImplementation((...args) => args.join("/")); + vi.mocked(dirname).mockImplementation((path) => { + const parts = path.split("/"); + return parts.slice(0, -1).join("/"); + }); + }); + + it("should load cached credentials successfully", async () => { + mockReadFile.mockResolvedValue(JSON.stringify(mockValidCreds)); + + const fetcher = new LoginCredentialsFetcher(mockProfile); + const result = await fetcher.loadCredentials(); + + expect(result.accessKeyId).toBe("AKIAIOSFODNN7EXAMPLE"); + expect(result.secretAccessKey).toBe("wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"); + expect(result.sessionToken).toBe("session-token"); + expect(result.accountId).toBe("123456789012"); + }); + + it("should throw error when cache file not found", async () => { + mockReadFile.mockRejectedValue(new Error("ENOENT: no such file or directory")); + + const fetcher = new LoginCredentialsFetcher(mockProfile); + + await expect(fetcher.loadCredentials()).rejects.toThrow(CredentialsProviderError); + }); + + it("should throw error when missing accessToken", async () => { + const { accessToken, ...credsWithoutAccessToken } = mockValidCreds; + mockReadFile.mockResolvedValue(JSON.stringify(credsWithoutAccessToken)); + + const fetcher = new LoginCredentialsFetcher(mockProfile); + await expect(fetcher.loadCredentials()).rejects.toThrow(CredentialsProviderError); + }); + + it("should throw error when missing refreshToken", async () => { + const { refreshToken, ...credsWithoutRefreshToken } = mockValidCreds; + mockReadFile.mockResolvedValue(JSON.stringify(credsWithoutRefreshToken)); + + const fetcher = new LoginCredentialsFetcher(mockProfile); + await expect(fetcher.loadCredentials()).rejects.toThrow(CredentialsProviderError); + }); + + it("should throw error when missing clientId", async () => { + const { clientId, ...credsWithoutClientId } = mockValidCreds; + mockReadFile.mockResolvedValue(JSON.stringify(credsWithoutClientId)); + + const fetcher = new LoginCredentialsFetcher(mockProfile); + await expect(fetcher.loadCredentials()).rejects.toThrow(CredentialsProviderError); + }); + + it("should throw error when missing dpopKey", async () => { + const { dpopKey, ...credsWithoutDpopKey } = mockValidCreds; + mockReadFile.mockResolvedValue(JSON.stringify(credsWithoutDpopKey)); + + const fetcher = new LoginCredentialsFetcher(mockProfile); + await expect(fetcher.loadCredentials()).rejects.toThrow(CredentialsProviderError); + }); + + it("should refresh expired credentials successfully", async () => { + mockReadFile.mockResolvedValue(JSON.stringify(mockExpiredCreds)); + + mockClient.send.mockResolvedValue({ + tokenOutput: { + accessToken: { + accessKeyId: "NEWREFRESHEDKEY", + secretAccessKey: "newRefreshedSecretKey", + sessionToken: "newRefreshedSessionToken", + accountId: "012345678901", + }, + refreshToken: "new_refresh_token", + expiresIn: 900, + }, + }); + + const fetcher = new LoginCredentialsFetcher(mockProfile); + + // Mock the generateDpop method to avoid crypto operations + vi.spyOn(fetcher as any, "generateDpop").mockResolvedValue("mock-dpop-proof"); + + const result = await fetcher.loadCredentials(); + + expect(result.accessKeyId).toBe("NEWREFRESHEDKEY"); + expect(result.secretAccessKey).toBe("newRefreshedSecretKey"); + expect(result.sessionToken).toBe("newRefreshedSessionToken"); + expect(result.accountId).toBe("012345678901"); + expect(mockClient.send).toHaveBeenCalled(); + }); + + it("should throw error when refresh fails", async () => { + mockReadFile.mockResolvedValue(JSON.stringify({ ...mockExpiredCreds, refreshToken: "expired_refresh_token" })); + + const error = new Error("Bad Request"); + error.name = "BadRequestException"; + mockClient.send.mockRejectedValue(error); + + const fetcher = new LoginCredentialsFetcher(mockProfile); + await expect(fetcher.loadCredentials()).rejects.toThrow(CredentialsProviderError); + }); + + it("should throw error when refresh token is expired (400 Bad Request)", async () => { + mockReadFile.mockResolvedValue(JSON.stringify({ ...mockExpiredCreds, refreshToken: "expired_refresh_token" })); + + // Mock 400 Bad Request error (expired refresh token) + const badRequestError = new Error("Bad Request"); + badRequestError.name = "InvalidRequestError"; + (badRequestError as any).$metadata = { httpStatusCode: 400 }; + mockClient.send.mockRejectedValue(badRequestError); + + const fetcher = new LoginCredentialsFetcher(mockProfile); + await expect(fetcher.loadCredentials()).rejects.toThrow(CredentialsProviderError); + }); + + it("should use default path construction", async () => { + // No AWS_LOGIN_CACHE_DIRECTORY set + const fetcher = new LoginCredentialsFetcher(mockProfile); + await expect(fetcher.loadCredentials()).rejects.toThrow(); + + expect(mockReadFile).toHaveBeenCalledWith("/mock/home/.aws/login/cache/mockedhash.json", "utf8"); + }); + + it("should create cache directory before saving refreshed token", async () => { + mockReadFile.mockResolvedValue(JSON.stringify(mockExpiredCreds)); + mockMkdir.mockResolvedValue(undefined); + mockWriteFile.mockResolvedValue(undefined); + + mockClient.send.mockResolvedValue({ + tokenOutput: { + accessToken: { + accessKeyId: "NEWREFRESHEDKEY", + secretAccessKey: "newRefreshedSecretKey", + sessionToken: "newRefreshedSessionToken", + accountId: "012345678901", + }, + refreshToken: "new_refresh_token", + expiresIn: 900, + }, + }); + + const fetcher = new LoginCredentialsFetcher(mockProfile); + await fetcher.loadCredentials(); + + // Verify mkdir was called to ensure directory exists + expect(mockMkdir).toHaveBeenCalledWith("/mock/home/.aws/login/cache", { recursive: true }); + }); + + it("should create custom directory when refreshing token if path is set through env var", async () => { + process.env.AWS_LOGIN_CACHE_DIRECTORY = "/custom/cache/dir"; + + mockReadFile.mockResolvedValue(JSON.stringify(mockExpiredCreds)); + mockMkdir.mockResolvedValue(undefined); + mockClient.send.mockResolvedValue({ + tokenOutput: { + accessToken: { + accessKeyId: "NEWREFRESHEDKEY", + secretAccessKey: "newRefreshedSecretKey", + sessionToken: "newRefreshedSessionToken", + accountId: "012345678901", + }, + refreshToken: "new_refresh_token", + expiresIn: 900, + }, + }); + + const fetcher = new LoginCredentialsFetcher(mockProfile); + await fetcher.loadCredentials(); + + expect(mockMkdir).toHaveBeenCalledWith("/custom/cache/dir", { recursive: true }); + }); + + describe("DER to Raw Signature Conversion", () => { + it("should convert valid DER signature to raw format", () => { + const fetcher = new LoginCredentialsFetcher(mockProfile); + + // Valid DER signature: 0x30 [length] 0x02 [r-length] [r] 0x02 [s-length] [s] + const derSignature = Buffer.from([ + 0x30, + 0x44, // SEQUENCE, length 68 + 0x02, + 0x20, // INTEGER, length 32 (r) + ...Array(32).fill(0xaa), // r value (32 bytes) + 0x02, + 0x20, // INTEGER, length 32 (s) + ...Array(32).fill(0xbb), // s value (32 bytes) + ]); + + const rawSignature = (fetcher as any).derToRawSignature(derSignature); + + // Raw signature should be 64 bytes (32 for r + 32 for s) + expect(rawSignature).toHaveLength(64); + + // First 32 bytes should be r + expect(rawSignature.subarray(0, 32)).toEqual(Buffer.from(Array(32).fill(0xaa))); + + // Last 32 bytes should be s + expect(rawSignature.subarray(32, 64)).toEqual(Buffer.from(Array(32).fill(0xbb))); + }); + + it("should throw error with invalid DER signature (missing first 0x02 marker)", () => { + const fetcher = new LoginCredentialsFetcher(mockProfile); + + // Invalid DER signature: missing 0x02 marker for r + const invalidDerSignature = Buffer.from([ + 0x30, + 0x44, // SEQUENCE, length 68 + 0x03, // should be 0x02, not 0x03 + 0x20, + ...Array(32).fill(0xaa), + 0x02, + 0x20, + ...Array(32).fill(0xbb), + ]); + + expect(() => (fetcher as any).derToRawSignature(invalidDerSignature)).toThrow("Invalid DER signature"); + }); + + it("should throw error with invalid DER signature (missing second 0x02 marker)", () => { + const fetcher = new LoginCredentialsFetcher(mockProfile); + + // Invalid DER signature: missing 0x02 marker for s + const invalidDerSignature = Buffer.from([ + 0x30, + 0x44, // SEQUENCE, length 68 + 0x02, + 0x20, // INTEGER marker for r + ...Array(32).fill(0xaa), + 0x03, + 0x20, // should be 0x02, not 0x03 + ...Array(32).fill(0xbb), + ]); + + expect(() => (fetcher as any).derToRawSignature(invalidDerSignature)).toThrow("Invalid DER signature"); + }); + + it("should handle signature with leading zeros in r and s values", () => { + const fetcher = new LoginCredentialsFetcher(mockProfile); + + // DER signature with leading zeros + const derSignature = Buffer.from([ + 0x30, + 0x46, // SEQUENCE, length 70 (extra 2 bytes for leading zeros) + 0x02, + 0x21, // INTEGER, length 33 (includes leading zero) + 0x00, // Leading zero + ...Array(32).fill(0xaa), // r value (32 bytes) + 0x02, + 0x21, // INTEGER, length 33 (includes leading zero) + 0x00, // Leading zero + ...Array(32).fill(0xbb), // s value (32 bytes) + ]); + + const rawSignature = (fetcher as any).derToRawSignature(derSignature); + + // Raw signature should still be 64 bytes (leading zeros removed) + expect(rawSignature).toHaveLength(64); + + // First 32 bytes should be r (without leading zero) + expect(rawSignature.subarray(0, 32)).toEqual(Buffer.from(Array(32).fill(0xaa))); + + // Last 32 bytes should be s (without leading zero) + expect(rawSignature.subarray(32, 64)).toEqual(Buffer.from(Array(32).fill(0xbb))); + }); + }); +}); diff --git a/packages/credential-provider-login/src/LoginCredentialsFetcher.ts b/packages/credential-provider-login/src/LoginCredentialsFetcher.ts new file mode 100644 index 0000000000000..c2f354a04ba23 --- /dev/null +++ b/packages/credential-provider-login/src/LoginCredentialsFetcher.ts @@ -0,0 +1,372 @@ +import { CreateOAuth2TokenCommandInput } from "@aws-sdk/nested-clients/signin"; +import type { AwsCredentialIdentity, AwsIdentityProperties, Logger } from "@aws-sdk/types"; +import { CredentialsProviderError } from "@smithy/property-provider"; +import { HttpRequest } from "@smithy/protocol-http"; +import { readFile } from "@smithy/shared-ini-file-loader"; +import type { + FinalizeHandler, + FinalizeHandlerArguments, + FinalizeHandlerOutput, + IniSection, + MetadataBearer, +} from "@smithy/types"; +import { createHash, createPrivateKey, createPublicKey, sign } from "node:crypto"; +import { promises as fs } from "node:fs"; +import { homedir } from "node:os"; +import { dirname, join } from "node:path"; + +import type { FromLoginCredentialsInit, LoginToken } from "./types"; + +/** + * Handles loading and refreshing Sign-In credentials from cached tokens. + * @internal + */ +export class LoginCredentialsFetcher { + private static readonly REFRESH_THRESHOLD = 5 * 60 * 1000; // 5 minutes in milliseconds + + public constructor( + private readonly profileData: IniSection, + private readonly init?: FromLoginCredentialsInit, + private readonly callerClientConfig?: AwsIdentityProperties["callerClientConfig"] + ) {} + + /** + * Loads credentials and refreshes if necessary + */ + public async loadCredentials(): Promise { + const token = await this.loadToken(); + + if (!token) { + throw new CredentialsProviderError( + `Failed to load a token for session ${this.loginSession}, please re-authenticate using aws login`, + { tryNextLink: false, logger: this.logger } + ); + } + + const accessToken = token.accessToken; + const now = Date.now(); + // expiresAt must be an ISO string format (e.g: "2024-01-01T12:00:00.000Z") + const expiryTime = new Date(accessToken.expiresAt).getTime(); + const timeUntilExpiry = expiryTime - now; // milliseconds + + if (timeUntilExpiry <= LoginCredentialsFetcher.REFRESH_THRESHOLD) { + return this.refresh(token); + } + + return { + accessKeyId: accessToken.accessKeyId, + secretAccessKey: accessToken.secretAccessKey, + sessionToken: accessToken.sessionToken, + accountId: accessToken.accountId, + expiration: new Date(accessToken.expiresAt), + }; + } + + private get logger(): Logger | undefined { + return this.init?.logger; + } + + private get loginSession(): string { + return this.profileData.login_session!; + } + + private async refresh(token: LoginToken): Promise { + const { SigninClient, CreateOAuth2TokenCommand } = await import("@aws-sdk/nested-clients/signin"); + + // Extract config from caller client + const { logger, userAgentAppId } = this.callerClientConfig ?? {}; + const isH2 = (requestHandler: any): boolean => { + return requestHandler?.metadata?.handlerProtocol === "h2"; + }; + const requestHandler = isH2(this.callerClientConfig?.requestHandler) + ? undefined + : this.callerClientConfig?.requestHandler; + + const region = this.profileData.region ?? (await this.callerClientConfig?.region?.()) ?? process.env.AWS_REGION; + + const client = new SigninClient({ + credentials: { + accessKeyId: "", + secretAccessKey: "", + }, + region, + requestHandler, + logger, + userAgentAppId, + ...this.init?.clientConfig, + }); + + // Add DPoP interceptor to update the proof with the actual resolved endpoint + this.createDPoPInterceptor(client.middlewareStack); + + const commandInput: CreateOAuth2TokenCommandInput = { + tokenInput: { + clientId: token.clientId, + refreshToken: token.refreshToken, + grantType: "refresh_token", + }, + }; + + try { + const response = await client.send(new CreateOAuth2TokenCommand(commandInput)); + + const { accessKeyId, secretAccessKey, sessionToken } = response.tokenOutput?.accessToken ?? {}; + const { refreshToken, expiresIn } = response.tokenOutput ?? {}; + + if (!accessKeyId || !secretAccessKey || !sessionToken || !refreshToken) { + throw new CredentialsProviderError("Token refresh response missing required fields", { + logger: this.logger, + tryNextLink: false, + }); + } + + const expiresInMs = (expiresIn ?? 900) * 1000; // Default to 15 minutes in ms + const expiration = new Date(Date.now() + expiresInMs); + + const updatedToken: LoginToken = { + ...token, + accessToken: { + ...token.accessToken, // Preserve existing fields like accountId + accessKeyId: accessKeyId!, + secretAccessKey: secretAccessKey!, + sessionToken: sessionToken!, + expiresAt: expiration.toISOString(), + }, + refreshToken: refreshToken!, + }; + + await this.saveToken(updatedToken); + + const newAccessToken = updatedToken.accessToken; + + return { + accessKeyId: newAccessToken.accessKeyId, + secretAccessKey: newAccessToken.secretAccessKey, + sessionToken: newAccessToken.sessionToken, + accountId: newAccessToken.accountId, + expiration, + }; + } catch (error) { + // Handle specific AccessDeniedException according to specification + if (error.name === "AccessDeniedException") { + const errorType = error.error; + let message: string; + + switch (errorType) { + case "TOKEN_EXPIRED": + message = "Your session has expired. Please reauthenticate."; + break; + case "USER_CREDENTIALS_CHANGED": + message = + "Unable to refresh credentials because of a change in your password. Please reauthenticate with your new password."; + break; + case "INSUFFICIENT_PERMISSIONS": + message = + "Unable to refresh credentials due to insufficient permissions. You may be missing permission for the 'CreateOAuth2Token' action."; + break; + default: + message = `Failed to refresh token: ${String(error)}. Please re-authenticate using \`aws login\``; + } + + throw new CredentialsProviderError(message, { logger: this.logger, tryNextLink: false }); + } + + throw new CredentialsProviderError( + `Failed to refresh token: ${String(error)}. Please re-authenticate using aws login`, + { logger: this.logger } + ); + } + } + + private async loadToken(): Promise { + const tokenFilePath = this.getTokenFilePath(); + try { + let tokenData: string; + try { + tokenData = await readFile(tokenFilePath, {ignoreCache: this.init?.ignoreCache}); + } catch { + tokenData = await fs.readFile(tokenFilePath, "utf8"); + } + const token = JSON.parse(tokenData); + + const missingFields = ["accessToken", "clientId", "refreshToken", "dpopKey"].filter((k) => !token[k]); + if (!token.accessToken?.accountId) { + missingFields.push("accountId"); + } + + if (missingFields.length > 0) { + throw new CredentialsProviderError(`Token validation failed, missing fields: ${missingFields.join(", ")}`, { + logger: this.logger, + tryNextLink: false, + }); + } + + return token; + } catch (error) { + throw new CredentialsProviderError(`Failed to load token from ${tokenFilePath}: ${String(error)}`, { + logger: this.logger, + tryNextLink: false, + }); + } + } + + private async saveToken(token: LoginToken): Promise { + const tokenFilePath = this.getTokenFilePath(); + + // Ensure directory exists + const directory = dirname(tokenFilePath); + try { + await fs.mkdir(directory, { recursive: true }); + } catch (error) { + // Directory might already exist, ignore error + } + await fs.writeFile(tokenFilePath, JSON.stringify(token, null, 2), "utf8"); + } + + private getTokenFilePath(): string { + const directory = process.env.AWS_LOGIN_CACHE_DIRECTORY ?? join(homedir(), ".aws", "login", "cache"); + const loginSessionBytes = Buffer.from(this.loginSession, "utf8"); + const loginSessionSha256 = createHash("sha256").update(loginSessionBytes).digest("hex"); + return join(directory, `${loginSessionSha256}.json`); + } + + /** + * Converts ASN.1 DER encoded ECDSA signature to raw r||s format. + * raw format is a fixed 64-byte concatenation of r and s values (32 bytes each). + * + * References: + * - ECDSA algorithm: https://thecopenhagenbook.com/cryptography/ecdsa + * - ASN.1 DER encoding: https://www.rfc-editor.org/rfc/rfc5480#section-2.2 + * + * @param derSignature - ASN.1 DER encoded signature from crypto.sign() + * @returns Raw signature as 64-byte buffer (32-byte r + 32-byte s) + */ + private derToRawSignature(derSignature: Buffer): Buffer { + // ASN.1 DER format: 0x30 [total-length] 0x02 [R-length] [R] 0x02 [S-length] [S] + let offset = 2; // Skip 0x30 and total length + + // Read R + if (derSignature[offset] !== 0x02) { + throw new Error("Invalid DER signature"); + } + offset++; + const rLength = derSignature[offset++]; + let r = derSignature.subarray(offset, offset + rLength); + offset += rLength; + + // Read S + if (derSignature[offset] !== 0x02) { + throw new Error("Invalid DER signature"); + } + offset++; + const sLength = derSignature[offset++]; + let s = derSignature.subarray(offset, offset + sLength); + + // Remove leading zeros and pad to 32 bytes + r = r[0] === 0x00 ? r.subarray(1) : r; + s = s[0] === 0x00 ? s.subarray(1) : s; + + const rPadded = Buffer.concat([Buffer.alloc(32 - r.length), r]); + const sPadded = Buffer.concat([Buffer.alloc(32 - s.length), s]); + + return Buffer.concat([rPadded, sPadded]); + } + + /** + * Creates a DPoP interceptor that updates the DPoP header with the actual resolved endpoint + * @internal + */ + private createDPoPInterceptor(middlewareStack: any) { + middlewareStack.add( + (next: FinalizeHandler): FinalizeHandler => + async (args: FinalizeHandlerArguments): Promise> => { + if (HttpRequest.isInstance(args.request)) { + const request = args.request as HttpRequest; + // Extract the actual endpoint URL after resolution + const actualEndpoint = `${request.protocol}//${request.hostname}${request.port ? `:${request.port}` : ""}${ + request.path + }`; + + // Generate DPoP proof with correct endpoint + const dpop = await this.generateDpop(request.method, actualEndpoint); + + // Add the DPoP header + request.headers = { + ...request.headers, + DPoP: dpop, + }; + } + + return next(args); + }, + { + step: "finalizeRequest", + name: "dpopInterceptor", + override: true, + } + ); + } + + private async generateDpop(method = "POST", endpoint?: string): Promise { + const token = await this.loadToken(); + + try { + const privateKey = createPrivateKey({ + key: token.dpopKey, + format: "pem", + type: "sec1", + }); + + const publicKey = createPublicKey(privateKey); + const publicDer = publicKey.export({ format: "der", type: "spki" }); + + // Find the 0x04 marker for uncompressed EC point + let pointStart = -1; + for (let i = 0; i < publicDer.length; i++) { + if (publicDer[i] === 0x04) { + pointStart = i; + break; + } + } + + const x = publicDer.slice(pointStart + 1, pointStart + 33); + const y = publicDer.slice(pointStart + 33, pointStart + 65); + + const header = { + alg: "ES256", + typ: "dpop+jwt", + jwk: { + kty: "EC", + crv: "P-256", + x: x.toString("base64url"), + y: y.toString("base64url"), + }, + }; + + const payload = { + jti: crypto.randomUUID(), + htm: method, + htu: endpoint, + iat: Math.floor(Date.now() / 1000), + }; + + const headerB64 = Buffer.from(JSON.stringify(header)).toString("base64url"); + const payloadB64 = Buffer.from(JSON.stringify(payload)).toString("base64url"); + const message = `${headerB64}.${payloadB64}`; + + // Sign using Node.js crypto (returns ASN.1 DER format) + const asn1Signature = sign("sha256", Buffer.from(message), privateKey); + + // Convert ASN.1 DER to raw r||s format + const rawSignature = this.derToRawSignature(asn1Signature); + const signatureB64 = rawSignature.toString("base64url"); + + return `${message}.${signatureB64}`; + } catch (error) { + throw new CredentialsProviderError( + `Failed to generate Dpop proof: ${error instanceof Error ? error.message : String(error)}`, + { logger: this.logger, tryNextLink: false } + ); + } + } +} diff --git a/packages/credential-provider-login/src/fromLoginCredentials.spec.ts b/packages/credential-provider-login/src/fromLoginCredentials.spec.ts new file mode 100644 index 0000000000000..77012141df5ce --- /dev/null +++ b/packages/credential-provider-login/src/fromLoginCredentials.spec.ts @@ -0,0 +1,146 @@ +import { CredentialsProviderError } from "@smithy/property-provider"; +import { getProfileName, parseKnownFiles } from "@smithy/shared-ini-file-loader"; +import { beforeEach, describe, expect, it, vi } from "vitest"; + +import { fromLoginCredentials } from "./fromLoginCredentials"; +import { LoginCredentialsFetcher } from "./LoginCredentialsFetcher"; + +vi.mock("@smithy/shared-ini-file-loader"); +vi.mock("./LoginCredentialsFetcher"); + +describe("fromLoginCredentials", () => { + const mockParseKnownFiles = vi.mocked(parseKnownFiles); + const mockGetProfileName = vi.mocked(getProfileName); + const mockLoginCredentialsFetcher = vi.mocked(LoginCredentialsFetcher); + + const mockCreds = { + accessKeyId: "AKIAIOSFODNN7EXAMPLE", + secretAccessKey: "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", + sessionToken: "session-token", + accountId: "012345678901", + expiration: new Date("2025-09-14T04:05:45Z"), + }; + + beforeEach(() => { + vi.clearAllMocks(); + }); + + it("should return credentials when profile has login_session", async () => { + mockParseKnownFiles.mockResolvedValue({ + signin: { login_session: "arn:aws:sts::012345678910:assumed-role/Admin/admin" }, + }); + mockGetProfileName.mockReturnValue("signin"); + + const mockFetcher = { + loadCredentials: vi.fn().mockResolvedValue(mockCreds), + }; + mockLoginCredentialsFetcher.mockImplementation(() => mockFetcher as any); + + const provider = fromLoginCredentials({ profile: "signin" }); + const result = await provider(); + + expect(result.accessKeyId).toBe("AKIAIOSFODNN7EXAMPLE"); + expect(result.secretAccessKey).toBe("wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"); + expect(result.sessionToken).toBe("session-token"); + expect(mockFetcher.loadCredentials).toHaveBeenCalled(); + }); + + it("should throw error when profile does not contain login_session", async () => { + mockParseKnownFiles.mockResolvedValue({ + default: { region: "us-east-1" }, + }); + mockGetProfileName.mockReturnValue("default"); + + const provider = fromLoginCredentials({ profile: "default" }); + + await expect(provider()).rejects.toThrow( + new CredentialsProviderError("Profile default does not contain login_session.", { + tryNextLink: true, + }) + ); + }); + + it("should use profile specified in the provider if given", async () => { + mockParseKnownFiles.mockResolvedValue({ + dev: { login_session: "arn:aws:sts::012345678910:assumed-role/Admin/admin" }, + }); + mockGetProfileName.mockReturnValue("dev"); + + const mockFetcher = { + loadCredentials: vi.fn().mockResolvedValue(mockCreds), + }; + mockLoginCredentialsFetcher.mockImplementation(() => mockFetcher as any); + + const provider = fromLoginCredentials({ profile: "dev" }); + await provider(); + + expect(mockGetProfileName).toHaveBeenCalledWith({ + profile: "dev", + }); + }); + + it("should set credential feature id for login credentials", async () => { + mockParseKnownFiles.mockResolvedValue({ + signin: { login_session: "arn:aws:sts::012345678910:assumed-role/Admin/admin" }, + }); + mockGetProfileName.mockReturnValue("signin"); + + const mockFetcher = { + loadCredentials: vi.fn().mockResolvedValue(mockCreds), + }; + mockLoginCredentialsFetcher.mockImplementation(() => mockFetcher as any); + + const provider = fromLoginCredentials({ profile: "signin" }); + const result = await provider(); + + expect(result).toStrictEqual({ + accessKeyId: "AKIAIOSFODNN7EXAMPLE", + secretAccessKey: "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", + sessionToken: "session-token", + accountId: "012345678901", + expiration: new Date("2025-09-14T04:05:45Z"), + $source: { + CREDENTIALS_LOGIN: "AD", + }, + }); + }); + + it("should pass SharedConfigInit options to parseKnownFiles", async () => { + const mockLogger = { + debug: vi.fn(), + info: vi.fn(), + warn: vi.fn(), + error: vi.fn(), + }; + const configOptions = { + filepath: "/custom/credentials", + configFilepath: "/custom/config", + ignoreCache: true, + logger: mockLogger, + }; + + mockParseKnownFiles.mockResolvedValue({ + signin: { login_session: "arn:aws:sts::012345678910:assumed-role/Admin/admin" }, + }); + mockGetProfileName.mockReturnValue("signin"); + + const mockFetcher = { + loadCredentials: vi.fn().mockResolvedValue(mockCreds), + }; + mockLoginCredentialsFetcher.mockImplementation(() => mockFetcher as any); + + const provider = fromLoginCredentials({ + profile: "signin", + ...configOptions, + }); + await provider(); + + expect(mockParseKnownFiles).toHaveBeenCalledWith({ + profile: "signin", + filepath: "/custom/credentials", + configFilepath: "/custom/config", + ignoreCache: true, + logger: mockLogger, + }); + }); +}); diff --git a/packages/credential-provider-login/src/fromLoginCredentials.ts b/packages/credential-provider-login/src/fromLoginCredentials.ts new file mode 100644 index 0000000000000..e319c015792a1 --- /dev/null +++ b/packages/credential-provider-login/src/fromLoginCredentials.ts @@ -0,0 +1,39 @@ +import { setCredentialFeature } from "@aws-sdk/core/client"; +import type { AwsIdentityProperties, RuntimeConfigAwsCredentialIdentityProvider } from "@aws-sdk/types"; +import { CredentialsProviderError } from "@smithy/property-provider"; +import { getProfileName, parseKnownFiles } from "@smithy/shared-ini-file-loader"; + +import { LoginCredentialsFetcher } from "./LoginCredentialsFetcher"; +import type { FromLoginCredentialsInit } from "./types"; + +/** + * Creates a credential provider that sources credentials from aws login cached tokens + * @internal + */ +export const fromLoginCredentials = + (init?: FromLoginCredentialsInit): RuntimeConfigAwsCredentialIdentityProvider => + async ({ callerClientConfig }: AwsIdentityProperties = {}) => { + init?.logger?.debug?.("@aws-sdk/credential-providers - fromLoginCredentials"); + + // Load profiles and check for login_session + const profiles = await parseKnownFiles(init || {}); + + const profileName = getProfileName({ + profile: init?.profile ?? callerClientConfig?.profile, + }); + + const profile = profiles[profileName]; + if (!profile?.login_session) { + // This is not a terminal error, if login_session is not present it would move to next provider in the chain. + throw new CredentialsProviderError(`Profile ${profileName} does not contain login_session.`, { + tryNextLink: true, + logger: init?.logger, + }); + } + + const fetcher = new LoginCredentialsFetcher(profile, init, callerClientConfig); + + const credentials = await fetcher.loadCredentials(); + + return setCredentialFeature(credentials, "CREDENTIALS_LOGIN", "AD"); + }; diff --git a/packages/credential-provider-login/src/index.ts b/packages/credential-provider-login/src/index.ts new file mode 100644 index 0000000000000..2986833c1cf13 --- /dev/null +++ b/packages/credential-provider-login/src/index.ts @@ -0,0 +1,8 @@ +/** + * @internal + */ +export * from "./fromLoginCredentials"; +/** + * @internal + */ +export * from "./types"; diff --git a/packages/credential-provider-login/src/types.ts b/packages/credential-provider-login/src/types.ts new file mode 100644 index 0000000000000..12a793a8c5b19 --- /dev/null +++ b/packages/credential-provider-login/src/types.ts @@ -0,0 +1,68 @@ +import type { SigninClientConfig } from "@aws-sdk/nested-clients/signin"; +import type { CredentialProviderOptions } from "@aws-sdk/types"; +import type { SharedConfigInit } from "@smithy/shared-ini-file-loader"; + +/** + * Configuration options for the Login credential provider + * @public + */ +export interface FromLoginCredentialsInit extends CredentialProviderOptions, SharedConfigInit { + /** + * Profile name to use for Login credentials + */ + profile?: string; + + /** + * Login client configuration for token refresh operations + */ + clientConfig?: SigninClientConfig; + + // Note: loginCacheDirectory ((code level equivalent to AWS_LOGIN_CACHE_DIRECTORY) is not currently supported. + // If added in the future, also add equivalent support for SSO. + // loginCacheDirectory?: string; +} + +/** + * Login token structure stored on disk + * @internal + */ +export interface LoginToken { + accessToken: { + accessKeyId: string; + secretAccessKey: string; + sessionToken: string; + accountId?: string; + expiresAt: string; + }; + tokenType: string; + clientId: string; + refreshToken: string; + idToken: string; + dpopKey: string; // DPoP private key PEM +} + +/** + * DPoP header structure for OAuth 2.0 Demonstrating Proof of Possession + * @internal + */ +export interface DpopHeader { + typ: "dpop+jwt"; + alg: "ES256"; + jwk: { + kty: "EC"; + crv: "P-256"; + x: string; + y: string; + }; +} + +/** + * DPoP payload structure + * @internal + */ +export interface DpopPayload { + jti: string; + htm: string; + htu: string; + iat: number; +} diff --git a/packages/credential-provider-login/tsconfig.cjs.json b/packages/credential-provider-login/tsconfig.cjs.json new file mode 100644 index 0000000000000..d863b538bd613 --- /dev/null +++ b/packages/credential-provider-login/tsconfig.cjs.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "outDir": "dist-cjs", + "rootDir": "src", + "noCheck": true + }, + "extends": "../../tsconfig.cjs.json", + "include": ["src/"] +} diff --git a/packages/credential-provider-login/tsconfig.es.json b/packages/credential-provider-login/tsconfig.es.json new file mode 100644 index 0000000000000..beb0825864bbe --- /dev/null +++ b/packages/credential-provider-login/tsconfig.es.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "lib": [], + "outDir": "dist-es", + "rootDir": "src", + "noCheck": true + }, + "extends": "../../tsconfig.es.json", + "include": ["src/"] +} diff --git a/packages/credential-provider-login/tsconfig.types.json b/packages/credential-provider-login/tsconfig.types.json new file mode 100644 index 0000000000000..6cdf9f52ea065 --- /dev/null +++ b/packages/credential-provider-login/tsconfig.types.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "declarationDir": "dist-types", + "rootDir": "src" + }, + "extends": "../../tsconfig.types.json", + "include": ["src/"] +} diff --git a/packages/credential-provider-login/vitest.config.mts b/packages/credential-provider-login/vitest.config.mts new file mode 100644 index 0000000000000..4e46707824a58 --- /dev/null +++ b/packages/credential-provider-login/vitest.config.mts @@ -0,0 +1,9 @@ +import { defineConfig } from "vitest/config"; + +export default defineConfig({ + test: { + exclude: ["**/*.{integ,e2e,browser}.spec.ts"], + include: ["**/*.spec.ts"], + environment: "node", + }, +}); diff --git a/packages/credential-provider-node/package.json b/packages/credential-provider-node/package.json index e147cf02a27e6..791fd032eab84 100644 --- a/packages/credential-provider-node/package.json +++ b/packages/credential-provider-node/package.json @@ -34,6 +34,7 @@ "@aws-sdk/credential-provider-env": "*", "@aws-sdk/credential-provider-http": "*", "@aws-sdk/credential-provider-ini": "*", + "@aws-sdk/credential-provider-login": "*", "@aws-sdk/credential-provider-process": "*", "@aws-sdk/credential-provider-sso": "*", "@aws-sdk/credential-provider-web-identity": "*", diff --git a/packages/credential-provider-node/tests/credential-provider-node.integ.spec.ts b/packages/credential-provider-node/tests/credential-provider-node.integ.spec.ts index 02842b69c7e1b..31c15836de9cd 100644 --- a/packages/credential-provider-node/tests/credential-provider-node.integ.spec.ts +++ b/packages/credential-provider-node/tests/credential-provider-node.integ.spec.ts @@ -452,6 +452,48 @@ describe("credential-provider-node integration test", () => { }); }); + it("should resolve login credentials if the profile has login_session", async () => { + const mockLoginSession = "arn:aws:sts::123456789012:assumed-role/Admin/admin"; + const loginSessionHash = createHash("sha256").update(Buffer.from(mockLoginSession, "utf8")).digest("hex"); + const dir = join(homedir(), ".aws", "login", "cache"); + const tokenPath = join(dir, `${loginSessionHash}.json`); + + const mockToken = { + accessToken: { + accessKeyId: "LOGIN_ACCESS_KEY_ID", + secretAccessKey: "LOGIN_SECRET_ACCESS_KEY", + sessionToken: "LOGIN_SESSION_TOKEN", + accountId: "123456789012", + expiresAt: "3000-01-01T00:00:00.000Z", + }, + clientId: "test-client-id", + refreshToken: "test-refresh-token", + dpopKey: "test-dpop-key", + }; + + externalDataInterceptor.interceptFile(tokenPath, JSON.stringify(mockToken)); + + setIniProfileData({ + default: { + region: "ap-northeast-2", + login_session: mockLoginSession, + }, + }); + await sts.getCallerIdentity({}); + const credentials = await sts.config.credentials(); + expect(credentials).toEqual({ + accessKeyId: "LOGIN_ACCESS_KEY_ID", + secretAccessKey: "LOGIN_SECRET_ACCESS_KEY", + sessionToken: "LOGIN_SESSION_TOKEN", + accountId: "123456789012", + expiration: new Date("3000-01-01T00:00:00.000Z"), + $source: { + CREDENTIALS_PROFILE_LOGIN: "AC", + CREDENTIALS_LOGIN: "AD", + }, + }); + }); + it("should be able to combine a source_profile having only credential_source with an origin profile having role_arn and source_profile", async () => { process.env.AWS_CONTAINER_CREDENTIALS_FULL_URI = "http://169.254.170.23"; process.env.AWS_CONTAINER_AUTHORIZATION_TOKEN = "container-authorization"; diff --git a/packages/credential-providers/README.md b/packages/credential-providers/README.md index 70575f0195311..f603601291a11 100644 --- a/packages/credential-providers/README.md +++ b/packages/credential-providers/README.md @@ -28,6 +28,9 @@ A collection of all credential providers. - [Supported Configuration](#supported-configuration) - [SSO login with AWS CLI](#sso-login-with-the-aws-cli) - [Sample Files](#sample-files-2) +- [From Login Credentials](#fromLoginCredentials) + - [Login with AWS CLI](#login-with-aws-cli) + - [Sample Files](#sample-files-3) - [From Node.js default credentials provider chain](#fromnodeproviderchain) - [Creating a custom credentials chain](#createcredentialchain) @@ -920,6 +923,109 @@ sso_role_name = SampleRole sso_start_url = https://d-abc123.awsapps.com/start ``` +## `fromLoginCredentials()` + +- Uses `@aws-sdk/client-signin` +- Not available in browsers & native apps + +`fromLoginCredentials` creates an `AwsCredentialIdentityProvider` function that reads from cached login credentials stored on disk after authenticating with the AWS CLI using the `aws login` command. The provider automatically refreshes when the credentials are about to expire. + +This provider is not typically used in an explicit fashion and is designed to simplify credential usage by allowing SDK clients to work seamlessly after running `aws login` with AWS CLI, without requiring any additional configuration. + +```javascript +import { fromLoginCredentials } from "@aws-sdk/credential-providers"; // ES6 import + +const client = new FooClient({ + // Optional, available on clients as of v3.714.0. + profile: "my-profile", + credentials: fromLoginCredentials({ + // Optional. Defaults to the client's profile if that is set. + // Optional. Should match the profile name used with 'aws login --profile ' + // to ensure credentials are found in the cache. Uses 'default' if no + // --profile was specified during aws login or if this option is omitted. + profile: "my-profile", + // Optional. Overwrite the configuration used to construct the signin service client. + // If not specified, a default signin client will be created with the region specified in the profile. + // Warning: setting a region here overrides the region set in the config file + // for the selected profile. + clientConfig: { region }, + }), +}); +``` + +### Login with AWS CLI + +This credential provider relies on the AWS CLI to authenticate and cache login credentials. Here's how to set it up: + +1. **Initial Login**: Run the `aws login` command to authenticate using your existing AWS Management Console credentials: + +```console +$ aws login +``` + +2. **Named Profile**: To sign in to a named profile or create a new one, use the `--profile` option: + +```console +$ aws login --profile my-dev-profile +``` + +3. **Region Configuration**: If this is a new profile or no AWS Region has been specified, the AWS CLI prompts you to provide a region: + +```console +No AWS region has been configured. The AWS region is the geographic location of +your AWS resources. + +If you've used AWS before and already have resources in your account, tell us +which region they were created in. If you haven't created resources in your account +before, you can pick the region closest to you: +https://docs.aws.amazon.com/global-infrastructure/latest/regions/aws-regions.html. +You are able to change the region in the CLI at any time with the command +`aws configure set region NEW_REGION`. + +AWS Region [us-east-1]: +``` + +4. **Browser Authentication**: The AWS CLI attempts to open your default browser for the sign in process: + +```console +Attempting to open the login page for `us-east-1` in your default browser. +If the browser does not open, use the following URL to complete your login: +https://signin.us-east-1.amazonaws.com/authorize? +``` + +5. **No Browser Option**: If the device using the AWS CLI does not have a browser, you can use the `--no-browser` option: + +```console +$ aws login --no-browser +``` + +This will provide a URL for you to open on a browser-enabled device and prompt for an authorization code. + +6. **Logout**: When you are done using your session, you can let your credentials expire, or run the `aws logout` command: + +```console +$ aws logout +$ aws logout --profile my-dev-profile +``` + +### Cached Credentials + +The temporary cached credentials, as well as the metadata required to refresh them are stored by default in `~/.aws/login/cache` on Linux and macOS, or `%USERPROFILE%\.aws\login\cache` on Windows. + +You can override this location by setting the `AWS_LOGIN_CACHE_DIRECTORY` environment variable. + +### Sample Files + +After running `aws login`, the configuration file will contain a `login_session` entry: + +#### `~/.aws/config` + +```ini +[default] +login_session = arn:aws:iam::0123456789012:user/username +region = us-east-1 +``` + ## `fromNodeProviderChain()` - May use `@aws-sdk/client-sts`, `@aws-sdk/client-sso`, etc. depending on diff --git a/packages/credential-providers/package.json b/packages/credential-providers/package.json index 18f304719ef52..11872b2239604 100644 --- a/packages/credential-providers/package.json +++ b/packages/credential-providers/package.json @@ -37,6 +37,7 @@ "@aws-sdk/credential-provider-env": "*", "@aws-sdk/credential-provider-http": "*", "@aws-sdk/credential-provider-ini": "*", + "@aws-sdk/credential-provider-login": "*", "@aws-sdk/credential-provider-node": "*", "@aws-sdk/credential-provider-process": "*", "@aws-sdk/credential-provider-sso": "*", diff --git a/packages/credential-providers/src/fromLoginCredentials.spec.ts b/packages/credential-providers/src/fromLoginCredentials.spec.ts new file mode 100644 index 0000000000000..710d6abbb8de0 --- /dev/null +++ b/packages/credential-providers/src/fromLoginCredentials.spec.ts @@ -0,0 +1,28 @@ +import { beforeEach, describe, expect, it, vi } from "vitest"; + +vi.mock("@aws-sdk/credential-provider-login", () => ({ + fromLoginCredentials: vi.fn(), +})); + +import { fromLoginCredentials as mockFromLoginCredentials } from "@aws-sdk/credential-provider-login"; + +import { fromLoginCredentials } from "./fromLoginCredentials"; + +describe("fromLoginCredentials", () => { + beforeEach(() => { + vi.clearAllMocks(); + }); + + it("should call the underlying fromLoginCredentials with provided init", () => { + const init = { profile: "test-profile" }; + fromLoginCredentials(init); + + expect(mockFromLoginCredentials).toHaveBeenCalledWith(init); + }); + + it("should call the underlying fromLoginCredentials with empty object when no init provided", () => { + fromLoginCredentials(); + + expect(mockFromLoginCredentials).toHaveBeenCalledWith({}); + }); +}); diff --git a/packages/credential-providers/src/fromLoginCredentials.ts b/packages/credential-providers/src/fromLoginCredentials.ts new file mode 100644 index 0000000000000..70f0439fb4c67 --- /dev/null +++ b/packages/credential-providers/src/fromLoginCredentials.ts @@ -0,0 +1,14 @@ +import { + type FromLoginCredentialsInit, + fromLoginCredentials as _fromLoginCredentials, +} from "@aws-sdk/credential-provider-login"; +import type { RuntimeConfigAwsCredentialIdentityProvider } from "@aws-sdk/types"; + +/** + * Creates a credential provider that sources credentials from `aws login` cached tokens + * @public + */ +export const fromLoginCredentials = (init?: FromLoginCredentialsInit): RuntimeConfigAwsCredentialIdentityProvider => + _fromLoginCredentials({ + ...init, + }); diff --git a/packages/credential-providers/src/index.ts b/packages/credential-providers/src/index.ts index e23687adcc6f2..88e3528637acd 100644 --- a/packages/credential-providers/src/index.ts +++ b/packages/credential-providers/src/index.ts @@ -2,10 +2,11 @@ export * from "./createCredentialChain"; export * from "./fromCognitoIdentity"; export * from "./fromCognitoIdentityPool"; export * from "./fromContainerMetadata"; -export { fromHttp, FromHttpOptions, HttpProviderCredentials } from "@aws-sdk/credential-provider-http"; export * from "./fromEnv"; +export { fromHttp, FromHttpOptions, HttpProviderCredentials } from "@aws-sdk/credential-provider-http"; export * from "./fromIni"; export * from "./fromInstanceMetadata"; +export * from "./fromLoginCredentials"; export * from "./fromNodeProviderChain"; export * from "./fromProcess"; export * from "./fromSSO"; diff --git a/packages/credential-providers/tests/_test-lib.ts b/packages/credential-providers/tests/_test-lib.ts index a3d8351a5a9bc..9fc66164ee6bb 100644 --- a/packages/credential-providers/tests/_test-lib.ts +++ b/packages/credential-providers/tests/_test-lib.ts @@ -1,5 +1,5 @@ import { S3 } from "@aws-sdk/client-s3"; -import { fromSSO } from "@aws-sdk/credential-providers"; +import { fromLoginCredentials, fromSSO } from "@aws-sdk/credential-providers"; import { warning } from "@aws-sdk/region-config-resolver"; import { ParsedIniData, RuntimeConfigAwsCredentialIdentityProvider } from "@aws-sdk/types"; import { NodeHttpHandler } from "@smithy/node-http-handler"; @@ -101,6 +101,7 @@ export class CTest

RuntimeConfigAwsCredentialIdentityP AWS_CONTAINER_CREDENTIALS_RELATIVE_URI: 1, AWS_CONTAINER_AUTHORIZATION_TOKEN: 1, AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE: 1, + AWS_LOGIN_CACHE_DIRECTORY: 1, }; function copy(data: T): T { @@ -152,6 +153,42 @@ export class CTest

RuntimeConfigAwsCredentialIdentityP externalDataInterceptor.interceptToken("SSO_START_URL", ssoToken); externalDataInterceptor.interceptToken("ssoNew", ssoToken); externalDataInterceptor.interceptToken("token-filepath", "token-contents"); + + // Setup login credentials cache + let loginCreds = { + accessToken: { + accessKeyId: "LOGIN_ACCESS_KEY_ID", + secretAccessKey: "LOGIN_SECRET_ACCESS_KEY", + sessionToken: "LOGIN_SESSION_TOKEN", + accountId: "012345678910", + expiresAt: new Date(Date.now() + 15 * 60 * 1000).toISOString(), + }, + tokenType: "accessToken", + clientId: "test-client-id", + refreshToken: "test-refresh-token", + idToken: "test-id-token", + dpopKey: "test-dpop-key", + }; + const loginSessionBytes = Buffer.from("arn:aws:sts::012345678910:assumed-role/Test", "utf8"); + const loginCacheName = createHash("sha256").update(loginSessionBytes).digest("hex"); + const loginCachePath = join( + process.env.AWS_LOGIN_CACHE_DIRECTORY ?? join(homedir(), ".aws", "login", "cache"), + `${loginCacheName}.json` + ); + externalDataInterceptor.interceptFile(loginCachePath, JSON.stringify(loginCreds)); + externalDataInterceptor.interceptToken("loginCachePath", loginCreds); + externalDataInterceptor.interceptToken("updateLoginCreds", (region: string) => { + loginCreds = { + ...loginCreds, + accessToken: { + ...loginCreds.accessToken, + sessionToken: `LOGIN_SESSION_TOKEN_${region}`, + }, + }; + // Update the file content with new credentials + externalDataInterceptor.interceptFile(loginCachePath, JSON.stringify(loginCreds)); + }); + externalDataInterceptor.interceptToken("login_session", "arn:aws:sts::012345678910:assumed-role/Test"); }); afterEach(async () => { @@ -206,6 +243,7 @@ export class CTest

RuntimeConfigAwsCredentialIdentityP const regionRequired = this.fallbackRegion === "unresolved" || withCaller; const providerParams = this.providerParams(params); const isSso = this.credentialProvider === fromSSO || providerParams.ssoStartUrl; + const hasRegion = providerRegion || profileRegion || callerClientRegion || envRegion; if (regionRequired && !hasRegion) { @@ -263,6 +301,28 @@ export class CTest

RuntimeConfigAwsCredentialIdentityP delete process.env.AWS_REGION; } + const isLoginCredentials = this.credentialProvider === fromLoginCredentials; + + // Update login credentials with expected region for this test + if (isLoginCredentials) { + let expectedRegion = ""; + if (providerRegion) { + expectedRegion = "provider-region"; + } else if (profileRegion) { + expectedRegion = `${profile ?? "default"}-profile-region`; + } else if (callerClientRegion && withCaller) { + expectedRegion = "code-region"; + } else if (envRegion) { + expectedRegion = "env-region"; + } + if (expectedRegion) { + const updateLoginCreds = externalDataInterceptor.getTokenRecord().updateLoginCreds; + if (updateLoginCreds) { + updateLoginCreds(expectedRegion); + } + } + } + if (profileRegion) { iniProfileData = { default: { @@ -271,6 +331,7 @@ export class CTest

RuntimeConfigAwsCredentialIdentityP role_session_name: "ROLE_SESSION_NAME", external_id: "EXTERNAL_ID", source_profile: "assume", + login_session: "arn:aws:sts::012345678910:assumed-role/Test", }, assume: { region: "assume-profile-region", @@ -283,6 +344,7 @@ export class CTest

RuntimeConfigAwsCredentialIdentityP role_session_name: "ROLE_SESSION_NAME", external_id: "EXTERNAL_ID", source_profile: "assume2", + login_session: "arn:aws:sts::012345678910:assumed-role/Test", }, assume2: { region: "assume2-profile-region", @@ -297,6 +359,7 @@ export class CTest

RuntimeConfigAwsCredentialIdentityP role_session_name: "ROLE_SESSION_NAME", external_id: "EXTERNAL_ID", source_profile: "assume", + login_session: "arn:aws:sts::012345678910:assumed-role/Test", }, assume: { aws_access_key_id: "ASSUME_STATIC_ACCESS_KEY", @@ -307,6 +370,7 @@ export class CTest

RuntimeConfigAwsCredentialIdentityP role_session_name: "ROLE_SESSION_NAME", external_id: "EXTERNAL_ID", source_profile: "assume2", + login_session: "arn:aws:sts::012345678910:assumed-role/Test", }, assume2: { aws_access_key_id: "ASSUME_STATIC_ACCESS_KEY", @@ -428,6 +492,20 @@ export class MockNodeHttpHandler { body.write(`{ "IdentityId":"${region}:COGNITO_IDENTITY_ID" }`); + } else if (request.path?.includes("/v1/token") && request.headers["dpop"]) { + body.write( + JSON.stringify({ + tokenOutput: { + accessToken: { + accessKeyId: "LOGIN_ACCESS_KEY_ID", + secretAccessKey: "LOGIN_SECRET_ACCESS_KEY", + sessionToken: `LOGIN_SESSION_TOKEN_${region}`, + }, + refreshToken: "REFRESHED_TOKEN", + expiresIn: 900, + }, + }) + ); } else if (request.hostname.startsWith("s3.")) { body.write(` diff --git a/packages/credential-providers/tests/fromLoginCredentials.integ.spec.ts b/packages/credential-providers/tests/fromLoginCredentials.integ.spec.ts new file mode 100644 index 0000000000000..238cc7f983a6a --- /dev/null +++ b/packages/credential-providers/tests/fromLoginCredentials.integ.spec.ts @@ -0,0 +1,137 @@ +import { S3 } from "@aws-sdk/client-s3"; +import { fromLoginCredentials } from "@aws-sdk/credential-providers"; +import { externalDataInterceptor } from "@smithy/shared-ini-file-loader"; +import { createHash } from "node:crypto"; +import { homedir } from "node:os"; +import { join } from "node:path"; +import { describe, expect, test as it } from "vitest"; + +import { CTest } from "./_test-lib"; + +describe(fromLoginCredentials.name, () => { + const ctest = new CTest({ + credentialProvider: fromLoginCredentials, + providerParams: (testParams) => { + return { + ...CTest.defaultRegionConfigProvider(testParams), + }; + }, + profileCredentials: true, + fallbackRegion: "unresolved", + }); + + // Helper function to set up login cache file interception + const setupLoginCache = (loginSession: string) => { + const loginCreds = { + accessToken: { + accessKeyId: "LOGIN_ACCESS_KEY_ID", + secretAccessKey: "LOGIN_SECRET_ACCESS_KEY", + sessionToken: "LOGIN_SESSION_TOKEN", + accountId: "012345678910", + expiresAt: "3000-01-01T00:00:00.000Z", + }, + clientId: "test-client-id", + refreshToken: "test-refresh-token", + dpopKey: "test-dpop-key", + }; + + const loginSessionBytes = Buffer.from(loginSession, "utf8"); + const loginCacheName = createHash("sha256").update(loginSessionBytes).digest("hex"); + const loginCachePath = join( + process.env.AWS_LOGIN_CACHE_DIRECTORY ?? join(homedir(), ".aws", "login", "cache"), + `${loginCacheName}.json` + ); + + externalDataInterceptor.interceptToken("login_session", loginSession); + externalDataInterceptor.interceptFile(loginCachePath, JSON.stringify(loginCreds)); + }; + + ctest.testRegion(); + + describe("configure from env", () => { + it("is not configurable from env", async () => { + expect("ok").toBeTruthy(); + }); + }); + + describe("configure from profile", () => { + it("should load credentials from profile with login_session", async () => { + const loginSession = "mock_login_session"; + + ctest.setIni({ + default: { + login_session: loginSession, + region: "ap-south-2", + }, + }); + + setupLoginCache(loginSession); + + const s3 = new S3({ + region: "us-east-1", + credentials: fromLoginCredentials({}), + }); + + await s3.listBuckets(); + expect(await s3.config.credentials()).toEqual({ + $source: { + CREDENTIALS_CODE: "e", + CREDENTIALS_LOGIN: "AD", + }, + accessKeyId: "LOGIN_ACCESS_KEY_ID", + secretAccessKey: "LOGIN_SECRET_ACCESS_KEY", + sessionToken: "LOGIN_SESSION_TOKEN", + accountId: "012345678910", + expiration: expect.any(Date), + }); + }); + + it("should throw error when profile lacks login_session", async () => { + ctest.setIni({ + default: { + region: "us-east-1", + }, + }); + + const s3 = new S3({ + region: "us-east-1", + credentials: fromLoginCredentials(), + }); + + await expect(s3.listBuckets()).rejects.toThrow("Profile default does not contain login_session."); + }); + }); + + describe("configure from code", () => { + it("should be configurable with profile parameter", async () => { + const loginSession = "mock_login_session"; + + ctest.setIni({ + test: { + login_session: loginSession, + region: "us-west-2", + }, + }); + + setupLoginCache(loginSession); + + const s3 = new S3({ + region: "us-west-2", + credentials: fromLoginCredentials({ profile: "test" }), + }); + + await s3.listBuckets(); + expect(await s3.config.credentials()).toEqual({ + $source: { + CREDENTIALS_CODE: "e", + CREDENTIALS_LOGIN: "AD", + }, + accessKeyId: "LOGIN_ACCESS_KEY_ID", + secretAccessKey: "LOGIN_SECRET_ACCESS_KEY", + sessionToken: "LOGIN_SESSION_TOKEN", + accountId: "012345678910", + expiration: expect.any(Date), + }); + }); + }); +}); diff --git a/packages/nested-clients/package.json b/packages/nested-clients/package.json index 29a5e435742fd..9627369445e63 100644 --- a/packages/nested-clients/package.json +++ b/packages/nested-clients/package.json @@ -80,6 +80,8 @@ } }, "files": [ + "./signin.d.ts", + "./signin.js", "./sso-oidc.d.ts", "./sso-oidc.js", "./sts.d.ts", @@ -87,6 +89,7 @@ "dist-*/**" ], "browser": { + "./dist-es/submodules/signin/runtimeConfig": "./dist-es/submodules/signin/runtimeConfig.browser", "./dist-es/submodules/sso-oidc/runtimeConfig": "./dist-es/submodules/sso-oidc/runtimeConfig.browser", "./dist-es/submodules/sts/runtimeConfig": "./dist-es/submodules/sts/runtimeConfig.browser" }, @@ -98,6 +101,7 @@ "directory": "packages/nested-clients" }, "exports": { + "./package.json": "./package.json", "./sso-oidc": { "types": "./dist-types/submodules/sso-oidc/index.d.ts", "module": "./dist-es/submodules/sso-oidc/index.js", @@ -111,6 +115,13 @@ "node": "./dist-cjs/submodules/sts/index.js", "import": "./dist-es/submodules/sts/index.js", "require": "./dist-cjs/submodules/sts/index.js" + }, + "./signin": { + "types": "./dist-types/submodules/signin/index.d.ts", + "module": "./dist-es/submodules/signin/index.js", + "node": "./dist-cjs/submodules/signin/index.js", + "import": "./dist-es/submodules/signin/index.js", + "require": "./dist-cjs/submodules/signin/index.js" } } } diff --git a/packages/nested-clients/signin.d.ts b/packages/nested-clients/signin.d.ts new file mode 100644 index 0000000000000..461596154c439 --- /dev/null +++ b/packages/nested-clients/signin.d.ts @@ -0,0 +1,7 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +declare module "@aws-sdk/nested-clients/signin" { + export * from "@aws-sdk/nested-clients/dist-types/submodules/signin/index.d"; +} diff --git a/packages/nested-clients/signin.js b/packages/nested-clients/signin.js new file mode 100644 index 0000000000000..db3d54546a385 --- /dev/null +++ b/packages/nested-clients/signin.js @@ -0,0 +1,5 @@ +/** + * Do not edit: + * This is a compatibility redirect for contexts that do not understand package.json exports field. + */ +module.exports = require("./dist-cjs/submodules/signin/index.js"); diff --git a/packages/nested-clients/src/submodules/signin/Signin.ts b/packages/nested-clients/src/submodules/signin/Signin.ts new file mode 100644 index 0000000000000..174533a89c3b5 --- /dev/null +++ b/packages/nested-clients/src/submodules/signin/Signin.ts @@ -0,0 +1,18 @@ +// smithy-typescript generated code +import { createAggregatedClient } from "@smithy/smithy-client"; + +import { SigninClient, SigninClientConfig } from "./SigninClient"; + +const commands = {}; + +export interface Signin {} + +/** + * AWS Sign-In Data Plane Service + * + * This service implements OAuth 2.0 flows for AWS CLI authentication, + * providing secure token exchange and refresh capabilities. + * @public + */ +export class Signin extends SigninClient implements Signin {} +createAggregatedClient(commands, Signin); diff --git a/packages/nested-clients/src/submodules/signin/SigninClient.ts b/packages/nested-clients/src/submodules/signin/SigninClient.ts new file mode 100644 index 0000000000000..8738508e15a71 --- /dev/null +++ b/packages/nested-clients/src/submodules/signin/SigninClient.ts @@ -0,0 +1,332 @@ +// smithy-typescript generated code +import { + getHostHeaderPlugin, + HostHeaderInputConfig, + HostHeaderResolvedConfig, + resolveHostHeaderConfig, +} from "@aws-sdk/middleware-host-header"; +import { getLoggerPlugin } from "@aws-sdk/middleware-logger"; +import { getRecursionDetectionPlugin } from "@aws-sdk/middleware-recursion-detection"; +import { + getUserAgentPlugin, + resolveUserAgentConfig, + UserAgentInputConfig, + UserAgentResolvedConfig, +} from "@aws-sdk/middleware-user-agent"; +import { RegionInputConfig, RegionResolvedConfig, resolveRegionConfig } from "@smithy/config-resolver"; +import { + DefaultIdentityProviderConfig, + getHttpAuthSchemeEndpointRuleSetPlugin, + getHttpSigningPlugin, +} from "@smithy/core"; +import { getSchemaSerdePlugin } from "@smithy/core/schema"; +import { getContentLengthPlugin } from "@smithy/middleware-content-length"; +import { EndpointInputConfig, EndpointResolvedConfig, resolveEndpointConfig } from "@smithy/middleware-endpoint"; +import { getRetryPlugin, resolveRetryConfig, RetryInputConfig, RetryResolvedConfig } from "@smithy/middleware-retry"; +import { HttpHandlerUserInput as __HttpHandlerUserInput } from "@smithy/protocol-http"; +import { + Client as __Client, + DefaultsMode as __DefaultsMode, + SmithyConfiguration as __SmithyConfiguration, + SmithyResolvedConfiguration as __SmithyResolvedConfiguration, +} from "@smithy/smithy-client"; +import { + BodyLengthCalculator as __BodyLengthCalculator, + CheckOptionalClientConfig as __CheckOptionalClientConfig, + ChecksumConstructor as __ChecksumConstructor, + ClientProtocol, + Decoder as __Decoder, + Encoder as __Encoder, + EndpointV2 as __EndpointV2, + HashConstructor as __HashConstructor, + HttpHandlerOptions as __HttpHandlerOptions, + HttpRequest, + HttpResponse, + Logger as __Logger, + MetadataBearer as __MetadataBearer, + Provider as __Provider, + Provider, + StreamCollector as __StreamCollector, + UrlParser as __UrlParser, + UserAgent as __UserAgent, +} from "@smithy/types"; + +import { + defaultSigninHttpAuthSchemeParametersProvider, + HttpAuthSchemeInputConfig, + HttpAuthSchemeResolvedConfig, + resolveHttpAuthSchemeConfig, +} from "./auth/httpAuthSchemeProvider"; +import { + ClientInputEndpointParameters, + ClientResolvedEndpointParameters, + EndpointParameters, + resolveClientEndpointParameters, +} from "./endpoint/EndpointParameters"; +import { getRuntimeConfig as __getRuntimeConfig } from "./runtimeConfig"; +import { resolveRuntimeExtensions, RuntimeExtension, RuntimeExtensionsConfig } from "./runtimeExtensions"; + +export { __Client }; + +/** + * @public + */ +export type ServiceInputTypes = {}; + +/** + * @public + */ +export type ServiceOutputTypes = __MetadataBearer; + +/** + * @public + */ +export interface ClientDefaults extends Partial<__SmithyConfiguration<__HttpHandlerOptions>> { + /** + * The HTTP handler to use or its constructor options. Fetch in browser and Https in Nodejs. + */ + requestHandler?: __HttpHandlerUserInput; + + /** + * A constructor for a class implementing the {@link @smithy/types#ChecksumConstructor} interface + * that computes the SHA-256 HMAC or checksum of a string or binary buffer. + * @internal + */ + sha256?: __ChecksumConstructor | __HashConstructor; + + /** + * The function that will be used to convert strings into HTTP endpoints. + * @internal + */ + urlParser?: __UrlParser; + + /** + * A function that can calculate the length of a request body. + * @internal + */ + bodyLengthChecker?: __BodyLengthCalculator; + + /** + * A function that converts a stream into an array of bytes. + * @internal + */ + streamCollector?: __StreamCollector; + + /** + * The function that will be used to convert a base64-encoded string to a byte array. + * @internal + */ + base64Decoder?: __Decoder; + + /** + * The function that will be used to convert binary data to a base64-encoded string. + * @internal + */ + base64Encoder?: __Encoder; + + /** + * The function that will be used to convert a UTF8-encoded string to a byte array. + * @internal + */ + utf8Decoder?: __Decoder; + + /** + * The function that will be used to convert binary data to a UTF-8 encoded string. + * @internal + */ + utf8Encoder?: __Encoder; + + /** + * The runtime environment. + * @internal + */ + runtime?: string; + + /** + * Disable dynamically changing the endpoint of the client based on the hostPrefix + * trait of an operation. + */ + disableHostPrefix?: boolean; + + /** + * Unique service identifier. + * @internal + */ + serviceId?: string; + + /** + * Enables IPv6/IPv4 dualstack endpoint. + */ + useDualstackEndpoint?: boolean | __Provider; + + /** + * Enables FIPS compatible endpoints. + */ + useFipsEndpoint?: boolean | __Provider; + + /** + * The AWS region to which this client will send requests + */ + region?: string | __Provider; + + /** + * Setting a client profile is similar to setting a value for the + * AWS_PROFILE environment variable. Setting a profile on a client + * in code only affects the single client instance, unlike AWS_PROFILE. + * + * When set, and only for environments where an AWS configuration + * file exists, fields configurable by this file will be retrieved + * from the specified profile within that file. + * Conflicting code configuration and environment variables will + * still have higher priority. + * + * For client credential resolution that involves checking the AWS + * configuration file, the client's profile (this value) will be + * used unless a different profile is set in the credential + * provider options. + * + */ + profile?: string; + + /** + * The provider populating default tracking information to be sent with `user-agent`, `x-amz-user-agent` header + * @internal + */ + defaultUserAgentProvider?: Provider<__UserAgent>; + + /** + * Value for how many times a request will be made at most in case of retry. + */ + maxAttempts?: number | __Provider; + + /** + * Specifies which retry algorithm to use. + * @see https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-smithy-util-retry/Enum/RETRY_MODES/ + * + */ + retryMode?: string | __Provider; + + /** + * Optional logger for logging debug/info/warn/error. + */ + logger?: __Logger; + + /** + * Optional extensions + */ + extensions?: RuntimeExtension[]; + + /** + * The protocol controlling the message type (e.g. HTTP) and format (e.g. JSON) + * may be overridden. A default will always be set by the client. + * Available options depend on the service's supported protocols and will not be validated by + * the client. + * @alpha + * + */ + protocol?: ClientProtocol; + + /** + * The {@link @smithy/smithy-client#DefaultsMode} that will be used to determine how certain default configuration options are resolved in the SDK. + */ + defaultsMode?: __DefaultsMode | __Provider<__DefaultsMode>; +} + +/** + * @public + */ +export type SigninClientConfigType = Partial<__SmithyConfiguration<__HttpHandlerOptions>> & + ClientDefaults & + UserAgentInputConfig & + RetryInputConfig & + RegionInputConfig & + HostHeaderInputConfig & + EndpointInputConfig & + HttpAuthSchemeInputConfig & + ClientInputEndpointParameters; +/** + * @public + * + * The configuration interface of SigninClient class constructor that set the region, credentials and other options. + */ +export interface SigninClientConfig extends SigninClientConfigType {} + +/** + * @public + */ +export type SigninClientResolvedConfigType = __SmithyResolvedConfiguration<__HttpHandlerOptions> & + Required & + RuntimeExtensionsConfig & + UserAgentResolvedConfig & + RetryResolvedConfig & + RegionResolvedConfig & + HostHeaderResolvedConfig & + EndpointResolvedConfig & + HttpAuthSchemeResolvedConfig & + ClientResolvedEndpointParameters; +/** + * @public + * + * The resolved configuration interface of SigninClient class. This is resolved and normalized from the {@link SigninClientConfig | constructor configuration interface}. + */ +export interface SigninClientResolvedConfig extends SigninClientResolvedConfigType {} + +/** + * AWS Sign-In Data Plane Service + * + * This service implements OAuth 2.0 flows for AWS CLI authentication, + * providing secure token exchange and refresh capabilities. + * @public + */ +export class SigninClient extends __Client< + __HttpHandlerOptions, + ServiceInputTypes, + ServiceOutputTypes, + SigninClientResolvedConfig +> { + /** + * The resolved configuration of SigninClient class. This is resolved and normalized from the {@link SigninClientConfig | constructor configuration interface}. + */ + readonly config: SigninClientResolvedConfig; + + constructor(...[configuration]: __CheckOptionalClientConfig) { + const _config_0 = __getRuntimeConfig(configuration || {}); + super(_config_0 as any); + this.initConfig = _config_0; + const _config_1 = resolveClientEndpointParameters(_config_0); + const _config_2 = resolveUserAgentConfig(_config_1); + const _config_3 = resolveRetryConfig(_config_2); + const _config_4 = resolveRegionConfig(_config_3); + const _config_5 = resolveHostHeaderConfig(_config_4); + const _config_6 = resolveEndpointConfig(_config_5); + const _config_7 = resolveHttpAuthSchemeConfig(_config_6); + const _config_8 = resolveRuntimeExtensions(_config_7, configuration?.extensions || []); + this.config = _config_8; + this.middlewareStack.use(getSchemaSerdePlugin(this.config)); + this.middlewareStack.use(getUserAgentPlugin(this.config)); + this.middlewareStack.use(getRetryPlugin(this.config)); + this.middlewareStack.use(getContentLengthPlugin(this.config)); + this.middlewareStack.use(getHostHeaderPlugin(this.config)); + this.middlewareStack.use(getLoggerPlugin(this.config)); + this.middlewareStack.use(getRecursionDetectionPlugin(this.config)); + this.middlewareStack.use( + getHttpAuthSchemeEndpointRuleSetPlugin(this.config, { + httpAuthSchemeParametersProvider: defaultSigninHttpAuthSchemeParametersProvider, + identityProviderConfigProvider: async (config: SigninClientResolvedConfig) => + new DefaultIdentityProviderConfig({ + "aws.auth#sigv4": config.credentials, + }), + }) + ); + this.middlewareStack.use(getHttpSigningPlugin(this.config)); + } + + /** + * Destroy underlying resources, like sockets. It's usually not necessary to do this. + * However in Node.js, it's best to explicitly shut down the client's agent when it is no longer needed. + * Otherwise, sockets might stay open for quite a long time before the server terminates them. + */ + destroy(): void { + super.destroy(); + } +} diff --git a/packages/nested-clients/src/submodules/signin/auth/httpAuthExtensionConfiguration.ts b/packages/nested-clients/src/submodules/signin/auth/httpAuthExtensionConfiguration.ts new file mode 100644 index 0000000000000..b62c43708b678 --- /dev/null +++ b/packages/nested-clients/src/submodules/signin/auth/httpAuthExtensionConfiguration.ts @@ -0,0 +1,72 @@ +// smithy-typescript generated code +import { AwsCredentialIdentity, AwsCredentialIdentityProvider, HttpAuthScheme } from "@smithy/types"; + +import { SigninHttpAuthSchemeProvider } from "./httpAuthSchemeProvider"; + +/** + * @internal + */ +export interface HttpAuthExtensionConfiguration { + setHttpAuthScheme(httpAuthScheme: HttpAuthScheme): void; + httpAuthSchemes(): HttpAuthScheme[]; + setHttpAuthSchemeProvider(httpAuthSchemeProvider: SigninHttpAuthSchemeProvider): void; + httpAuthSchemeProvider(): SigninHttpAuthSchemeProvider; + setCredentials(credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider): void; + credentials(): AwsCredentialIdentity | AwsCredentialIdentityProvider | undefined; +} + +/** + * @internal + */ +export type HttpAuthRuntimeConfig = Partial<{ + httpAuthSchemes: HttpAuthScheme[]; + httpAuthSchemeProvider: SigninHttpAuthSchemeProvider; + credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider; +}>; + +/** + * @internal + */ +export const getHttpAuthExtensionConfiguration = ( + runtimeConfig: HttpAuthRuntimeConfig +): HttpAuthExtensionConfiguration => { + const _httpAuthSchemes = runtimeConfig.httpAuthSchemes!; + let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider!; + let _credentials = runtimeConfig.credentials; + return { + setHttpAuthScheme(httpAuthScheme: HttpAuthScheme): void { + const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId); + if (index === -1) { + _httpAuthSchemes.push(httpAuthScheme); + } else { + _httpAuthSchemes.splice(index, 1, httpAuthScheme); + } + }, + httpAuthSchemes(): HttpAuthScheme[] { + return _httpAuthSchemes; + }, + setHttpAuthSchemeProvider(httpAuthSchemeProvider: SigninHttpAuthSchemeProvider): void { + _httpAuthSchemeProvider = httpAuthSchemeProvider; + }, + httpAuthSchemeProvider(): SigninHttpAuthSchemeProvider { + return _httpAuthSchemeProvider; + }, + setCredentials(credentials: AwsCredentialIdentity | AwsCredentialIdentityProvider): void { + _credentials = credentials; + }, + credentials(): AwsCredentialIdentity | AwsCredentialIdentityProvider | undefined { + return _credentials; + }, + }; +}; + +/** + * @internal + */ +export const resolveHttpAuthRuntimeConfig = (config: HttpAuthExtensionConfiguration): HttpAuthRuntimeConfig => { + return { + httpAuthSchemes: config.httpAuthSchemes(), + httpAuthSchemeProvider: config.httpAuthSchemeProvider(), + credentials: config.credentials(), + }; +}; diff --git a/packages/nested-clients/src/submodules/signin/auth/httpAuthSchemeProvider.ts b/packages/nested-clients/src/submodules/signin/auth/httpAuthSchemeProvider.ts new file mode 100644 index 0000000000000..a403d144c5709 --- /dev/null +++ b/packages/nested-clients/src/submodules/signin/auth/httpAuthSchemeProvider.ts @@ -0,0 +1,154 @@ +// smithy-typescript generated code +import { + AwsSdkSigV4AuthInputConfig, + AwsSdkSigV4AuthResolvedConfig, + AwsSdkSigV4PreviouslyResolved, + resolveAwsSdkSigV4Config, +} from "@aws-sdk/core"; +import { + HandlerExecutionContext, + HttpAuthOption, + HttpAuthScheme, + HttpAuthSchemeParameters, + HttpAuthSchemeParametersProvider, + HttpAuthSchemeProvider, + Provider, +} from "@smithy/types"; +import { getSmithyContext, normalizeProvider } from "@smithy/util-middleware"; + +import { SigninClientConfig, SigninClientResolvedConfig } from "../SigninClient"; + +/** + * @internal + */ +export interface SigninHttpAuthSchemeParameters extends HttpAuthSchemeParameters { + region?: string; +} + +/** + * @internal + */ +export interface SigninHttpAuthSchemeParametersProvider + extends HttpAuthSchemeParametersProvider< + SigninClientResolvedConfig, + HandlerExecutionContext, + SigninHttpAuthSchemeParameters, + object + > {} + +/** + * @internal + */ +export const defaultSigninHttpAuthSchemeParametersProvider = async ( + config: SigninClientResolvedConfig, + context: HandlerExecutionContext, + input: object +): Promise => { + return { + operation: getSmithyContext(context).operation as string, + region: + (await normalizeProvider(config.region)()) || + (() => { + throw new Error("expected `region` to be configured for `aws.auth#sigv4`"); + })(), + }; +}; + +function createAwsAuthSigv4HttpAuthOption(authParameters: SigninHttpAuthSchemeParameters): HttpAuthOption { + return { + schemeId: "aws.auth#sigv4", + signingProperties: { + name: "signin", + region: authParameters.region, + }, + propertiesExtractor: (config: Partial, context) => ({ + /** + * @internal + */ + signingProperties: { + config, + context, + }, + }), + }; +} + +/** + * @internal + */ +export interface SigninHttpAuthSchemeProvider extends HttpAuthSchemeProvider {} + +/** + * @internal + */ +export const defaultSigninHttpAuthSchemeProvider: SigninHttpAuthSchemeProvider = (authParameters) => { + const options: HttpAuthOption[] = []; + switch (authParameters.operation) { + default: { + options.push(createAwsAuthSigv4HttpAuthOption(authParameters)); + } + } + return options; +}; + +/** + * @public + */ +export interface HttpAuthSchemeInputConfig extends AwsSdkSigV4AuthInputConfig { + /** + * A comma-separated list of case-sensitive auth scheme names. + * An auth scheme name is a fully qualified auth scheme ID with the namespace prefix trimmed. + * For example, the auth scheme with ID aws.auth#sigv4 is named sigv4. + * @public + */ + authSchemePreference?: string[] | Provider; + + /** + * Configuration of HttpAuthSchemes for a client which provides default identity providers and signers per auth scheme. + * @internal + */ + httpAuthSchemes?: HttpAuthScheme[]; + + /** + * Configuration of an HttpAuthSchemeProvider for a client which resolves which HttpAuthScheme to use. + * @internal + */ + httpAuthSchemeProvider?: SigninHttpAuthSchemeProvider; +} + +/** + * @internal + */ +export interface HttpAuthSchemeResolvedConfig extends AwsSdkSigV4AuthResolvedConfig { + /** + * A comma-separated list of case-sensitive auth scheme names. + * An auth scheme name is a fully qualified auth scheme ID with the namespace prefix trimmed. + * For example, the auth scheme with ID aws.auth#sigv4 is named sigv4. + * @public + */ + readonly authSchemePreference: Provider; + + /** + * Configuration of HttpAuthSchemes for a client which provides default identity providers and signers per auth scheme. + * @internal + */ + readonly httpAuthSchemes: HttpAuthScheme[]; + + /** + * Configuration of an HttpAuthSchemeProvider for a client which resolves which HttpAuthScheme to use. + * @internal + */ + readonly httpAuthSchemeProvider: SigninHttpAuthSchemeProvider; +} + +/** + * @internal + */ +export const resolveHttpAuthSchemeConfig = ( + config: T & HttpAuthSchemeInputConfig & AwsSdkSigV4PreviouslyResolved +): T & HttpAuthSchemeResolvedConfig => { + const config_0 = resolveAwsSdkSigV4Config(config); + return Object.assign(config_0, { + authSchemePreference: normalizeProvider(config.authSchemePreference ?? []), + }) as T & HttpAuthSchemeResolvedConfig; +}; diff --git a/packages/nested-clients/src/submodules/signin/commands/index.ts b/packages/nested-clients/src/submodules/signin/commands/index.ts new file mode 100644 index 0000000000000..0f0fc226e26c2 --- /dev/null +++ b/packages/nested-clients/src/submodules/signin/commands/index.ts @@ -0,0 +1,2 @@ +// smithy-typescript generated code +export {}; diff --git a/packages/nested-clients/src/submodules/signin/endpoint/EndpointParameters.ts b/packages/nested-clients/src/submodules/signin/endpoint/EndpointParameters.ts new file mode 100644 index 0000000000000..c1b7328597662 --- /dev/null +++ b/packages/nested-clients/src/submodules/signin/endpoint/EndpointParameters.ts @@ -0,0 +1,40 @@ +// smithy-typescript generated code +import { Endpoint, EndpointParameters as __EndpointParameters, EndpointV2, Provider } from "@smithy/types"; + +/** + * @public + */ +export interface ClientInputEndpointParameters { + useDualstackEndpoint?: boolean | undefined | Provider; + useFipsEndpoint?: boolean | undefined | Provider; + endpoint?: string | Provider | Endpoint | Provider | EndpointV2 | Provider; + region?: string | undefined | Provider; +} + +export type ClientResolvedEndpointParameters = Omit & { + defaultSigningName: string; +}; + +export const resolveClientEndpointParameters = ( + options: T & ClientInputEndpointParameters +): T & ClientResolvedEndpointParameters => { + return Object.assign(options, { + useDualstackEndpoint: options.useDualstackEndpoint ?? false, + useFipsEndpoint: options.useFipsEndpoint ?? false, + defaultSigningName: "signin", + }); +}; + +export const commonParams = { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" }, +} as const; + +export interface EndpointParameters extends __EndpointParameters { + UseDualStack?: boolean | undefined; + UseFIPS?: boolean | undefined; + Endpoint?: string | undefined; + Region?: string | undefined; +} diff --git a/packages/nested-clients/src/submodules/signin/endpoint/endpointResolver.ts b/packages/nested-clients/src/submodules/signin/endpoint/endpointResolver.ts new file mode 100644 index 0000000000000..ccee107f30d6d --- /dev/null +++ b/packages/nested-clients/src/submodules/signin/endpoint/endpointResolver.ts @@ -0,0 +1,26 @@ +// smithy-typescript generated code +import { awsEndpointFunctions } from "@aws-sdk/util-endpoints"; +import { EndpointV2, Logger } from "@smithy/types"; +import { customEndpointFunctions, EndpointCache, EndpointParams, resolveEndpoint } from "@smithy/util-endpoints"; + +import { EndpointParameters } from "./EndpointParameters"; +import { ruleSet } from "./ruleset"; + +const cache = new EndpointCache({ + size: 50, + params: ["Endpoint", "Region", "UseDualStack", "UseFIPS"], +}); + +export const defaultEndpointResolver = ( + endpointParams: EndpointParameters, + context: { logger?: Logger } = {} +): EndpointV2 => { + return cache.get(endpointParams as EndpointParams, () => + resolveEndpoint(ruleSet, { + endpointParams: endpointParams as EndpointParams, + logger: context.logger, + }) + ); +}; + +customEndpointFunctions.aws = awsEndpointFunctions; diff --git a/packages/nested-clients/src/submodules/signin/endpoint/ruleset.ts b/packages/nested-clients/src/submodules/signin/endpoint/ruleset.ts new file mode 100644 index 0000000000000..883eb5cdd0487 --- /dev/null +++ b/packages/nested-clients/src/submodules/signin/endpoint/ruleset.ts @@ -0,0 +1,34 @@ +// @ts-nocheck +// generated code, do not edit +import { RuleSetObject } from "@smithy/types"; + +/* This file is compressed. Log this object + or see "smithy.rules#endpointRuleSet" + in codegen/sdk-codegen/aws-models/signin.json */ + +const u="required", +v="fn", +w="argv", +x="ref"; +const a=true, +b="isSet", +c="booleanEquals", +d="error", +e="endpoint", +f="tree", +g="PartitionResult", +h="stringEquals", +i={[u]:true,"default":false,"type":"boolean"}, +j={[u]:false,"type":"string"}, +k={[x]:"Endpoint"}, +l={[v]:c,[w]:[{[x]:"UseFIPS"},true]}, +m={[v]:c,[w]:[{[x]:"UseDualStack"},true]}, +n={}, +o={[v]:"getAttr",[w]:[{[x]:g},"name"]}, +p={[v]:c,[w]:[{[x]:"UseFIPS"},false]}, +q={[v]:c,[w]:[{[x]:"UseDualStack"},false]}, +r={[v]:"getAttr",[w]:[{[x]:g},"supportsFIPS"]}, +s={[v]:c,[w]:[true,{[v]:"getAttr",[w]:[{[x]:g},"supportsDualStack"]}]}, +t=[{[x]:"Region"}]; +const _data={version:"1.0",parameters:{UseDualStack:i,UseFIPS:i,Endpoint:j,Region:j},rules:[{conditions:[{[v]:b,[w]:[k]}],rules:[{conditions:[l],error:"Invalid Configuration: FIPS and custom endpoint are not supported",type:d},{rules:[{conditions:[m],error:"Invalid Configuration: Dualstack and custom endpoint are not supported",type:d},{endpoint:{url:k,properties:n,headers:n},type:e}],type:f}],type:f},{rules:[{conditions:[{[v]:b,[w]:t}],rules:[{conditions:[{[v]:"aws.partition",[w]:t,assign:g}],rules:[{conditions:[{[v]:h,[w]:[o,"aws"]},p,q],endpoint:{url:"https://{Region}.signin.aws.amazon.com",properties:n,headers:n},type:e},{conditions:[{[v]:h,[w]:[o,"aws-cn"]},p,q],endpoint:{url:"https://{Region}.signin.amazonaws.cn",properties:n,headers:n},type:e},{conditions:[{[v]:h,[w]:[o,"aws-us-gov"]},p,q],endpoint:{url:"https://{Region}.signin.amazonaws-us-gov.com",properties:n,headers:n},type:e},{conditions:[l,m],rules:[{conditions:[{[v]:c,[w]:[a,r]},s],rules:[{endpoint:{url:"https://signin-fips.{Region}.{PartitionResult#dualStackDnsSuffix}",properties:n,headers:n},type:e}],type:f},{error:"FIPS and DualStack are enabled, but this partition does not support one or both",type:d}],type:f},{conditions:[l,q],rules:[{conditions:[{[v]:c,[w]:[r,a]}],rules:[{endpoint:{url:"https://signin-fips.{Region}.{PartitionResult#dnsSuffix}",properties:n,headers:n},type:e}],type:f},{error:"FIPS is enabled but this partition does not support FIPS",type:d}],type:f},{conditions:[p,m],rules:[{conditions:[s],rules:[{endpoint:{url:"https://signin.{Region}.{PartitionResult#dualStackDnsSuffix}",properties:n,headers:n},type:e}],type:f},{error:"DualStack is enabled but this partition does not support DualStack",type:d}],type:f},{endpoint:{url:"https://signin.{Region}.{PartitionResult#dnsSuffix}",properties:n,headers:n},type:e}],type:f}],type:f},{error:"Invalid Configuration: Missing Region",type:d}],type:f}]}; +export const ruleSet: RuleSetObject = _data; diff --git a/packages/nested-clients/src/submodules/signin/extensionConfiguration.ts b/packages/nested-clients/src/submodules/signin/extensionConfiguration.ts new file mode 100644 index 0000000000000..e33b06b907bdc --- /dev/null +++ b/packages/nested-clients/src/submodules/signin/extensionConfiguration.ts @@ -0,0 +1,15 @@ +// smithy-typescript generated code +import { AwsRegionExtensionConfiguration } from "@aws-sdk/types"; +import { HttpHandlerExtensionConfiguration } from "@smithy/protocol-http"; +import { DefaultExtensionConfiguration } from "@smithy/types"; + +import { HttpAuthExtensionConfiguration } from "./auth/httpAuthExtensionConfiguration"; + +/** + * @internal + */ +export interface SigninExtensionConfiguration + extends HttpHandlerExtensionConfiguration, + DefaultExtensionConfiguration, + AwsRegionExtensionConfiguration, + HttpAuthExtensionConfiguration {} diff --git a/packages/nested-clients/src/submodules/signin/index.ts b/packages/nested-clients/src/submodules/signin/index.ts new file mode 100644 index 0000000000000..6a493dc9e820a --- /dev/null +++ b/packages/nested-clients/src/submodules/signin/index.ts @@ -0,0 +1,19 @@ +// smithy-typescript generated code +/* eslint-disable */ +/** + * AWS Sign-In Data Plane Service + * + * This service implements OAuth 2.0 flows for AWS CLI authentication, + * providing secure token exchange and refresh capabilities. + * + * @packageDocumentation + */ +export * from "./SigninClient"; +export * from "./Signin"; +export { ClientInputEndpointParameters } from "./endpoint/EndpointParameters"; +export type { RuntimeExtension } from "./runtimeExtensions"; +export type { SigninExtensionConfiguration } from "./extensionConfiguration"; +export * from "./commands"; +export * from "./models"; + +export { SigninServiceException } from "./models/SigninServiceException"; diff --git a/packages/nested-clients/src/submodules/signin/models/SigninServiceException.ts b/packages/nested-clients/src/submodules/signin/models/SigninServiceException.ts new file mode 100644 index 0000000000000..fc893f835a0ba --- /dev/null +++ b/packages/nested-clients/src/submodules/signin/models/SigninServiceException.ts @@ -0,0 +1,24 @@ +// smithy-typescript generated code +import { + ServiceException as __ServiceException, + ServiceExceptionOptions as __ServiceExceptionOptions, +} from "@smithy/smithy-client"; + +export type { __ServiceExceptionOptions }; + +export { __ServiceException }; + +/** + * @public + * + * Base exception class for all service exceptions from Signin service. + */ +export class SigninServiceException extends __ServiceException { + /** + * @internal + */ + constructor(options: __ServiceExceptionOptions) { + super(options); + Object.setPrototypeOf(this, SigninServiceException.prototype); + } +} diff --git a/packages/nested-clients/src/submodules/signin/models/index.ts b/packages/nested-clients/src/submodules/signin/models/index.ts new file mode 100644 index 0000000000000..0f0fc226e26c2 --- /dev/null +++ b/packages/nested-clients/src/submodules/signin/models/index.ts @@ -0,0 +1,2 @@ +// smithy-typescript generated code +export {}; diff --git a/packages/nested-clients/src/submodules/signin/runtimeConfig.browser.ts b/packages/nested-clients/src/submodules/signin/runtimeConfig.browser.ts new file mode 100644 index 0000000000000..f9b6441416f71 --- /dev/null +++ b/packages/nested-clients/src/submodules/signin/runtimeConfig.browser.ts @@ -0,0 +1,42 @@ +// smithy-typescript generated code +// @ts-ignore: package.json will be imported from dist folders +import packageInfo from "../../../package.json"; // eslint-disable-line + +import { Sha256 } from "@aws-crypto/sha256-browser"; +import { createDefaultUserAgentProvider } from "@aws-sdk/util-user-agent-browser"; +import { DEFAULT_USE_DUALSTACK_ENDPOINT, DEFAULT_USE_FIPS_ENDPOINT } from "@smithy/config-resolver"; +import { FetchHttpHandler as RequestHandler, streamCollector } from "@smithy/fetch-http-handler"; +import { invalidProvider } from "@smithy/invalid-dependency"; +import { calculateBodyLength } from "@smithy/util-body-length-browser"; +import { DEFAULT_MAX_ATTEMPTS, DEFAULT_RETRY_MODE } from "@smithy/util-retry"; +import { SigninClientConfig } from "./SigninClient"; +import { getRuntimeConfig as getSharedRuntimeConfig } from "./runtimeConfig.shared"; +import { loadConfigsForDefaultMode } from "@smithy/smithy-client"; +import { resolveDefaultsModeConfig } from "@smithy/util-defaults-mode-browser"; + +/** + * @internal + */ +export const getRuntimeConfig = (config: SigninClientConfig) => { + const defaultsMode = resolveDefaultsModeConfig(config); + const defaultConfigProvider = () => defaultsMode().then(loadConfigsForDefaultMode); + const clientSharedValues = getSharedRuntimeConfig(config); + return { + ...clientSharedValues, + ...config, + runtime: "browser", + defaultsMode, + bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength, + defaultUserAgentProvider: + config?.defaultUserAgentProvider ?? + createDefaultUserAgentProvider({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }), + maxAttempts: config?.maxAttempts ?? DEFAULT_MAX_ATTEMPTS, + region: config?.region ?? invalidProvider("Region is missing"), + requestHandler: RequestHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: config?.retryMode ?? (async () => (await defaultConfigProvider()).retryMode || DEFAULT_RETRY_MODE), + sha256: config?.sha256 ?? Sha256, + streamCollector: config?.streamCollector ?? streamCollector, + useDualstackEndpoint: config?.useDualstackEndpoint ?? (() => Promise.resolve(DEFAULT_USE_DUALSTACK_ENDPOINT)), + useFipsEndpoint: config?.useFipsEndpoint ?? (() => Promise.resolve(DEFAULT_USE_FIPS_ENDPOINT)), + }; +}; diff --git a/packages/nested-clients/src/submodules/signin/runtimeConfig.native.ts b/packages/nested-clients/src/submodules/signin/runtimeConfig.native.ts new file mode 100644 index 0000000000000..bd3be451e46f9 --- /dev/null +++ b/packages/nested-clients/src/submodules/signin/runtimeConfig.native.ts @@ -0,0 +1,18 @@ +// smithy-typescript generated code +import { Sha256 } from "@aws-crypto/sha256-js"; + +import { getRuntimeConfig as getBrowserRuntimeConfig } from "./runtimeConfig.browser"; +import { SigninClientConfig } from "./SigninClient"; + +/** + * @internal + */ +export const getRuntimeConfig = (config: SigninClientConfig) => { + const browserDefaults = getBrowserRuntimeConfig(config); + return { + ...browserDefaults, + ...config, + runtime: "react-native", + sha256: config?.sha256 ?? Sha256, + }; +}; diff --git a/packages/nested-clients/src/submodules/signin/runtimeConfig.shared.ts b/packages/nested-clients/src/submodules/signin/runtimeConfig.shared.ts new file mode 100644 index 0000000000000..5ab7b3c45e4da --- /dev/null +++ b/packages/nested-clients/src/submodules/signin/runtimeConfig.shared.ts @@ -0,0 +1,40 @@ +// smithy-typescript generated code +import { AwsSdkSigV4Signer } from "@aws-sdk/core"; +import { AwsRestJsonProtocol } from "@aws-sdk/core/protocols"; +import { NoOpLogger } from "@smithy/smithy-client"; +import { IdentityProviderConfig } from "@smithy/types"; +import { parseUrl } from "@smithy/url-parser"; +import { fromBase64, toBase64 } from "@smithy/util-base64"; +import { fromUtf8, toUtf8 } from "@smithy/util-utf8"; + +import { defaultSigninHttpAuthSchemeProvider } from "./auth/httpAuthSchemeProvider"; +import { defaultEndpointResolver } from "./endpoint/endpointResolver"; +import { SigninClientConfig } from "./SigninClient"; + +/** + * @internal + */ +export const getRuntimeConfig = (config: SigninClientConfig) => { + return { + apiVersion: "2023-01-01", + base64Decoder: config?.base64Decoder ?? fromBase64, + base64Encoder: config?.base64Encoder ?? toBase64, + disableHostPrefix: config?.disableHostPrefix ?? false, + endpointProvider: config?.endpointProvider ?? defaultEndpointResolver, + extensions: config?.extensions ?? [], + httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? defaultSigninHttpAuthSchemeProvider, + httpAuthSchemes: config?.httpAuthSchemes ?? [ + { + schemeId: "aws.auth#sigv4", + identityProvider: (ipc: IdentityProviderConfig) => ipc.getIdentityProvider("aws.auth#sigv4"), + signer: new AwsSdkSigV4Signer(), + }, + ], + logger: config?.logger ?? new NoOpLogger(), + protocol: config?.protocol ?? new AwsRestJsonProtocol({ defaultNamespace: "com.amazonaws.signin" }), + serviceId: config?.serviceId ?? "Signin", + urlParser: config?.urlParser ?? parseUrl, + utf8Decoder: config?.utf8Decoder ?? fromUtf8, + utf8Encoder: config?.utf8Encoder ?? toUtf8, + }; +}; diff --git a/packages/nested-clients/src/submodules/signin/runtimeConfig.ts b/packages/nested-clients/src/submodules/signin/runtimeConfig.ts new file mode 100644 index 0000000000000..7ffbfbd2fc4b5 --- /dev/null +++ b/packages/nested-clients/src/submodules/signin/runtimeConfig.ts @@ -0,0 +1,70 @@ +// smithy-typescript generated code +// @ts-ignore: package.json will be imported from dist folders +import packageInfo from "../../../package.json"; // eslint-disable-line + +import { NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, emitWarningIfUnsupportedVersion as awsCheckVersion } from "@aws-sdk/core"; +import { NODE_APP_ID_CONFIG_OPTIONS, createDefaultUserAgentProvider } from "@aws-sdk/util-user-agent-node"; +import { + NODE_REGION_CONFIG_FILE_OPTIONS, + NODE_REGION_CONFIG_OPTIONS, + NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, + NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, +} from "@smithy/config-resolver"; +import { Hash } from "@smithy/hash-node"; +import { NODE_MAX_ATTEMPT_CONFIG_OPTIONS, NODE_RETRY_MODE_CONFIG_OPTIONS } from "@smithy/middleware-retry"; +import { loadConfig as loadNodeConfig } from "@smithy/node-config-provider"; +import { NodeHttpHandler as RequestHandler, streamCollector } from "@smithy/node-http-handler"; +import { calculateBodyLength } from "@smithy/util-body-length-node"; +import { DEFAULT_RETRY_MODE } from "@smithy/util-retry"; +import { SigninClientConfig } from "./SigninClient"; +import { getRuntimeConfig as getSharedRuntimeConfig } from "./runtimeConfig.shared"; +import { loadConfigsForDefaultMode } from "@smithy/smithy-client"; +import { resolveDefaultsModeConfig } from "@smithy/util-defaults-mode-node"; +import { emitWarningIfUnsupportedVersion } from "@smithy/smithy-client"; + +/** + * @internal + */ +export const getRuntimeConfig = (config: SigninClientConfig) => { + emitWarningIfUnsupportedVersion(process.version); + const defaultsMode = resolveDefaultsModeConfig(config); + const defaultConfigProvider = () => defaultsMode().then(loadConfigsForDefaultMode); + const clientSharedValues = getSharedRuntimeConfig(config); + awsCheckVersion(process.version); + const loaderConfig = { + profile: config?.profile, + logger: clientSharedValues.logger, + }; + return { + ...clientSharedValues, + ...config, + runtime: "node", + defaultsMode, + authSchemePreference: + config?.authSchemePreference ?? loadNodeConfig(NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, loaderConfig), + bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength, + defaultUserAgentProvider: + config?.defaultUserAgentProvider ?? + createDefaultUserAgentProvider({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }), + maxAttempts: config?.maxAttempts ?? loadNodeConfig(NODE_MAX_ATTEMPT_CONFIG_OPTIONS, config), + region: + config?.region ?? + loadNodeConfig(NODE_REGION_CONFIG_OPTIONS, { ...NODE_REGION_CONFIG_FILE_OPTIONS, ...loaderConfig }), + requestHandler: RequestHandler.create(config?.requestHandler ?? defaultConfigProvider), + retryMode: + config?.retryMode ?? + loadNodeConfig( + { + ...NODE_RETRY_MODE_CONFIG_OPTIONS, + default: async () => (await defaultConfigProvider()).retryMode || DEFAULT_RETRY_MODE, + }, + config + ), + sha256: config?.sha256 ?? Hash.bind(null, "sha256"), + streamCollector: config?.streamCollector ?? streamCollector, + useDualstackEndpoint: + config?.useDualstackEndpoint ?? loadNodeConfig(NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + useFipsEndpoint: config?.useFipsEndpoint ?? loadNodeConfig(NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS, loaderConfig), + userAgentAppId: config?.userAgentAppId ?? loadNodeConfig(NODE_APP_ID_CONFIG_OPTIONS, loaderConfig), + }; +}; diff --git a/packages/nested-clients/src/submodules/signin/runtimeExtensions.ts b/packages/nested-clients/src/submodules/signin/runtimeExtensions.ts new file mode 100644 index 0000000000000..bc1b6e3b145af --- /dev/null +++ b/packages/nested-clients/src/submodules/signin/runtimeExtensions.ts @@ -0,0 +1,46 @@ +// smithy-typescript generated code +import { + getAwsRegionExtensionConfiguration, + resolveAwsRegionExtensionConfiguration, +} from "@aws-sdk/region-config-resolver"; +import { getHttpHandlerExtensionConfiguration, resolveHttpHandlerRuntimeConfig } from "@smithy/protocol-http"; +import { getDefaultExtensionConfiguration, resolveDefaultRuntimeConfig } from "@smithy/smithy-client"; + +import { getHttpAuthExtensionConfiguration, resolveHttpAuthRuntimeConfig } from "./auth/httpAuthExtensionConfiguration"; +import { SigninExtensionConfiguration } from "./extensionConfiguration"; + +/** + * @public + */ +export interface RuntimeExtension { + configure(extensionConfiguration: SigninExtensionConfiguration): void; +} + +/** + * @public + */ +export interface RuntimeExtensionsConfig { + extensions: RuntimeExtension[]; +} + +/** + * @internal + */ +export const resolveRuntimeExtensions = (runtimeConfig: any, extensions: RuntimeExtension[]) => { + const extensionConfiguration: SigninExtensionConfiguration = Object.assign( + getAwsRegionExtensionConfiguration(runtimeConfig), + getDefaultExtensionConfiguration(runtimeConfig), + getHttpHandlerExtensionConfiguration(runtimeConfig), + getHttpAuthExtensionConfiguration(runtimeConfig) + ); + + extensions.forEach((extension) => extension.configure(extensionConfiguration)); + + return Object.assign( + runtimeConfig, + resolveAwsRegionExtensionConfiguration(extensionConfiguration), + resolveDefaultRuntimeConfig(extensionConfiguration), + resolveHttpHandlerRuntimeConfig(extensionConfiguration), + resolveHttpAuthRuntimeConfig(extensionConfiguration) + ); +}; diff --git a/packages/nested-clients/src/submodules/signin/schemas/schemas_0.ts b/packages/nested-clients/src/submodules/signin/schemas/schemas_0.ts new file mode 100644 index 0000000000000..e20cb3ed7c293 --- /dev/null +++ b/packages/nested-clients/src/submodules/signin/schemas/schemas_0.ts @@ -0,0 +1,12 @@ +export const _s = "smithy.ts.sdk.synthetic.com.amazonaws.signin"; + +// smithy-typescript generated code +import { TypeRegistry } from "@smithy/core/schema"; +import { StaticErrorSchema } from "@smithy/types"; + +import { SigninServiceException as __SigninServiceException } from "../models/SigninServiceException"; + +/* eslint no-var: 0 */ + +export var SigninServiceException: StaticErrorSchema = [-3, _s, "SigninServiceException", 0, [], []]; +TypeRegistry.for(_s).registerError(SigninServiceException, __SigninServiceException); diff --git a/packages/nested-clients/src/submodules/sso-oidc/schemas/schemas_0.ts b/packages/nested-clients/src/submodules/sso-oidc/schemas/schemas_0.ts index 52861ba97ab2a..1d9a83eb5ae50 100644 --- a/packages/nested-clients/src/submodules/sso-oidc/schemas/schemas_0.ts +++ b/packages/nested-clients/src/submodules/sso-oidc/schemas/schemas_0.ts @@ -1,44 +1,44 @@ -const _ADE = "AccessDeniedException"; -const _APE = "AuthorizationPendingException"; -const _AT = "AccessToken"; -const _CS = "ClientSecret"; -const _CT = "CreateToken"; -const _CTR = "CreateTokenRequest"; -const _CTRr = "CreateTokenResponse"; -const _CV = "CodeVerifier"; -const _ETE = "ExpiredTokenException"; -const _ICE = "InvalidClientException"; -const _IGE = "InvalidGrantException"; -const _IRE = "InvalidRequestException"; -const _ISE = "InternalServerException"; -const _ISEn = "InvalidScopeException"; -const _IT = "IdToken"; -const _RT = "RefreshToken"; -const _SDE = "SlowDownException"; -const _UCE = "UnauthorizedClientException"; -const _UGTE = "UnsupportedGrantTypeException"; -const _aT = "accessToken"; -const _c = "client"; -const _cI = "clientId"; -const _cS = "clientSecret"; -const _cV = "codeVerifier"; -const _co = "code"; -const _dC = "deviceCode"; -const _e = "error"; -const _eI = "expiresIn"; -const _ed = "error_description"; -const _gT = "grantType"; -const _h = "http"; -const _hE = "httpError"; -const _iT = "idToken"; -const _r = "reason"; -const _rT = "refreshToken"; -const _rU = "redirectUri"; -const _s = "scope"; -const _se = "server"; -const _sm = "smithy.ts.sdk.synthetic.com.amazonaws.ssooidc"; -const _tT = "tokenType"; -const n0 = "com.amazonaws.ssooidc"; +export const _ADE = "AccessDeniedException"; +export const _APE = "AuthorizationPendingException"; +export const _AT = "AccessToken"; +export const _CS = "ClientSecret"; +export const _CT = "CreateToken"; +export const _CTR = "CreateTokenRequest"; +export const _CTRr = "CreateTokenResponse"; +export const _CV = "CodeVerifier"; +export const _ETE = "ExpiredTokenException"; +export const _ICE = "InvalidClientException"; +export const _IGE = "InvalidGrantException"; +export const _IRE = "InvalidRequestException"; +export const _ISE = "InternalServerException"; +export const _ISEn = "InvalidScopeException"; +export const _IT = "IdToken"; +export const _RT = "RefreshToken"; +export const _SDE = "SlowDownException"; +export const _UCE = "UnauthorizedClientException"; +export const _UGTE = "UnsupportedGrantTypeException"; +export const _aT = "accessToken"; +export const _c = "client"; +export const _cI = "clientId"; +export const _cS = "clientSecret"; +export const _cV = "codeVerifier"; +export const _co = "code"; +export const _dC = "deviceCode"; +export const _e = "error"; +export const _eI = "expiresIn"; +export const _ed = "error_description"; +export const _gT = "grantType"; +export const _h = "http"; +export const _hE = "httpError"; +export const _iT = "idToken"; +export const _r = "reason"; +export const _rT = "refreshToken"; +export const _rU = "redirectUri"; +export const _s = "scope"; +export const _se = "server"; +export const _sm = "smithy.ts.sdk.synthetic.com.amazonaws.ssooidc"; +export const _tT = "tokenType"; +export const n0 = "com.amazonaws.ssooidc"; // smithy-typescript generated code import { TypeRegistry } from "@smithy/core/schema"; @@ -231,7 +231,7 @@ export var UnsupportedGrantTypeException: StaticErrorSchema = [ ]; TypeRegistry.for(n0).registerError(UnsupportedGrantTypeException, __UnsupportedGrantTypeException); -export var __Unit = "unit" as const; +export var Unit = "unit" as const; export var SSOOIDCServiceException: StaticErrorSchema = [-3, _sm, "SSOOIDCServiceException", 0, [], []]; TypeRegistry.for(_sm).registerError(SSOOIDCServiceException, __SSOOIDCServiceException); diff --git a/packages/nested-clients/src/submodules/sts/schemas/schemas_0.ts b/packages/nested-clients/src/submodules/sts/schemas/schemas_0.ts index 762f290849028..eb468751d7399 100644 --- a/packages/nested-clients/src/submodules/sts/schemas/schemas_0.ts +++ b/packages/nested-clients/src/submodules/sts/schemas/schemas_0.ts @@ -1,62 +1,62 @@ -const _A = "Arn"; -const _AKI = "AccessKeyId"; -const _AR = "AssumeRole"; -const _ARI = "AssumedRoleId"; -const _ARR = "AssumeRoleRequest"; -const _ARRs = "AssumeRoleResponse"; -const _ARU = "AssumedRoleUser"; -const _ARWWI = "AssumeRoleWithWebIdentity"; -const _ARWWIR = "AssumeRoleWithWebIdentityRequest"; -const _ARWWIRs = "AssumeRoleWithWebIdentityResponse"; -const _Au = "Audience"; -const _C = "Credentials"; -const _CA = "ContextAssertion"; -const _DS = "DurationSeconds"; -const _E = "Expiration"; -const _EI = "ExternalId"; -const _ETE = "ExpiredTokenException"; -const _IDPCEE = "IDPCommunicationErrorException"; -const _IDPRCE = "IDPRejectedClaimException"; -const _IITE = "InvalidIdentityTokenException"; -const _K = "Key"; -const _MPDE = "MalformedPolicyDocumentException"; -const _P = "Policy"; -const _PA = "PolicyArns"; -const _PAr = "ProviderArn"; -const _PC = "ProvidedContexts"; -const _PCLT = "ProvidedContextsListType"; -const _PCr = "ProvidedContext"; -const _PDT = "PolicyDescriptorType"; -const _PI = "ProviderId"; -const _PPS = "PackedPolicySize"; -const _PPTLE = "PackedPolicyTooLargeException"; -const _Pr = "Provider"; -const _RA = "RoleArn"; -const _RDE = "RegionDisabledException"; -const _RSN = "RoleSessionName"; -const _SAK = "SecretAccessKey"; -const _SFWIT = "SubjectFromWebIdentityToken"; -const _SI = "SourceIdentity"; -const _SN = "SerialNumber"; -const _ST = "SessionToken"; -const _T = "Tags"; -const _TC = "TokenCode"; -const _TTK = "TransitiveTagKeys"; -const _Ta = "Tag"; -const _V = "Value"; -const _WIT = "WebIdentityToken"; -const _a = "arn"; -const _aKST = "accessKeySecretType"; -const _aQE = "awsQueryError"; -const _c = "client"; -const _cTT = "clientTokenType"; -const _e = "error"; -const _hE = "httpError"; -const _m = "message"; -const _pDLT = "policyDescriptorListType"; -const _s = "smithy.ts.sdk.synthetic.com.amazonaws.sts"; -const _tLT = "tagListType"; -const n0 = "com.amazonaws.sts"; +export const _A = "Arn"; +export const _AKI = "AccessKeyId"; +export const _AR = "AssumeRole"; +export const _ARI = "AssumedRoleId"; +export const _ARR = "AssumeRoleRequest"; +export const _ARRs = "AssumeRoleResponse"; +export const _ARU = "AssumedRoleUser"; +export const _ARWWI = "AssumeRoleWithWebIdentity"; +export const _ARWWIR = "AssumeRoleWithWebIdentityRequest"; +export const _ARWWIRs = "AssumeRoleWithWebIdentityResponse"; +export const _Au = "Audience"; +export const _C = "Credentials"; +export const _CA = "ContextAssertion"; +export const _DS = "DurationSeconds"; +export const _E = "Expiration"; +export const _EI = "ExternalId"; +export const _ETE = "ExpiredTokenException"; +export const _IDPCEE = "IDPCommunicationErrorException"; +export const _IDPRCE = "IDPRejectedClaimException"; +export const _IITE = "InvalidIdentityTokenException"; +export const _K = "Key"; +export const _MPDE = "MalformedPolicyDocumentException"; +export const _P = "Policy"; +export const _PA = "PolicyArns"; +export const _PAr = "ProviderArn"; +export const _PC = "ProvidedContexts"; +export const _PCLT = "ProvidedContextsListType"; +export const _PCr = "ProvidedContext"; +export const _PDT = "PolicyDescriptorType"; +export const _PI = "ProviderId"; +export const _PPS = "PackedPolicySize"; +export const _PPTLE = "PackedPolicyTooLargeException"; +export const _Pr = "Provider"; +export const _RA = "RoleArn"; +export const _RDE = "RegionDisabledException"; +export const _RSN = "RoleSessionName"; +export const _SAK = "SecretAccessKey"; +export const _SFWIT = "SubjectFromWebIdentityToken"; +export const _SI = "SourceIdentity"; +export const _SN = "SerialNumber"; +export const _ST = "SessionToken"; +export const _T = "Tags"; +export const _TC = "TokenCode"; +export const _TTK = "TransitiveTagKeys"; +export const _Ta = "Tag"; +export const _V = "Value"; +export const _WIT = "WebIdentityToken"; +export const _a = "arn"; +export const _aKST = "accessKeySecretType"; +export const _aQE = "awsQueryError"; +export const _c = "client"; +export const _cTT = "clientTokenType"; +export const _e = "error"; +export const _hE = "httpError"; +export const _m = "message"; +export const _pDLT = "policyDescriptorListType"; +export const _s = "smithy.ts.sdk.synthetic.com.amazonaws.sts"; +export const _tLT = "tagListType"; +export const n0 = "com.amazonaws.sts"; // smithy-typescript generated code import { TypeRegistry } from "@smithy/core/schema"; diff --git a/packages/nested-clients/tsconfig.cjs.json b/packages/nested-clients/tsconfig.cjs.json index 3e5e5784031a3..1073bbd1aab36 100644 --- a/packages/nested-clients/tsconfig.cjs.json +++ b/packages/nested-clients/tsconfig.cjs.json @@ -5,7 +5,8 @@ "rootDir": "src", "paths": { "@aws-sdk/nested-clients/sso-oidc": ["./src/submodules/sso-oidc/index.ts"], - "@aws-sdk/nested-clients/sts": ["./src/submodules/sts/index.ts"] + "@aws-sdk/nested-clients/sts": ["./src/submodules/sts/index.ts"], + "@aws-sdk/nested-clients/signin": ["./src/submodules/signin/index.ts"] }, "noCheck": true }, diff --git a/packages/nested-clients/tsconfig.es.json b/packages/nested-clients/tsconfig.es.json index cc429954dbc0a..c5786f2b42f1e 100644 --- a/packages/nested-clients/tsconfig.es.json +++ b/packages/nested-clients/tsconfig.es.json @@ -6,7 +6,8 @@ "rootDir": "src", "paths": { "@aws-sdk/nested-clients/sso-oidc": ["./src/submodules/sso-oidc/index.ts"], - "@aws-sdk/nested-clients/sts": ["./src/submodules/sts/index.ts"] + "@aws-sdk/nested-clients/sts": ["./src/submodules/sts/index.ts"], + "@aws-sdk/nested-clients/signin": ["./src/submodules/signin/index.ts"] }, "noCheck": true }, diff --git a/packages/nested-clients/tsconfig.types.json b/packages/nested-clients/tsconfig.types.json index 2ccc6fd50e2cb..e193f56caa37c 100644 --- a/packages/nested-clients/tsconfig.types.json +++ b/packages/nested-clients/tsconfig.types.json @@ -5,7 +5,8 @@ "rootDir": "src", "paths": { "@aws-sdk/nested-clients/sso-oidc": ["./src/submodules/sso-oidc/index.ts"], - "@aws-sdk/nested-clients/sts": ["./src/submodules/sts/index.ts"] + "@aws-sdk/nested-clients/sts": ["./src/submodules/sts/index.ts"], + "@aws-sdk/nested-clients/signin": ["./src/submodules/signin/index.ts"] } }, "extends": "../../tsconfig.types.json", diff --git a/packages/types/src/feature-ids.ts b/packages/types/src/feature-ids.ts index a62c25811a33a..e09e37e5f79d6 100644 --- a/packages/types/src/feature-ids.ts +++ b/packages/types/src/feature-ids.ts @@ -62,6 +62,8 @@ export type AwsSdkCredentialsFeatures = Partial<{ CREDENTIALS_AWS_SDK_STORE: "y"; CREDENTIALS_HTTP: "z"; CREDENTIALS_IMDS: "0"; + CREDENTIALS_PROFILE_LOGIN: "AC"; + CREDENTIALS_LOGIN: "AD"; }>; /** diff --git a/scripts/generate-clients/nested-clients/generate-nested-clients.js b/scripts/generate-clients/nested-clients/generate-nested-clients.js index 1b7462e4c9455..8fe59e87be9b7 100644 --- a/scripts/generate-clients/nested-clients/generate-nested-clients.js +++ b/scripts/generate-clients/nested-clients/generate-nested-clients.js @@ -7,6 +7,10 @@ const clients = [ name: "sso-oidc", operations: ["CreateToken"], }, + { + name: "signin", + operations: ["reateOAuth2Token"], + }, ]; const { join, relative, normalize } = require("path"); diff --git a/scripts/generate-clients/single-service.js b/scripts/generate-clients/single-service.js index ba4ba6aa87c55..c74720ca66f20 100644 --- a/scripts/generate-clients/single-service.js +++ b/scripts/generate-clients/single-service.js @@ -41,7 +41,7 @@ const { solo } = yargs(process.argv.slice(2)) } catch (ignored) {} } - if (solo === "sts" || solo === "sso-oidc") { + if (solo === "sts" || solo === "sso-oidc" || solo === "signin") { const generateNestedClients = require("./nested-clients/generate-nested-clients"); await generateNestedClients(); } diff --git a/scripts/runtime-dependency-version-check/check-dependencies.js b/scripts/runtime-dependency-version-check/check-dependencies.js index e4515bc518188..093f17cc8495e 100644 --- a/scripts/runtime-dependency-version-check/check-dependencies.js +++ b/scripts/runtime-dependency-version-check/check-dependencies.js @@ -48,6 +48,9 @@ const node_libraries = [ const ignored = [...node_libraries, "vitest"]; +// Check if a dependency should be ignored (including node: prefixed modules) +const shouldIgnore = (dep) => ignored.includes(dep) || (dep.startsWith("node:") && ignored.includes(dep.slice(5))); + (async () => { const errors = []; @@ -88,7 +91,7 @@ const ignored = [...node_libraries, "vitest"]; ...new Set( [...(contents.toString().match(/(from |import\()"(.*?)"\)?;/g) ?? [])] .map((_) => _.replace(/(from ")|(import\(")/g, "").replace(/"\)?;$/, "")) - .filter((_) => !_.startsWith(".") && !ignored.includes(_)) + .filter((_) => !_.startsWith(".") && !shouldIgnore(_)) ) ); @@ -103,7 +106,7 @@ const ignored = [...node_libraries, "vitest"]; dependencyPackageName !== pkgJson.name ) { if ( - ["@aws-sdk/client-sts", "@aws-sdk/client-sso-oidc"].includes(dependency) && + ["@aws-sdk/client-sts", "@aws-sdk/client-sso-oidc", "@aws-sdk/client-signin"].includes(dependency) && ["@aws-sdk/nested-clients"].includes(pkgJson.name) ) { continue; diff --git a/yarn.lock b/yarn.lock index 5828f3b2a8648..08755163cb73d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,16 +5,6 @@ __metadata: version: 8 cacheKey: 10c0 -"@ampproject/remapping@npm:^2.2.0": - version: 2.3.0 - resolution: "@ampproject/remapping@npm:2.3.0" - dependencies: - "@jridgewell/gen-mapping": "npm:^0.3.5" - "@jridgewell/trace-mapping": "npm:^0.3.24" - checksum: 10c0/81d63cca5443e0f0c72ae18b544cc28c7c0ec2cea46e7cb888bb0e0f411a1191d0d6b7af798d54e30777d8d1488b2ec0732aac2be342d3d7d3ffd271c6f489ed - languageName: node - linkType: hard - "@aws-crypto/crc32@npm:5.2.0": version: 5.2.0 resolution: "@aws-crypto/crc32@npm:5.2.0" @@ -23132,6 +23122,7 @@ __metadata: "@aws-sdk/core": "npm:*" "@aws-sdk/credential-provider-env": "npm:*" "@aws-sdk/credential-provider-http": "npm:*" + "@aws-sdk/credential-provider-login": "npm:*" "@aws-sdk/credential-provider-process": "npm:*" "@aws-sdk/credential-provider-sso": "npm:*" "@aws-sdk/credential-provider-web-identity": "npm:*" @@ -23151,6 +23142,27 @@ __metadata: languageName: unknown linkType: soft +"@aws-sdk/credential-provider-login@npm:*, @aws-sdk/credential-provider-login@workspace:packages/credential-provider-login": + version: 0.0.0-use.local + resolution: "@aws-sdk/credential-provider-login@workspace:packages/credential-provider-login" + dependencies: + "@aws-sdk/core": "npm:*" + "@aws-sdk/nested-clients": "npm:*" + "@aws-sdk/types": "npm:*" + "@smithy/property-provider": "npm:^4.2.5" + "@smithy/protocol-http": "npm:^5.3.5" + "@smithy/shared-ini-file-loader": "npm:^4.4.0" + "@smithy/types": "npm:^4.9.0" + "@tsconfig/recommended": "npm:1.0.1" + "@types/node": "npm:^18.19.69" + concurrently: "npm:7.0.0" + downlevel-dts: "npm:0.10.1" + rimraf: "npm:3.0.2" + tslib: "npm:^2.6.2" + typescript: "npm:~5.8.3" + languageName: unknown + linkType: soft + "@aws-sdk/credential-provider-node@npm:*, @aws-sdk/credential-provider-node@workspace:packages/credential-provider-node": version: 0.0.0-use.local resolution: "@aws-sdk/credential-provider-node@workspace:packages/credential-provider-node" @@ -23158,6 +23170,7 @@ __metadata: "@aws-sdk/credential-provider-env": "npm:*" "@aws-sdk/credential-provider-http": "npm:*" "@aws-sdk/credential-provider-ini": "npm:*" + "@aws-sdk/credential-provider-login": "npm:*" "@aws-sdk/credential-provider-process": "npm:*" "@aws-sdk/credential-provider-sso": "npm:*" "@aws-sdk/credential-provider-web-identity": "npm:*" @@ -23246,6 +23259,7 @@ __metadata: "@aws-sdk/credential-provider-env": "npm:*" "@aws-sdk/credential-provider-http": "npm:*" "@aws-sdk/credential-provider-ini": "npm:*" + "@aws-sdk/credential-provider-login": "npm:*" "@aws-sdk/credential-provider-node": "npm:*" "@aws-sdk/credential-provider-process": "npm:*" "@aws-sdk/credential-provider-sso": "npm:*" @@ -24535,18 +24549,7 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.25.9, @babel/code-frame@npm:^7.26.0, @babel/code-frame@npm:^7.26.2": - version: 7.26.2 - resolution: "@babel/code-frame@npm:7.26.2" - dependencies: - "@babel/helper-validator-identifier": "npm:^7.25.9" - js-tokens: "npm:^4.0.0" - picocolors: "npm:^1.0.0" - checksum: 10c0/7d79621a6849183c415486af99b1a20b84737e8c11cd55b6544f688c51ce1fd710e6d869c3dd21232023da272a79b91efb3e83b5bc2dc65c1187c5fcd1b72ea8 - languageName: node - linkType: hard - -"@babel/code-frame@npm:^7.27.1": +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.27.1": version: 7.27.1 resolution: "@babel/code-frame@npm:7.27.1" dependencies: @@ -24557,102 +24560,46 @@ __metadata: languageName: node linkType: hard -"@babel/compat-data@npm:^7.25.9": - version: 7.26.3 - resolution: "@babel/compat-data@npm:7.26.3" - checksum: 10c0/d63e71845c34dfad8d7ff8c15b562e620dbf60e68e3abfa35681d24d612594e8e5ec9790d831a287ecd79ce00f48e7ffddc85c5ce94af7242d45917b9c1a5f90 - languageName: node - linkType: hard - "@babel/compat-data@npm:^7.27.2": - version: 7.28.4 - resolution: "@babel/compat-data@npm:7.28.4" - checksum: 10c0/9d346471e0a016641df9a325f42ad1e8324bbdc0243ce4af4dd2b10b974128590da9eb179eea2c36647b9bb987343119105e96773c1f6981732cd4f87e5a03b9 - languageName: node - linkType: hard - -"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.23.9": - version: 7.26.0 - resolution: "@babel/core@npm:7.26.0" - dependencies: - "@ampproject/remapping": "npm:^2.2.0" - "@babel/code-frame": "npm:^7.26.0" - "@babel/generator": "npm:^7.26.0" - "@babel/helper-compilation-targets": "npm:^7.25.9" - "@babel/helper-module-transforms": "npm:^7.26.0" - "@babel/helpers": "npm:^7.26.0" - "@babel/parser": "npm:^7.26.0" - "@babel/template": "npm:^7.25.9" - "@babel/traverse": "npm:^7.25.9" - "@babel/types": "npm:^7.26.0" - convert-source-map: "npm:^2.0.0" - debug: "npm:^4.1.0" - gensync: "npm:^1.0.0-beta.2" - json5: "npm:^2.2.3" - semver: "npm:^6.3.1" - checksum: 10c0/91de73a7ff5c4049fbc747930aa039300e4d2670c2a91f5aa622f1b4868600fc89b01b6278385fbcd46f9574186fa3d9b376a9e7538e50f8d118ec13cfbcb63e + version: 7.28.5 + resolution: "@babel/compat-data@npm:7.28.5" + checksum: 10c0/702a25de73087b0eba325c1d10979eed7c9b6662677386ba7b5aa6eace0fc0676f78343bae080a0176ae26f58bd5535d73b9d0fbb547fef377692e8b249353a7 languageName: node linkType: hard -"@babel/core@npm:^7.27.4": - version: 7.28.4 - resolution: "@babel/core@npm:7.28.4" +"@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.23.9, @babel/core@npm:^7.27.4": + version: 7.28.5 + resolution: "@babel/core@npm:7.28.5" dependencies: "@babel/code-frame": "npm:^7.27.1" - "@babel/generator": "npm:^7.28.3" + "@babel/generator": "npm:^7.28.5" "@babel/helper-compilation-targets": "npm:^7.27.2" "@babel/helper-module-transforms": "npm:^7.28.3" "@babel/helpers": "npm:^7.28.4" - "@babel/parser": "npm:^7.28.4" + "@babel/parser": "npm:^7.28.5" "@babel/template": "npm:^7.27.2" - "@babel/traverse": "npm:^7.28.4" - "@babel/types": "npm:^7.28.4" + "@babel/traverse": "npm:^7.28.5" + "@babel/types": "npm:^7.28.5" "@jridgewell/remapping": "npm:^2.3.5" convert-source-map: "npm:^2.0.0" debug: "npm:^4.1.0" gensync: "npm:^1.0.0-beta.2" json5: "npm:^2.2.3" semver: "npm:^6.3.1" - checksum: 10c0/ef5a6c3c6bf40d3589b5593f8118cfe2602ce737412629fb6e26d595be2fcbaae0807b43027a5c42ec4fba5b895ff65891f2503b5918c8a3ea3542ab44d4c278 - languageName: node - linkType: hard - -"@babel/generator@npm:^7.26.0, @babel/generator@npm:^7.26.3, @babel/generator@npm:^7.7.2": - version: 7.26.3 - resolution: "@babel/generator@npm:7.26.3" - dependencies: - "@babel/parser": "npm:^7.26.3" - "@babel/types": "npm:^7.26.3" - "@jridgewell/gen-mapping": "npm:^0.3.5" - "@jridgewell/trace-mapping": "npm:^0.3.25" - jsesc: "npm:^3.0.2" - checksum: 10c0/54f260558e3e4ec8942da3cde607c35349bb983c3a7c5121243f96893fba3e8cd62e1f1773b2051f936f8c8a10987b758d5c7d76dbf2784e95bb63ab4843fa00 + checksum: 10c0/535f82238027621da6bdffbdbe896ebad3558b311d6f8abc680637a9859b96edbf929ab010757055381570b29cf66c4a295b5618318d27a4273c0e2033925e72 languageName: node linkType: hard -"@babel/generator@npm:^7.27.5, @babel/generator@npm:^7.28.3": - version: 7.28.3 - resolution: "@babel/generator@npm:7.28.3" +"@babel/generator@npm:^7.27.5, @babel/generator@npm:^7.28.5, @babel/generator@npm:^7.7.2": + version: 7.28.5 + resolution: "@babel/generator@npm:7.28.5" dependencies: - "@babel/parser": "npm:^7.28.3" - "@babel/types": "npm:^7.28.2" + "@babel/parser": "npm:^7.28.5" + "@babel/types": "npm:^7.28.5" "@jridgewell/gen-mapping": "npm:^0.3.12" "@jridgewell/trace-mapping": "npm:^0.3.28" jsesc: "npm:^3.0.2" - checksum: 10c0/0ff58bcf04f8803dcc29479b547b43b9b0b828ec1ee0668e92d79f9e90f388c28589056637c5ff2fd7bcf8d153c990d29c448d449d852bf9d1bc64753ca462bc - languageName: node - linkType: hard - -"@babel/helper-compilation-targets@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-compilation-targets@npm:7.25.9" - dependencies: - "@babel/compat-data": "npm:^7.25.9" - "@babel/helper-validator-option": "npm:^7.25.9" - browserslist: "npm:^4.24.0" - lru-cache: "npm:^5.1.1" - semver: "npm:^6.3.1" - checksum: 10c0/a6b26a1e4222e69ef8e62ee19374308f060b007828bc11c65025ecc9e814aba21ff2175d6d3f8bf53c863edd728ee8f94ba7870f8f90a37d39552ad9933a8aaa + checksum: 10c0/9f219fe1d5431b6919f1a5c60db8d5d34fe546c0d8f5a8511b32f847569234ffc8032beb9e7404649a143f54e15224ecb53a3d11b6bb85c3203e573d91fca752 languageName: node linkType: hard @@ -24676,16 +24623,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-module-imports@npm:7.25.9" - dependencies: - "@babel/traverse": "npm:^7.25.9" - "@babel/types": "npm:^7.25.9" - checksum: 10c0/078d3c2b45d1f97ffe6bb47f61961be4785d2342a4156d8b42c92ee4e1b7b9e365655dd6cb25329e8fe1a675c91eeac7e3d04f0c518b67e417e29d6e27b6aa70 - languageName: node - linkType: hard - "@babel/helper-module-imports@npm:^7.27.1": version: 7.27.1 resolution: "@babel/helper-module-imports@npm:7.27.1" @@ -24696,19 +24633,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.26.0": - version: 7.26.0 - resolution: "@babel/helper-module-transforms@npm:7.26.0" - dependencies: - "@babel/helper-module-imports": "npm:^7.25.9" - "@babel/helper-validator-identifier": "npm:^7.25.9" - "@babel/traverse": "npm:^7.25.9" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10c0/ee111b68a5933481d76633dad9cdab30c41df4479f0e5e1cc4756dc9447c1afd2c9473b5ba006362e35b17f4ebddd5fca090233bef8dfc84dca9d9127e56ec3a - languageName: node - linkType: hard - "@babel/helper-module-transforms@npm:^7.28.3": version: 7.28.3 resolution: "@babel/helper-module-transforms@npm:7.28.3" @@ -24722,27 +24646,13 @@ __metadata: languageName: node linkType: hard -"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.25.9, @babel/helper-plugin-utils@npm:^7.8.0": - version: 7.25.9 - resolution: "@babel/helper-plugin-utils@npm:7.25.9" - checksum: 10c0/483066a1ba36ff16c0116cd24f93de05de746a603a777cd695ac7a1b034928a65a4ecb35f255761ca56626435d7abdb73219eba196f9aa83b6c3c3169325599d - languageName: node - linkType: hard - -"@babel/helper-plugin-utils@npm:^7.27.1": +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.27.1, @babel/helper-plugin-utils@npm:^7.8.0": version: 7.27.1 resolution: "@babel/helper-plugin-utils@npm:7.27.1" checksum: 10c0/94cf22c81a0c11a09b197b41ab488d416ff62254ce13c57e62912c85700dc2e99e555225787a4099ff6bae7a1812d622c80fbaeda824b79baa10a6c5ac4cf69b languageName: node linkType: hard -"@babel/helper-string-parser@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-string-parser@npm:7.25.9" - checksum: 10c0/7244b45d8e65f6b4338a6a68a8556f2cb161b782343e97281a5f2b9b93e420cad0d9f5773a59d79f61d0c448913d06f6a2358a87f2e203cf112e3c5b53522ee6 - languageName: node - linkType: hard - "@babel/helper-string-parser@npm:^7.27.1": version: 7.27.1 resolution: "@babel/helper-string-parser@npm:7.27.1" @@ -24750,24 +24660,10 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-validator-identifier@npm:7.25.9" - checksum: 10c0/4fc6f830177b7b7e887ad3277ddb3b91d81e6c4a24151540d9d1023e8dc6b1c0505f0f0628ae653601eb4388a8db45c1c14b2c07a9173837aef7e4116456259d - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/helper-validator-identifier@npm:7.27.1" - checksum: 10c0/c558f11c4871d526498e49d07a84752d1800bf72ac0d3dad100309a2eaba24efbf56ea59af5137ff15e3a00280ebe588560534b0e894a4750f8b1411d8f78b84 - languageName: node - linkType: hard - -"@babel/helper-validator-option@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-validator-option@npm:7.25.9" - checksum: 10c0/27fb195d14c7dcb07f14e58fe77c44eea19a6a40a74472ec05c441478fa0bb49fa1c32b2d64be7a38870ee48ef6601bdebe98d512f0253aea0b39756c4014f3e +"@babel/helper-validator-identifier@npm:^7.27.1, @babel/helper-validator-identifier@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/helper-validator-identifier@npm:7.28.5" + checksum: 10c0/42aaebed91f739a41f3d80b72752d1f95fd7c72394e8e4bd7cdd88817e0774d80a432451bcba17c2c642c257c483bf1d409dd4548883429ea9493a3bc4ab0847 languageName: node linkType: hard @@ -24778,16 +24674,6 @@ __metadata: languageName: node linkType: hard -"@babel/helpers@npm:^7.26.0": - version: 7.26.0 - resolution: "@babel/helpers@npm:7.26.0" - dependencies: - "@babel/template": "npm:^7.25.9" - "@babel/types": "npm:^7.26.0" - checksum: 10c0/343333cced6946fe46617690a1d0789346960910225ce359021a88a60a65bc0d791f0c5d240c0ed46cf8cc63b5fd7df52734ff14e43b9c32feae2b61b1647097 - languageName: node - linkType: hard - "@babel/helpers@npm:^7.28.4": version: 7.28.4 resolution: "@babel/helpers@npm:7.28.4" @@ -24798,25 +24684,14 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.25.9, @babel/parser@npm:^7.26.0, @babel/parser@npm:^7.26.3": - version: 7.26.3 - resolution: "@babel/parser@npm:7.26.3" - dependencies: - "@babel/types": "npm:^7.26.3" - bin: - parser: ./bin/babel-parser.js - checksum: 10c0/48f736374e61cfd10ddbf7b80678514ae1f16d0e88bc793d2b505d73d9b987ea786fc8c2f7ee8f8b8c467df062030eb07fd0eb2168f0f541ca1f542775852cad - languageName: node - linkType: hard - -"@babel/parser@npm:^7.27.2, @babel/parser@npm:^7.28.3, @babel/parser@npm:^7.28.4": - version: 7.28.4 - resolution: "@babel/parser@npm:7.28.4" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.27.2, @babel/parser@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/parser@npm:7.28.5" dependencies: - "@babel/types": "npm:^7.28.4" + "@babel/types": "npm:^7.28.5" bin: parser: ./bin/babel-parser.js - checksum: 10c0/58b239a5b1477ac7ed7e29d86d675cc81075ca055424eba6485872626db2dc556ce63c45043e5a679cd925e999471dba8a3ed4864e7ab1dbf64306ab72c52707 + checksum: 10c0/5bbe48bf2c79594ac02b490a41ffde7ef5aa22a9a88ad6bcc78432a6ba8a9d638d531d868bd1f104633f1f6bba9905746e15185b8276a3756c42b765d131b1ef languageName: node linkType: hard @@ -24865,13 +24740,13 @@ __metadata: linkType: hard "@babel/plugin-syntax-import-attributes@npm:^7.24.7": - version: 7.26.0 - resolution: "@babel/plugin-syntax-import-attributes@npm:7.26.0" + version: 7.27.1 + resolution: "@babel/plugin-syntax-import-attributes@npm:7.27.1" dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" + "@babel/helper-plugin-utils": "npm:^7.27.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10c0/e594c185b12bfe0bbe7ca78dfeebe870e6d569a12128cac86f3164a075fe0ff70e25ddbd97fd0782906b91f65560c9dc6957716b7b4a68aba2516c9b7455e352 + checksum: 10c0/e66f7a761b8360419bbb93ab67d87c8a97465ef4637a985ff682ce7ba6918b34b29d81190204cf908d0933058ee7b42737423cd8a999546c21b3aabad4affa9a languageName: node linkType: hard @@ -24897,7 +24772,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-jsx@npm:^7.27.1": +"@babel/plugin-syntax-jsx@npm:^7.27.1, @babel/plugin-syntax-jsx@npm:^7.7.2": version: 7.27.1 resolution: "@babel/plugin-syntax-jsx@npm:7.27.1" dependencies: @@ -24908,17 +24783,6 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-jsx@npm:^7.7.2": - version: 7.25.9 - resolution: "@babel/plugin-syntax-jsx@npm:7.25.9" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/d56597aff4df39d3decda50193b6dfbe596ca53f437ff2934622ce19a743bf7f43492d3fb3308b0289f5cee2b825d99ceb56526a2b9e7b68bf04901546c5618c - languageName: node - linkType: hard - "@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4": version: 7.10.4 resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" @@ -25007,7 +24871,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-typescript@npm:^7.27.1": +"@babel/plugin-syntax-typescript@npm:^7.27.1, @babel/plugin-syntax-typescript@npm:^7.7.2": version: 7.27.1 resolution: "@babel/plugin-syntax-typescript@npm:7.27.1" dependencies: @@ -25018,38 +24882,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-syntax-typescript@npm:^7.7.2": - version: 7.25.9 - resolution: "@babel/plugin-syntax-typescript@npm:7.25.9" - dependencies: - "@babel/helper-plugin-utils": "npm:^7.25.9" - peerDependencies: - "@babel/core": ^7.0.0-0 - checksum: 10c0/5192ebe11bd46aea68b7a60fd9555465c59af7e279e71126788e59121b86e00b505816685ab4782abe159232b0f73854e804b54449820b0d950b397ee158caa2 - languageName: node - linkType: hard - "@babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.21.0": - version: 7.26.0 - resolution: "@babel/runtime@npm:7.26.0" - dependencies: - regenerator-runtime: "npm:^0.14.0" - checksum: 10c0/12c01357e0345f89f4f7e8c0e81921f2a3e3e101f06e8eaa18a382b517376520cd2fa8c237726eb094dab25532855df28a7baaf1c26342b52782f6936b07c287 - languageName: node - linkType: hard - -"@babel/template@npm:^7.25.9, @babel/template@npm:^7.3.3": - version: 7.25.9 - resolution: "@babel/template@npm:7.25.9" - dependencies: - "@babel/code-frame": "npm:^7.25.9" - "@babel/parser": "npm:^7.25.9" - "@babel/types": "npm:^7.25.9" - checksum: 10c0/ebe677273f96a36c92cc15b7aa7b11cc8bc8a3bb7a01d55b2125baca8f19cae94ff3ce15f1b1880fb8437f3a690d9f89d4e91f16fc1dc4d3eb66226d128983ab + version: 7.28.4 + resolution: "@babel/runtime@npm:7.28.4" + checksum: 10c0/792ce7af9750fb9b93879cc9d1db175701c4689da890e6ced242ea0207c9da411ccf16dc04e689cc01158b28d7898c40d75598f4559109f761c12ce01e959bf7 languageName: node linkType: hard -"@babel/template@npm:^7.27.2": +"@babel/template@npm:^7.27.2, @babel/template@npm:^7.3.3": version: 7.27.2 resolution: "@babel/template@npm:7.27.2" dependencies: @@ -25060,63 +24900,28 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.25.9": - version: 7.26.4 - resolution: "@babel/traverse@npm:7.26.4" - dependencies: - "@babel/code-frame": "npm:^7.26.2" - "@babel/generator": "npm:^7.26.3" - "@babel/parser": "npm:^7.26.3" - "@babel/template": "npm:^7.25.9" - "@babel/types": "npm:^7.26.3" - debug: "npm:^4.3.1" - globals: "npm:^11.1.0" - checksum: 10c0/cf25d0eda9505daa0f0832ad786b9e28c9d967e823aaf7fbe425250ab198c656085495aa6bed678b27929e095c84eea9fd778b851a31803da94c9bc4bf4eaef7 - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.27.1, @babel/traverse@npm:^7.28.3, @babel/traverse@npm:^7.28.4": - version: 7.28.4 - resolution: "@babel/traverse@npm:7.28.4" +"@babel/traverse@npm:^7.27.1, @babel/traverse@npm:^7.28.3, @babel/traverse@npm:^7.28.5": + version: 7.28.5 + resolution: "@babel/traverse@npm:7.28.5" dependencies: "@babel/code-frame": "npm:^7.27.1" - "@babel/generator": "npm:^7.28.3" + "@babel/generator": "npm:^7.28.5" "@babel/helper-globals": "npm:^7.28.0" - "@babel/parser": "npm:^7.28.4" + "@babel/parser": "npm:^7.28.5" "@babel/template": "npm:^7.27.2" - "@babel/types": "npm:^7.28.4" + "@babel/types": "npm:^7.28.5" debug: "npm:^4.3.1" - checksum: 10c0/ee678fdd49c9f54a32e07e8455242390d43ce44887cea6567b233fe13907b89240c377e7633478a32c6cf1be0e17c2f7f3b0c59f0666e39c5074cc47b968489c - languageName: node - linkType: hard - -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.0, @babel/types@npm:^7.3.3": - version: 7.26.0 - resolution: "@babel/types@npm:7.26.0" - dependencies: - "@babel/helper-string-parser": "npm:^7.25.9" - "@babel/helper-validator-identifier": "npm:^7.25.9" - checksum: 10c0/b694f41ad1597127e16024d766c33a641508aad037abd08d0d1f73af753e1119fa03b4a107d04b5f92cc19c095a594660547ae9bead1db2299212d644b0a5cb8 + checksum: 10c0/f6c4a595993ae2b73f2d4cd9c062f2e232174d293edd4abe1d715bd6281da8d99e47c65857e8d0917d9384c65972f4acdebc6749a7c40a8fcc38b3c7fb3e706f languageName: node linkType: hard -"@babel/types@npm:^7.26.3": - version: 7.26.3 - resolution: "@babel/types@npm:7.26.3" - dependencies: - "@babel/helper-string-parser": "npm:^7.25.9" - "@babel/helper-validator-identifier": "npm:^7.25.9" - checksum: 10c0/966c5242c5e55c8704bf7a7418e7be2703a0afa4d19a8480999d5a4ef13d095dd60686615fe5983cb7593b4b06ba3a7de8d6ca501c1d78bdd233a10d90be787b - languageName: node - linkType: hard - -"@babel/types@npm:^7.27.1, @babel/types@npm:^7.27.3, @babel/types@npm:^7.28.2, @babel/types@npm:^7.28.4": - version: 7.28.4 - resolution: "@babel/types@npm:7.28.4" +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.27.1, @babel/types@npm:^7.27.3, @babel/types@npm:^7.28.2, @babel/types@npm:^7.28.4, @babel/types@npm:^7.28.5, @babel/types@npm:^7.3.3": + version: 7.28.5 + resolution: "@babel/types@npm:7.28.5" dependencies: "@babel/helper-string-parser": "npm:^7.27.1" - "@babel/helper-validator-identifier": "npm:^7.27.1" - checksum: 10c0/ac6f909d6191319e08c80efbfac7bd9a25f80cc83b43cd6d82e7233f7a6b9d6e7b90236f3af7400a3f83b576895bcab9188a22b584eb0f224e80e6d4e95f4517 + "@babel/helper-validator-identifier": "npm:^7.28.5" + checksum: 10c0/a5a483d2100befbf125793640dec26b90b95fd233a94c19573325898a5ce1e52cdfa96e495c7dcc31b5eca5b66ce3e6d4a0f5a4a62daec271455959f208ab08a languageName: node linkType: hard @@ -25526,21 +25331,21 @@ __metadata: linkType: hard "@emnapi/core@npm:^1.4.3": - version: 1.5.0 - resolution: "@emnapi/core@npm:1.5.0" + version: 1.7.0 + resolution: "@emnapi/core@npm:1.7.0" dependencies: "@emnapi/wasi-threads": "npm:1.1.0" tslib: "npm:^2.4.0" - checksum: 10c0/52ba3485277706d92fa27d92b37e5b4f6ef0742c03ed68f8096f294c6bfa30f0752c82d4c2bfa14bff4dc30d63c9f71a8f9fb64a92743d00807d9e468fafd5ff + checksum: 10c0/ea57802079fda31f87506bba63f1299f0fa60546c1a1a424d2d5926f98f1ffc4a94ae3c885155f4a60114c19d314addb45d94dc0e427ac1594cbfca7cd910a31 languageName: node linkType: hard "@emnapi/runtime@npm:^1.4.3": - version: 1.5.0 - resolution: "@emnapi/runtime@npm:1.5.0" + version: 1.7.0 + resolution: "@emnapi/runtime@npm:1.7.0" dependencies: tslib: "npm:^2.4.0" - checksum: 10c0/a85c9fc4e3af49cbe41e5437e5be2551392a931910cd0a5b5d3572532786927810c9cc1db11b232ec8f9657b33d4e6f7c4f985f1a052917d7cd703b5b2a20faa + checksum: 10c0/b99334582effe146e9fb5cd9e7f866c6c7047a8576f642456d56984b574b40b2ba14e4aede26217fcefa1372ddd1e098a19912f17033a9ae469928b0dc65a682 languageName: node linkType: hard @@ -25567,9 +25372,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/aix-ppc64@npm:0.25.8": - version: 0.25.8 - resolution: "@esbuild/aix-ppc64@npm:0.25.8" +"@esbuild/aix-ppc64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/aix-ppc64@npm:0.25.12" conditions: os=aix & cpu=ppc64 languageName: node linkType: hard @@ -25588,9 +25393,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.25.8": - version: 0.25.8 - resolution: "@esbuild/android-arm64@npm:0.25.8" +"@esbuild/android-arm64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/android-arm64@npm:0.25.12" conditions: os=android & cpu=arm64 languageName: node linkType: hard @@ -25609,9 +25414,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm@npm:0.25.8": - version: 0.25.8 - resolution: "@esbuild/android-arm@npm:0.25.8" +"@esbuild/android-arm@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/android-arm@npm:0.25.12" conditions: os=android & cpu=arm languageName: node linkType: hard @@ -25630,9 +25435,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-x64@npm:0.25.8": - version: 0.25.8 - resolution: "@esbuild/android-x64@npm:0.25.8" +"@esbuild/android-x64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/android-x64@npm:0.25.12" conditions: os=android & cpu=x64 languageName: node linkType: hard @@ -25651,9 +25456,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.25.8": - version: 0.25.8 - resolution: "@esbuild/darwin-arm64@npm:0.25.8" +"@esbuild/darwin-arm64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/darwin-arm64@npm:0.25.12" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard @@ -25672,9 +25477,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.25.8": - version: 0.25.8 - resolution: "@esbuild/darwin-x64@npm:0.25.8" +"@esbuild/darwin-x64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/darwin-x64@npm:0.25.12" conditions: os=darwin & cpu=x64 languageName: node linkType: hard @@ -25693,9 +25498,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.25.8": - version: 0.25.8 - resolution: "@esbuild/freebsd-arm64@npm:0.25.8" +"@esbuild/freebsd-arm64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/freebsd-arm64@npm:0.25.12" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard @@ -25714,9 +25519,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.25.8": - version: 0.25.8 - resolution: "@esbuild/freebsd-x64@npm:0.25.8" +"@esbuild/freebsd-x64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/freebsd-x64@npm:0.25.12" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard @@ -25735,9 +25540,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.25.8": - version: 0.25.8 - resolution: "@esbuild/linux-arm64@npm:0.25.8" +"@esbuild/linux-arm64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/linux-arm64@npm:0.25.12" conditions: os=linux & cpu=arm64 languageName: node linkType: hard @@ -25756,9 +25561,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.25.8": - version: 0.25.8 - resolution: "@esbuild/linux-arm@npm:0.25.8" +"@esbuild/linux-arm@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/linux-arm@npm:0.25.12" conditions: os=linux & cpu=arm languageName: node linkType: hard @@ -25777,9 +25582,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.25.8": - version: 0.25.8 - resolution: "@esbuild/linux-ia32@npm:0.25.8" +"@esbuild/linux-ia32@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/linux-ia32@npm:0.25.12" conditions: os=linux & cpu=ia32 languageName: node linkType: hard @@ -25798,9 +25603,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.25.8": - version: 0.25.8 - resolution: "@esbuild/linux-loong64@npm:0.25.8" +"@esbuild/linux-loong64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/linux-loong64@npm:0.25.12" conditions: os=linux & cpu=loong64 languageName: node linkType: hard @@ -25819,9 +25624,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.25.8": - version: 0.25.8 - resolution: "@esbuild/linux-mips64el@npm:0.25.8" +"@esbuild/linux-mips64el@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/linux-mips64el@npm:0.25.12" conditions: os=linux & cpu=mips64el languageName: node linkType: hard @@ -25840,9 +25645,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.25.8": - version: 0.25.8 - resolution: "@esbuild/linux-ppc64@npm:0.25.8" +"@esbuild/linux-ppc64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/linux-ppc64@npm:0.25.12" conditions: os=linux & cpu=ppc64 languageName: node linkType: hard @@ -25861,9 +25666,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.25.8": - version: 0.25.8 - resolution: "@esbuild/linux-riscv64@npm:0.25.8" +"@esbuild/linux-riscv64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/linux-riscv64@npm:0.25.12" conditions: os=linux & cpu=riscv64 languageName: node linkType: hard @@ -25882,9 +25687,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.25.8": - version: 0.25.8 - resolution: "@esbuild/linux-s390x@npm:0.25.8" +"@esbuild/linux-s390x@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/linux-s390x@npm:0.25.12" conditions: os=linux & cpu=s390x languageName: node linkType: hard @@ -25903,9 +25708,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.25.8": - version: 0.25.8 - resolution: "@esbuild/linux-x64@npm:0.25.8" +"@esbuild/linux-x64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/linux-x64@npm:0.25.12" conditions: os=linux & cpu=x64 languageName: node linkType: hard @@ -25917,9 +25722,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/netbsd-arm64@npm:0.25.8": - version: 0.25.8 - resolution: "@esbuild/netbsd-arm64@npm:0.25.8" +"@esbuild/netbsd-arm64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/netbsd-arm64@npm:0.25.12" conditions: os=netbsd & cpu=arm64 languageName: node linkType: hard @@ -25938,9 +25743,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.25.8": - version: 0.25.8 - resolution: "@esbuild/netbsd-x64@npm:0.25.8" +"@esbuild/netbsd-x64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/netbsd-x64@npm:0.25.12" conditions: os=netbsd & cpu=x64 languageName: node linkType: hard @@ -25959,9 +25764,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/openbsd-arm64@npm:0.25.8": - version: 0.25.8 - resolution: "@esbuild/openbsd-arm64@npm:0.25.8" +"@esbuild/openbsd-arm64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/openbsd-arm64@npm:0.25.12" conditions: os=openbsd & cpu=arm64 languageName: node linkType: hard @@ -25980,16 +25785,16 @@ __metadata: languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.25.8": - version: 0.25.8 - resolution: "@esbuild/openbsd-x64@npm:0.25.8" +"@esbuild/openbsd-x64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/openbsd-x64@npm:0.25.12" conditions: os=openbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/openharmony-arm64@npm:0.25.8": - version: 0.25.8 - resolution: "@esbuild/openharmony-arm64@npm:0.25.8" +"@esbuild/openharmony-arm64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/openharmony-arm64@npm:0.25.12" conditions: os=openharmony & cpu=arm64 languageName: node linkType: hard @@ -26008,9 +25813,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.25.8": - version: 0.25.8 - resolution: "@esbuild/sunos-x64@npm:0.25.8" +"@esbuild/sunos-x64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/sunos-x64@npm:0.25.12" conditions: os=sunos & cpu=x64 languageName: node linkType: hard @@ -26029,9 +25834,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.25.8": - version: 0.25.8 - resolution: "@esbuild/win32-arm64@npm:0.25.8" +"@esbuild/win32-arm64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/win32-arm64@npm:0.25.12" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard @@ -26050,9 +25855,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.25.8": - version: 0.25.8 - resolution: "@esbuild/win32-ia32@npm:0.25.8" +"@esbuild/win32-ia32@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/win32-ia32@npm:0.25.12" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard @@ -26071,28 +25876,28 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.25.8": - version: 0.25.8 - resolution: "@esbuild/win32-x64@npm:0.25.8" +"@esbuild/win32-x64@npm:0.25.12": + version: 0.25.12 + resolution: "@esbuild/win32-x64@npm:0.25.12" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@eslint-community/eslint-utils@npm:^4.2.0": - version: 4.4.1 - resolution: "@eslint-community/eslint-utils@npm:4.4.1" + version: 4.9.0 + resolution: "@eslint-community/eslint-utils@npm:4.9.0" dependencies: eslint-visitor-keys: "npm:^3.4.3" peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - checksum: 10c0/2aa0ac2fc50ff3f234408b10900ed4f1a0b19352f21346ad4cc3d83a1271481bdda11097baa45d484dd564c895e0762a27a8240be7a256b3ad47129e96528252 + checksum: 10c0/8881e22d519326e7dba85ea915ac7a143367c805e6ba1374c987aa2fbdd09195cc51183d2da72c0e2ff388f84363e1b220fd0d19bef10c272c63455162176817 languageName: node linkType: hard "@eslint-community/regexpp@npm:^4.4.0": - version: 4.12.1 - resolution: "@eslint-community/regexpp@npm:4.12.1" - checksum: 10c0/a03d98c246bcb9109aec2c08e4d10c8d010256538dcb3f56610191607214523d4fb1b00aa81df830b6dffb74c5fa0be03642513a289c567949d3e550ca11cdf6 + version: 4.12.2 + resolution: "@eslint-community/regexpp@npm:4.12.2" + checksum: 10c0/fddcbc66851b308478d04e302a4d771d6917a0b3740dc351513c0da9ca2eab8a1adf99f5e0aa7ab8b13fa0df005c81adeee7e63a92f3effd7d367a163b721c2d languageName: node linkType: hard @@ -26221,6 +26026,37 @@ __metadata: languageName: node linkType: hard +"@inquirer/external-editor@npm:^1.0.0": + version: 1.0.3 + resolution: "@inquirer/external-editor@npm:1.0.3" + dependencies: + chardet: "npm:^2.1.1" + iconv-lite: "npm:^0.7.0" + peerDependencies: + "@types/node": ">=18" + peerDependenciesMeta: + "@types/node": + optional: true + checksum: 10c0/82951cb7f3762dd78cca2ea291396841e3f4adfe26004b5badfed1cec4b6a04bb567dff94d0e41b35c61bdd7957317c64c22f58074d14b238d44e44d9e420019 + languageName: node + linkType: hard + +"@isaacs/balanced-match@npm:^4.0.1": + version: 4.0.1 + resolution: "@isaacs/balanced-match@npm:4.0.1" + checksum: 10c0/7da011805b259ec5c955f01cee903da72ad97c5e6f01ca96197267d3f33103d5b2f8a1af192140f3aa64526c593c8d098ae366c2b11f7f17645d12387c2fd420 + languageName: node + linkType: hard + +"@isaacs/brace-expansion@npm:^5.0.0": + version: 5.0.0 + resolution: "@isaacs/brace-expansion@npm:5.0.0" + dependencies: + "@isaacs/balanced-match": "npm:^4.0.1" + checksum: 10c0/b4d4812f4be53afc2c5b6c545001ff7a4659af68d4484804e9d514e183d20269bb81def8682c01a22b17c4d6aed14292c8494f7d2ac664e547101c1a905aa977 + languageName: node + linkType: hard + "@isaacs/cliui@npm:^8.0.2": version: 8.0.2 resolution: "@isaacs/cliui@npm:8.0.2" @@ -26767,7 +26603,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/gen-mapping@npm:^0.3.12": +"@jridgewell/gen-mapping@npm:^0.3.12, @jridgewell/gen-mapping@npm:^0.3.5": version: 0.3.13 resolution: "@jridgewell/gen-mapping@npm:0.3.13" dependencies: @@ -26777,17 +26613,6 @@ __metadata: languageName: node linkType: hard -"@jridgewell/gen-mapping@npm:^0.3.5": - version: 0.3.8 - resolution: "@jridgewell/gen-mapping@npm:0.3.8" - dependencies: - "@jridgewell/set-array": "npm:^1.2.1" - "@jridgewell/sourcemap-codec": "npm:^1.4.10" - "@jridgewell/trace-mapping": "npm:^0.3.24" - checksum: 10c0/c668feaf86c501d7c804904a61c23c67447b2137b813b9ce03eca82cb9d65ac7006d766c218685d76e3d72828279b6ee26c347aa1119dab23fbaf36aed51585a - languageName: node - linkType: hard - "@jridgewell/remapping@npm:^2.3.5": version: 2.3.5 resolution: "@jridgewell/remapping@npm:2.3.5" @@ -26805,27 +26630,20 @@ __metadata: languageName: node linkType: hard -"@jridgewell/set-array@npm:^1.2.1": - version: 1.2.1 - resolution: "@jridgewell/set-array@npm:1.2.1" - checksum: 10c0/2a5aa7b4b5c3464c895c802d8ae3f3d2b92fcbe84ad12f8d0bfbb1f5ad006717e7577ee1fd2eac00c088abe486c7adb27976f45d2941ff6b0b92b2c3302c60f4 - languageName: node - linkType: hard - "@jridgewell/source-map@npm:^0.3.3": - version: 0.3.6 - resolution: "@jridgewell/source-map@npm:0.3.6" + version: 0.3.11 + resolution: "@jridgewell/source-map@npm:0.3.11" dependencies: "@jridgewell/gen-mapping": "npm:^0.3.5" "@jridgewell/trace-mapping": "npm:^0.3.25" - checksum: 10c0/6a4ecc713ed246ff8e5bdcc1ef7c49aaa93f7463d948ba5054dda18b02dcc6a055e2828c577bcceee058f302ce1fc95595713d44f5c45e43d459f88d267f2f04 + checksum: 10c0/50a4fdafe0b8f655cb2877e59fe81320272eaa4ccdbe6b9b87f10614b2220399ae3e05c16137a59db1f189523b42c7f88bd097ee991dbd7bc0e01113c583e844 languageName: node linkType: hard -"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.5.0": - version: 1.5.0 - resolution: "@jridgewell/sourcemap-codec@npm:1.5.0" - checksum: 10c0/2eb864f276eb1096c3c11da3e9bb518f6d9fc0023c78344cdc037abadc725172c70314bdb360f2d4b7bffec7f5d657ce006816bc5d4ecb35e61b66132db00c18 +"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.5.0, @jridgewell/sourcemap-codec@npm:^1.5.5": + version: 1.5.5 + resolution: "@jridgewell/sourcemap-codec@npm:1.5.5" + checksum: 10c0/f9e538f302b63c0ebc06eecb1dd9918dd4289ed36147a0ddce35d6ea4d7ebbda243cda7b2213b6a5e1d8087a298d5cf630fb2bd39329cdecb82017023f6081a0 languageName: node linkType: hard @@ -26839,17 +26657,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": - version: 0.3.25 - resolution: "@jridgewell/trace-mapping@npm:0.3.25" - dependencies: - "@jridgewell/resolve-uri": "npm:^3.1.0" - "@jridgewell/sourcemap-codec": "npm:^1.4.14" - checksum: 10c0/3d1ce6ebc69df9682a5a8896b414c6537e428a1d68b02fcc8363b04284a8ca0df04d0ee3013132252ab14f2527bc13bea6526a912ecb5658f0e39fd2860b4df4 - languageName: node - linkType: hard - -"@jridgewell/trace-mapping@npm:^0.3.23, @jridgewell/trace-mapping@npm:^0.3.28": +"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.18, @jridgewell/trace-mapping@npm:^0.3.23, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25, @jridgewell/trace-mapping@npm:^0.3.28": version: 0.3.31 resolution: "@jridgewell/trace-mapping@npm:0.3.31" dependencies: @@ -27792,16 +27600,16 @@ __metadata: languageName: node linkType: hard -"@npmcli/agent@npm:^3.0.0": - version: 3.0.0 - resolution: "@npmcli/agent@npm:3.0.0" +"@npmcli/agent@npm:^4.0.0": + version: 4.0.0 + resolution: "@npmcli/agent@npm:4.0.0" dependencies: agent-base: "npm:^7.1.0" http-proxy-agent: "npm:^7.0.0" https-proxy-agent: "npm:^7.0.1" - lru-cache: "npm:^10.0.1" + lru-cache: "npm:^11.2.1" socks-proxy-agent: "npm:^8.0.3" - checksum: 10c0/efe37b982f30740ee77696a80c196912c274ecd2cb243bc6ae7053a50c733ce0f6c09fda085145f33ecf453be19654acca74b69e81eaad4c90f00ccffe2f9271 + checksum: 10c0/f7b5ce0f3dd42c3f8c6546e8433573d8049f67ef11ec22aa4704bc41483122f68bf97752e06302c455ead667af5cb753e6a09bff06632bc465c1cfd4c4b75a53 languageName: node linkType: hard @@ -28222,6 +28030,13 @@ __metadata: languageName: node linkType: hard +"@pinojs/redact@npm:^0.4.0": + version: 0.4.0 + resolution: "@pinojs/redact@npm:0.4.0" + checksum: 10c0/4b311ba17ee0cf154ff9c39eb063ec04cd0d0017cb3750efcdf06c2d485df3e1095e13e872175993568c5568c23e4508dd877c981bbc9c5ae5e384d569efcdff + languageName: node + linkType: hard + "@pkgjs/parseargs@npm:^0.11.0": version: 0.11.0 resolution: "@pkgjs/parseargs@npm:0.11.0" @@ -28251,8 +28066,8 @@ __metadata: linkType: hard "@rollup/plugin-node-resolve@npm:^16.0.2": - version: 16.0.2 - resolution: "@rollup/plugin-node-resolve@npm:16.0.2" + version: 16.0.3 + resolution: "@rollup/plugin-node-resolve@npm:16.0.3" dependencies: "@rollup/pluginutils": "npm:^5.0.1" "@types/resolve": "npm:1.20.2" @@ -28264,13 +28079,13 @@ __metadata: peerDependenciesMeta: rollup: optional: true - checksum: 10c0/483b678a78decddb2597abcaf3b7e92c54c296a7362224ed6791bd7d46a7ee1cc0d652c96dadd0ea3b1f30d0f304b2bf7bb02b6748b6ba2067e7c157b8a8ca70 + checksum: 10c0/5bafff8e51cd28b5b3b8f415c30a893f5bfdb1a54469e00b3dc6530f26051620f3dfa172f40544361948b46cc3070cb34fd44ade66d38c0677d74c846fbc58dc languageName: node linkType: hard "@rollup/plugin-typescript@npm:^12.1.4": - version: 12.1.4 - resolution: "@rollup/plugin-typescript@npm:12.1.4" + version: 12.3.0 + resolution: "@rollup/plugin-typescript@npm:12.3.0" dependencies: "@rollup/pluginutils": "npm:^5.1.0" resolve: "npm:^1.22.1" @@ -28283,7 +28098,7 @@ __metadata: optional: true tslib: optional: true - checksum: 10c0/b5bf7f54794d0b33ae5441c5aa202a95beb7068c206f40102f94997e888756c06c2bfe00517eb74a58771078432f94e8a34e99f5c6dbf89a22b49431b83c4798 + checksum: 10c0/41d14e9a9792d8d9751c275cf87c2de796ddd1a64c96fedc622baad8cfbb1247537e37ae428e59e1850de7d7165941ee1a4030dbe9bebd5fbb38c5e4f751d8b5 languageName: node linkType: hard @@ -28303,142 +28118,156 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.46.4": - version: 4.46.4 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.46.4" +"@rollup/rollup-android-arm-eabi@npm:4.53.2": + version: 4.53.2 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.53.2" conditions: os=android & cpu=arm languageName: node linkType: hard -"@rollup/rollup-android-arm64@npm:4.46.4": - version: 4.46.4 - resolution: "@rollup/rollup-android-arm64@npm:4.46.4" +"@rollup/rollup-android-arm64@npm:4.53.2": + version: 4.53.2 + resolution: "@rollup/rollup-android-arm64@npm:4.53.2" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-arm64@npm:4.46.4": - version: 4.46.4 - resolution: "@rollup/rollup-darwin-arm64@npm:4.46.4" +"@rollup/rollup-darwin-arm64@npm:4.53.2": + version: 4.53.2 + resolution: "@rollup/rollup-darwin-arm64@npm:4.53.2" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-x64@npm:4.46.4": - version: 4.46.4 - resolution: "@rollup/rollup-darwin-x64@npm:4.46.4" +"@rollup/rollup-darwin-x64@npm:4.53.2": + version: 4.53.2 + resolution: "@rollup/rollup-darwin-x64@npm:4.53.2" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-freebsd-arm64@npm:4.46.4": - version: 4.46.4 - resolution: "@rollup/rollup-freebsd-arm64@npm:4.46.4" +"@rollup/rollup-freebsd-arm64@npm:4.53.2": + version: 4.53.2 + resolution: "@rollup/rollup-freebsd-arm64@npm:4.53.2" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-freebsd-x64@npm:4.46.4": - version: 4.46.4 - resolution: "@rollup/rollup-freebsd-x64@npm:4.46.4" +"@rollup/rollup-freebsd-x64@npm:4.53.2": + version: 4.53.2 + resolution: "@rollup/rollup-freebsd-x64@npm:4.53.2" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-linux-arm-gnueabihf@npm:4.46.4": - version: 4.46.4 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.46.4" +"@rollup/rollup-linux-arm-gnueabihf@npm:4.53.2": + version: 4.53.2 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.53.2" conditions: os=linux & cpu=arm & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm-musleabihf@npm:4.46.4": - version: 4.46.4 - resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.46.4" +"@rollup/rollup-linux-arm-musleabihf@npm:4.53.2": + version: 4.53.2 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.53.2" conditions: os=linux & cpu=arm & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-arm64-gnu@npm:4.46.4": - version: 4.46.4 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.46.4" +"@rollup/rollup-linux-arm64-gnu@npm:4.53.2": + version: 4.53.2 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.53.2" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm64-musl@npm:4.46.4": - version: 4.46.4 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.46.4" +"@rollup/rollup-linux-arm64-musl@npm:4.53.2": + version: 4.53.2 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.53.2" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-loongarch64-gnu@npm:4.46.4": - version: 4.46.4 - resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.46.4" +"@rollup/rollup-linux-loong64-gnu@npm:4.53.2": + version: 4.53.2 + resolution: "@rollup/rollup-linux-loong64-gnu@npm:4.53.2" conditions: os=linux & cpu=loong64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-ppc64-gnu@npm:4.46.4": - version: 4.46.4 - resolution: "@rollup/rollup-linux-ppc64-gnu@npm:4.46.4" +"@rollup/rollup-linux-ppc64-gnu@npm:4.53.2": + version: 4.53.2 + resolution: "@rollup/rollup-linux-ppc64-gnu@npm:4.53.2" conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-gnu@npm:4.46.4": - version: 4.46.4 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.46.4" +"@rollup/rollup-linux-riscv64-gnu@npm:4.53.2": + version: 4.53.2 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.53.2" conditions: os=linux & cpu=riscv64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-musl@npm:4.46.4": - version: 4.46.4 - resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.46.4" +"@rollup/rollup-linux-riscv64-musl@npm:4.53.2": + version: 4.53.2 + resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.53.2" conditions: os=linux & cpu=riscv64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-s390x-gnu@npm:4.46.4": - version: 4.46.4 - resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.46.4" +"@rollup/rollup-linux-s390x-gnu@npm:4.53.2": + version: 4.53.2 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.53.2" conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-gnu@npm:4.46.4": - version: 4.46.4 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.46.4" +"@rollup/rollup-linux-x64-gnu@npm:4.53.2": + version: 4.53.2 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.53.2" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-musl@npm:4.46.4": - version: 4.46.4 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.46.4" +"@rollup/rollup-linux-x64-musl@npm:4.53.2": + version: 4.53.2 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.53.2" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-win32-arm64-msvc@npm:4.46.4": - version: 4.46.4 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.46.4" +"@rollup/rollup-openharmony-arm64@npm:4.53.2": + version: 4.53.2 + resolution: "@rollup/rollup-openharmony-arm64@npm:4.53.2" + conditions: os=openharmony & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-win32-arm64-msvc@npm:4.53.2": + version: 4.53.2 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.53.2" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-win32-ia32-msvc@npm:4.46.4": - version: 4.46.4 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.46.4" +"@rollup/rollup-win32-ia32-msvc@npm:4.53.2": + version: 4.53.2 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.53.2" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@rollup/rollup-win32-x64-msvc@npm:4.46.4": - version: 4.46.4 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.46.4" +"@rollup/rollup-win32-x64-gnu@npm:4.53.2": + version: 4.53.2 + resolution: "@rollup/rollup-win32-x64-gnu@npm:4.53.2" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@rollup/rollup-win32-x64-msvc@npm:4.53.2": + version: 4.53.2 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.53.2" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -29233,9 +29062,9 @@ __metadata: linkType: hard "@tsconfig/node10@npm:^1.0.7": - version: 1.0.11 - resolution: "@tsconfig/node10@npm:1.0.11" - checksum: 10c0/28a0710e5d039e0de484bdf85fee883bfd3f6a8980601f4d44066b0a6bcd821d31c4e231d1117731c4e24268bd4cf2a788a6787c12fc7f8d11014c07d582783c + version: 1.0.12 + resolution: "@tsconfig/node10@npm:1.0.12" + checksum: 10c0/7bbbd7408cfaced86387a9b1b71cebc91c6fd701a120369735734da8eab1a4773fc079abd9f40c9e0b049e12586c8ac0e13f0da596bfd455b9b4c3faa813ebc5 languageName: node linkType: hard @@ -29304,11 +29133,11 @@ __metadata: linkType: hard "@types/babel__generator@npm:*": - version: 7.6.8 - resolution: "@types/babel__generator@npm:7.6.8" + version: 7.27.0 + resolution: "@types/babel__generator@npm:7.27.0" dependencies: "@babel/types": "npm:^7.0.0" - checksum: 10c0/f0ba105e7d2296bf367d6e055bb22996886c114261e2cb70bf9359556d0076c7a57239d019dee42bb063f565bade5ccb46009bce2044b2952d964bf9a454d6d2 + checksum: 10c0/9f9e959a8792df208a9d048092fda7e1858bddc95c6314857a8211a99e20e6830bdeb572e3587ae8be5429e37f2a96fcf222a9f53ad232f5537764c9e13a2bbd languageName: node linkType: hard @@ -29323,11 +29152,11 @@ __metadata: linkType: hard "@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6": - version: 7.20.6 - resolution: "@types/babel__traverse@npm:7.20.6" + version: 7.28.0 + resolution: "@types/babel__traverse@npm:7.28.0" dependencies: - "@babel/types": "npm:^7.20.7" - checksum: 10c0/7ba7db61a53e28cac955aa99af280d2600f15a8c056619c05b6fc911cbe02c61aa4f2823299221b23ce0cce00b294c0e5f618ec772aa3f247523c2e48cf7b888 + "@babel/types": "npm:^7.28.2" + checksum: 10c0/b52d7d4e8fc6a9018fe7361c4062c1c190f5778cf2466817cb9ed19d69fbbb54f9a85ffedeb748ed8062d2cf7d4cc088ee739848f47c57740de1c48cbf0d0994 languageName: node linkType: hard @@ -29339,11 +29168,12 @@ __metadata: linkType: hard "@types/chai@npm:^5.2.2": - version: 5.2.2 - resolution: "@types/chai@npm:5.2.2" + version: 5.2.3 + resolution: "@types/chai@npm:5.2.3" dependencies: "@types/deep-eql": "npm:*" - checksum: 10c0/49282bf0e8246800ebb36f17256f97bd3a8c4fb31f92ad3c0eaa7623518d7e87f1eaad4ad206960fcaf7175854bdff4cb167e4fe96811e0081b4ada83dd533ec + assertion-error: "npm:^2.0.1" + checksum: 10c0/e0ef1de3b6f8045a5e473e867c8565788c444271409d155588504840ad1a53611011f85072188c2833941189400228c1745d78323dac13fcede9c2b28bacfb2f languageName: node linkType: hard @@ -29383,14 +29213,7 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:*, @types/estree@npm:^1.0.0": - version: 1.0.6 - resolution: "@types/estree@npm:1.0.6" - checksum: 10c0/cdfd751f6f9065442cd40957c07fd80361c962869aa853c1c2fd03e101af8b9389d8ff4955a43a6fcfa223dd387a089937f95be0f3eec21ca527039fd2d9859a - languageName: node - linkType: hard - -"@types/estree@npm:1.0.8, @types/estree@npm:^1.0.8": +"@types/estree@npm:*, @types/estree@npm:1.0.8, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.8": version: 1.0.8 resolution: "@types/estree@npm:1.0.8" checksum: 10c0/39d34d1afaa338ab9763f37ad6066e3f349444f9052b9676a7cc0252ef9485a41c6d81c9c4e0d26e9077993354edf25efc853f3224dd4b447175ef62bdcc86a5 @@ -29469,9 +29292,9 @@ __metadata: linkType: hard "@types/lodash@npm:^4.14.175": - version: 4.17.14 - resolution: "@types/lodash@npm:4.17.14" - checksum: 10c0/343c6f722e0b39969036a885ad5aad6578479ead83987128c9b994e6b7f2fb9808244d802d4d332396bb09096f720a6c7060de16a492f5460e06a44560360322 + version: 4.17.20 + resolution: "@types/lodash@npm:4.17.20" + checksum: 10c0/98cdd0faae22cbb8079a01a3bb65aa8f8c41143367486c1cbf5adc83f16c9272a2a5d2c1f541f61d0d73da543c16ee1d21cf2ef86cb93cd0cc0ac3bced6dd88f languageName: node linkType: hard @@ -29490,11 +29313,11 @@ __metadata: linkType: hard "@types/node@npm:*": - version: 22.10.5 - resolution: "@types/node@npm:22.10.5" + version: 24.10.1 + resolution: "@types/node@npm:24.10.1" dependencies: - undici-types: "npm:~6.20.0" - checksum: 10c0/6a0e7d1fe6a86ef6ee19c3c6af4c15542e61aea2f4cee655b6252efb356795f1f228bc8299921e82924e80ff8eca29b74d9dd0dd5cc1a90983f892f740b480df + undici-types: "npm:~7.16.0" + checksum: 10c0/d6bca7a78f550fbb376f236f92b405d676003a8a09a1b411f55920ef34286ee3ee51f566203920e835478784df52662b5b2af89159d9d319352e9ea21801c002 languageName: node linkType: hard @@ -29513,20 +29336,20 @@ __metadata: linkType: hard "@types/node@npm:^18.19.69": - version: 18.19.70 - resolution: "@types/node@npm:18.19.70" + version: 18.19.130 + resolution: "@types/node@npm:18.19.130" dependencies: undici-types: "npm:~5.26.4" - checksum: 10c0/68866e53b92be60d8840f5c93232d3ae39c71663101decc1d4f1870d9236c3c89e74177b616c2a2cabce116b1356f3e89c57df3e969c9f9b0e0b5c59b5f790f7 + checksum: 10c0/22ba2bc9f8863101a7e90a56aaeba1eb3ebdc51e847cef4a6d188967ab1acbce9b4f92251372fd0329ecb924bbf610509e122c3dfe346c04dbad04013d4ad7d0 languageName: node linkType: hard "@types/node@npm:^20.0.0": - version: 20.19.21 - resolution: "@types/node@npm:20.19.21" + version: 20.19.25 + resolution: "@types/node@npm:20.19.25" dependencies: undici-types: "npm:~6.21.0" - checksum: 10c0/a5bedcc71b363abfa425c01e69696820736614dfba03d2363df6d306d2ee6f7619b370c72b4ec75d992e5d76eaccdcdeb362276cac1cd01756db6dec2eb8227c + checksum: 10c0/992f18cb03264e8dc2fd3cb64f428ee4997cb6d928dad68bf4b752eacac73062697ce7ce6a0e71a6d15af510814397a20597a72332dfec638e02fb3a382ad014 languageName: node linkType: hard @@ -29552,9 +29375,9 @@ __metadata: linkType: hard "@types/semver@npm:^7.3.12": - version: 7.5.8 - resolution: "@types/semver@npm:7.5.8" - checksum: 10c0/8663ff927234d1c5fcc04b33062cb2b9fcfbe0f5f351ed26c4d1e1581657deebd506b41ff7fdf89e787e3d33ce05854bc01686379b89e9c49b564c4cfa988efa + version: 7.7.1 + resolution: "@types/semver@npm:7.7.1" + checksum: 10c0/c938aef3bf79a73f0f3f6037c16e2e759ff40c54122ddf0b2583703393d8d3127130823facb880e694caa324eb6845628186aac1997ee8b31dc2d18fafe26268 languageName: node linkType: hard @@ -29587,11 +29410,11 @@ __metadata: linkType: hard "@types/ws@npm:*": - version: 8.5.13 - resolution: "@types/ws@npm:8.5.13" + version: 8.18.1 + resolution: "@types/ws@npm:8.18.1" dependencies: "@types/node": "npm:*" - checksum: 10c0/a5430aa479bde588e69cb9175518d72f9338b6999e3b2ae16fc03d3bdcff8347e486dc031e4ed14601260463c07e1f9a0d7511dfc653712b047c439c680b0b34 + checksum: 10c0/61aff1129143fcc4312f083bc9e9e168aa3026b7dd6e70796276dcfb2c8211c4292603f9c4864fae702f2ed86e4abd4d38aa421831c2fd7f856c931a481afbab languageName: node linkType: hard @@ -29612,11 +29435,11 @@ __metadata: linkType: hard "@types/yargs@npm:^17.0.33, @types/yargs@npm:^17.0.8": - version: 17.0.33 - resolution: "@types/yargs@npm:17.0.33" + version: 17.0.34 + resolution: "@types/yargs@npm:17.0.34" dependencies: "@types/yargs-parser": "npm:*" - checksum: 10c0/d16937d7ac30dff697801c3d6f235be2166df42e4a88bf730fa6dc09201de3727c0a9500c59a672122313341de5f24e45ee0ff579c08ce91928e519090b7906b + checksum: 10c0/7d4c6a6bc2b8dd4c7deaf507633fe6fd91424873add76b63c8263479223ea7a061bea86e7e0f3ed28cbe897338a934f3c04d802e8f67b7d2d3874924c94468c5 languageName: node linkType: hard @@ -30406,10 +30229,10 @@ __metadata: languageName: node linkType: hard -"abbrev@npm:^2.0.0": - version: 2.0.0 - resolution: "abbrev@npm:2.0.0" - checksum: 10c0/f742a5a107473946f426c691c08daba61a1d15942616f300b5d32fd735be88fef5cba24201757b6c407fd564555fb48c751cfa33519b2605c8a7aadd22baf372 +"abbrev@npm:^4.0.0": + version: 4.0.0 + resolution: "abbrev@npm:4.0.0" + checksum: 10c0/b4cc16935235e80702fc90192e349e32f8ef0ed151ef506aa78c81a7c455ec18375c4125414b99f84b2e055199d66383e787675f0bcd87da7a4dbd59f9eac1d5 languageName: node linkType: hard @@ -30466,16 +30289,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.11.0, acorn@npm:^8.4.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": - version: 8.14.0 - resolution: "acorn@npm:8.14.0" - bin: - acorn: bin/acorn - checksum: 10c0/6d4ee461a7734b2f48836ee0fbb752903606e576cc100eb49340295129ca0b452f3ba91ddd4424a1d4406a98adfb2ebb6bd0ff4c49d7a0930c10e462719bbfd7 - languageName: node - linkType: hard - -"acorn@npm:^8.15.0": +"acorn@npm:^8.11.0, acorn@npm:^8.15.0, acorn@npm:^8.4.1, acorn@npm:^8.9.0": version: 8.15.0 resolution: "acorn@npm:8.15.0" bin: @@ -30501,9 +30315,9 @@ __metadata: linkType: hard "agent-base@npm:^7.1.0, agent-base@npm:^7.1.2": - version: 7.1.3 - resolution: "agent-base@npm:7.1.3" - checksum: 10c0/6192b580c5b1d8fb399b9c62bf8343d76654c2dd62afcb9a52b2cf44a8b6ace1e3b704d3fe3547d91555c857d3df02603341ff2cb961b9cfe2b12f9f3c38ee11 + version: 7.1.4 + resolution: "agent-base@npm:7.1.4" + checksum: 10c0/c2c9ab7599692d594b6a161559ada307b7a624fa4c7b03e3afdb5a5e31cd0e53269115b620fcab024c5ac6a6f37fa5eb2e004f076ad30f5f7e6b8b671f7b35fe languageName: node linkType: hard @@ -30656,9 +30470,9 @@ __metadata: linkType: hard "ansi-regex@npm:^6.0.1": - version: 6.1.0 - resolution: "ansi-regex@npm:6.1.0" - checksum: 10c0/a91daeddd54746338478eef88af3439a7edf30f8e23196e2d6ed182da9add559c601266dbef01c2efa46a958ad6f1f8b176799657616c702b5b02e799e7fd8dc + version: 6.2.2 + resolution: "ansi-regex@npm:6.2.2" + checksum: 10c0/05d4acb1d2f59ab2cf4b794339c7b168890d44dda4bf0ce01152a8da0213aca207802f930442ce8cd22d7a92f44907664aac6508904e75e038fa944d2601b30f languageName: node linkType: hard @@ -30679,9 +30493,9 @@ __metadata: linkType: hard "ansi-styles@npm:^6.1.0": - version: 6.2.1 - resolution: "ansi-styles@npm:6.2.1" - checksum: 10c0/5d1ec38c123984bcedd996eac680d548f31828bd679a66db2bdf11844634dde55fec3efa9c6bb1d89056a5e79c1ac540c4c784d592ea1d25028a92227d2f2d5c + version: 6.2.3 + resolution: "ansi-styles@npm:6.2.3" + checksum: 10c0/23b8a4ce14e18fb854693b95351e286b771d23d8844057ed2e7d083cd3e708376c3323707ec6a24365f7d7eda3ca00327fe04092e29e551499ec4c8b7bfac868 languageName: node linkType: hard @@ -30710,9 +30524,9 @@ __metadata: linkType: hard "aproba@npm:^1.0.3 || ^2.0.0, aproba@npm:^2.0.0": - version: 2.0.0 - resolution: "aproba@npm:2.0.0" - checksum: 10c0/d06e26384a8f6245d8c8896e138c0388824e259a329e0c9f196b4fa533c82502a6fd449586e3604950a0c42921832a458bb3aa0aa9f0ba449cfd4f50fd0d09b5 + version: 2.1.0 + resolution: "aproba@npm:2.1.0" + checksum: 10c0/ec8c1d351bac0717420c737eb062766fb63bde1552900e0f4fdad9eb064c3824fef23d1c416aa5f7a80f21ca682808e902d79b7c9ae756d342b5f1884f36932f languageName: node linkType: hard @@ -30839,6 +30653,20 @@ __metadata: languageName: node linkType: hard +"async-function@npm:^1.0.0": + version: 1.0.0 + resolution: "async-function@npm:1.0.0" + checksum: 10c0/669a32c2cb7e45091330c680e92eaeb791bc1d4132d827591e499cd1f776ff5a873e77e5f92d0ce795a8d60f10761dec9ddfe7225a5de680f5d357f67b1aac73 + languageName: node + linkType: hard + +"async-generator-function@npm:^1.0.0": + version: 1.0.0 + resolution: "async-generator-function@npm:1.0.0" + checksum: 10c0/2c50ef856c543ad500d8d8777d347e3c1ba623b93e99c9263ecc5f965c1b12d2a140e2ab6e43c3d0b85366110696f28114649411cbcd10b452a92a2318394186 + languageName: node + linkType: hard + "async@npm:3.2.4": version: 3.2.4 resolution: "async@npm:3.2.4" @@ -30878,17 +30706,17 @@ __metadata: linkType: hard "aws-crt@npm:^1.24.0": - version: 1.24.2 - resolution: "aws-crt@npm:1.24.2" + version: 1.27.5 + resolution: "aws-crt@npm:1.27.5" dependencies: "@aws-sdk/util-utf8-browser": "npm:^3.259.0" "@httptoolkit/websocket-stream": "npm:^6.0.1" - axios: "npm:^1.7.4" + axios: "npm:^1.12.2" buffer: "npm:^6.0.3" crypto-js: "npm:^4.2.0" mqtt: "npm:^4.3.8" process: "npm:^0.11.10" - checksum: 10c0/624e25a18a42e0740710ec79a7b10a936dfc5d13fb88a80dc4c4ce66c1ff396e6a730ad57bf4238a9fdd251159b58c6eff89bbe0c33784bfe59fea00067f1236 + checksum: 10c0/775a2ad5b7a6bd1419de98b594b22300e538a09a3ade543bcef6537c6af5b224dc20ee145ff7893b08759ede96eb27766cd06bc36508a499309710f2222b02c8 languageName: node linkType: hard @@ -30967,14 +30795,14 @@ __metadata: languageName: node linkType: hard -"axios@npm:^1.0.0, axios@npm:^1.7.4": - version: 1.8.2 - resolution: "axios@npm:1.8.2" +"axios@npm:^1.0.0, axios@npm:^1.12.2": + version: 1.13.2 + resolution: "axios@npm:1.13.2" dependencies: follow-redirects: "npm:^1.15.6" - form-data: "npm:^4.0.0" + form-data: "npm:^4.0.4" proxy-from-env: "npm:^1.1.0" - checksum: 10c0/d8c2969e4642dc6d39555ac58effe06c051ba7aac2bd40cad7a9011c019fb2f16ee011c5a6906cb25b8a4f87258c359314eb981f852e60ad445ecaeb793c7aa2 + checksum: 10c0/e8a42e37e5568ae9c7a28c348db0e8cf3e43d06fcbef73f0048669edfe4f71219664da7b6cc991b0c0f01c28a48f037c515263cb79be1f1ae8ff034cd813867b languageName: node linkType: hard @@ -31059,32 +30887,7 @@ __metadata: languageName: node linkType: hard -"babel-preset-current-node-syntax@npm:^1.0.0": - version: 1.1.0 - resolution: "babel-preset-current-node-syntax@npm:1.1.0" - dependencies: - "@babel/plugin-syntax-async-generators": "npm:^7.8.4" - "@babel/plugin-syntax-bigint": "npm:^7.8.3" - "@babel/plugin-syntax-class-properties": "npm:^7.12.13" - "@babel/plugin-syntax-class-static-block": "npm:^7.14.5" - "@babel/plugin-syntax-import-attributes": "npm:^7.24.7" - "@babel/plugin-syntax-import-meta": "npm:^7.10.4" - "@babel/plugin-syntax-json-strings": "npm:^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" - "@babel/plugin-syntax-numeric-separator": "npm:^7.10.4" - "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" - "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" - "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" - "@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5" - "@babel/plugin-syntax-top-level-await": "npm:^7.14.5" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10c0/0b838d4412e3322cb4436f246e24e9c00bebcedfd8f00a2f51489db683bd35406bbd55a700759c28d26959c6e03f84dd6a1426f576f440267c1d7a73c5717281 - languageName: node - linkType: hard - -"babel-preset-current-node-syntax@npm:^1.2.0": +"babel-preset-current-node-syntax@npm:^1.0.0, babel-preset-current-node-syntax@npm:^1.2.0": version: 1.2.0 resolution: "babel-preset-current-node-syntax@npm:1.2.0" dependencies: @@ -31147,6 +30950,15 @@ __metadata: languageName: node linkType: hard +"baseline-browser-mapping@npm:^2.8.25": + version: 2.8.28 + resolution: "baseline-browser-mapping@npm:2.8.28" + bin: + baseline-browser-mapping: dist/cli.js + checksum: 10c0/d157d73de33bff69cf3413983dc1b2421063cd1c895e9edabc22dcb6667f7e17762b46ebeee5eee7496271351754c12750867c6ea5cb432f1bbe33dc5c62d1e6 + languageName: node + linkType: hard + "bcrypt-pbkdf@npm:^1.0.0": version: 1.0.2 resolution: "bcrypt-pbkdf@npm:1.0.2" @@ -31243,28 +31055,28 @@ __metadata: linkType: hard "bowser@npm:^2.11.0": - version: 2.11.0 - resolution: "bowser@npm:2.11.0" - checksum: 10c0/04efeecc7927a9ec33c667fa0965dea19f4ac60b3fea60793c2e6cf06c1dcd2f7ae1dbc656f450c5f50783b1c75cf9dc173ba6f3b7db2feee01f8c4b793e1bd3 + version: 2.12.1 + resolution: "bowser@npm:2.12.1" + checksum: 10c0/017e8cc63ce2dec75037340626e1408f68334dac95f953ba7db33a266c019f1d262346d2be3994f9a12b7e9c02f57c562078719b8c5e8e8febe01053c613ffbc languageName: node linkType: hard "brace-expansion@npm:^1.1.7": - version: 1.1.11 - resolution: "brace-expansion@npm:1.1.11" + version: 1.1.12 + resolution: "brace-expansion@npm:1.1.12" dependencies: balanced-match: "npm:^1.0.0" concat-map: "npm:0.0.1" - checksum: 10c0/695a56cd058096a7cb71fb09d9d6a7070113c7be516699ed361317aca2ec169f618e28b8af352e02ab4233fb54eb0168460a40dc320bab0034b36ab59aaad668 + checksum: 10c0/975fecac2bb7758c062c20d0b3b6288c7cc895219ee25f0a64a9de662dbac981ff0b6e89909c3897c1f84fa353113a721923afdec5f8b2350255b097f12b1f73 languageName: node linkType: hard "brace-expansion@npm:^2.0.1": - version: 2.0.1 - resolution: "brace-expansion@npm:2.0.1" + version: 2.0.2 + resolution: "brace-expansion@npm:2.0.2" dependencies: balanced-match: "npm:^1.0.0" - checksum: 10c0/b358f2fe060e2d7a87aa015979ecea07f3c37d4018f8d6deb5bd4c229ad3a0384fe6029bb76cd8be63c81e516ee52d1a0673edbe2023d53a5191732ae3c3e49f + checksum: 10c0/6d117a4c793488af86b83172deb6af143e94c17bc53b0b3cec259733923b4ca84679d506ac261f4ba3c7ed37c46018e2ff442f9ce453af8643ecd64f4a54e6cf languageName: node linkType: hard @@ -31278,16 +31090,17 @@ __metadata: linkType: hard "browserslist@npm:^4.24.0": - version: 4.24.3 - resolution: "browserslist@npm:4.24.3" - dependencies: - caniuse-lite: "npm:^1.0.30001688" - electron-to-chromium: "npm:^1.5.73" - node-releases: "npm:^2.0.19" - update-browserslist-db: "npm:^1.1.1" + version: 4.28.0 + resolution: "browserslist@npm:4.28.0" + dependencies: + baseline-browser-mapping: "npm:^2.8.25" + caniuse-lite: "npm:^1.0.30001754" + electron-to-chromium: "npm:^1.5.249" + node-releases: "npm:^2.0.27" + update-browserslist-db: "npm:^1.1.4" bin: browserslist: cli.js - checksum: 10c0/bab261ef7b6e1656a719a9fa31240ae7ce4d5ba68e479f6b11e348d819346ab4c0ff6f4821f43adcc9c193a734b186775a83b37979e70a69d182965909fe569a + checksum: 10c0/4284fd568f7d40a496963083860d488cb2a89fb055b6affd316bebc59441fec938e090b3e62c0ee065eb0bc88cd1bc145f4300a16c75f3f565621c5823715ae1 languageName: node linkType: hard @@ -31309,7 +31122,7 @@ __metadata: languageName: node linkType: hard -"buffer-equal-constant-time@npm:1.0.1": +"buffer-equal-constant-time@npm:^1.0.1": version: 1.0.1 resolution: "buffer-equal-constant-time@npm:1.0.1" checksum: 10c0/fb2294e64d23c573d0dd1f1e7a466c3e978fe94a4e0f8183937912ca374619773bef8e2aceb854129d2efecbbc515bbd0cc78d2734a3e3031edb0888531bbc8e @@ -31423,43 +31236,42 @@ __metadata: languageName: node linkType: hard -"cacache@npm:^19.0.1": - version: 19.0.1 - resolution: "cacache@npm:19.0.1" +"cacache@npm:^20.0.1": + version: 20.0.1 + resolution: "cacache@npm:20.0.1" dependencies: "@npmcli/fs": "npm:^4.0.0" fs-minipass: "npm:^3.0.0" - glob: "npm:^10.2.2" - lru-cache: "npm:^10.0.1" + glob: "npm:^11.0.3" + lru-cache: "npm:^11.1.0" minipass: "npm:^7.0.3" minipass-collect: "npm:^2.0.1" minipass-flush: "npm:^1.0.5" minipass-pipeline: "npm:^1.2.4" p-map: "npm:^7.0.2" ssri: "npm:^12.0.0" - tar: "npm:^7.4.3" unique-filename: "npm:^4.0.0" - checksum: 10c0/01f2134e1bd7d3ab68be851df96c8d63b492b1853b67f2eecb2c37bb682d37cb70bb858a16f2f0554d3c0071be6dfe21456a1ff6fa4b7eed996570d6a25ffe9c + checksum: 10c0/e3efcf3af1c984e6e59e03372d9289861736a572e6e05b620606b87a67e71d04cff6dbc99607801cb21bcaae1fb4fb84d4cc8e3fda725e95881329ef03dac602 languageName: node linkType: hard -"call-bind-apply-helpers@npm:^1.0.1": - version: 1.0.1 - resolution: "call-bind-apply-helpers@npm:1.0.1" +"call-bind-apply-helpers@npm:^1.0.1, call-bind-apply-helpers@npm:^1.0.2": + version: 1.0.2 + resolution: "call-bind-apply-helpers@npm:1.0.2" dependencies: es-errors: "npm:^1.3.0" function-bind: "npm:^1.1.2" - checksum: 10c0/acb2ab68bf2718e68a3e895f0d0b73ccc9e45b9b6f210f163512ba76f91dab409eb8792f6dae188356f9095747512a3101646b3dea9d37fb8c7c6bf37796d18c + checksum: 10c0/47bd9901d57b857590431243fea704ff18078b16890a6b3e021e12d279bbf211d039155e27d7566b374d49ee1f8189344bac9833dec7a20cdec370506361c938 languageName: node linkType: hard "call-bound@npm:^1.0.2": - version: 1.0.3 - resolution: "call-bound@npm:1.0.3" + version: 1.0.4 + resolution: "call-bound@npm:1.0.4" dependencies: - call-bind-apply-helpers: "npm:^1.0.1" - get-intrinsic: "npm:^1.2.6" - checksum: 10c0/45257b8e7621067304b30dbd638e856cac913d31e8e00a80d6cf172911acd057846572d0b256b45e652d515db6601e2974a1b1a040e91b4fc36fb3dd86fa69cf + call-bind-apply-helpers: "npm:^1.0.2" + get-intrinsic: "npm:^1.3.0" + checksum: 10c0/f4796a6a0941e71c766aea672f63b72bc61234c4f4964dc6d7606e3664c307e7d77845328a8f3359ce39ddb377fed67318f9ee203dea1d47e46165dcf2917644 languageName: node linkType: hard @@ -31495,10 +31307,10 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001688": - version: 1.0.30001690 - resolution: "caniuse-lite@npm:1.0.30001690" - checksum: 10c0/646bd469032afa90400a84dec30a2b00a6eda62c03ead358117e3f884cda8aacec02ec058a6dbee5eaf9714f83e483b9b0eb4fb42febb8076569f5ca40f1d347 +"caniuse-lite@npm:^1.0.30001754": + version: 1.0.30001754 + resolution: "caniuse-lite@npm:1.0.30001754" + checksum: 10c0/d38709ab11abc36eea28068d241434eba925c4d3462916ccaa17a34a6227dfdeb58ab0e1eb614bab12fb393c7d527db392a0f477b48c33d70d8e466954f381ba languageName: node linkType: hard @@ -31530,15 +31342,15 @@ __metadata: linkType: hard "chai@npm:^5.2.0": - version: 5.3.1 - resolution: "chai@npm:5.3.1" + version: 5.3.3 + resolution: "chai@npm:5.3.3" dependencies: assertion-error: "npm:^2.0.1" check-error: "npm:^2.1.1" deep-eql: "npm:^5.0.1" loupe: "npm:^3.1.0" pathval: "npm:^2.0.0" - checksum: 10c0/09075db3cdad4098492c56e870ebb1cc621e65c4f12dca39b702c5b34c1eaf4d94214193af7b5add38490e64e76ff125bbb66fcea9edf2a0c5f9a64f23aad3ad + checksum: 10c0/b360fd4d38861622e5010c2f709736988b05c7f31042305fa3f4e9911f6adb80ccfb4e302068bf8ed10e835c2e2520cba0f5edc13d878b886987e5aa62483f53 languageName: node linkType: hard @@ -31559,10 +31371,10 @@ __metadata: languageName: node linkType: hard -"chardet@npm:^0.7.0": - version: 0.7.0 - resolution: "chardet@npm:0.7.0" - checksum: 10c0/96e4731b9ec8050cbb56ab684e8c48d6c33f7826b755802d14e3ebfdc51c57afeece3ea39bc6b09acc359e4363525388b915e16640c1378053820f5e70d0f27d +"chardet@npm:^2.1.1": + version: 2.1.1 + resolution: "chardet@npm:2.1.1" + checksum: 10c0/d8391dd412338442b3de0d3a488aa9327f8bcf74b62b8723d6bd0b85c4084d50b731320e0a7c710edb1d44de75969995d2784b80e4c13b004a6c7a0db4c6e793 languageName: node linkType: hard @@ -31616,16 +31428,16 @@ __metadata: linkType: hard "cjs-module-lexer@npm:^1.0.0": - version: 1.4.1 - resolution: "cjs-module-lexer@npm:1.4.1" - checksum: 10c0/5a7d8279629c9ba8ccf38078c2fed75b7737973ced22b9b5a54180efa57fb2fe2bb7bec6aec55e3b8f3f5044f5d7b240347ad9bd285e7c3d0ee5b0a1d0504dfc + version: 1.4.3 + resolution: "cjs-module-lexer@npm:1.4.3" + checksum: 10c0/076b3af85adc4d65dbdab1b5b240fe5b45d44fcf0ef9d429044dd94d19be5589376805c44fb2d4b3e684e5fe6a9b7cf3e426476a6507c45283c5fc6ff95240be languageName: node linkType: hard "cjs-module-lexer@npm:^2.1.0": - version: 2.1.0 - resolution: "cjs-module-lexer@npm:2.1.0" - checksum: 10c0/91cf28686dc3948e4a06dfa03a2fccb14b7a97471ffe7ae0124f62060ddf2de28e8e997f60007babe6e122b1b06a47c01a1b72cc015f185824d9cac3ccfa5533 + version: 2.1.1 + resolution: "cjs-module-lexer@npm:2.1.1" + checksum: 10c0/813697c0ed1533f4a88bd8051d8ae1cb1b21d3ff1c6a5720353817d50c3f3f83bb2af6bd83922aae94b3ef90d64d01a6eb123fa8249f4dc7215e3afd89364f86 languageName: node linkType: hard @@ -31776,14 +31588,7 @@ __metadata: languageName: node linkType: hard -"collect-v8-coverage@npm:^1.0.0": - version: 1.0.2 - resolution: "collect-v8-coverage@npm:1.0.2" - checksum: 10c0/ed7008e2e8b6852c5483b444a3ae6e976e088d4335a85aa0a9db2861c5f1d31bd2d7ff97a60469b3388deeba661a619753afbe201279fb159b4b9548ab8269a1 - languageName: node - linkType: hard - -"collect-v8-coverage@npm:^1.0.2": +"collect-v8-coverage@npm:^1.0.0, collect-v8-coverage@npm:^1.0.2": version: 1.0.3 resolution: "collect-v8-coverage@npm:1.0.3" checksum: 10c0/bc62ba251bcce5e3354a8f88fa6442bee56e3e612fec08d4dfcf66179b41ea0bf544b0f78c4ebc0f8050871220af95bb5c5578a6aef346feea155640582f09dc @@ -31855,6 +31660,13 @@ __metadata: languageName: node linkType: hard +"commander@npm:^14.0.0": + version: 14.0.2 + resolution: "commander@npm:14.0.2" + checksum: 10c0/245abd1349dbad5414cb6517b7b5c584895c02c4f7836ff5395f301192b8566f9796c82d7bd6c92d07eba8775fe4df86602fca5d86d8d10bcc2aded1e21c2aeb + languageName: node + linkType: hard + "commander@npm:^2.20.0, commander@npm:^2.20.3, commander@npm:^2.9.0": version: 2.20.3 resolution: "commander@npm:2.20.3" @@ -32282,7 +32094,7 @@ __metadata: languageName: node linkType: hard -"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": +"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3, cross-spawn@npm:^7.0.6": version: 7.0.6 resolution: "cross-spawn@npm:7.0.6" dependencies: @@ -32358,15 +32170,15 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.2.0, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4": - version: 4.4.0 - resolution: "debug@npm:4.4.0" +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.2.0, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:^4.4.1": + version: 4.4.3 + resolution: "debug@npm:4.4.3" dependencies: ms: "npm:^2.1.3" peerDependenciesMeta: supports-color: optional: true - checksum: 10c0/db94f1a182bf886f57b4755f85b3a74c39b5114b9377b7ab375dc2cfa3454f09490cc6c30f829df3fc8042bc8b8995f6567ce5cd96f3bc3688bd24027197d9de + checksum: 10c0/d79136ec6c83ecbefd0f6a5593da6a9c91ec4d7ddc4b54c883d6e71ec9accb5f67a1a5e96d00a328196b5b5c86d365e98d8a3a70856aaf16b4e7b1985e67f5a6 languageName: node linkType: hard @@ -32382,18 +32194,6 @@ __metadata: languageName: node linkType: hard -"debug@npm:^4.4.1": - version: 4.4.1 - resolution: "debug@npm:4.4.1" - dependencies: - ms: "npm:^2.1.3" - peerDependenciesMeta: - supports-color: - optional: true - checksum: 10c0/d2b44bc1afd912b49bb7ebb0d50a860dc93a4dd7d946e8de94abc957bb63726b7dd5aa48c18c2386c379ec024c46692e15ed3ed97d481729f929201e671fcd55 - languageName: node - linkType: hard - "debuglog@npm:^1.0.1": version: 1.0.1 resolution: "debuglog@npm:1.0.1" @@ -32434,19 +32234,7 @@ __metadata: languageName: node linkType: hard -"dedent@npm:^1.0.0": - version: 1.5.3 - resolution: "dedent@npm:1.5.3" - peerDependencies: - babel-plugin-macros: ^3.1.0 - peerDependenciesMeta: - babel-plugin-macros: - optional: true - checksum: 10c0/d94bde6e6f780be4da4fd760288fcf755ec368872f4ac5218197200d86430aeb8d90a003a840bff1c20221188e3f23adced0119cb811c6873c70d0ac66d12832 - languageName: node - linkType: hard - -"dedent@npm:^1.6.0": +"dedent@npm:^1.0.0, dedent@npm:^1.6.0": version: 1.7.0 resolution: "dedent@npm:1.7.0" peerDependencies: @@ -32730,10 +32518,10 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.5.73": - version: 1.5.76 - resolution: "electron-to-chromium@npm:1.5.76" - checksum: 10c0/5a977be9fd5810769a7b4eae0e4b41b6beca65f2b3f3b7442819f6c93366d767d183cfbf408714f944a9bf3aa304f8c9ab9d0cdfd8e878ab8f2cbb61f8b22acd +"electron-to-chromium@npm:^1.5.249": + version: 1.5.250 + resolution: "electron-to-chromium@npm:1.5.250" + checksum: 10c0/ccd12850fb5fd1c6539cdd7936c28cb6fbae421568e9b8b9fa0eb754e6cc36408c83cf0440d7b776c8bd325b5b760a378719415a629a75eedaad12943c936061 languageName: node linkType: hard @@ -32775,25 +32563,15 @@ __metadata: linkType: hard "end-of-stream@npm:^1.0.0, end-of-stream@npm:^1.1.0, end-of-stream@npm:^1.4.1": - version: 1.4.4 - resolution: "end-of-stream@npm:1.4.4" + version: 1.4.5 + resolution: "end-of-stream@npm:1.4.5" dependencies: once: "npm:^1.4.0" - checksum: 10c0/870b423afb2d54bb8d243c63e07c170409d41e20b47eeef0727547aea5740bd6717aca45597a9f2745525667a6b804c1e7bede41f856818faee5806dd9ff3975 + checksum: 10c0/b0701c92a10b89afb1cb45bf54a5292c6f008d744eb4382fa559d54775ff31617d1d7bc3ef617575f552e24fad2c7c1a1835948c66b3f3a4be0a6c1f35c883d8 languageName: node linkType: hard -"enhanced-resolve@npm:^5.0.0": - version: 5.18.0 - resolution: "enhanced-resolve@npm:5.18.0" - dependencies: - graceful-fs: "npm:^4.2.4" - tapable: "npm:^2.2.0" - checksum: 10c0/5fcc264a6040754ab5b349628cac2bb5f89cee475cbe340804e657a5b9565f70e6aafb338d5895554eb0ced9f66c50f38a255274a0591dcb64ee17c549c459ce - languageName: node - linkType: hard - -"enhanced-resolve@npm:^5.17.2": +"enhanced-resolve@npm:^5.0.0, enhanced-resolve@npm:^5.17.2": version: 5.18.3 resolution: "enhanced-resolve@npm:5.18.3" dependencies: @@ -32836,6 +32614,13 @@ __metadata: languageName: node linkType: hard +"entities@npm:^6.0.0": + version: 6.0.1 + resolution: "entities@npm:6.0.1" + checksum: 10c0/ed836ddac5acb34341094eb495185d527bd70e8632b6c0d59548cbfa23defdbae70b96f9a405c82904efa421230b5b3fd2283752447d737beffd3f3e6ee74414 + languageName: node + linkType: hard + "env-paths@npm:^2.2.0": version: 2.2.1 resolution: "env-paths@npm:2.2.1" @@ -32853,11 +32638,11 @@ __metadata: linkType: hard "envinfo@npm:^7.7.3, envinfo@npm:^7.7.4": - version: 7.14.0 - resolution: "envinfo@npm:7.14.0" + version: 7.20.0 + resolution: "envinfo@npm:7.20.0" bin: envinfo: dist/cli.js - checksum: 10c0/059a031eee101e056bd9cc5cbfe25c2fab433fe1780e86cf0a82d24a000c6931e327da6a8ffb3dce528a24f83f256e7efc0b36813113eff8fdc6839018efe327 + checksum: 10c0/2afa8085f9952d3afe6893098ef9cadc991aa38ed5ed5a0fd953ddb72a7543f425fbf46e8c02c4fa0ecad3c03a93381b0a212f799c2a8db8dc8886d8d7d5dc05 languageName: node linkType: hard @@ -32869,11 +32654,11 @@ __metadata: linkType: hard "error-ex@npm:^1.3.1": - version: 1.3.2 - resolution: "error-ex@npm:1.3.2" + version: 1.3.4 + resolution: "error-ex@npm:1.3.4" dependencies: is-arrayish: "npm:^0.2.1" - checksum: 10c0/ba827f89369b4c93382cfca5a264d059dfefdaa56ecc5e338ffa58a6471f5ed93b71a20add1d52290a4873d92381174382658c885ac1a2305f7baca363ce9cce + checksum: 10c0/b9e34ff4778b8f3b31a8377e1c654456f4c41aeaa3d10a1138c3b7635d8b7b2e03eb2475d46d8ae055c1f180a1063e100bffabf64ea7e7388b37735df5328664 languageName: node linkType: hard @@ -32898,12 +32683,12 @@ __metadata: languageName: node linkType: hard -"es-object-atoms@npm:^1.0.0": - version: 1.0.0 - resolution: "es-object-atoms@npm:1.0.0" +"es-object-atoms@npm:^1.0.0, es-object-atoms@npm:^1.1.1": + version: 1.1.1 + resolution: "es-object-atoms@npm:1.1.1" dependencies: es-errors: "npm:^1.3.0" - checksum: 10c0/1fed3d102eb27ab8d983337bb7c8b159dd2a1e63ff833ec54eea1311c96d5b08223b433060ba240541ca8adba9eee6b0a60cdbf2f80634b784febc9cc8b687b4 + checksum: 10c0/65364812ca4daf48eb76e2a3b7a89b3f6a2e62a1c420766ce9f692665a29d94fe41fe88b65f24106f449859549711e4b40d9fb8002d862dfd7eb1c512d10be0c languageName: node linkType: hard @@ -33055,35 +32840,35 @@ __metadata: linkType: hard "esbuild@npm:^0.25.0": - version: 0.25.8 - resolution: "esbuild@npm:0.25.8" - dependencies: - "@esbuild/aix-ppc64": "npm:0.25.8" - "@esbuild/android-arm": "npm:0.25.8" - "@esbuild/android-arm64": "npm:0.25.8" - "@esbuild/android-x64": "npm:0.25.8" - "@esbuild/darwin-arm64": "npm:0.25.8" - "@esbuild/darwin-x64": "npm:0.25.8" - "@esbuild/freebsd-arm64": "npm:0.25.8" - "@esbuild/freebsd-x64": "npm:0.25.8" - "@esbuild/linux-arm": "npm:0.25.8" - "@esbuild/linux-arm64": "npm:0.25.8" - "@esbuild/linux-ia32": "npm:0.25.8" - "@esbuild/linux-loong64": "npm:0.25.8" - "@esbuild/linux-mips64el": "npm:0.25.8" - "@esbuild/linux-ppc64": "npm:0.25.8" - "@esbuild/linux-riscv64": "npm:0.25.8" - "@esbuild/linux-s390x": "npm:0.25.8" - "@esbuild/linux-x64": "npm:0.25.8" - "@esbuild/netbsd-arm64": "npm:0.25.8" - "@esbuild/netbsd-x64": "npm:0.25.8" - "@esbuild/openbsd-arm64": "npm:0.25.8" - "@esbuild/openbsd-x64": "npm:0.25.8" - "@esbuild/openharmony-arm64": "npm:0.25.8" - "@esbuild/sunos-x64": "npm:0.25.8" - "@esbuild/win32-arm64": "npm:0.25.8" - "@esbuild/win32-ia32": "npm:0.25.8" - "@esbuild/win32-x64": "npm:0.25.8" + version: 0.25.12 + resolution: "esbuild@npm:0.25.12" + dependencies: + "@esbuild/aix-ppc64": "npm:0.25.12" + "@esbuild/android-arm": "npm:0.25.12" + "@esbuild/android-arm64": "npm:0.25.12" + "@esbuild/android-x64": "npm:0.25.12" + "@esbuild/darwin-arm64": "npm:0.25.12" + "@esbuild/darwin-x64": "npm:0.25.12" + "@esbuild/freebsd-arm64": "npm:0.25.12" + "@esbuild/freebsd-x64": "npm:0.25.12" + "@esbuild/linux-arm": "npm:0.25.12" + "@esbuild/linux-arm64": "npm:0.25.12" + "@esbuild/linux-ia32": "npm:0.25.12" + "@esbuild/linux-loong64": "npm:0.25.12" + "@esbuild/linux-mips64el": "npm:0.25.12" + "@esbuild/linux-ppc64": "npm:0.25.12" + "@esbuild/linux-riscv64": "npm:0.25.12" + "@esbuild/linux-s390x": "npm:0.25.12" + "@esbuild/linux-x64": "npm:0.25.12" + "@esbuild/netbsd-arm64": "npm:0.25.12" + "@esbuild/netbsd-x64": "npm:0.25.12" + "@esbuild/openbsd-arm64": "npm:0.25.12" + "@esbuild/openbsd-x64": "npm:0.25.12" + "@esbuild/openharmony-arm64": "npm:0.25.12" + "@esbuild/sunos-x64": "npm:0.25.12" + "@esbuild/win32-arm64": "npm:0.25.12" + "@esbuild/win32-ia32": "npm:0.25.12" + "@esbuild/win32-x64": "npm:0.25.12" dependenciesMeta: "@esbuild/aix-ppc64": optional: true @@ -33139,7 +32924,7 @@ __metadata: optional: true bin: esbuild: bin/esbuild - checksum: 10c0/43747a25e120d5dd9ce75c82f57306580d715647c8db4f4a0a84e73b04cf16c27572d3937d3cfb95d5ac3266a4d1bbd3913e3d76ae719693516289fc86f8a5fd + checksum: 10c0/c205357531423220a9de8e1e6c6514242bc9b1666e762cd67ccdf8fdfdc3f1d0bd76f8d9383958b97ad4c953efdb7b6e8c1f9ca5951cd2b7c5235e8755b34a6b languageName: node linkType: hard @@ -33628,9 +33413,9 @@ __metadata: linkType: hard "exponential-backoff@npm:^3.1.1": - version: 3.1.1 - resolution: "exponential-backoff@npm:3.1.1" - checksum: 10c0/160456d2d647e6019640bd07111634d8c353038d9fa40176afb7cd49b0548bdae83b56d05e907c2cce2300b81cae35d800ef92fefb9d0208e190fa3b7d6bb579 + version: 3.1.3 + resolution: "exponential-backoff@npm:3.1.3" + checksum: 10c0/77e3ae682b7b1f4972f563c6dbcd2b0d54ac679e62d5d32f3e5085feba20483cf28bd505543f520e287a56d4d55a28d7874299941faf637e779a1aa5994d1267 languageName: node linkType: hard @@ -33696,17 +33481,6 @@ __metadata: languageName: node linkType: hard -"external-editor@npm:^3.0.3": - version: 3.1.0 - resolution: "external-editor@npm:3.1.0" - dependencies: - chardet: "npm:^0.7.0" - iconv-lite: "npm:^0.4.24" - tmp: "npm:^0.0.33" - checksum: 10c0/c98f1ba3efdfa3c561db4447ff366a6adb5c1e2581462522c56a18bf90dfe4da382f9cd1feee3e330108c3595a854b218272539f311ba1b3298f841eb0fbf339 - languageName: node - linkType: hard - "extsprintf@npm:1.3.0": version: 1.3.0 resolution: "extsprintf@npm:1.3.0" @@ -33820,7 +33594,7 @@ __metadata: languageName: node linkType: hard -"fast-redact@npm:^3.0.0, fast-redact@npm:^3.1.1": +"fast-redact@npm:^3.0.0": version: 3.5.0 resolution: "fast-redact@npm:3.5.0" checksum: 10c0/7e2ce4aad6e7535e0775bf12bd3e4f2e53d8051d8b630e0fa9e67f68cb0b0e6070d2f7a94b1d0522ef07e32f7c7cda5755e2b677a6538f1e9070ca053c42343a @@ -33842,9 +33616,9 @@ __metadata: linkType: hard "fast-uri@npm:^3.0.1": - version: 3.0.5 - resolution: "fast-uri@npm:3.0.5" - checksum: 10c0/f5501fd849e02f16f1730d2c8628078718c492b5bc00198068bc5c2880363ae948287fdc8cebfff47465229b517dbeaf668866fbabdff829b4138a899e5c2ba3 + version: 3.1.0 + resolution: "fast-uri@npm:3.1.0" + checksum: 10c0/44364adca566f70f40d1e9b772c923138d47efeac2ae9732a872baafd77061f26b097ba2f68f0892885ad177becd065520412b8ffeec34b16c99433c5b9e2de7 languageName: node linkType: hard @@ -33874,8 +33648,8 @@ __metadata: linkType: hard "fastify@npm:^4.11.0": - version: 4.29.0 - resolution: "fastify@npm:4.29.0" + version: 4.29.1 + resolution: "fastify@npm:4.29.1" dependencies: "@fastify/ajv-compiler": "npm:^3.5.0" "@fastify/error": "npm:^3.4.0" @@ -33893,16 +33667,16 @@ __metadata: secure-json-parse: "npm:^2.7.0" semver: "npm:^7.5.4" toad-cache: "npm:^3.3.0" - checksum: 10c0/8bfdac5c4be943c57dfcc8d16b400f11a9bc8d4f096b4b28b06c9bb85ffedae1e5ec7a00eaa736813ebe075aa79f72a4b10d9744013229dd7cd3922c605e8e1f + checksum: 10c0/65bbc290313f69284f2b477c6a22d9b57c373c097dceb971e660dbace4cda5b17cd8c6ab2d6a4440fd6e0418e6826ea00f5d587652454241008f92c838b3e292 languageName: node linkType: hard "fastq@npm:^1.17.1, fastq@npm:^1.6.0": - version: 1.18.0 - resolution: "fastq@npm:1.18.0" + version: 1.19.1 + resolution: "fastq@npm:1.19.1" dependencies: reusify: "npm:^1.0.4" - checksum: 10c0/7be87ecc41762adbddf558d24182f50a4b1a3ef3ee807d33b7623da7aee5faecdcc94fce5aa13fe91df93e269f383232bbcdb2dc5338cd1826503d6063221f36 + checksum: 10c0/ebc6e50ac7048daaeb8e64522a1ea7a26e92b3cee5cd1c7f2316cdca81ba543aa40a136b53891446ea5c3a67ec215fbaca87ad405f102dd97012f62916905630 languageName: node linkType: hard @@ -33915,18 +33689,6 @@ __metadata: languageName: node linkType: hard -"fdir@npm:^6.4.4": - version: 6.4.6 - resolution: "fdir@npm:6.4.6" - peerDependencies: - picomatch: ^3 || ^4 - peerDependenciesMeta: - picomatch: - optional: true - checksum: 10c0/45b559cff889934ebb8bc498351e5acba40750ada7e7d6bde197768d2fa67c149be8ae7f8ff34d03f4e1eb20f2764116e56440aaa2f6689e9a4aa7ef06acafe9 - languageName: node - linkType: hard - "fdir@npm:^6.5.0": version: 6.5.0 resolution: "fdir@npm:6.5.0" @@ -33947,11 +33709,13 @@ __metadata: linkType: hard "figlet@npm:^1.5.0": - version: 1.8.0 - resolution: "figlet@npm:1.8.0" + version: 1.9.3 + resolution: "figlet@npm:1.9.3" + dependencies: + commander: "npm:^14.0.0" bin: figlet: bin/index.js - checksum: 10c0/65c4eafa489e9c34e01f44c7813c0c90ec41fbf716ba5c48fff6d17290fc0bbe32c278eb1bbc2c1a705f59e77f82eb81f5a6c2f5d5022431f2d6ad90fe19ee26 + checksum: 10c0/fbe02933b86713e56217d0c7d4a77c2950cb5bcfc1e7419daf7b2d3d172a4bc84f4d083c5172d000a82fcf67cba810aee8b96a8387b286cb5227db90b68ab5a0 languageName: node linkType: hard @@ -34067,29 +33831,29 @@ __metadata: linkType: hard "flatted@npm:^3.2.9": - version: 3.3.2 - resolution: "flatted@npm:3.3.2" - checksum: 10c0/24cc735e74d593b6c767fe04f2ef369abe15b62f6906158079b9874bdb3ee5ae7110bb75042e70cd3f99d409d766f357caf78d5ecee9780206f5fdc5edbad334 + version: 3.3.3 + resolution: "flatted@npm:3.3.3" + checksum: 10c0/e957a1c6b0254aa15b8cce8533e24165abd98fadc98575db082b786b5da1b7d72062b81bfdcd1da2f4d46b6ed93bec2434e62333e9b4261d79ef2e75a10dd538 languageName: node linkType: hard "follow-redirects@npm:^1.15.6": - version: 1.15.9 - resolution: "follow-redirects@npm:1.15.9" + version: 1.15.11 + resolution: "follow-redirects@npm:1.15.11" peerDependenciesMeta: debug: optional: true - checksum: 10c0/5829165bd112c3c0e82be6c15b1a58fa9dcfaede3b3c54697a82fe4a62dd5ae5e8222956b448d2f98e331525f05d00404aba7d696de9e761ef6e42fdc780244f + checksum: 10c0/d301f430542520a54058d4aeeb453233c564aaccac835d29d15e050beb33f339ad67d9bddbce01739c5dc46a6716dbe3d9d0d5134b1ca203effa11a7ef092343 languageName: node linkType: hard -"foreground-child@npm:^3.1.0": - version: 3.3.0 - resolution: "foreground-child@npm:3.3.0" +"foreground-child@npm:^3.1.0, foreground-child@npm:^3.3.1": + version: 3.3.1 + resolution: "foreground-child@npm:3.3.1" dependencies: - cross-spawn: "npm:^7.0.0" + cross-spawn: "npm:^7.0.6" signal-exit: "npm:^4.0.1" - checksum: 10c0/028f1d41000553fcfa6c4bb5c372963bf3d9bf0b1f25a87d1a6253014343fb69dfb1b42d9625d7cf44c8ba429940f3d0ff718b62105d4d4a4f6ef8ca0a53faa2 + checksum: 10c0/8986e4af2430896e65bc2788d6679067294d6aee9545daefc84923a0a4b399ad9c7a3ea7bd8c0b2b80fdf4a92de4c69df3f628233ff3224260e9c1541a9e9ed3 languageName: node linkType: hard @@ -34100,7 +33864,7 @@ __metadata: languageName: node linkType: hard -"form-data@npm:^4.0.0": +"form-data@npm:^4.0.0, form-data@npm:^4.0.4": version: 4.0.4 resolution: "form-data@npm:4.0.4" dependencies: @@ -34145,14 +33909,14 @@ __metadata: languageName: node linkType: hard -"fs-extra@npm:^11.0.0, fs-extra@npm:^11.1.0": - version: 11.2.0 - resolution: "fs-extra@npm:11.2.0" +"fs-extra@npm:^11.0.0, fs-extra@npm:^11.1.0, fs-extra@npm:~11.3.0": + version: 11.3.2 + resolution: "fs-extra@npm:11.3.2" dependencies: graceful-fs: "npm:^4.2.0" jsonfile: "npm:^6.0.1" universalify: "npm:^2.0.0" - checksum: 10c0/d77a9a9efe60532d2e790e938c81a02c1b24904ef7a3efb3990b835514465ba720e99a6ea56fd5e2db53b4695319b644d76d5a0e9988a2beef80aa7b1da63398 + checksum: 10c0/f5d629e1bb646d5dedb4d8b24c5aad3deb8cc1d5438979d6f237146cd10e113b49a949ae1b54212c2fbc98e2d0995f38009a9a1d0520f0287943335e65fe919b languageName: node linkType: hard @@ -34168,17 +33932,6 @@ __metadata: languageName: node linkType: hard -"fs-extra@npm:~11.3.0": - version: 11.3.0 - resolution: "fs-extra@npm:11.3.0" - dependencies: - graceful-fs: "npm:^4.2.0" - jsonfile: "npm:^6.0.1" - universalify: "npm:^2.0.0" - checksum: 10c0/5f95e996186ff45463059feb115a22fb048bdaf7e487ecee8a8646c78ed8fdca63630e3077d4c16ce677051f5e60d3355a06f3cd61f3ca43f48cc58822a44d0a - languageName: node - linkType: hard - "fs-minipass@npm:^2.0.0, fs-minipass@npm:^2.1.0": version: 2.1.0 resolution: "fs-minipass@npm:2.1.0" @@ -34260,6 +34013,13 @@ __metadata: languageName: node linkType: hard +"generator-function@npm:^2.0.0": + version: 2.0.1 + resolution: "generator-function@npm:2.0.1" + checksum: 10c0/8a9f59df0f01cfefafdb3b451b80555e5cf6d76487095db91ac461a0e682e4ff7a9dbce15f4ecec191e53586d59eece01949e05a4b4492879600bbbe8e28d6b8 + languageName: node + linkType: hard + "gensync@npm:^1.0.0-beta.2": version: 1.0.0-beta.2 resolution: "gensync@npm:1.0.0-beta.2" @@ -34274,21 +34034,24 @@ __metadata: languageName: node linkType: hard -"get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6": - version: 1.2.7 - resolution: "get-intrinsic@npm:1.2.7" +"get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6, get-intrinsic@npm:^1.3.0": + version: 1.3.1 + resolution: "get-intrinsic@npm:1.3.1" dependencies: - call-bind-apply-helpers: "npm:^1.0.1" + async-function: "npm:^1.0.0" + async-generator-function: "npm:^1.0.0" + call-bind-apply-helpers: "npm:^1.0.2" es-define-property: "npm:^1.0.1" es-errors: "npm:^1.3.0" - es-object-atoms: "npm:^1.0.0" + es-object-atoms: "npm:^1.1.1" function-bind: "npm:^1.1.2" - get-proto: "npm:^1.0.0" + generator-function: "npm:^2.0.0" + get-proto: "npm:^1.0.1" gopd: "npm:^1.2.0" has-symbols: "npm:^1.1.0" hasown: "npm:^2.0.2" math-intrinsics: "npm:^1.1.0" - checksum: 10c0/b475dec9f8bff6f7422f51ff4b7b8d0b68e6776ee83a753c1d627e3008c3442090992788038b37eff72e93e43dceed8c1acbdf2d6751672687ec22127933080d + checksum: 10c0/9f4ab0cf7efe0fd2c8185f52e6f637e708f3a112610c88869f8f041bb9ecc2ce44bf285dfdbdc6f4f7c277a5b88d8e94a432374d97cca22f3de7fc63795deb5d languageName: node linkType: hard @@ -34327,7 +34090,7 @@ __metadata: languageName: node linkType: hard -"get-proto@npm:^1.0.0": +"get-proto@npm:^1.0.1": version: 1.0.1 resolution: "get-proto@npm:1.0.1" dependencies: @@ -34361,11 +34124,11 @@ __metadata: linkType: hard "get-tsconfig@npm:^4.7.5": - version: 4.8.1 - resolution: "get-tsconfig@npm:4.8.1" + version: 4.13.0 + resolution: "get-tsconfig@npm:4.13.0" dependencies: resolve-pkg-maps: "npm:^1.0.0" - checksum: 10c0/536ee85d202f604f4b5fb6be81bcd6e6d9a96846811e83e9acc6de4a04fb49506edea0e1b8cf1d5ee7af33e469916ec2809d4c5445ab8ae015a7a51fbd1572f9 + checksum: 10c0/2c49ef8d3907047a107f229fd610386fe3b7fe9e42dfd6b42e7406499493cdda8c62e83e57e8d7a98125610774b9f604d3a0ff308d7f9de5c7ac6d1b07cb6036 languageName: node linkType: hard @@ -34521,7 +34284,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^10.2.2, glob@npm:^10.3.10, glob@npm:^10.3.7": +"glob@npm:^10.3.10": version: 10.4.5 resolution: "glob@npm:10.4.5" dependencies: @@ -34537,6 +34300,22 @@ __metadata: languageName: node linkType: hard +"glob@npm:^11.0.3": + version: 11.0.3 + resolution: "glob@npm:11.0.3" + dependencies: + foreground-child: "npm:^3.3.1" + jackspeak: "npm:^4.1.1" + minimatch: "npm:^10.0.3" + minipass: "npm:^7.1.2" + package-json-from-dist: "npm:^1.0.0" + path-scurry: "npm:^2.0.0" + bin: + glob: dist/esm/bin.mjs + checksum: 10c0/7d24457549ec2903920dfa3d8e76850e7c02aa709122f0164b240c712f5455c0b457e6f2a1eee39344c6148e39895be8094ae8cfef7ccc3296ed30bce250c661 + languageName: node + linkType: hard + "glob@npm:^6.0.1": version: 6.0.4 resolution: "glob@npm:6.0.4" @@ -34595,13 +34374,6 @@ __metadata: languageName: node linkType: hard -"globals@npm:^11.1.0": - version: 11.12.0 - resolution: "globals@npm:11.12.0" - checksum: 10c0/758f9f258e7b19226bd8d4af5d3b0dcf7038780fb23d82e6f98932c44e239f884847f1766e8fa9cc5635ccb3204f7fa7314d4408dd4002a5e8ea827b4018f0a1 - languageName: node - linkType: hard - "globals@npm:^13.19.0": version: 13.24.0 resolution: "globals@npm:13.24.0" @@ -34828,9 +34600,9 @@ __metadata: linkType: hard "http-cache-semantics@npm:^4.1.0, http-cache-semantics@npm:^4.1.1": - version: 4.1.1 - resolution: "http-cache-semantics@npm:4.1.1" - checksum: 10c0/ce1319b8a382eb3cbb4a37c19f6bfe14e5bb5be3d09079e885e8c513ab2d3cd9214902f8a31c9dc4e37022633ceabfc2d697405deeaf1b8f3552bb4ed996fdfc + version: 4.2.0 + resolution: "http-cache-semantics@npm:4.2.0" + checksum: 10c0/45b66a945cf13ec2d1f29432277201313babf4a01d9e52f44b31ca923434083afeca03f18417f599c9ab3d0e7b618ceb21257542338b57c54b710463b4a53e37 languageName: node linkType: hard @@ -34950,7 +34722,7 @@ __metadata: languageName: node linkType: hard -"iconv-lite@npm:0.4.24, iconv-lite@npm:^0.4.24": +"iconv-lite@npm:0.4.24": version: 0.4.24 resolution: "iconv-lite@npm:0.4.24" dependencies: @@ -34968,6 +34740,15 @@ __metadata: languageName: node linkType: hard +"iconv-lite@npm:^0.7.0": + version: 0.7.0 + resolution: "iconv-lite@npm:0.7.0" + dependencies: + safer-buffer: "npm:>= 2.1.2 < 3.0.0" + checksum: 10c0/2382400469071c55b6746c531eed5fa4d033e5db6690b7331fb2a5f59a30d7a9782932e92253db26df33c1cf46fa200a3fbe524a2a7c62037c762283f188ec2f + languageName: node + linkType: hard + "ieee754@npm:^1.1.13, ieee754@npm:^1.1.4, ieee754@npm:^1.2.1": version: 1.2.1 resolution: "ieee754@npm:1.2.1" @@ -34992,12 +34773,12 @@ __metadata: linkType: hard "import-fresh@npm:^3.0.0, import-fresh@npm:^3.2.1, import-fresh@npm:^3.3.0": - version: 3.3.0 - resolution: "import-fresh@npm:3.3.0" + version: 3.3.1 + resolution: "import-fresh@npm:3.3.1" dependencies: parent-module: "npm:^1.0.0" resolve-from: "npm:^4.0.0" - checksum: 10c0/7f882953aa6b740d1f0e384d0547158bc86efbf2eea0f1483b8900a6f65c5a5123c2cf09b0d542cc419d0b98a759ecaeb394237e97ea427f2da221dc3cd80cc3 + checksum: 10c0/bf8cc494872fef783249709385ae883b447e3eb09db0ebd15dcead7d9afe7224dad7bd7591c6b73b0b19b3c0f9640eb8ee884f01cfaf2887ab995b0b36a0cbec languageName: node linkType: hard @@ -35088,14 +34869,14 @@ __metadata: linkType: hard "inquirer@npm:^8.2.4": - version: 8.2.6 - resolution: "inquirer@npm:8.2.6" + version: 8.2.7 + resolution: "inquirer@npm:8.2.7" dependencies: + "@inquirer/external-editor": "npm:^1.0.0" ansi-escapes: "npm:^4.2.1" chalk: "npm:^4.1.1" cli-cursor: "npm:^3.1.0" cli-width: "npm:^3.0.0" - external-editor: "npm:^3.0.3" figures: "npm:^3.0.0" lodash: "npm:^4.17.21" mute-stream: "npm:0.0.8" @@ -35106,7 +34887,7 @@ __metadata: strip-ansi: "npm:^6.0.0" through: "npm:^2.3.6" wrap-ansi: "npm:^6.0.1" - checksum: 10c0/eb5724de1778265323f3a68c80acfa899378cb43c24cdcb58661386500e5696b6b0b6c700e046b7aa767fe7b4823c6f04e6ddc268173e3f84116112529016296 + checksum: 10c0/75aa594231769d292102615da3199320359bfb566e96dae0f89a5773a18e21c676709d9f5a9fb1372f7d2cf25c551a4efe53691ff436d941f95336931777c15d languageName: node linkType: hard @@ -35124,13 +34905,10 @@ __metadata: languageName: node linkType: hard -"ip-address@npm:^9.0.5": - version: 9.0.5 - resolution: "ip-address@npm:9.0.5" - dependencies: - jsbn: "npm:1.1.0" - sprintf-js: "npm:^1.1.3" - checksum: 10c0/331cd07fafcb3b24100613e4b53e1a2b4feab11e671e655d46dc09ee233da5011284d09ca40c4ecbdfe1d0004f462958675c224a804259f2f78d2465a87824bc +"ip-address@npm:^10.0.1": + version: 10.1.0 + resolution: "ip-address@npm:10.1.0" + checksum: 10c0/0103516cfa93f6433b3bd7333fa876eb21263912329bfa47010af5e16934eeeff86f3d2ae700a3744a137839ddfad62b900c7a445607884a49b5d1e32a3d7566 languageName: node linkType: hard @@ -35169,7 +34947,7 @@ __metadata: languageName: node linkType: hard -"is-core-module@npm:^2.1.0, is-core-module@npm:^2.16.0, is-core-module@npm:^2.5.0, is-core-module@npm:^2.8.1": +"is-core-module@npm:^2.1.0, is-core-module@npm:^2.16.1, is-core-module@npm:^2.5.0, is-core-module@npm:^2.8.1": version: 2.16.1 resolution: "is-core-module@npm:2.16.1" dependencies: @@ -35337,11 +35115,11 @@ __metadata: linkType: hard "is-ssh@npm:^1.4.0": - version: 1.4.0 - resolution: "is-ssh@npm:1.4.0" + version: 1.4.1 + resolution: "is-ssh@npm:1.4.1" dependencies: protocols: "npm:^2.0.1" - checksum: 10c0/3eb30d1bcb4507cd25562e7ac61a1c0aa31772134c67cec9c3afe6f4d57ec17e8c2892600a608e8e583f32f53f36465b8968c0305f2855cfbff95acfd049e113 + checksum: 10c0/021a7355cb032625d58db3cc8266ad9aa698cbabf460b71376a0307405577fd7d3aa0826c0bf1951d7809f134c0ee80403306f6d7633db94a5a3600a0106b398 languageName: node linkType: hard @@ -35511,12 +35289,12 @@ __metadata: linkType: hard "istanbul-reports@npm:^3.1.3": - version: 3.1.7 - resolution: "istanbul-reports@npm:3.1.7" + version: 3.2.0 + resolution: "istanbul-reports@npm:3.2.0" dependencies: html-escaper: "npm:^2.0.0" istanbul-lib-report: "npm:^3.0.0" - checksum: 10c0/a379fadf9cf8dc5dfe25568115721d4a7eb82fbd50b005a6672aff9c6989b20cc9312d7865814e0859cd8df58cbf664482e1d3604be0afde1f7fc3ccc1394a51 + checksum: 10c0/d596317cfd9c22e1394f22a8d8ba0303d2074fe2e971887b32d870e4b33f8464b10f8ccbe6847808f7db485f084eba09e6c2ed706b3a978e4b52f07085b8f9bc languageName: node linkType: hard @@ -35533,6 +35311,15 @@ __metadata: languageName: node linkType: hard +"jackspeak@npm:^4.1.1": + version: 4.1.1 + resolution: "jackspeak@npm:4.1.1" + dependencies: + "@isaacs/cliui": "npm:^8.0.2" + checksum: 10c0/84ec4f8e21d6514db24737d9caf65361511f75e5e424980eebca4199f400874f45e562ac20fa8aeb1dd20ca2f3f81f0788b6e9c3e64d216a5794fd6f30e0e042 + languageName: node + linkType: hard + "jayson@npm:^3.6.6": version: 3.7.0 resolution: "jayson@npm:3.7.0" @@ -36474,7 +36261,7 @@ __metadata: languageName: node linkType: hard -"js-yaml@npm:4.1.0, js-yaml@npm:^4.1.0": +"js-yaml@npm:4.1.0": version: 4.1.0 resolution: "js-yaml@npm:4.1.0" dependencies: @@ -36497,10 +36284,14 @@ __metadata: languageName: node linkType: hard -"jsbn@npm:1.1.0": - version: 1.1.0 - resolution: "jsbn@npm:1.1.0" - checksum: 10c0/4f907fb78d7b712e11dea8c165fe0921f81a657d3443dde75359ed52eb2b5d33ce6773d97985a089f09a65edd80b11cb75c767b57ba47391fee4c969f7215c96 +"js-yaml@npm:^4.1.0": + version: 4.1.1 + resolution: "js-yaml@npm:4.1.1" + dependencies: + argparse: "npm:^2.0.1" + bin: + js-yaml: bin/js-yaml.js + checksum: 10c0/561c7d7088c40a9bb53cc75becbfb1df6ae49b34b5e6e5a81744b14ae8667ec564ad2527709d1a6e7d5e5fa6d483aa0f373a50ad98d42fde368ec4a190d4fae7 languageName: node linkType: hard @@ -36609,15 +36400,15 @@ __metadata: linkType: hard "jsonfile@npm:^6.0.1": - version: 6.1.0 - resolution: "jsonfile@npm:6.1.0" + version: 6.2.0 + resolution: "jsonfile@npm:6.2.0" dependencies: graceful-fs: "npm:^4.1.6" universalify: "npm:^2.0.0" dependenciesMeta: graceful-fs: optional: true - checksum: 10c0/4f95b5e8a5622b1e9e8f33c96b7ef3158122f595998114d1e7f03985649ea99cb3cd99ce1ed1831ae94c8c8543ab45ebd044207612f31a56fd08462140e46865 + checksum: 10c0/7f4f43b08d1869ded8a6822213d13ae3b99d651151d77efd1557ced0889c466296a7d9684e397bd126acf5eb2cfcb605808c3e681d0fdccd2fe5a04b47e76c0d languageName: node linkType: hard @@ -36667,13 +36458,13 @@ __metadata: linkType: hard "jwa@npm:^1.4.1": - version: 1.4.1 - resolution: "jwa@npm:1.4.1" + version: 1.4.2 + resolution: "jwa@npm:1.4.2" dependencies: - buffer-equal-constant-time: "npm:1.0.1" + buffer-equal-constant-time: "npm:^1.0.1" ecdsa-sig-formatter: "npm:1.0.11" safe-buffer: "npm:^5.0.1" - checksum: 10c0/5c533540bf38702e73cf14765805a94027c66a0aa8b16bc3e89d8d905e61a4ce2791e87e21be97d1293a5ee9d4f3e5e47737e671768265ca4f25706db551d5e9 + checksum: 10c0/210a544a42ca22203e8fc538835205155ba3af6a027753109f9258bdead33086bac3c25295af48ac1981f87f9c5f941bc8f70303670f54ea7dcaafb53993d92c languageName: node linkType: hard @@ -36922,9 +36713,9 @@ __metadata: linkType: hard "loader-runner@npm:^4.2.0": - version: 4.3.0 - resolution: "loader-runner@npm:4.3.0" - checksum: 10c0/a44d78aae0907a72f73966fe8b82d1439c8c485238bd5a864b1b9a2a3257832effa858790241e6b37876b5446a78889adf2fcc8dd897ce54c089ecc0a0ce0bf0 + version: 4.3.1 + resolution: "loader-runner@npm:4.3.1" + checksum: 10c0/a523b6329f114e0a98317158e30a7dfce044b731521be5399464010472a93a15ece44757d1eaed1d8845019869c5390218bc1c7c3110f4eeaef5157394486eac languageName: node linkType: hard @@ -37078,17 +36869,10 @@ __metadata: languageName: node linkType: hard -"loupe@npm:^3.1.0": - version: 3.1.2 - resolution: "loupe@npm:3.1.2" - checksum: 10c0/b13c02e3ddd6a9d5f8bf84133b3242de556512d824dddeea71cce2dbd6579c8f4d672381c4e742d45cf4423d0701765b4a6e5fbc24701def16bc2b40f8daa96a - languageName: node - linkType: hard - -"loupe@npm:^3.1.4": - version: 3.2.0 - resolution: "loupe@npm:3.2.0" - checksum: 10c0/f572fd9e38db8d36ae9eede305480686e310d69bc40394b6842838ebc6c3860a0e35ab30182f33606ab2d8a685d9ff6436649269f8218a1c3385ca329973cb2c +"loupe@npm:^3.1.0, loupe@npm:^3.1.4": + version: 3.2.1 + resolution: "loupe@npm:3.2.1" + checksum: 10c0/910c872cba291309664c2d094368d31a68907b6f5913e989d301b5c25f30e97d76d77f23ab3bf3b46d0f601ff0b6af8810c10c31b91d2c6b2f132809ca2cc705 languageName: node linkType: hard @@ -37121,13 +36905,20 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0": +"lru-cache@npm:^10.2.0": version: 10.4.3 resolution: "lru-cache@npm:10.4.3" checksum: 10c0/ebd04fbca961e6c1d6c0af3799adcc966a1babe798f685bb84e6599266599cd95d94630b10262f5424539bc4640107e8a33aa28585374abf561d30d16f4b39fb languageName: node linkType: hard +"lru-cache@npm:^11.0.0, lru-cache@npm:^11.1.0, lru-cache@npm:^11.2.1": + version: 11.2.2 + resolution: "lru-cache@npm:11.2.2" + checksum: 10c0/72d7831bbebc85e2bdefe01047ee5584db69d641c48d7a509e86f66f6ee111b30af7ec3bd68a967d47b69a4b1fa8bbf3872630bd06a63b6735e6f0a5f1c8e83d + languageName: node + linkType: hard + "lru-cache@npm:^5.1.1": version: 5.1.1 resolution: "lru-cache@npm:5.1.1" @@ -37147,11 +36938,11 @@ __metadata: linkType: hard "magic-string@npm:^0.30.17": - version: 0.30.17 - resolution: "magic-string@npm:0.30.17" + version: 0.30.21 + resolution: "magic-string@npm:0.30.21" dependencies: - "@jridgewell/sourcemap-codec": "npm:^1.5.0" - checksum: 10c0/16826e415d04b88378f200fe022b53e638e3838b9e496edda6c0e086d7753a44a6ed187adc72d19f3623810589bf139af1a315541cd6a26ae0771a0193eaf7b8 + "@jridgewell/sourcemap-codec": "npm:^1.5.5" + checksum: 10c0/299378e38f9a270069fc62358522ddfb44e94244baa0d6a8980ab2a9b2490a1d03b236b447eee309e17eb3bddfa482c61259d47960eb018a904f0ded52780c4a languageName: node linkType: hard @@ -37214,22 +37005,22 @@ __metadata: languageName: node linkType: hard -"make-fetch-happen@npm:^14.0.3": - version: 14.0.3 - resolution: "make-fetch-happen@npm:14.0.3" +"make-fetch-happen@npm:^15.0.0": + version: 15.0.3 + resolution: "make-fetch-happen@npm:15.0.3" dependencies: - "@npmcli/agent": "npm:^3.0.0" - cacache: "npm:^19.0.1" + "@npmcli/agent": "npm:^4.0.0" + cacache: "npm:^20.0.1" http-cache-semantics: "npm:^4.1.1" minipass: "npm:^7.0.2" - minipass-fetch: "npm:^4.0.0" + minipass-fetch: "npm:^5.0.0" minipass-flush: "npm:^1.0.5" minipass-pipeline: "npm:^1.2.4" negotiator: "npm:^1.0.0" - proc-log: "npm:^5.0.0" + proc-log: "npm:^6.0.0" promise-retry: "npm:^2.0.1" - ssri: "npm:^12.0.0" - checksum: 10c0/c40efb5e5296e7feb8e37155bde8eb70bc57d731b1f7d90e35a092fde403d7697c56fb49334d92d330d6f1ca29a98142036d6480a12681133a0a1453164cb2f0 + ssri: "npm:^13.0.0" + checksum: 10c0/525f74915660be60b616bcbd267c4a5b59481b073ba125e45c9c3a041bb1a47a2bd0ae79d028eb6f5f95bf9851a4158423f5068539c3093621abb64027e8e461 languageName: node linkType: hard @@ -37335,9 +37126,9 @@ __metadata: linkType: hard "mime-db@npm:>= 1.43.0 < 2": - version: 1.53.0 - resolution: "mime-db@npm:1.53.0" - checksum: 10c0/1dcc37ba8ed5d1c179f5c6f0837e8db19371d5f2ea3690c3c2f3fa8c3858f976851d3460b172b4dee78ebd606762cbb407aa398545fbacd539e519f858cd7bf4 + version: 1.54.0 + resolution: "mime-db@npm:1.54.0" + checksum: 10c0/8d907917bc2a90fa2df842cdf5dfeaf509adc15fe0531e07bb2f6ab15992416479015828d6a74200041c492e42cce3ebf78e5ce714388a0a538ea9c53eece284 languageName: node linkType: hard @@ -37409,6 +37200,15 @@ __metadata: languageName: node linkType: hard +"minimatch@npm:^10.0.3": + version: 10.1.1 + resolution: "minimatch@npm:10.1.1" + dependencies: + "@isaacs/brace-expansion": "npm:^5.0.0" + checksum: 10c0/c85d44821c71973d636091fddbfbffe62370f5ee3caf0241c5b60c18cd289e916200acb2361b7e987558cd06896d153e25d505db9fc1e43e6b4b6752e2702902 + languageName: node + linkType: hard + "minimatch@npm:^5.0.1": version: 5.1.6 resolution: "minimatch@npm:5.1.6" @@ -37487,9 +37287,9 @@ __metadata: languageName: node linkType: hard -"minipass-fetch@npm:^4.0.0": - version: 4.0.0 - resolution: "minipass-fetch@npm:4.0.0" +"minipass-fetch@npm:^5.0.0": + version: 5.0.0 + resolution: "minipass-fetch@npm:5.0.0" dependencies: encoding: "npm:^0.1.13" minipass: "npm:^7.0.3" @@ -37498,7 +37298,7 @@ __metadata: dependenciesMeta: encoding: optional: true - checksum: 10c0/7fa30ce7c373fb6f94c086b374fff1589fd7e78451855d2d06c2e2d9df936d131e73e952163063016592ed3081444bd8d1ea608533313b0149156ce23311da4b + checksum: 10c0/9443aab5feab190972f84b64116e54e58dd87a58e62399cae0a4a7461b80568281039b7c3a38ba96453431ebc799d1e26999e548540156216729a4967cd5ef06 languageName: node linkType: hard @@ -37572,13 +37372,12 @@ __metadata: languageName: node linkType: hard -"minizlib@npm:^3.0.1": - version: 3.0.1 - resolution: "minizlib@npm:3.0.1" +"minizlib@npm:^3.0.1, minizlib@npm:^3.1.0": + version: 3.1.0 + resolution: "minizlib@npm:3.1.0" dependencies: - minipass: "npm:^7.0.4" - rimraf: "npm:^5.0.5" - checksum: 10c0/82f8bf70da8af656909a8ee299d7ed3b3372636749d29e105f97f20e88971be31f5ed7642f2e898f00283b68b701cc01307401cdc209b0efc5dd3818220e5093 + minipass: "npm:^7.1.2" + checksum: 10c0/5aad75ab0090b8266069c9aabe582c021ae53eb33c6c691054a13a45db3b4f91a7fb1bd79151e6b4e9e9a86727b522527c0a06ec7d45206b745d54cd3097bcec languageName: node linkType: hard @@ -37602,15 +37401,6 @@ __metadata: languageName: node linkType: hard -"mkdirp@npm:^3.0.1": - version: 3.0.1 - resolution: "mkdirp@npm:3.0.1" - bin: - mkdirp: dist/cjs/src/bin.js - checksum: 10c0/9f2b975e9246351f5e3a40dcfac99fcd0baa31fbfab615fe059fb11e51f10e4803c63de1f384c54d656e4db31d000e4767e9ef076a22e12a641357602e31d57d - languageName: node - linkType: hard - "mkdirp@npm:~0.5.1": version: 0.5.6 resolution: "mkdirp@npm:0.5.6" @@ -37918,22 +37708,22 @@ __metadata: linkType: hard "node-gyp@npm:latest": - version: 11.0.0 - resolution: "node-gyp@npm:11.0.0" + version: 12.1.0 + resolution: "node-gyp@npm:12.1.0" dependencies: env-paths: "npm:^2.2.0" exponential-backoff: "npm:^3.1.1" - glob: "npm:^10.3.10" graceful-fs: "npm:^4.2.6" - make-fetch-happen: "npm:^14.0.3" - nopt: "npm:^8.0.0" - proc-log: "npm:^5.0.0" + make-fetch-happen: "npm:^15.0.0" + nopt: "npm:^9.0.0" + proc-log: "npm:^6.0.0" semver: "npm:^7.3.5" - tar: "npm:^7.4.3" - which: "npm:^5.0.0" + tar: "npm:^7.5.2" + tinyglobby: "npm:^0.2.12" + which: "npm:^6.0.0" bin: node-gyp: bin/node-gyp.js - checksum: 10c0/a3b885bbee2d271f1def32ba2e30ffcf4562a3db33af06b8b365e053153e2dd2051b9945783c3c8e852d26a0f20f65b251c7e83361623383a99635c0280ee573 + checksum: 10c0/f43efea8aaf0beb6b2f6184e533edad779b2ae38062953e21951f46221dd104006cc574154f2ad4a135467a5aae92c49e84ef289311a82e08481c5df0e8dc495 languageName: node linkType: hard @@ -37944,10 +37734,10 @@ __metadata: languageName: node linkType: hard -"node-releases@npm:^2.0.19": - version: 2.0.19 - resolution: "node-releases@npm:2.0.19" - checksum: 10c0/52a0dbd25ccf545892670d1551690fe0facb6a471e15f2cfa1b20142a5b255b3aa254af5f59d6ecb69c2bec7390bc643c43aa63b13bf5e64b6075952e716b1aa +"node-releases@npm:^2.0.27": + version: 2.0.27 + resolution: "node-releases@npm:2.0.27" + checksum: 10c0/f1e6583b7833ea81880627748d28a3a7ff5703d5409328c216ae57befbced10ce2c991bea86434e8ec39003bd017f70481e2e5f8c1f7e0a7663241f81d6e00e2 languageName: node linkType: hard @@ -37973,14 +37763,14 @@ __metadata: languageName: node linkType: hard -"nopt@npm:^8.0.0": - version: 8.0.0 - resolution: "nopt@npm:8.0.0" +"nopt@npm:^9.0.0": + version: 9.0.0 + resolution: "nopt@npm:9.0.0" dependencies: - abbrev: "npm:^2.0.0" + abbrev: "npm:^4.0.0" bin: nopt: bin/nopt.js - checksum: 10c0/19cb986f79abaca2d0f0b560021da7b32ee6fcc3de48f3eaeb0c324d36755c17754f886a754c091f01f740c17caf7d6aea8237b7fbaf39f476ae5e30a249f18f + checksum: 10c0/1822eb6f9b020ef6f7a7516d7b64a8036e09666ea55ac40416c36e4b2b343122c3cff0e2f085675f53de1d2db99a2a89a60ccea1d120bcd6a5347bf6ceb4a7fd languageName: node linkType: hard @@ -38259,9 +38049,9 @@ __metadata: linkType: hard "object-inspect@npm:^1.13.3": - version: 1.13.3 - resolution: "object-inspect@npm:1.13.3" - checksum: 10c0/cc3f15213406be89ffdc54b525e115156086796a515410a8d390215915db9f23c8eab485a06f1297402f440a33715fe8f71a528c1dcbad6e1a3bcaf5a46921d4 + version: 1.13.4 + resolution: "object-inspect@npm:1.13.4" + checksum: 10c0/d7f8711e803b96ea3191c745d6f8056ce1f2496e530e6a19a0e92d89b0fa3c76d910c31f0aa270432db6bd3b2f85500a376a83aaba849a8d518c8845b3211692 languageName: node linkType: hard @@ -38380,13 +38170,6 @@ __metadata: languageName: node linkType: hard -"os-tmpdir@npm:~1.0.2": - version: 1.0.2 - resolution: "os-tmpdir@npm:1.0.2" - checksum: 10c0/f438450224f8e2687605a8dd318f0db694b6293c5d835ae509a69e97c8de38b6994645337e5577f5001115470414638978cc49da1cdcc25106dad8738dc69990 - languageName: node - linkType: hard - "p-finally@npm:^1.0.0": version: 1.0.0 resolution: "p-finally@npm:1.0.0" @@ -38465,9 +38248,9 @@ __metadata: linkType: hard "p-map@npm:^7.0.2": - version: 7.0.3 - resolution: "p-map@npm:7.0.3" - checksum: 10c0/46091610da2b38ce47bcd1d8b4835a6fa4e832848a6682cf1652bc93915770f4617afc844c10a77d1b3e56d2472bb2d5622353fa3ead01a7f42b04fc8e744a5c + version: 7.0.4 + resolution: "p-map@npm:7.0.4" + checksum: 10c0/a5030935d3cb2919d7e89454d1ce82141e6f9955413658b8c9403cfe379283770ed3048146b44cde168aa9e8c716505f196d5689db0ae3ce9a71521a2fef3abd languageName: node linkType: hard @@ -38617,11 +38400,11 @@ __metadata: linkType: hard "parse-path@npm:^7.0.0": - version: 7.0.0 - resolution: "parse-path@npm:7.0.0" + version: 7.1.0 + resolution: "parse-path@npm:7.1.0" dependencies: protocols: "npm:^2.0.0" - checksum: 10c0/e7646f6b998b083bbd40102643d803557ce4ae18ae1704e6cc7ae2525ea7c5400f4a3635aca3244cfe65ce4dd0ff77db1142dde4d080e8a80c364c4b3e8fe8d2 + checksum: 10c0/8c8c8b3019323d686e7b1cd6fd9653bc233404403ad68827836fbfe59dfe26aaef64ed4e0396d0e20c4a7e1469312ec969a679618960e79d5e7c652dc0da5a0f languageName: node linkType: hard @@ -38635,11 +38418,11 @@ __metadata: linkType: hard "parse5@npm:^7.0.0": - version: 7.2.1 - resolution: "parse5@npm:7.2.1" + version: 7.3.0 + resolution: "parse5@npm:7.3.0" dependencies: - entities: "npm:^4.5.0" - checksum: 10c0/829d37a0c709215a887e410a7118d754f8e1afd7edb529db95bc7bbf8045fb0266a7b67801331d8e8d9d073ea75793624ec27ce9ff3b96862c3b9008f4d68e80 + entities: "npm:^6.0.0" + checksum: 10c0/7fd2e4e247e85241d6f2a464d0085eed599a26d7b0a5233790c49f53473232eb85350e8133344d9b3fd58b89339e7ad7270fe1f89d28abe50674ec97b87f80b5 languageName: node linkType: hard @@ -38695,6 +38478,16 @@ __metadata: languageName: node linkType: hard +"path-scurry@npm:^2.0.0": + version: 2.0.1 + resolution: "path-scurry@npm:2.0.1" + dependencies: + lru-cache: "npm:^11.0.0" + minipass: "npm:^7.1.2" + checksum: 10c0/2a16ed0e81fbc43513e245aa5763354e25e787dab0d539581a6c3f0f967461a159ed6236b2559de23aa5b88e7dc32b469b6c47568833dd142a4b24b4f5cd2620 + languageName: node + linkType: hard + "path-to-regexp@npm:0.1.7": version: 0.1.7 resolution: "path-to-regexp@npm:0.1.7" @@ -38726,9 +38519,9 @@ __metadata: linkType: hard "pathval@npm:^2.0.0": - version: 2.0.0 - resolution: "pathval@npm:2.0.0" - checksum: 10c0/602e4ee347fba8a599115af2ccd8179836a63c925c23e04bd056d0674a64b39e3a081b643cc7bc0b84390517df2d800a46fcc5598d42c155fe4977095c2f77c5 + version: 2.0.1 + resolution: "pathval@npm:2.0.1" + checksum: 10c0/460f4709479fbf2c45903a65655fc8f0a5f6d808f989173aeef5fdea4ff4f303dc13f7870303999add60ec49d4c14733895c0a869392e9866f1091fa64fd7581 languageName: node linkType: hard @@ -38739,7 +38532,7 @@ __metadata: languageName: node linkType: hard -"picocolors@npm:^1.0.0, picocolors@npm:^1.1.0, picocolors@npm:^1.1.1": +"picocolors@npm:^1.1.1": version: 1.1.1 resolution: "picocolors@npm:1.1.1" checksum: 10c0/e2e3e8170ab9d7c7421969adaa7e1b31434f789afb9b3f115f6b96d91945041ac3ceb02e9ec6fe6510ff036bcc0bf91e69a1772edc0b707e12b19c0f2d6bcf58 @@ -38853,15 +38646,15 @@ __metadata: linkType: hard "pino@npm:^9.0.0": - version: 9.6.0 - resolution: "pino@npm:9.6.0" + version: 9.14.0 + resolution: "pino@npm:9.14.0" dependencies: + "@pinojs/redact": "npm:^0.4.0" atomic-sleep: "npm:^1.0.0" - fast-redact: "npm:^3.1.1" on-exit-leak-free: "npm:^2.1.0" pino-abstract-transport: "npm:^2.0.0" pino-std-serializers: "npm:^7.0.0" - process-warning: "npm:^4.0.0" + process-warning: "npm:^5.0.0" quick-format-unescaped: "npm:^4.0.3" real-require: "npm:^0.2.0" safe-stable-stringify: "npm:^2.3.1" @@ -38869,18 +38662,11 @@ __metadata: thread-stream: "npm:^3.0.0" bin: pino: bin.js - checksum: 10c0/bcd1e9d9b301bea13b95689ca9ad7105ae9451928fb6c0b67b3e58c5fe37cea1d40665f3d6641e3da00be0bbc17b89031e67abbc8ea6aac6164f399309fd78e7 + checksum: 10c0/9a10d9bf820a585eae9bc270fb4e55c895e48280d54adbbb4063ec061694b22d8809c80203cf5fe9f920a54c832b0b8dfb67cb28a04baa13abebaf261a9c9f3e languageName: node linkType: hard -"pirates@npm:^4.0.4": - version: 4.0.6 - resolution: "pirates@npm:4.0.6" - checksum: 10c0/00d5fa51f8dded94d7429700fb91a0c1ead00ae2c7fd27089f0c5b63e6eca36197fe46384631872690a66f390c5e27198e99006ab77ae472692ab9c2ca903f36 - languageName: node - linkType: hard - -"pirates@npm:^4.0.7": +"pirates@npm:^4.0.4, pirates@npm:^4.0.7": version: 4.0.7 resolution: "pirates@npm:4.0.7" checksum: 10c0/a51f108dd811beb779d58a76864bbd49e239fa40c7984cd11596c75a121a8cc789f1c8971d8bb15f0dbf9d48b76c05bb62fcbce840f89b688c0fa64b37e8478a @@ -38995,10 +38781,10 @@ __metadata: languageName: node linkType: hard -"proc-log@npm:^5.0.0": - version: 5.0.0 - resolution: "proc-log@npm:5.0.0" - checksum: 10c0/bbe5edb944b0ad63387a1d5b1911ae93e05ce8d0f60de1035b218cdcceedfe39dbd2c697853355b70f1a090f8f58fe90da487c85216bf9671f9499d1a897e9e3 +"proc-log@npm:^6.0.0": + version: 6.0.0 + resolution: "proc-log@npm:6.0.0" + checksum: 10c0/40c5e2b4c55e395a3bd72e38cba9c26e58598a1f4844fa6a115716d5231a0919f46aa8e351147035d91583ad39a794593615078c948bc001fe3beb99276be776 languageName: node linkType: hard @@ -39023,10 +38809,10 @@ __metadata: languageName: node linkType: hard -"process-warning@npm:^4.0.0": - version: 4.0.1 - resolution: "process-warning@npm:4.0.1" - checksum: 10c0/577a268b9fd5c3d9f6dbb4348220099391d830905642845d591e7ee8b1e45043d98b7b9826a3c1379bdd1686cdfe0f6cf349cb812affc5853b662e6a9896579e +"process-warning@npm:^5.0.0": + version: 5.0.0 + resolution: "process-warning@npm:5.0.0" + checksum: 10c0/941f48863d368ec161e0b5890ba0c6af94170078f3d6b5e915c19b36fb59edb0dc2f8e834d25e0d375a8bf368a49d490f080508842168832b93489d17843ec29 languageName: node linkType: hard @@ -39109,9 +38895,9 @@ __metadata: linkType: hard "protocols@npm:^2.0.0, protocols@npm:^2.0.1": - version: 2.0.1 - resolution: "protocols@npm:2.0.1" - checksum: 10c0/016cc58a596e401004a028a2f7005e3444bf89ee8f606409c411719374d1e8bba0464fc142a065cce0d19f41669b2f7ffe25a8bde4f16ce3b6eb01fabc51f2e7 + version: 2.0.2 + resolution: "protocols@npm:2.0.2" + checksum: 10c0/b87d78c1fcf038d33691da28447ce94011d5c7f0c7fd25bcb5fb4d975991c99117873200c84f4b6a9d7f8b9092713a064356236960d1473a7d6fcd4228897b60 languageName: node linkType: hard @@ -39142,12 +38928,12 @@ __metadata: linkType: hard "pump@npm:^3.0.0": - version: 3.0.2 - resolution: "pump@npm:3.0.2" + version: 3.0.3 + resolution: "pump@npm:3.0.3" dependencies: end-of-stream: "npm:^1.1.0" once: "npm:^1.3.1" - checksum: 10c0/5ad655cb2a7738b4bcf6406b24ad0970d680649d996b55ad20d1be8e0c02394034e4c45ff7cd105d87f1e9b96a0e3d06fd28e11fae8875da26e7f7a8e2c9726f + checksum: 10c0/ada5cdf1d813065bbc99aa2c393b8f6beee73b5de2890a8754c9f488d7323ffd2ca5f5a0943b48934e3fcbd97637d0337369c3c631aeb9614915db629f1c75c9 languageName: node linkType: hard @@ -39390,15 +39176,15 @@ __metadata: linkType: hard "readable-stream@npm:^4.0.0": - version: 4.6.0 - resolution: "readable-stream@npm:4.6.0" + version: 4.7.0 + resolution: "readable-stream@npm:4.7.0" dependencies: abort-controller: "npm:^3.0.0" buffer: "npm:^6.0.3" events: "npm:^3.3.0" process: "npm:^0.11.10" string_decoder: "npm:^1.3.0" - checksum: 10c0/0dcc6fdb433c0e6c4b03950f72e43b94c2aead42367ae5453997ffffcdcee2277003da545175ee11db08917e97ec709c9d19c6576e0888d0315b239da0f9913a + checksum: 10c0/fd86d068da21cfdb10f7a4479f2e47d9c0a9b0c862fc0c840a7e5360201580a55ac399c764b12a4f6fa291f8cee74d9c4b7562e0d53b3c4b2769f2c98155d957 languageName: node linkType: hard @@ -39463,13 +39249,6 @@ __metadata: languageName: node linkType: hard -"regenerator-runtime@npm:^0.14.0": - version: 0.14.1 - resolution: "regenerator-runtime@npm:0.14.1" - checksum: 10c0/1b16eb2c4bceb1665c89de70dcb64126a22bc8eb958feef3cd68fe11ac6d2a4899b5cd1b80b0774c7c03591dc57d16631a7f69d2daa2ec98100e2f29f7ec4cc4 - languageName: node - linkType: hard - "regexp-match-indices@npm:1.0.2": version: 1.0.2 resolution: "regexp-match-indices@npm:1.0.2" @@ -39607,15 +39386,15 @@ __metadata: linkType: hard "resolve@npm:^1.1.6, resolve@npm:^1.10.0, resolve@npm:^1.20.0, resolve@npm:^1.22.1, resolve@npm:^1.9.0, resolve@npm:~1.22.1, resolve@npm:~1.22.2": - version: 1.22.10 - resolution: "resolve@npm:1.22.10" + version: 1.22.11 + resolution: "resolve@npm:1.22.11" dependencies: - is-core-module: "npm:^2.16.0" + is-core-module: "npm:^2.16.1" path-parse: "npm:^1.0.7" supports-preserve-symlinks-flag: "npm:^1.0.0" bin: resolve: bin/resolve - checksum: 10c0/8967e1f4e2cc40f79b7e080b4582b9a8c5ee36ffb46041dccb20e6461161adf69f843b43067b4a375de926a2cd669157e29a29578191def399dd5ef89a1b5203 + checksum: 10c0/f657191507530f2cbecb5815b1ee99b20741ea6ee02a59c57028e9ec4c2c8d7681afcc35febbd554ac0ded459db6f2d8153382c53a2f266cee2575e512674409 languageName: node linkType: hard @@ -39630,15 +39409,15 @@ __metadata: linkType: hard "resolve@patch:resolve@npm%3A^1.1.6#optional!builtin, resolve@patch:resolve@npm%3A^1.10.0#optional!builtin, resolve@patch:resolve@npm%3A^1.20.0#optional!builtin, resolve@patch:resolve@npm%3A^1.22.1#optional!builtin, resolve@patch:resolve@npm%3A^1.9.0#optional!builtin, resolve@patch:resolve@npm%3A~1.22.1#optional!builtin, resolve@patch:resolve@npm%3A~1.22.2#optional!builtin": - version: 1.22.10 - resolution: "resolve@patch:resolve@npm%3A1.22.10#optional!builtin::version=1.22.10&hash=c3c19d" + version: 1.22.11 + resolution: "resolve@patch:resolve@npm%3A1.22.11#optional!builtin::version=1.22.11&hash=c3c19d" dependencies: - is-core-module: "npm:^2.16.0" + is-core-module: "npm:^2.16.1" path-parse: "npm:^1.0.7" supports-preserve-symlinks-flag: "npm:^1.0.0" bin: resolve: bin/resolve - checksum: 10c0/52a4e505bbfc7925ac8f4cd91fd8c4e096b6a89728b9f46861d3b405ac9a1ccf4dcbf8befb4e89a2e11370dacd0160918163885cbc669369590f2f31f4c58939 + checksum: 10c0/ee5b182f2e37cb1165465e58c6abc797fec0a80b5ba3231607beb4677db0c9291ac010c47cf092b6daa2b7f518d69a0e21888e7e2b633f68d501a874212a8c63 languageName: node linkType: hard @@ -39677,9 +39456,9 @@ __metadata: linkType: hard "reusify@npm:^1.0.4": - version: 1.0.4 - resolution: "reusify@npm:1.0.4" - checksum: 10c0/c19ef26e4e188f408922c46f7ff480d38e8dfc55d448310dfb518736b23ed2c4f547fb64a6ed5bdba92cd7e7ddc889d36ff78f794816d5e71498d645ef476107 + version: 1.1.0 + resolution: "reusify@npm:1.1.0" + checksum: 10c0/4eff0d4a5f9383566c7d7ec437b671cc51b25963bd61bf127c3f3d3f68e44a026d99b8d2f1ad344afff8d278a8fe70a8ea092650a716d22287e8bef7126bb2fa languageName: node linkType: hard @@ -39701,17 +39480,6 @@ __metadata: languageName: node linkType: hard -"rimraf@npm:^5.0.5": - version: 5.0.10 - resolution: "rimraf@npm:5.0.10" - dependencies: - glob: "npm:^10.3.7" - bin: - rimraf: dist/esm/bin.mjs - checksum: 10c0/7da4fd0e15118ee05b918359462cfa1e7fe4b1228c7765195a45b55576e8c15b95db513b8466ec89129666f4af45ad978a3057a02139afba1a63512a2d9644cc - languageName: node - linkType: hard - "rimraf@npm:~2.4.0": version: 2.4.5 resolution: "rimraf@npm:2.4.5" @@ -39724,29 +39492,31 @@ __metadata: linkType: hard "rollup@npm:^4.43.0": - version: 4.46.4 - resolution: "rollup@npm:4.46.4" - dependencies: - "@rollup/rollup-android-arm-eabi": "npm:4.46.4" - "@rollup/rollup-android-arm64": "npm:4.46.4" - "@rollup/rollup-darwin-arm64": "npm:4.46.4" - "@rollup/rollup-darwin-x64": "npm:4.46.4" - "@rollup/rollup-freebsd-arm64": "npm:4.46.4" - "@rollup/rollup-freebsd-x64": "npm:4.46.4" - "@rollup/rollup-linux-arm-gnueabihf": "npm:4.46.4" - "@rollup/rollup-linux-arm-musleabihf": "npm:4.46.4" - "@rollup/rollup-linux-arm64-gnu": "npm:4.46.4" - "@rollup/rollup-linux-arm64-musl": "npm:4.46.4" - "@rollup/rollup-linux-loongarch64-gnu": "npm:4.46.4" - "@rollup/rollup-linux-ppc64-gnu": "npm:4.46.4" - "@rollup/rollup-linux-riscv64-gnu": "npm:4.46.4" - "@rollup/rollup-linux-riscv64-musl": "npm:4.46.4" - "@rollup/rollup-linux-s390x-gnu": "npm:4.46.4" - "@rollup/rollup-linux-x64-gnu": "npm:4.46.4" - "@rollup/rollup-linux-x64-musl": "npm:4.46.4" - "@rollup/rollup-win32-arm64-msvc": "npm:4.46.4" - "@rollup/rollup-win32-ia32-msvc": "npm:4.46.4" - "@rollup/rollup-win32-x64-msvc": "npm:4.46.4" + version: 4.53.2 + resolution: "rollup@npm:4.53.2" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.53.2" + "@rollup/rollup-android-arm64": "npm:4.53.2" + "@rollup/rollup-darwin-arm64": "npm:4.53.2" + "@rollup/rollup-darwin-x64": "npm:4.53.2" + "@rollup/rollup-freebsd-arm64": "npm:4.53.2" + "@rollup/rollup-freebsd-x64": "npm:4.53.2" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.53.2" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.53.2" + "@rollup/rollup-linux-arm64-gnu": "npm:4.53.2" + "@rollup/rollup-linux-arm64-musl": "npm:4.53.2" + "@rollup/rollup-linux-loong64-gnu": "npm:4.53.2" + "@rollup/rollup-linux-ppc64-gnu": "npm:4.53.2" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.53.2" + "@rollup/rollup-linux-riscv64-musl": "npm:4.53.2" + "@rollup/rollup-linux-s390x-gnu": "npm:4.53.2" + "@rollup/rollup-linux-x64-gnu": "npm:4.53.2" + "@rollup/rollup-linux-x64-musl": "npm:4.53.2" + "@rollup/rollup-openharmony-arm64": "npm:4.53.2" + "@rollup/rollup-win32-arm64-msvc": "npm:4.53.2" + "@rollup/rollup-win32-ia32-msvc": "npm:4.53.2" + "@rollup/rollup-win32-x64-gnu": "npm:4.53.2" + "@rollup/rollup-win32-x64-msvc": "npm:4.53.2" "@types/estree": "npm:1.0.8" fsevents: "npm:~2.3.2" dependenciesMeta: @@ -39770,7 +39540,7 @@ __metadata: optional: true "@rollup/rollup-linux-arm64-musl": optional: true - "@rollup/rollup-linux-loongarch64-gnu": + "@rollup/rollup-linux-loong64-gnu": optional: true "@rollup/rollup-linux-ppc64-gnu": optional: true @@ -39784,17 +39554,21 @@ __metadata: optional: true "@rollup/rollup-linux-x64-musl": optional: true + "@rollup/rollup-openharmony-arm64": + optional: true "@rollup/rollup-win32-arm64-msvc": optional: true "@rollup/rollup-win32-ia32-msvc": optional: true + "@rollup/rollup-win32-x64-gnu": + optional: true "@rollup/rollup-win32-x64-msvc": optional: true fsevents: optional: true bin: rollup: dist/bin/rollup - checksum: 10c0/17871534544bd19ec9b5bc1d82a8509addbdb7ee0dd865f20352a8b5695e7b9288af842cd50187bed9fece61b0f1d7b7ff43cf070265d3a2e7d8348497e3ba1e + checksum: 10c0/427216da71c1ce7fefb0bef75f94c301afd858ac27e35898e098c2da5977325fa54c2edda867caf9675c8abfa8d8d94efa99c482fa04f5cd91f3a740112d4f4f languageName: node linkType: hard @@ -39831,11 +39605,11 @@ __metadata: linkType: hard "rxjs@npm:^7.5.1, rxjs@npm:^7.5.5": - version: 7.8.1 - resolution: "rxjs@npm:7.8.1" + version: 7.8.2 + resolution: "rxjs@npm:7.8.2" dependencies: tslib: "npm:^2.1.0" - checksum: 10c0/3c49c1ecd66170b175c9cacf5cef67f8914dcbc7cd0162855538d365c83fea631167cacb644b3ce533b2ea0e9a4d0b12175186985f89d75abe73dbd8f7f06f68 + checksum: 10c0/1fcd33d2066ada98ba8f21fcbbcaee9f0b271de1d38dc7f4e256bfbc6ffcdde68c8bfb69093de7eeb46f24b1fb820620bf0223706cff26b4ab99a7ff7b2e2c45 languageName: node linkType: hard @@ -39895,27 +39669,15 @@ __metadata: languageName: node linkType: hard -"schema-utils@npm:^4.3.0": - version: 4.3.0 - resolution: "schema-utils@npm:4.3.0" +"schema-utils@npm:^4.3.0, schema-utils@npm:^4.3.2": + version: 4.3.3 + resolution: "schema-utils@npm:4.3.3" dependencies: "@types/json-schema": "npm:^7.0.9" ajv: "npm:^8.9.0" ajv-formats: "npm:^2.1.1" ajv-keywords: "npm:^5.1.0" - checksum: 10c0/c23f0fa73ef71a01d4a2bb7af4c91e0d356ec640e071aa2d06ea5e67f042962bb7ac7c29a60a295bb0125878801bc3209197a2b8a833dd25bd38e37c3ed21427 - languageName: node - linkType: hard - -"schema-utils@npm:^4.3.2": - version: 4.3.2 - resolution: "schema-utils@npm:4.3.2" - dependencies: - "@types/json-schema": "npm:^7.0.9" - ajv: "npm:^8.9.0" - ajv-formats: "npm:^2.1.1" - ajv-keywords: "npm:^5.1.0" - checksum: 10c0/981632f9bf59f35b15a9bcdac671dd183f4946fe4b055ae71a301e66a9797b95e5dd450de581eb6cca56fb6583ce8f24d67b2d9f8e1b2936612209697f6c277e + checksum: 10c0/1c8d2c480a026d7c02ab2ecbe5919133a096d6a721a3f201fa50663e4f30f6d6ba020dfddd93cb828b66b922e76b342e103edd19a62c95c8f60e9079cc403202 languageName: node linkType: hard @@ -40009,16 +39771,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.0.0, semver@npm:^7.1.1, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.3, semver@npm:^7.5.4": - version: 7.6.3 - resolution: "semver@npm:7.6.3" - bin: - semver: bin/semver.js - checksum: 10c0/88f33e148b210c153873cb08cfe1e281d518aaa9a666d4d148add6560db5cd3c582f3a08ccb91f38d5f379ead256da9931234ed122057f40bb5766e65e58adaf - languageName: node - linkType: hard - -"semver@npm:^7.7.2": +"semver@npm:^7.0.0, semver@npm:^7.1.1, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.7.2": version: 7.7.3 resolution: "semver@npm:7.7.3" bin: @@ -40077,9 +39830,9 @@ __metadata: linkType: hard "set-cookie-parser@npm:^2.4.1": - version: 2.7.1 - resolution: "set-cookie-parser@npm:2.7.1" - checksum: 10c0/060c198c4c92547ac15988256f445eae523f57f2ceefeccf52d30d75dedf6bff22b9c26f756bd44e8e560d44ff4ab2130b178bd2e52ef5571bf7be3bd7632d9a + version: 2.7.2 + resolution: "set-cookie-parser@npm:2.7.2" + checksum: 10c0/4381a9eb7ee951dfe393fe7aacf76b9a3b4e93a684d2162ab35594fa4053cc82a4d7d7582bf397718012c9adcf839b8cd8f57c6c42901ea9effe33c752da4a45 languageName: node linkType: hard @@ -40270,12 +40023,12 @@ __metadata: linkType: hard "socks@npm:^2.6.2, socks@npm:^2.8.3": - version: 2.8.3 - resolution: "socks@npm:2.8.3" + version: 2.8.7 + resolution: "socks@npm:2.8.7" dependencies: - ip-address: "npm:^9.0.5" + ip-address: "npm:^10.0.1" smart-buffer: "npm:^4.2.0" - checksum: 10c0/d54a52bf9325165770b674a67241143a3d8b4e4c8884560c4e0e078aace2a728dffc7f70150660f51b85797c4e1a3b82f9b7aa25e0a0ceae1a243365da5c51a7 + checksum: 10c0/2805a43a1c4bcf9ebf6e018268d87b32b32b06fbbc1f9282573583acc155860dc361500f89c73bfbb157caa1b4ac78059eac0ef15d1811eb0ca75e0bdadbc9d2 languageName: node linkType: hard @@ -40393,9 +40146,9 @@ __metadata: linkType: hard "spdx-license-ids@npm:^3.0.0": - version: 3.0.20 - resolution: "spdx-license-ids@npm:3.0.20" - checksum: 10c0/bdff7534fad6ef59be49becda1edc3fb7f5b3d6f296a715516ab9d972b8ad59af2c34b2003e01db8970d4c673d185ff696ba74c6b61d3bf327e2b3eac22c297c + version: 3.0.22 + resolution: "spdx-license-ids@npm:3.0.22" + checksum: 10c0/4a85e44c2ccfc06eebe63239193f526508ebec1abc7cf7bca8ee43923755636234395447c2c87f40fb672cf580a9c8e684513a676bfb2da3d38a4983684bbb38 languageName: node linkType: hard @@ -40424,13 +40177,6 @@ __metadata: languageName: node linkType: hard -"sprintf-js@npm:^1.1.3": - version: 1.1.3 - resolution: "sprintf-js@npm:1.1.3" - checksum: 10c0/09270dc4f30d479e666aee820eacd9e464215cdff53848b443964202bf4051490538e5dd1b42e1a65cf7296916ca17640aebf63dae9812749c7542ee5f288dec - languageName: node - linkType: hard - "sprintf-js@npm:~1.0.2": version: 1.0.3 resolution: "sprintf-js@npm:1.0.3" @@ -40468,6 +40214,15 @@ __metadata: languageName: node linkType: hard +"ssri@npm:^13.0.0": + version: 13.0.0 + resolution: "ssri@npm:13.0.0" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/405f3a531cd98b013cecb355d63555dca42fd12c7bc6671738aaa9a82882ff41cdf0ef9a2b734ca4f9a760338f114c29d01d9238a65db3ccac27929bd6e6d4b2 + languageName: node + linkType: hard + "ssri@npm:^9.0.0, ssri@npm:^9.0.1": version: 9.0.1 resolution: "ssri@npm:9.0.1" @@ -40508,9 +40263,9 @@ __metadata: linkType: hard "std-env@npm:^3.9.0": - version: 3.9.0 - resolution: "std-env@npm:3.9.0" - checksum: 10c0/4a6f9218aef3f41046c3c7ecf1f98df00b30a07f4f35c6d47b28329bc2531eef820828951c7d7b39a1c5eb19ad8a46e3ddfc7deb28f0a2f3ceebee11bab7ba50 + version: 3.10.0 + resolution: "std-env@npm:3.10.0" + checksum: 10c0/1814927a45004d36dde6707eaf17552a546769bc79a6421be2c16ce77d238158dfe5de30910b78ec30d95135cc1c59ea73ee22d2ca170f8b9753f84da34c427f languageName: node linkType: hard @@ -40625,11 +40380,11 @@ __metadata: linkType: hard "strip-ansi@npm:^7.0.1": - version: 7.1.0 - resolution: "strip-ansi@npm:7.1.0" + version: 7.1.2 + resolution: "strip-ansi@npm:7.1.2" dependencies: ansi-regex: "npm:^6.0.1" - checksum: 10c0/a198c3762e8832505328cbf9e8c8381de14a4fa50a4f9b2160138158ea88c0f5549fb50cb13c651c3088f47e63a108b34622ec18c0499b6c8c3a5ddf6b305ac4 + checksum: 10c0/0d6d7a023de33368fd042aab0bf48f4f4077abdfd60e5393e73c7c411e85e1b3a83507c11af2e656188511475776215df9ca589b4da2295c9455cc399ce1858b languageName: node linkType: hard @@ -40671,11 +40426,11 @@ __metadata: linkType: hard "strip-literal@npm:^3.0.0": - version: 3.0.0 - resolution: "strip-literal@npm:3.0.0" + version: 3.1.0 + resolution: "strip-literal@npm:3.1.0" dependencies: js-tokens: "npm:^9.0.1" - checksum: 10c0/d81657f84aba42d4bbaf2a677f7e7f34c1f3de5a6726db8bc1797f9c0b303ba54d4660383a74bde43df401cf37cce1dff2c842c55b077a4ceee11f9e31fba828 + checksum: 10c0/50918f669915d9ad0fe4b7599902b735f853f2201c97791ead00104a654259c0c61bc2bc8fa3db05109339b61f4cf09e47b94ecc874ffbd0e013965223893af8 languageName: node linkType: hard @@ -40734,9 +40489,9 @@ __metadata: linkType: hard "tapable@npm:^2.1.1, tapable@npm:^2.2.0": - version: 2.2.1 - resolution: "tapable@npm:2.2.1" - checksum: 10c0/bc40e6efe1e554d075469cedaba69a30eeb373552aaf41caeaaa45bf56ffacc2674261b106245bd566b35d8f3329b52d838e851ee0a852120acae26e622925c9 + version: 2.3.0 + resolution: "tapable@npm:2.3.0" + checksum: 10c0/cb9d67cc2c6a74dedc812ef3085d9d681edd2c1fa18e4aef57a3c0605fdbe44e6b8ea00bd9ef21bc74dd45314e39d31227aa031ebf2f5e38164df514136f2681 languageName: node linkType: hard @@ -40767,17 +40522,16 @@ __metadata: languageName: node linkType: hard -"tar@npm:^7.4.3": - version: 7.4.3 - resolution: "tar@npm:7.4.3" +"tar@npm:^7.5.2": + version: 7.5.2 + resolution: "tar@npm:7.5.2" dependencies: "@isaacs/fs-minipass": "npm:^4.0.0" chownr: "npm:^3.0.0" minipass: "npm:^7.1.2" - minizlib: "npm:^3.0.1" - mkdirp: "npm:^3.0.1" + minizlib: "npm:^3.1.0" yallist: "npm:^5.0.0" - checksum: 10c0/d4679609bb2a9b48eeaf84632b6d844128d2412b95b6de07d53d8ee8baf4ca0857c9331dfa510390a0727b550fd543d4d1a10995ad86cdf078423fbb8d99831d + checksum: 10c0/a7d8b801139b52f93a7e34830db0de54c5aa45487c7cb551f6f3d44a112c67f1cb8ffdae856b05fd4f17b1749911f1c26f1e3a23bbe0279e17fd96077f13f467 languageName: node linkType: hard @@ -40811,16 +40565,16 @@ __metadata: linkType: hard "terser@npm:^5.31.1": - version: 5.37.0 - resolution: "terser@npm:5.37.0" + version: 5.44.1 + resolution: "terser@npm:5.44.1" dependencies: "@jridgewell/source-map": "npm:^0.3.3" - acorn: "npm:^8.8.2" + acorn: "npm:^8.15.0" commander: "npm:^2.20.0" source-map-support: "npm:~0.5.20" bin: terser: bin/terser - checksum: 10c0/ff0dc79b0a0da821e7f5bf7a047eab6d04e70e88b62339a0f1d71117db3310e255f5c00738fa3b391f56c3571f800a00047720261ba04ced0241c1f9922199f4 + checksum: 10c0/ee7a76692cb39b1ed22c30ff366c33ff3c977d9bb769575338ff5664676168fcba59192fb5168ef80c7cd901ef5411a1b0351261f5eaa50decf0fc71f63bde75 languageName: node linkType: hard @@ -40885,7 +40639,7 @@ __metadata: languageName: node linkType: hard -"through2-filter@npm:^3.0.0": +"through2-filter@npm:3.0.0": version: 3.0.0 resolution: "through2-filter@npm:3.0.0" dependencies: @@ -40935,17 +40689,7 @@ __metadata: languageName: node linkType: hard -"tinyglobby@npm:^0.2.14": - version: 0.2.14 - resolution: "tinyglobby@npm:0.2.14" - dependencies: - fdir: "npm:^6.4.4" - picomatch: "npm:^4.0.2" - checksum: 10c0/f789ed6c924287a9b7d3612056ed0cda67306cd2c80c249fd280cf1504742b12583a2089b61f4abbd24605f390809017240e250241f09938054c9b363e51c0a6 - languageName: node - linkType: hard - -"tinyglobby@npm:^0.2.15": +"tinyglobby@npm:^0.2.12, tinyglobby@npm:^0.2.14, tinyglobby@npm:^0.2.15": version: 0.2.15 resolution: "tinyglobby@npm:0.2.15" dependencies: @@ -40970,25 +40714,16 @@ __metadata: linkType: hard "tinyspy@npm:^4.0.3": - version: 4.0.3 - resolution: "tinyspy@npm:4.0.3" - checksum: 10c0/0a92a18b5350945cc8a1da3a22c9ad9f4e2945df80aaa0c43e1b3a3cfb64d8501e607ebf0305e048e3c3d3e0e7f8eb10cea27dc17c21effb73e66c4a3be36373 - languageName: node - linkType: hard - -"tmp@npm:^0.0.33": - version: 0.0.33 - resolution: "tmp@npm:0.0.33" - dependencies: - os-tmpdir: "npm:~1.0.2" - checksum: 10c0/69863947b8c29cabad43fe0ce65cec5bb4b481d15d4b4b21e036b060b3edbf3bc7a5541de1bacb437bb3f7c4538f669752627fdf9b4aaf034cebd172ba373408 + version: 4.0.4 + resolution: "tinyspy@npm:4.0.4" + checksum: 10c0/a8020fc17799251e06a8398dcc352601d2770aa91c556b9531ecd7a12581161fd1c14e81cbdaff0c1306c93bfdde8ff6d1c1a3f9bbe6d91604f0fd4e01e2f1eb languageName: node linkType: hard "tmp@npm:^0.2.1, tmp@npm:~0.2.1": - version: 0.2.3 - resolution: "tmp@npm:0.2.3" - checksum: 10c0/3e809d9c2f46817475b452725c2aaa5d11985cf18d32a7a970ff25b568438e2c076c2e8609224feef3b7923fa9749b74428e3e634f6b8e520c534eef2fd24125 + version: 0.2.5 + resolution: "tmp@npm:0.2.5" + checksum: 10c0/cee5bb7d674bb4ba3ab3f3841c2ca7e46daeb2109eec395c1ec7329a91d52fcb21032b79ac25161a37b2565c4858fefab927af9735926a113ef7bac9091a6e0e languageName: node linkType: hard @@ -41459,13 +41194,6 @@ __metadata: languageName: node linkType: hard -"undici-types@npm:~6.20.0": - version: 6.20.0 - resolution: "undici-types@npm:6.20.0" - checksum: 10c0/68e659a98898d6a836a9a59e6adf14a5d799707f5ea629433e025ac90d239f75e408e2e5ff086afc3cace26f8b26ee52155293564593fbb4a2f666af57fc59bf - languageName: node - linkType: hard - "undici-types@npm:~6.21.0": version: 6.21.0 resolution: "undici-types@npm:6.21.0" @@ -41473,6 +41201,13 @@ __metadata: languageName: node linkType: hard +"undici-types@npm:~7.16.0": + version: 7.16.0 + resolution: "undici-types@npm:7.16.0" + checksum: 10c0/3033e2f2b5c9f1504bdc5934646cb54e37ecaca0f9249c983f7b1fc2e87c6d18399ebb05dc7fd5419e02b2e915f734d872a65da2e3eeed1813951c427d33cc9a + languageName: node + linkType: hard + "unique-filename@npm:^2.0.0": version: 2.0.1 resolution: "unique-filename@npm:2.0.1" @@ -41510,12 +41245,12 @@ __metadata: linkType: hard "unique-stream@npm:^2.3.1": - version: 2.3.1 - resolution: "unique-stream@npm:2.3.1" + version: 2.4.0 + resolution: "unique-stream@npm:2.4.0" dependencies: json-stable-stringify-without-jsonify: "npm:^1.0.1" - through2-filter: "npm:^3.0.0" - checksum: 10c0/4827c5f249d1d760076d64e087d18618104ce5511112c85150b0dd76cea5ddd5a5fd143559597d07b519c2a19abd83f5cdaac3a30204d66cff63e986dd4cd18c + through2-filter: "npm:3.0.0" + checksum: 10c0/ac52c2e373d92f0c70bd7de58b666e7365558dba318e8b3bcb044c39389a08f5f9c949b0698a249110e9b133f2a93c1c52b761daee74516ed9a4ca1aa8281bb7 languageName: node linkType: hard @@ -41621,17 +41356,17 @@ __metadata: languageName: node linkType: hard -"update-browserslist-db@npm:^1.1.1": - version: 1.1.1 - resolution: "update-browserslist-db@npm:1.1.1" +"update-browserslist-db@npm:^1.1.4": + version: 1.1.4 + resolution: "update-browserslist-db@npm:1.1.4" dependencies: escalade: "npm:^3.2.0" - picocolors: "npm:^1.1.0" + picocolors: "npm:^1.1.1" peerDependencies: browserslist: ">= 4.21.0" bin: update-browserslist-db: cli.js - checksum: 10c0/536a2979adda2b4be81b07e311bd2f3ad5e978690987956bc5f514130ad50cac87cd22c710b686d79731e00fbee8ef43efe5fcd72baa241045209195d43dcc80 + checksum: 10c0/db0c9aaecf1258a6acda5e937fc27a7996ccca7a7580a1b4aa8bba6a9b0e283e5e65c49ebbd74ec29288ef083f1b88d4da13e3d4d326c1e5fc55bf72d7390702 languageName: node linkType: hard @@ -41886,64 +41621,9 @@ __metadata: languageName: node linkType: hard -"vite@npm:^5.0.0 || ^6.0.0 || ^7.0.0-0": - version: 7.1.3 - resolution: "vite@npm:7.1.3" - dependencies: - esbuild: "npm:^0.25.0" - fdir: "npm:^6.5.0" - fsevents: "npm:~2.3.3" - picomatch: "npm:^4.0.3" - postcss: "npm:^8.5.6" - rollup: "npm:^4.43.0" - tinyglobby: "npm:^0.2.14" - peerDependencies: - "@types/node": ^20.19.0 || >=22.12.0 - jiti: ">=1.21.0" - less: ^4.0.0 - lightningcss: ^1.21.0 - sass: ^1.70.0 - sass-embedded: ^1.70.0 - stylus: ">=0.54.8" - sugarss: ^5.0.0 - terser: ^5.16.0 - tsx: ^4.8.1 - yaml: ^2.4.2 - dependenciesMeta: - fsevents: - optional: true - peerDependenciesMeta: - "@types/node": - optional: true - jiti: - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - tsx: - optional: true - yaml: - optional: true - bin: - vite: bin/vite.js - checksum: 10c0/a0aa418beab80673dc9a3e9d1fa49472955d6ef9d41a4c9c6bd402953f411346f612864dae267adfb2bb8ceeb894482369316ffae5816c84fd45990e352b727d - languageName: node - linkType: hard - -"vite@npm:^7.1.11": - version: 7.1.11 - resolution: "vite@npm:7.1.11" +"vite@npm:^5.0.0 || ^6.0.0 || ^7.0.0-0, vite@npm:^7.1.11": + version: 7.2.2 + resolution: "vite@npm:7.2.2" dependencies: esbuild: "npm:^0.25.0" fdir: "npm:^6.5.0" @@ -41992,7 +41672,7 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: 10c0/c4aa7f47b1fb07f734ed6f4f605d73e5acf7ff9754d75b4adbfbdddf0e520413019834620c1f7b4a207bce7e1d20a2636c584db2b1b17f5a3ba2cd23d47e50ab + checksum: 10c0/9c76ee441f8dbec645ddaecc28d1f9cf35670ffa91cff69af7b1d5081545331603f0b1289d437b2fa8dc43cdc77b4d96b5bd9c9aed66310f490cb1a06f9c814c languageName: node linkType: hard @@ -42244,14 +41924,14 @@ __metadata: languageName: node linkType: hard -"which@npm:^5.0.0": - version: 5.0.0 - resolution: "which@npm:5.0.0" +"which@npm:^6.0.0": + version: 6.0.0 + resolution: "which@npm:6.0.0" dependencies: isexe: "npm:^3.1.1" bin: node-which: bin/which.js - checksum: 10c0/e556e4cd8b7dbf5df52408c9a9dd5ac6518c8c5267c8953f5b0564073c66ed5bf9503b14d876d0e9c7844d4db9725fb0dcf45d6e911e17e26ab363dc3965ae7b + checksum: 10c0/fe9d6463fe44a76232bb6e3b3181922c87510a5b250a98f1e43a69c99c079b3f42ddeca7e03d3e5f2241bf2d334f5a7657cfa868b97c109f3870625842f4cc15 languageName: node linkType: hard @@ -42420,8 +42100,8 @@ __metadata: linkType: hard "ws@npm:*": - version: 8.18.0 - resolution: "ws@npm:8.18.0" + version: 8.18.3 + resolution: "ws@npm:8.18.3" peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ">=5.0.2" @@ -42430,7 +42110,7 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: 10c0/25eb33aff17edcb90721ed6b0eb250976328533ad3cd1a28a274bd263682e7296a6591ff1436d6cbc50fa67463158b062f9d1122013b361cec99a05f84680e06 + checksum: 10c0/eac918213de265ef7cb3d4ca348b891a51a520d839aa51cdb8ca93d4fa7ff9f6ccb339ccee89e4075324097f0a55157c89fa3f7147bde9d8d7e90335dc087b53 languageName: node linkType: hard From 1dc06d1d8260d355cf0cdfc7cc73571abf28a9cb Mon Sep 17 00:00:00 2001 From: smilkuri Date: Wed, 19 Nov 2025 18:17:42 +0000 Subject: [PATCH 2/3] chore(nested-clients): update nested clients package --- .../credential-provider-node/package.json | 1 - .../src/submodules/signin/Signin.ts | 35 ++- .../src/submodules/signin/SigninClient.ts | 20 +- .../signin/auth/httpAuthSchemeProvider.ts | 10 + .../commands/CreateOAuth2TokenCommand.ts | 172 +++++++++++++ .../src/submodules/signin/commands/index.ts | 2 +- .../src/submodules/signin/index.ts | 11 +- .../src/submodules/signin/models/enums.ts | 35 +++ .../src/submodules/signin/models/errors.ts | 144 +++++++++++ .../src/submodules/signin/models/index.ts | 2 - .../src/submodules/signin/models/models_0.ts | 158 ++++++++++++ .../signin/runtimeConfig.browser.ts | 2 + .../submodules/signin/runtimeConfig.shared.ts | 7 + .../src/submodules/signin/runtimeConfig.ts | 2 + .../submodules/signin/schemas/schemas_0.ts | 235 +++++++++++++++++- .../submodules/sso-oidc/schemas/schemas_0.ts | 84 +++---- .../src/submodules/sts/schemas/schemas_0.ts | 118 ++++----- .../nested-clients/generate-nested-clients.js | 2 +- 18 files changed, 912 insertions(+), 128 deletions(-) create mode 100644 packages/nested-clients/src/submodules/signin/commands/CreateOAuth2TokenCommand.ts create mode 100644 packages/nested-clients/src/submodules/signin/models/enums.ts create mode 100644 packages/nested-clients/src/submodules/signin/models/errors.ts delete mode 100644 packages/nested-clients/src/submodules/signin/models/index.ts create mode 100644 packages/nested-clients/src/submodules/signin/models/models_0.ts diff --git a/packages/credential-provider-node/package.json b/packages/credential-provider-node/package.json index 791fd032eab84..e147cf02a27e6 100644 --- a/packages/credential-provider-node/package.json +++ b/packages/credential-provider-node/package.json @@ -34,7 +34,6 @@ "@aws-sdk/credential-provider-env": "*", "@aws-sdk/credential-provider-http": "*", "@aws-sdk/credential-provider-ini": "*", - "@aws-sdk/credential-provider-login": "*", "@aws-sdk/credential-provider-process": "*", "@aws-sdk/credential-provider-sso": "*", "@aws-sdk/credential-provider-web-identity": "*", diff --git a/packages/nested-clients/src/submodules/signin/Signin.ts b/packages/nested-clients/src/submodules/signin/Signin.ts index 174533a89c3b5..831fe1142aaab 100644 --- a/packages/nested-clients/src/submodules/signin/Signin.ts +++ b/packages/nested-clients/src/submodules/signin/Signin.ts @@ -1,17 +1,40 @@ // smithy-typescript generated code import { createAggregatedClient } from "@smithy/smithy-client"; +import { HttpHandlerOptions as __HttpHandlerOptions } from "@smithy/types"; +import { + CreateOAuth2TokenCommand, + CreateOAuth2TokenCommandInput, + CreateOAuth2TokenCommandOutput, +} from "./commands/CreateOAuth2TokenCommand"; import { SigninClient, SigninClientConfig } from "./SigninClient"; -const commands = {}; +const commands = { + CreateOAuth2TokenCommand, +}; -export interface Signin {} +export interface Signin { + /** + * @see {@link CreateOAuth2TokenCommand} + */ + createOAuth2Token( + args: CreateOAuth2TokenCommandInput, + options?: __HttpHandlerOptions + ): Promise; + createOAuth2Token( + args: CreateOAuth2TokenCommandInput, + cb: (err: any, data?: CreateOAuth2TokenCommandOutput) => void + ): void; + createOAuth2Token( + args: CreateOAuth2TokenCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: CreateOAuth2TokenCommandOutput) => void + ): void; +} /** - * AWS Sign-In Data Plane Service - * - * This service implements OAuth 2.0 flows for AWS CLI authentication, - * providing secure token exchange and refresh capabilities. + * AWS Sign-In manages authentication for AWS services. This service provides + * secure authentication flows for accessing AWS resources from the console and developer tools. * @public */ export class Signin extends SigninClient implements Signin {} diff --git a/packages/nested-clients/src/submodules/signin/SigninClient.ts b/packages/nested-clients/src/submodules/signin/SigninClient.ts index 8738508e15a71..e5af0f66241d8 100644 --- a/packages/nested-clients/src/submodules/signin/SigninClient.ts +++ b/packages/nested-clients/src/submodules/signin/SigninClient.ts @@ -31,6 +31,7 @@ import { SmithyResolvedConfiguration as __SmithyResolvedConfiguration, } from "@smithy/smithy-client"; import { + AwsCredentialIdentityProvider, BodyLengthCalculator as __BodyLengthCalculator, CheckOptionalClientConfig as __CheckOptionalClientConfig, ChecksumConstructor as __ChecksumConstructor, @@ -43,7 +44,6 @@ import { HttpRequest, HttpResponse, Logger as __Logger, - MetadataBearer as __MetadataBearer, Provider as __Provider, Provider, StreamCollector as __StreamCollector, @@ -57,6 +57,7 @@ import { HttpAuthSchemeResolvedConfig, resolveHttpAuthSchemeConfig, } from "./auth/httpAuthSchemeProvider"; +import { CreateOAuth2TokenCommandInput, CreateOAuth2TokenCommandOutput } from "./commands/CreateOAuth2TokenCommand"; import { ClientInputEndpointParameters, ClientResolvedEndpointParameters, @@ -71,12 +72,12 @@ export { __Client }; /** * @public */ -export type ServiceInputTypes = {}; +export type ServiceInputTypes = CreateOAuth2TokenCommandInput; /** * @public */ -export type ServiceOutputTypes = __MetadataBearer; +export type ServiceOutputTypes = CreateOAuth2TokenCommandOutput; /** * @public @@ -194,6 +195,13 @@ export interface ClientDefaults extends Partial<__SmithyConfiguration<__HttpHand */ defaultUserAgentProvider?: Provider<__UserAgent>; + /** + * Default credentials provider; Not available in browser runtime. + * @deprecated + * @internal + */ + credentialDefaultProvider?: (input: any) => AwsCredentialIdentityProvider; + /** * Value for how many times a request will be made at most in case of retry. */ @@ -272,10 +280,8 @@ export type SigninClientResolvedConfigType = __SmithyResolvedConfiguration<__Htt export interface SigninClientResolvedConfig extends SigninClientResolvedConfigType {} /** - * AWS Sign-In Data Plane Service - * - * This service implements OAuth 2.0 flows for AWS CLI authentication, - * providing secure token exchange and refresh capabilities. + * AWS Sign-In manages authentication for AWS services. This service provides + * secure authentication flows for accessing AWS resources from the console and developer tools. * @public */ export class SigninClient extends __Client< diff --git a/packages/nested-clients/src/submodules/signin/auth/httpAuthSchemeProvider.ts b/packages/nested-clients/src/submodules/signin/auth/httpAuthSchemeProvider.ts index a403d144c5709..7d5ca3de36a10 100644 --- a/packages/nested-clients/src/submodules/signin/auth/httpAuthSchemeProvider.ts +++ b/packages/nested-clients/src/submodules/signin/auth/httpAuthSchemeProvider.ts @@ -73,6 +73,12 @@ function createAwsAuthSigv4HttpAuthOption(authParameters: SigninHttpAuthSchemePa }; } +function createSmithyApiNoAuthHttpAuthOption(authParameters: SigninHttpAuthSchemeParameters): HttpAuthOption { + return { + schemeId: "smithy.api#noAuth", + }; +} + /** * @internal */ @@ -84,6 +90,10 @@ export interface SigninHttpAuthSchemeProvider extends HttpAuthSchemeProvider { const options: HttpAuthOption[] = []; switch (authParameters.operation) { + case "CreateOAuth2Token": { + options.push(createSmithyApiNoAuthHttpAuthOption(authParameters)); + break; + } default: { options.push(createAwsAuthSigv4HttpAuthOption(authParameters)); } diff --git a/packages/nested-clients/src/submodules/signin/commands/CreateOAuth2TokenCommand.ts b/packages/nested-clients/src/submodules/signin/commands/CreateOAuth2TokenCommand.ts new file mode 100644 index 0000000000000..42db762d7e40e --- /dev/null +++ b/packages/nested-clients/src/submodules/signin/commands/CreateOAuth2TokenCommand.ts @@ -0,0 +1,172 @@ +// smithy-typescript generated code +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; + +import { commonParams } from "../endpoint/EndpointParameters"; +import { CreateOAuth2TokenRequest, CreateOAuth2TokenResponse } from "../models/models_0"; +import { CreateOAuth2Token } from "../schemas/schemas_0"; +import { ServiceInputTypes, ServiceOutputTypes, SigninClientResolvedConfig } from "../SigninClient"; + +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link CreateOAuth2TokenCommand}. + */ +export interface CreateOAuth2TokenCommandInput extends CreateOAuth2TokenRequest {} +/** + * @public + * + * The output of {@link CreateOAuth2TokenCommand}. + */ +export interface CreateOAuth2TokenCommandOutput extends CreateOAuth2TokenResponse, __MetadataBearer {} + +/** + * CreateOAuth2Token API + * + * Path: /v1/token + * Request Method: POST + * Content-Type: application/json or application/x-www-form-urlencoded + * + * This API implements OAuth 2.0 flows for AWS Sign-In CLI clients, supporting both: + * 1. Authorization code redemption (grant_type=authorization_code) - NOT idempotent + * 2. Token refresh (grant_type=refresh_token) - Idempotent within token validity window + * + * The operation behavior is determined by the grant_type parameter in the request body: + * + * **Authorization Code Flow (NOT Idempotent):** + * - JSON or form-encoded body with client_id, grant_type=authorization_code, code, redirect_uri, code_verifier + * - Returns access_token, token_type, expires_in, refresh_token, and id_token + * - Each authorization code can only be used ONCE for security (prevents replay attacks) + * + * **Token Refresh Flow (Idempotent):** + * - JSON or form-encoded body with client_id, grant_type=refresh_token, refresh_token + * - Returns access_token, token_type, expires_in, and refresh_token (no id_token) + * - Multiple calls with same refresh_token return consistent results within validity window + * + * Authentication and authorization: + * - Confidential clients: sigv4 signing required with signin:ExchangeToken permissions + * - CLI clients (public): authn/authz skipped based on client_id & grant_type + * + * Note: This operation cannot be marked as @idempotent because it handles both idempotent + * (token refresh) and non-idempotent (auth code redemption) flows in a single endpoint. + * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { SigninClient, CreateOAuth2TokenCommand } from "@aws-sdk/client-signin"; // ES Modules import + * // const { SigninClient, CreateOAuth2TokenCommand } = require("@aws-sdk/client-signin"); // CommonJS import + * // import type { SigninClientConfig } from "@aws-sdk/client-signin"; + * const config = {}; // type is SigninClientConfig + * const client = new SigninClient(config); + * const input = { // CreateOAuth2TokenRequest + * tokenInput: { // CreateOAuth2TokenRequestBody + * clientId: "STRING_VALUE", // required + * grantType: "STRING_VALUE", // required + * code: "STRING_VALUE", + * redirectUri: "STRING_VALUE", + * codeVerifier: "STRING_VALUE", + * refreshToken: "STRING_VALUE", + * }, + * }; + * const command = new CreateOAuth2TokenCommand(input); + * const response = await client.send(command); + * // { // CreateOAuth2TokenResponse + * // tokenOutput: { // CreateOAuth2TokenResponseBody + * // accessToken: { // AccessToken + * // accessKeyId: "STRING_VALUE", // required + * // secretAccessKey: "STRING_VALUE", // required + * // sessionToken: "STRING_VALUE", // required + * // }, + * // tokenType: "STRING_VALUE", // required + * // expiresIn: Number("int"), // required + * // refreshToken: "STRING_VALUE", // required + * // idToken: "STRING_VALUE", + * // }, + * // }; + * + * ``` + * + * @param CreateOAuth2TokenCommandInput - {@link CreateOAuth2TokenCommandInput} + * @returns {@link CreateOAuth2TokenCommandOutput} + * @see {@link CreateOAuth2TokenCommandInput} for command's `input` shape. + * @see {@link CreateOAuth2TokenCommandOutput} for command's `response` shape. + * @see {@link SigninClientResolvedConfig | config} for SigninClient's `config` shape. + * + * @throws {@link AccessDeniedException} (client fault) + * Error thrown for access denied scenarios with flexible HTTP status mapping + * + * Runtime HTTP Status Code Mapping: + * - HTTP 401 (Unauthorized): TOKEN_EXPIRED, AUTHCODE_EXPIRED + * - HTTP 403 (Forbidden): USER_CREDENTIALS_CHANGED, INSUFFICIENT_PERMISSIONS + * + * The specific HTTP status code is determined at runtime based on the error enum value. + * Consumers should use the error field to determine the specific access denial reason. + * + * @throws {@link InternalServerException} (server fault) + * Error thrown when an internal server error occurs + * + * HTTP Status Code: 500 Internal Server Error + * + * Used for unexpected server-side errors that prevent request processing. + * + * @throws {@link TooManyRequestsError} (client fault) + * Error thrown when rate limit is exceeded + * + * HTTP Status Code: 429 Too Many Requests + * + * Possible OAuth2ErrorCode values: + * - INVALID_REQUEST: Rate limiting, too many requests, abuse prevention + * + * Possible causes: + * - Too many token requests from the same client + * - Rate limiting based on client_id or IP address + * - Abuse prevention mechanisms triggered + * - Service protection against excessive token generation + * + * @throws {@link ValidationException} (client fault) + * Error thrown when request validation fails + * + * HTTP Status Code: 400 Bad Request + * + * Used for request validation errors such as malformed parameters, + * missing required fields, or invalid parameter values. + * + * @throws {@link SigninServiceException} + *

Base exception class for all service exceptions from Signin service.

+ * + * + * @public + */ +export class CreateOAuth2TokenCommand extends $Command + .classBuilder< + CreateOAuth2TokenCommandInput, + CreateOAuth2TokenCommandOutput, + SigninClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >() + .ep(commonParams) + .m(function (this: any, Command: any, cs: any, config: SigninClientResolvedConfig, o: any) { + return [getEndpointPlugin(config, Command.getEndpointParameterInstructions())]; + }) + .s("Signin", "CreateOAuth2Token", {}) + .n("SigninClient", "CreateOAuth2TokenCommand") + .sc(CreateOAuth2Token) + .build() { + /** @internal type navigation helper, not in runtime. */ + protected declare static __types: { + api: { + input: CreateOAuth2TokenRequest; + output: CreateOAuth2TokenResponse; + }; + sdk: { + input: CreateOAuth2TokenCommandInput; + output: CreateOAuth2TokenCommandOutput; + }; + }; +} diff --git a/packages/nested-clients/src/submodules/signin/commands/index.ts b/packages/nested-clients/src/submodules/signin/commands/index.ts index 0f0fc226e26c2..954eb6d2090b9 100644 --- a/packages/nested-clients/src/submodules/signin/commands/index.ts +++ b/packages/nested-clients/src/submodules/signin/commands/index.ts @@ -1,2 +1,2 @@ // smithy-typescript generated code -export {}; +export * from "./CreateOAuth2TokenCommand"; diff --git a/packages/nested-clients/src/submodules/signin/index.ts b/packages/nested-clients/src/submodules/signin/index.ts index 6a493dc9e820a..22fd9312a7e43 100644 --- a/packages/nested-clients/src/submodules/signin/index.ts +++ b/packages/nested-clients/src/submodules/signin/index.ts @@ -1,10 +1,8 @@ // smithy-typescript generated code /* eslint-disable */ /** - * AWS Sign-In Data Plane Service - * - * This service implements OAuth 2.0 flows for AWS CLI authentication, - * providing secure token exchange and refresh capabilities. + * AWS Sign-In manages authentication for AWS services. This service provides + * secure authentication flows for accessing AWS resources from the console and developer tools. * * @packageDocumentation */ @@ -14,6 +12,9 @@ export { ClientInputEndpointParameters } from "./endpoint/EndpointParameters"; export type { RuntimeExtension } from "./runtimeExtensions"; export type { SigninExtensionConfiguration } from "./extensionConfiguration"; export * from "./commands"; -export * from "./models"; + +export * from "./models/enums"; +export * from "./models/errors"; +export type * from "./models/models_0"; export { SigninServiceException } from "./models/SigninServiceException"; diff --git a/packages/nested-clients/src/submodules/signin/models/enums.ts b/packages/nested-clients/src/submodules/signin/models/enums.ts new file mode 100644 index 0000000000000..07cf26fe864b1 --- /dev/null +++ b/packages/nested-clients/src/submodules/signin/models/enums.ts @@ -0,0 +1,35 @@ +// smithy-typescript generated code +/** + * @public + * @enum + */ +export const OAuth2ErrorCode = { + /** + * Authorization code has expired + */ + AUTHCODE_EXPIRED: "AUTHCODE_EXPIRED", + /** + * Insufficient permissions to perform this operation + */ + INSUFFICIENT_PERMISSIONS: "INSUFFICIENT_PERMISSIONS", + /** + * The request is missing a required parameter, includes an invalid parameter value, or is otherwise malformed + */ + INVALID_REQUEST: "INVALID_REQUEST", + /** + * Internal server error occurred + */ + SERVER_ERROR: "server_error", + /** + * Token has expired and needs to be refreshed + */ + TOKEN_EXPIRED: "TOKEN_EXPIRED", + /** + * User credentials have been changed + */ + USER_CREDENTIALS_CHANGED: "USER_CREDENTIALS_CHANGED", +} as const; +/** + * @public + */ +export type OAuth2ErrorCode = (typeof OAuth2ErrorCode)[keyof typeof OAuth2ErrorCode]; diff --git a/packages/nested-clients/src/submodules/signin/models/errors.ts b/packages/nested-clients/src/submodules/signin/models/errors.ts new file mode 100644 index 0000000000000..0fed14cad4077 --- /dev/null +++ b/packages/nested-clients/src/submodules/signin/models/errors.ts @@ -0,0 +1,144 @@ +// smithy-typescript generated code +import { ExceptionOptionType as __ExceptionOptionType } from "@smithy/smithy-client"; + +import { OAuth2ErrorCode } from "./enums"; +import { SigninServiceException as __BaseException } from "./SigninServiceException"; + +/** + * Error thrown for access denied scenarios with flexible HTTP status mapping + * + * Runtime HTTP Status Code Mapping: + * - HTTP 401 (Unauthorized): TOKEN_EXPIRED, AUTHCODE_EXPIRED + * - HTTP 403 (Forbidden): USER_CREDENTIALS_CHANGED, INSUFFICIENT_PERMISSIONS + * + * The specific HTTP status code is determined at runtime based on the error enum value. + * Consumers should use the error field to determine the specific access denial reason. + * @public + */ +export class AccessDeniedException extends __BaseException { + readonly name = "AccessDeniedException" as const; + readonly $fault = "client" as const; + /** + * OAuth 2.0 error code indicating the specific type of access denial + * Can be TOKEN_EXPIRED, AUTHCODE_EXPIRED, USER_CREDENTIALS_CHANGED, or INSUFFICIENT_PERMISSIONS + * @public + */ + error: OAuth2ErrorCode | undefined; + + /** + * @internal + */ + constructor(opts: __ExceptionOptionType) { + super({ + name: "AccessDeniedException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, AccessDeniedException.prototype); + this.error = opts.error; + } +} + +/** + * Error thrown when an internal server error occurs + * + * HTTP Status Code: 500 Internal Server Error + * + * Used for unexpected server-side errors that prevent request processing. + * @public + */ +export class InternalServerException extends __BaseException { + readonly name = "InternalServerException" as const; + readonly $fault = "server" as const; + /** + * OAuth 2.0 error code indicating server error + * Will be SERVER_ERROR for internal server errors + * @public + */ + error: OAuth2ErrorCode | undefined; + + /** + * @internal + */ + constructor(opts: __ExceptionOptionType) { + super({ + name: "InternalServerException", + $fault: "server", + ...opts, + }); + Object.setPrototypeOf(this, InternalServerException.prototype); + this.error = opts.error; + } +} + +/** + * Error thrown when rate limit is exceeded + * + * HTTP Status Code: 429 Too Many Requests + * + * Possible OAuth2ErrorCode values: + * - INVALID_REQUEST: Rate limiting, too many requests, abuse prevention + * + * Possible causes: + * - Too many token requests from the same client + * - Rate limiting based on client_id or IP address + * - Abuse prevention mechanisms triggered + * - Service protection against excessive token generation + * @public + */ +export class TooManyRequestsError extends __BaseException { + readonly name = "TooManyRequestsError" as const; + readonly $fault = "client" as const; + /** + * OAuth 2.0 error code indicating the specific type of error + * Will be INVALID_REQUEST for rate limiting scenarios + * @public + */ + error: OAuth2ErrorCode | undefined; + + /** + * @internal + */ + constructor(opts: __ExceptionOptionType) { + super({ + name: "TooManyRequestsError", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, TooManyRequestsError.prototype); + this.error = opts.error; + } +} + +/** + * Error thrown when request validation fails + * + * HTTP Status Code: 400 Bad Request + * + * Used for request validation errors such as malformed parameters, + * missing required fields, or invalid parameter values. + * @public + */ +export class ValidationException extends __BaseException { + readonly name = "ValidationException" as const; + readonly $fault = "client" as const; + /** + * OAuth 2.0 error code indicating validation failure + * Will be INVALID_REQUEST for validation errors + * @public + */ + error: OAuth2ErrorCode | undefined; + + /** + * @internal + */ + constructor(opts: __ExceptionOptionType) { + super({ + name: "ValidationException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, ValidationException.prototype); + this.error = opts.error; + } +} diff --git a/packages/nested-clients/src/submodules/signin/models/index.ts b/packages/nested-clients/src/submodules/signin/models/index.ts deleted file mode 100644 index 0f0fc226e26c2..0000000000000 --- a/packages/nested-clients/src/submodules/signin/models/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -// smithy-typescript generated code -export {}; diff --git a/packages/nested-clients/src/submodules/signin/models/models_0.ts b/packages/nested-clients/src/submodules/signin/models/models_0.ts new file mode 100644 index 0000000000000..2b7b6c5e2792c --- /dev/null +++ b/packages/nested-clients/src/submodules/signin/models/models_0.ts @@ -0,0 +1,158 @@ +// smithy-typescript generated code +/** + * AWS credentials structure containing temporary access credentials + * + * The scoped-down, 15 minute duration AWS credentials. + * Scoping down will be based on CLI policy (CLI team needs to create it). + * Similar to cloud shell implementation. + * @public + */ +export interface AccessToken { + /** + * AWS access key ID for temporary credentials + * @public + */ + accessKeyId: string | undefined; + + /** + * AWS secret access key for temporary credentials + * @public + */ + secretAccessKey: string | undefined; + + /** + * AWS session token for temporary credentials + * @public + */ + sessionToken: string | undefined; +} + +/** + * Request body payload for CreateOAuth2Token operation + * + * The operation type is determined by the grant_type parameter: + * - grant_type=authorization_code: Requires code, redirect_uri, code_verifier + * - grant_type=refresh_token: Requires refresh_token + * @public + */ +export interface CreateOAuth2TokenRequestBody { + /** + * The client identifier (ARN) used during Sign-In onboarding + * Required for both authorization code and refresh token flows + * @public + */ + clientId: string | undefined; + + /** + * OAuth 2.0 grant type - determines which flow is used + * Must be "authorization_code" or "refresh_token" + * @public + */ + grantType: string | undefined; + + /** + * The authorization code received from /v1/authorize + * Required only when grant_type=authorization_code + * @public + */ + code?: string | undefined; + + /** + * The redirect URI that must match the original authorization request + * Required only when grant_type=authorization_code + * @public + */ + redirectUri?: string | undefined; + + /** + * PKCE code verifier to prove possession of the original code challenge + * Required only when grant_type=authorization_code + * @public + */ + codeVerifier?: string | undefined; + + /** + * The refresh token returned from auth_code redemption + * Required only when grant_type=refresh_token + * @public + */ + refreshToken?: string | undefined; +} + +/** + * Input structure for CreateOAuth2Token operation + * + * Contains flattened token operation inputs for both authorization code and refresh token flows. + * The operation type is determined by the grant_type parameter in the request body. + * @public + */ +export interface CreateOAuth2TokenRequest { + /** + * Flattened token operation inputs + * The specific operation is determined by grant_type in the request body + * @public + */ + tokenInput: CreateOAuth2TokenRequestBody | undefined; +} + +/** + * Response body payload for CreateOAuth2Token operation + * + * The response content depends on the grant_type from the request: + * - grant_type=authorization_code: Returns all fields including refresh_token and id_token + * - grant_type=refresh_token: Returns access_token, token_type, expires_in, refresh_token (no id_token) + * @public + */ +export interface CreateOAuth2TokenResponseBody { + /** + * Scoped-down AWS credentials (15 minute duration) + * Present for both authorization code redemption and token refresh + * @public + */ + accessToken: AccessToken | undefined; + + /** + * Token type indicating this is AWS SigV4 credentials + * Value is "aws_sigv4" for both flows + * @public + */ + tokenType: string | undefined; + + /** + * Time to expiry in seconds (maximum 900) + * Present for both authorization code redemption and token refresh + * @public + */ + expiresIn: number | undefined; + + /** + * Encrypted refresh token with cnf.jkt (SHA-256 thumbprint of presented jwk) + * Always present in responses (required for both flows) + * @public + */ + refreshToken: string | undefined; + + /** + * ID token containing user identity information + * Present only in authorization code redemption response (grant_type=authorization_code) + * Not included in token refresh responses + * @public + */ + idToken?: string | undefined; +} + +/** + * Output structure for CreateOAuth2Token operation + * + * Contains flattened token operation outputs for both authorization code and refresh token flows. + * The response content depends on the grant_type from the original request. + * @public + */ +export interface CreateOAuth2TokenResponse { + /** + * Flattened token operation outputs + * The specific response fields depend on the grant_type used in the request + * @public + */ + tokenOutput: CreateOAuth2TokenResponseBody | undefined; +} diff --git a/packages/nested-clients/src/submodules/signin/runtimeConfig.browser.ts b/packages/nested-clients/src/submodules/signin/runtimeConfig.browser.ts index f9b6441416f71..88187ede9173a 100644 --- a/packages/nested-clients/src/submodules/signin/runtimeConfig.browser.ts +++ b/packages/nested-clients/src/submodules/signin/runtimeConfig.browser.ts @@ -27,6 +27,8 @@ export const getRuntimeConfig = (config: SigninClientConfig) => { runtime: "browser", defaultsMode, bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength, + credentialDefaultProvider: + config?.credentialDefaultProvider ?? ((_: unknown) => () => Promise.reject(new Error("Credential is missing"))), defaultUserAgentProvider: config?.defaultUserAgentProvider ?? createDefaultUserAgentProvider({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }), diff --git a/packages/nested-clients/src/submodules/signin/runtimeConfig.shared.ts b/packages/nested-clients/src/submodules/signin/runtimeConfig.shared.ts index 5ab7b3c45e4da..d4a465a9bef78 100644 --- a/packages/nested-clients/src/submodules/signin/runtimeConfig.shared.ts +++ b/packages/nested-clients/src/submodules/signin/runtimeConfig.shared.ts @@ -1,6 +1,7 @@ // smithy-typescript generated code import { AwsSdkSigV4Signer } from "@aws-sdk/core"; import { AwsRestJsonProtocol } from "@aws-sdk/core/protocols"; +import { NoAuthSigner } from "@smithy/core"; import { NoOpLogger } from "@smithy/smithy-client"; import { IdentityProviderConfig } from "@smithy/types"; import { parseUrl } from "@smithy/url-parser"; @@ -29,6 +30,12 @@ export const getRuntimeConfig = (config: SigninClientConfig) => { identityProvider: (ipc: IdentityProviderConfig) => ipc.getIdentityProvider("aws.auth#sigv4"), signer: new AwsSdkSigV4Signer(), }, + { + schemeId: "smithy.api#noAuth", + identityProvider: (ipc: IdentityProviderConfig) => + ipc.getIdentityProvider("smithy.api#noAuth") || (async () => ({})), + signer: new NoAuthSigner(), + }, ], logger: config?.logger ?? new NoOpLogger(), protocol: config?.protocol ?? new AwsRestJsonProtocol({ defaultNamespace: "com.amazonaws.signin" }), diff --git a/packages/nested-clients/src/submodules/signin/runtimeConfig.ts b/packages/nested-clients/src/submodules/signin/runtimeConfig.ts index 7ffbfbd2fc4b5..a1b8d545a04ea 100644 --- a/packages/nested-clients/src/submodules/signin/runtimeConfig.ts +++ b/packages/nested-clients/src/submodules/signin/runtimeConfig.ts @@ -3,6 +3,7 @@ import packageInfo from "../../../package.json"; // eslint-disable-line import { NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, emitWarningIfUnsupportedVersion as awsCheckVersion } from "@aws-sdk/core"; + import { NODE_APP_ID_CONFIG_OPTIONS, createDefaultUserAgentProvider } from "@aws-sdk/util-user-agent-node"; import { NODE_REGION_CONFIG_FILE_OPTIONS, @@ -43,6 +44,7 @@ export const getRuntimeConfig = (config: SigninClientConfig) => { authSchemePreference: config?.authSchemePreference ?? loadNodeConfig(NODE_AUTH_SCHEME_PREFERENCE_OPTIONS, loaderConfig), bodyLengthChecker: config?.bodyLengthChecker ?? calculateBodyLength, + defaultUserAgentProvider: config?.defaultUserAgentProvider ?? createDefaultUserAgentProvider({ serviceId: clientSharedValues.serviceId, clientVersion: packageInfo.version }), diff --git a/packages/nested-clients/src/submodules/signin/schemas/schemas_0.ts b/packages/nested-clients/src/submodules/signin/schemas/schemas_0.ts index e20cb3ed7c293..924325dd776cd 100644 --- a/packages/nested-clients/src/submodules/signin/schemas/schemas_0.ts +++ b/packages/nested-clients/src/submodules/signin/schemas/schemas_0.ts @@ -1,12 +1,239 @@ -export const _s = "smithy.ts.sdk.synthetic.com.amazonaws.signin"; +const _ADE = "AccessDeniedException"; +const _AT = "AccessToken"; +const _COAT = "CreateOAuth2Token"; +const _COATR = "CreateOAuth2TokenRequest"; +const _COATRB = "CreateOAuth2TokenRequestBody"; +const _COATRBr = "CreateOAuth2TokenResponseBody"; +const _COATRr = "CreateOAuth2TokenResponse"; +const _ISE = "InternalServerException"; +const _RT = "RefreshToken"; +const _TMRE = "TooManyRequestsError"; +const _VE = "ValidationException"; +const _aKI = "accessKeyId"; +const _aT = "accessToken"; +const _c = "client"; +const _cI = "clientId"; +const _cV = "codeVerifier"; +const _co = "code"; +const _e = "error"; +const _eI = "expiresIn"; +const _gT = "grantType"; +const _h = "http"; +const _hE = "httpError"; +const _iT = "idToken"; +const _jN = "jsonName"; +const _m = "message"; +const _rT = "refreshToken"; +const _rU = "redirectUri"; +const _s = "server"; +const _sAK = "secretAccessKey"; +const _sT = "sessionToken"; +const _sm = "smithy.ts.sdk.synthetic.com.amazonaws.signin"; +const _tI = "tokenInput"; +const _tO = "tokenOutput"; +const _tT = "tokenType"; +const n0 = "com.amazonaws.signin"; // smithy-typescript generated code import { TypeRegistry } from "@smithy/core/schema"; -import { StaticErrorSchema } from "@smithy/types"; +import { StaticErrorSchema, StaticOperationSchema, StaticSimpleSchema, StaticStructureSchema } from "@smithy/types"; +import { + AccessDeniedException as __AccessDeniedException, + InternalServerException as __InternalServerException, + TooManyRequestsError as __TooManyRequestsError, + ValidationException as __ValidationException, +} from "../models/errors"; import { SigninServiceException as __SigninServiceException } from "../models/SigninServiceException"; /* eslint no-var: 0 */ -export var SigninServiceException: StaticErrorSchema = [-3, _s, "SigninServiceException", 0, [], []]; -TypeRegistry.for(_s).registerError(SigninServiceException, __SigninServiceException); +export var RefreshToken: StaticSimpleSchema = [0, n0, _RT, 8, 0]; +export var AccessDeniedException: StaticErrorSchema = [ + -3, + n0, + _ADE, + { + [_e]: _c, + }, + [_e, _m], + [0, 0], +]; +TypeRegistry.for(n0).registerError(AccessDeniedException, __AccessDeniedException); + +export var AccessToken: StaticStructureSchema = [ + 3, + n0, + _AT, + 8, + [_aKI, _sAK, _sT], + [ + [ + 0, + { + [_jN]: _aKI, + }, + ], + [ + 0, + { + [_jN]: _sAK, + }, + ], + [ + 0, + { + [_jN]: _sT, + }, + ], + ], +]; +export var CreateOAuth2TokenRequest: StaticStructureSchema = [ + 3, + n0, + _COATR, + 0, + [_tI], + [[() => CreateOAuth2TokenRequestBody, 16]], +]; +export var CreateOAuth2TokenRequestBody: StaticStructureSchema = [ + 3, + n0, + _COATRB, + 0, + [_cI, _gT, _co, _rU, _cV, _rT], + [ + [ + 0, + { + [_jN]: _cI, + }, + ], + [ + 0, + { + [_jN]: _gT, + }, + ], + 0, + [ + 0, + { + [_jN]: _rU, + }, + ], + [ + 0, + { + [_jN]: _cV, + }, + ], + [ + () => RefreshToken, + { + [_jN]: _rT, + }, + ], + ], +]; +export var CreateOAuth2TokenResponse: StaticStructureSchema = [ + 3, + n0, + _COATRr, + 0, + [_tO], + [[() => CreateOAuth2TokenResponseBody, 16]], +]; +export var CreateOAuth2TokenResponseBody: StaticStructureSchema = [ + 3, + n0, + _COATRBr, + 0, + [_aT, _tT, _eI, _rT, _iT], + [ + [ + () => AccessToken, + { + [_jN]: _aT, + }, + ], + [ + 0, + { + [_jN]: _tT, + }, + ], + [ + 1, + { + [_jN]: _eI, + }, + ], + [ + () => RefreshToken, + { + [_jN]: _rT, + }, + ], + [ + 0, + { + [_jN]: _iT, + }, + ], + ], +]; +export var InternalServerException: StaticErrorSchema = [ + -3, + n0, + _ISE, + { + [_e]: _s, + [_hE]: 500, + }, + [_e, _m], + [0, 0], +]; +TypeRegistry.for(n0).registerError(InternalServerException, __InternalServerException); + +export var TooManyRequestsError: StaticErrorSchema = [ + -3, + n0, + _TMRE, + { + [_e]: _c, + [_hE]: 429, + }, + [_e, _m], + [0, 0], +]; +TypeRegistry.for(n0).registerError(TooManyRequestsError, __TooManyRequestsError); + +export var ValidationException: StaticErrorSchema = [ + -3, + n0, + _VE, + { + [_e]: _c, + [_hE]: 400, + }, + [_e, _m], + [0, 0], +]; +TypeRegistry.for(n0).registerError(ValidationException, __ValidationException); + +export var __Unit = "unit" as const; + +export var SigninServiceException: StaticErrorSchema = [-3, _sm, "SigninServiceException", 0, [], []]; +TypeRegistry.for(_sm).registerError(SigninServiceException, __SigninServiceException); + +export var CreateOAuth2Token: StaticOperationSchema = [ + 9, + n0, + _COAT, + { + [_h]: ["POST", "/v1/token", 200], + }, + () => CreateOAuth2TokenRequest, + () => CreateOAuth2TokenResponse, +]; diff --git a/packages/nested-clients/src/submodules/sso-oidc/schemas/schemas_0.ts b/packages/nested-clients/src/submodules/sso-oidc/schemas/schemas_0.ts index 1d9a83eb5ae50..52861ba97ab2a 100644 --- a/packages/nested-clients/src/submodules/sso-oidc/schemas/schemas_0.ts +++ b/packages/nested-clients/src/submodules/sso-oidc/schemas/schemas_0.ts @@ -1,44 +1,44 @@ -export const _ADE = "AccessDeniedException"; -export const _APE = "AuthorizationPendingException"; -export const _AT = "AccessToken"; -export const _CS = "ClientSecret"; -export const _CT = "CreateToken"; -export const _CTR = "CreateTokenRequest"; -export const _CTRr = "CreateTokenResponse"; -export const _CV = "CodeVerifier"; -export const _ETE = "ExpiredTokenException"; -export const _ICE = "InvalidClientException"; -export const _IGE = "InvalidGrantException"; -export const _IRE = "InvalidRequestException"; -export const _ISE = "InternalServerException"; -export const _ISEn = "InvalidScopeException"; -export const _IT = "IdToken"; -export const _RT = "RefreshToken"; -export const _SDE = "SlowDownException"; -export const _UCE = "UnauthorizedClientException"; -export const _UGTE = "UnsupportedGrantTypeException"; -export const _aT = "accessToken"; -export const _c = "client"; -export const _cI = "clientId"; -export const _cS = "clientSecret"; -export const _cV = "codeVerifier"; -export const _co = "code"; -export const _dC = "deviceCode"; -export const _e = "error"; -export const _eI = "expiresIn"; -export const _ed = "error_description"; -export const _gT = "grantType"; -export const _h = "http"; -export const _hE = "httpError"; -export const _iT = "idToken"; -export const _r = "reason"; -export const _rT = "refreshToken"; -export const _rU = "redirectUri"; -export const _s = "scope"; -export const _se = "server"; -export const _sm = "smithy.ts.sdk.synthetic.com.amazonaws.ssooidc"; -export const _tT = "tokenType"; -export const n0 = "com.amazonaws.ssooidc"; +const _ADE = "AccessDeniedException"; +const _APE = "AuthorizationPendingException"; +const _AT = "AccessToken"; +const _CS = "ClientSecret"; +const _CT = "CreateToken"; +const _CTR = "CreateTokenRequest"; +const _CTRr = "CreateTokenResponse"; +const _CV = "CodeVerifier"; +const _ETE = "ExpiredTokenException"; +const _ICE = "InvalidClientException"; +const _IGE = "InvalidGrantException"; +const _IRE = "InvalidRequestException"; +const _ISE = "InternalServerException"; +const _ISEn = "InvalidScopeException"; +const _IT = "IdToken"; +const _RT = "RefreshToken"; +const _SDE = "SlowDownException"; +const _UCE = "UnauthorizedClientException"; +const _UGTE = "UnsupportedGrantTypeException"; +const _aT = "accessToken"; +const _c = "client"; +const _cI = "clientId"; +const _cS = "clientSecret"; +const _cV = "codeVerifier"; +const _co = "code"; +const _dC = "deviceCode"; +const _e = "error"; +const _eI = "expiresIn"; +const _ed = "error_description"; +const _gT = "grantType"; +const _h = "http"; +const _hE = "httpError"; +const _iT = "idToken"; +const _r = "reason"; +const _rT = "refreshToken"; +const _rU = "redirectUri"; +const _s = "scope"; +const _se = "server"; +const _sm = "smithy.ts.sdk.synthetic.com.amazonaws.ssooidc"; +const _tT = "tokenType"; +const n0 = "com.amazonaws.ssooidc"; // smithy-typescript generated code import { TypeRegistry } from "@smithy/core/schema"; @@ -231,7 +231,7 @@ export var UnsupportedGrantTypeException: StaticErrorSchema = [ ]; TypeRegistry.for(n0).registerError(UnsupportedGrantTypeException, __UnsupportedGrantTypeException); -export var Unit = "unit" as const; +export var __Unit = "unit" as const; export var SSOOIDCServiceException: StaticErrorSchema = [-3, _sm, "SSOOIDCServiceException", 0, [], []]; TypeRegistry.for(_sm).registerError(SSOOIDCServiceException, __SSOOIDCServiceException); diff --git a/packages/nested-clients/src/submodules/sts/schemas/schemas_0.ts b/packages/nested-clients/src/submodules/sts/schemas/schemas_0.ts index eb468751d7399..762f290849028 100644 --- a/packages/nested-clients/src/submodules/sts/schemas/schemas_0.ts +++ b/packages/nested-clients/src/submodules/sts/schemas/schemas_0.ts @@ -1,62 +1,62 @@ -export const _A = "Arn"; -export const _AKI = "AccessKeyId"; -export const _AR = "AssumeRole"; -export const _ARI = "AssumedRoleId"; -export const _ARR = "AssumeRoleRequest"; -export const _ARRs = "AssumeRoleResponse"; -export const _ARU = "AssumedRoleUser"; -export const _ARWWI = "AssumeRoleWithWebIdentity"; -export const _ARWWIR = "AssumeRoleWithWebIdentityRequest"; -export const _ARWWIRs = "AssumeRoleWithWebIdentityResponse"; -export const _Au = "Audience"; -export const _C = "Credentials"; -export const _CA = "ContextAssertion"; -export const _DS = "DurationSeconds"; -export const _E = "Expiration"; -export const _EI = "ExternalId"; -export const _ETE = "ExpiredTokenException"; -export const _IDPCEE = "IDPCommunicationErrorException"; -export const _IDPRCE = "IDPRejectedClaimException"; -export const _IITE = "InvalidIdentityTokenException"; -export const _K = "Key"; -export const _MPDE = "MalformedPolicyDocumentException"; -export const _P = "Policy"; -export const _PA = "PolicyArns"; -export const _PAr = "ProviderArn"; -export const _PC = "ProvidedContexts"; -export const _PCLT = "ProvidedContextsListType"; -export const _PCr = "ProvidedContext"; -export const _PDT = "PolicyDescriptorType"; -export const _PI = "ProviderId"; -export const _PPS = "PackedPolicySize"; -export const _PPTLE = "PackedPolicyTooLargeException"; -export const _Pr = "Provider"; -export const _RA = "RoleArn"; -export const _RDE = "RegionDisabledException"; -export const _RSN = "RoleSessionName"; -export const _SAK = "SecretAccessKey"; -export const _SFWIT = "SubjectFromWebIdentityToken"; -export const _SI = "SourceIdentity"; -export const _SN = "SerialNumber"; -export const _ST = "SessionToken"; -export const _T = "Tags"; -export const _TC = "TokenCode"; -export const _TTK = "TransitiveTagKeys"; -export const _Ta = "Tag"; -export const _V = "Value"; -export const _WIT = "WebIdentityToken"; -export const _a = "arn"; -export const _aKST = "accessKeySecretType"; -export const _aQE = "awsQueryError"; -export const _c = "client"; -export const _cTT = "clientTokenType"; -export const _e = "error"; -export const _hE = "httpError"; -export const _m = "message"; -export const _pDLT = "policyDescriptorListType"; -export const _s = "smithy.ts.sdk.synthetic.com.amazonaws.sts"; -export const _tLT = "tagListType"; -export const n0 = "com.amazonaws.sts"; +const _A = "Arn"; +const _AKI = "AccessKeyId"; +const _AR = "AssumeRole"; +const _ARI = "AssumedRoleId"; +const _ARR = "AssumeRoleRequest"; +const _ARRs = "AssumeRoleResponse"; +const _ARU = "AssumedRoleUser"; +const _ARWWI = "AssumeRoleWithWebIdentity"; +const _ARWWIR = "AssumeRoleWithWebIdentityRequest"; +const _ARWWIRs = "AssumeRoleWithWebIdentityResponse"; +const _Au = "Audience"; +const _C = "Credentials"; +const _CA = "ContextAssertion"; +const _DS = "DurationSeconds"; +const _E = "Expiration"; +const _EI = "ExternalId"; +const _ETE = "ExpiredTokenException"; +const _IDPCEE = "IDPCommunicationErrorException"; +const _IDPRCE = "IDPRejectedClaimException"; +const _IITE = "InvalidIdentityTokenException"; +const _K = "Key"; +const _MPDE = "MalformedPolicyDocumentException"; +const _P = "Policy"; +const _PA = "PolicyArns"; +const _PAr = "ProviderArn"; +const _PC = "ProvidedContexts"; +const _PCLT = "ProvidedContextsListType"; +const _PCr = "ProvidedContext"; +const _PDT = "PolicyDescriptorType"; +const _PI = "ProviderId"; +const _PPS = "PackedPolicySize"; +const _PPTLE = "PackedPolicyTooLargeException"; +const _Pr = "Provider"; +const _RA = "RoleArn"; +const _RDE = "RegionDisabledException"; +const _RSN = "RoleSessionName"; +const _SAK = "SecretAccessKey"; +const _SFWIT = "SubjectFromWebIdentityToken"; +const _SI = "SourceIdentity"; +const _SN = "SerialNumber"; +const _ST = "SessionToken"; +const _T = "Tags"; +const _TC = "TokenCode"; +const _TTK = "TransitiveTagKeys"; +const _Ta = "Tag"; +const _V = "Value"; +const _WIT = "WebIdentityToken"; +const _a = "arn"; +const _aKST = "accessKeySecretType"; +const _aQE = "awsQueryError"; +const _c = "client"; +const _cTT = "clientTokenType"; +const _e = "error"; +const _hE = "httpError"; +const _m = "message"; +const _pDLT = "policyDescriptorListType"; +const _s = "smithy.ts.sdk.synthetic.com.amazonaws.sts"; +const _tLT = "tagListType"; +const n0 = "com.amazonaws.sts"; // smithy-typescript generated code import { TypeRegistry } from "@smithy/core/schema"; diff --git a/scripts/generate-clients/nested-clients/generate-nested-clients.js b/scripts/generate-clients/nested-clients/generate-nested-clients.js index 8fe59e87be9b7..03f261a975ec9 100644 --- a/scripts/generate-clients/nested-clients/generate-nested-clients.js +++ b/scripts/generate-clients/nested-clients/generate-nested-clients.js @@ -9,7 +9,7 @@ const clients = [ }, { name: "signin", - operations: ["reateOAuth2Token"], + operations: ["CreateOAuth2Token"], }, ]; From d53e20c3d5f93129c6e2c3766913cb6841fc0693 Mon Sep 17 00:00:00 2001 From: smilkuri Date: Wed, 19 Nov 2025 18:46:45 +0000 Subject: [PATCH 3/3] chore: update yarn.lock --- yarn.lock | 1 - 1 file changed, 1 deletion(-) diff --git a/yarn.lock b/yarn.lock index 08755163cb73d..b9fa356cf8e62 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23170,7 +23170,6 @@ __metadata: "@aws-sdk/credential-provider-env": "npm:*" "@aws-sdk/credential-provider-http": "npm:*" "@aws-sdk/credential-provider-ini": "npm:*" - "@aws-sdk/credential-provider-login": "npm:*" "@aws-sdk/credential-provider-process": "npm:*" "@aws-sdk/credential-provider-sso": "npm:*" "@aws-sdk/credential-provider-web-identity": "npm:*"