From 4b68eea03374db79b8ad728aa048b623de8efa91 Mon Sep 17 00:00:00 2001 From: Boyu Date: Mon, 10 Nov 2025 13:29:39 -0800 Subject: [PATCH 01/36] feat: differentiate implicit and explicit reject for inline completion (#2475) * feat: differenciate implicit and explicit reject for inline completion * fix: add UT for inline reject metric type --- .../amzn-codewhisperer-runtime-1.0.0.tgz | Bin 110661 -> 113260 bytes package-lock.json | 44 +++++++--- package.json | 2 +- server/aws-lsp-codewhisperer/package.json | 2 +- .../handler/editCompletionHandler.ts | 5 ++ .../handler/inlineCompletionHandler.ts | 11 ++- .../handler/sessionResultsHandler.test.ts | 78 ++++++++++++++++++ .../handler/sessionResultsHandler.ts | 20 ++++- .../inline-completion/telemetry/telemetry.ts | 20 +++-- .../src/shared/telemetry/telemetryService.ts | 8 +- 10 files changed, 164 insertions(+), 26 deletions(-) diff --git a/core/codewhisperer-runtime/amzn-codewhisperer-runtime-1.0.0.tgz b/core/codewhisperer-runtime/amzn-codewhisperer-runtime-1.0.0.tgz index 7c122f9a06894aac6d5a85934606b4340bbb6699..b25222e67fbc8e07a382ccd32b485c0d8aabc0f3 100644 GIT binary patch literal 113260 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 QU*+Hb0l?}{0RXZQ0CfU!G5`Po literal 110661 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%0Aj<}wfSqgR&ReAy2k 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 M01(PE3IJRY0NG)|@c;k- diff --git a/package-lock.json b/package-lock.json index 84dadaefad..82d3b849c7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "integration-tests/*" ], "dependencies": { - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "^0.3.5", "@smithy/types": "4.2.0", "clean": "^4.0.2", "typescript": "^5.8.2" @@ -512,7 +512,7 @@ "node_modules/@amzn/codewhisperer-runtime": { "version": "1.0.0", "resolved": "file:core/codewhisperer-runtime/amzn-codewhisperer-runtime-1.0.0.tgz", - "integrity": "sha512-M4ijcbACU/FCCyMhamVGqCaK01/hyz8lJaUmACeIgYYlFOF4BrKivs24N2nLMCQx78mEg/Z/6mmWT6bw7MjOug==", + "integrity": "sha512-3nnqcL5itP4Pidx/ONU4jABkG4vpIFq85HA4K2hmOLrvWUuNIBGZgBdBn2NJ30rLBWtAlJjNTDCt40JuvM7LMQ==", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", @@ -524,6 +524,7 @@ "@aws-sdk/region-config-resolver": "3.731.0", "@aws-sdk/token-providers": "3.731.1", "@aws-sdk/types": "3.731.0", + "@aws-sdk/util-endpoints": "3.731.0", "@aws-sdk/util-user-agent-browser": "3.731.0", "@aws-sdk/util-user-agent-node": "3.731.0", "@smithy/config-resolver": "^4.0.1", @@ -532,6 +533,7 @@ "@smithy/hash-node": "^4.0.1", "@smithy/invalid-dependency": "^4.0.1", "@smithy/middleware-content-length": "^4.0.1", + "@smithy/middleware-endpoint": "^4.0.2", "@smithy/middleware-retry": "^4.0.3", "@smithy/middleware-serde": "^4.0.1", "@smithy/middleware-stack": "^4.0.1", @@ -546,6 +548,7 @@ "@smithy/util-body-length-node": "^4.0.0", "@smithy/util-defaults-mode-browser": "^4.0.3", "@smithy/util-defaults-mode-node": "^4.0.3", + "@smithy/util-endpoints": "^3.0.1", "@smithy/util-middleware": "^4.0.1", "@smithy/util-retry": "^4.0.1", "@smithy/util-utf8": "^4.0.0", @@ -561,6 +564,7 @@ "version": "3.731.0", "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz", "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==", + "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.0.0", "tslib": "^2.6.2" @@ -569,6 +573,21 @@ "node": ">=18.0.0" } }, + "node_modules/@amzn/codewhisperer-runtime/node_modules/@aws-sdk/util-endpoints": { + "version": "3.731.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.731.0.tgz", + "integrity": "sha512-riztxTAfncFS9yQWcBJffGgOgLoKSa63ph+rxWJxKl6BHAmWEvHICj1qDcVmnWfIcvJ5cClclY75l9qKaUH7rQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.731.0", + "@smithy/types": "^4.0.0", + "@smithy/util-endpoints": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/@amzn/codewhisperer-runtime/node_modules/uuid": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", @@ -577,6 +596,7 @@ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], + "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } @@ -3750,11 +3770,12 @@ } }, "node_modules/@aws/language-server-runtimes": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@aws/language-server-runtimes/-/language-server-runtimes-0.3.1.tgz", - "integrity": "sha512-Ttn7r/xwP0Q2c4nquRJYEDuwvd8N1DUsrFuaq9zstuj3Y1G4WD9hBV773CaGuqgEdqE5+n2hyeOxfkwTAbzddg==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@aws/language-server-runtimes/-/language-server-runtimes-0.3.5.tgz", + "integrity": "sha512-42Ed8O3NMUgZnOZugWCR3uNu2K4cQ7LO3DHMZPQlxpiR7BiyoUo572UMTX9HZyFNErunqdtb0SBPmrdQSLCljQ==", + "license": "Apache-2.0", "dependencies": { - "@aws/language-server-runtimes-types": "^0.1.57", + "@aws/language-server-runtimes-types": "^0.1.61", "@opentelemetry/api": "^1.9.0", "@opentelemetry/api-logs": "^0.200.0", "@opentelemetry/core": "^2.0.0", @@ -3776,13 +3797,14 @@ "win-ca": "^3.5.1" }, "engines": { - "node": ">=18.0.0" + "node": ">=24.0.0" } }, "node_modules/@aws/language-server-runtimes-types": { - "version": "0.1.57", - "resolved": "https://registry.npmjs.org/@aws/language-server-runtimes-types/-/language-server-runtimes-types-0.1.57.tgz", - "integrity": "sha512-Poy8BW4njSBt6jf3ATnc3YRZQTFnNvFcYs/wcCAvPj314XRdDCS731y3EESVVdXfXlTIqLZrnHsvQgtbNm59Tw==", + "version": "0.1.61", + "resolved": "https://registry.npmjs.org/@aws/language-server-runtimes-types/-/language-server-runtimes-types-0.1.61.tgz", + "integrity": "sha512-kRBcbNDZrJtw3UFqcJ60tYfxM/DzDCHQEz38HINvyecfDCHRTpAAebOMoRQ7PagmsPJ4tasEwzEyRSg2vxq6aQ==", + "license": "Apache-2.0", "dependencies": { "vscode-languageserver-textdocument": "^1.0.12", "vscode-languageserver-types": "^3.17.5" @@ -28211,7 +28233,7 @@ "@aws-sdk/util-arn-parser": "^3.723.0", "@aws-sdk/util-retry": "^3.374.0", "@aws/chat-client-ui-types": "^0.1.63", - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "^0.3.5", "@aws/lsp-core": "^0.0.16", "@modelcontextprotocol/sdk": "^1.15.0", "@smithy/node-http-handler": "^2.5.0", diff --git a/package.json b/package.json index e314f953fe..8c33ed96c9 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "ci:generate:agentic:attribution": "ts-node ./script/prepare-agentic-attribution-dependencies.ts && ./script/generate-agentic-attribution.sh && git restore package.json" }, "dependencies": { - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "^0.3.5", "@smithy/types": "4.2.0", "clean": "^4.0.2", "typescript": "^5.8.2" diff --git a/server/aws-lsp-codewhisperer/package.json b/server/aws-lsp-codewhisperer/package.json index 6680066db1..22f1ba2d13 100644 --- a/server/aws-lsp-codewhisperer/package.json +++ b/server/aws-lsp-codewhisperer/package.json @@ -37,7 +37,7 @@ "@aws-sdk/util-arn-parser": "^3.723.0", "@aws-sdk/util-retry": "^3.374.0", "@aws/chat-client-ui-types": "^0.1.63", - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "^0.3.5", "@aws/lsp-core": "^0.0.16", "@modelcontextprotocol/sdk": "^1.15.0", "@smithy/node-http-handler": "^2.5.0", diff --git a/server/aws-lsp-codewhisperer/src/language-server/inline-completion/handler/editCompletionHandler.ts b/server/aws-lsp-codewhisperer/src/language-server/inline-completion/handler/editCompletionHandler.ts index d852dac1d1..a19507dfba 100644 --- a/server/aws-lsp-codewhisperer/src/language-server/inline-completion/handler/editCompletionHandler.ts +++ b/server/aws-lsp-codewhisperer/src/language-server/inline-completion/handler/editCompletionHandler.ts @@ -38,6 +38,7 @@ import { AmazonQError, AmazonQServiceConnectionExpiredError } from '../../../sha import { DocumentChangedListener } from '../documentChangedListener' import { EMPTY_RESULT } from '../contants/constants' import { StreakTracker } from '../tracker/streakTracker' +import { UserDecisionReason } from '@amzn/codewhisperer-runtime' import { processEditSuggestion } from '../utils/diffUtils' import { EditClassifier } from '../auto-trigger/editPredictionAutoTrigger' @@ -284,6 +285,7 @@ export class EditCompletionHandler { // Close ACTIVE session and record Discard trigger decision immediately if (currentSession && currentSession.state === 'ACTIVE') { // Emit user trigger decision at session close time for active session + // This is a discard, no userDecisionReason needed this.sessionManager.discardSession(currentSession) const streakLength = this.editsEnabled ? this.streakTracker.getAndUpdateStreakLength(false) : 0 await emitUserTriggerDecisionTelemetry( @@ -296,6 +298,7 @@ export class EditCompletionHandler { [], [], streakLength + // No itemId, no userDecisionReason ) } @@ -358,6 +361,7 @@ export class EditCompletionHandler { session.discardInflightSessionOnNewInvocation = false this.sessionManager.discardSession(session) const streakLength = this.editsEnabled ? this.streakTracker.getAndUpdateStreakLength(false) : 0 + // This is a discard, no userDecisionReason needed await emitUserTriggerDecisionTelemetry( this.telemetry, this.telemetryService, @@ -368,6 +372,7 @@ export class EditCompletionHandler { [], [], streakLength + // No itemId, no userDecisionReason ) } diff --git a/server/aws-lsp-codewhisperer/src/language-server/inline-completion/handler/inlineCompletionHandler.ts b/server/aws-lsp-codewhisperer/src/language-server/inline-completion/handler/inlineCompletionHandler.ts index 233b9ceb35..0c8ef8fed7 100644 --- a/server/aws-lsp-codewhisperer/src/language-server/inline-completion/handler/inlineCompletionHandler.ts +++ b/server/aws-lsp-codewhisperer/src/language-server/inline-completion/handler/inlineCompletionHandler.ts @@ -35,6 +35,7 @@ import { UserWrittenCodeTracker } from '../../../shared/userWrittenCodeTracker' import { RecentEditTracker } from '../tracker/codeEditTracker' import { CursorTracker } from '../tracker/cursorTracker' import { StreakTracker } from '../tracker/streakTracker' +import { UserDecisionReason } from '@amzn/codewhisperer-runtime' import { AmazonQError, AmazonQServiceConnectionExpiredError } from '../../../shared/amazonQServiceManager/errors' import { AmazonQBaseServiceManager } from '../../../shared/amazonQServiceManager/BaseAmazonQServiceManager' import { hasConnectionExpired } from '../../../shared/utils' @@ -283,6 +284,7 @@ export class InlineCompletionHandler { if (ideCategory !== 'JETBRAINS') { this.completionSessionManager.discardSession(currentSession) const streakLength = this.getEditsEnabled() ? this.streakTracker.getAndUpdateStreakLength(false) : 0 + // This is IMPLICIT REJECT - user typed or moved cursor await emitUserTriggerDecisionTelemetry( this.telemetry, this.telemetryService, @@ -292,7 +294,9 @@ export class InlineCompletionHandler { 0, [], [], - streakLength + streakLength, + undefined, + UserDecisionReason.ImplicitReject // IMPLICIT - user typed/moved ) } } @@ -379,6 +383,7 @@ export class InlineCompletionHandler { session.discardInflightSessionOnNewInvocation = false this.completionSessionManager.discardSession(session) const streakLength = this.getEditsEnabled() ? this.streakTracker.getAndUpdateStreakLength(false) : 0 + // This is IMPLICIT REJECT - new request arrived await emitUserTriggerDecisionTelemetry( this.telemetry, this.telemetryService, @@ -388,7 +393,9 @@ export class InlineCompletionHandler { 0, [], [], - streakLength + streakLength, + undefined, + UserDecisionReason.ImplicitReject // IMPLICIT - new invocation ) } diff --git a/server/aws-lsp-codewhisperer/src/language-server/inline-completion/handler/sessionResultsHandler.test.ts b/server/aws-lsp-codewhisperer/src/language-server/inline-completion/handler/sessionResultsHandler.test.ts index 97732743f3..768a83b324 100644 --- a/server/aws-lsp-codewhisperer/src/language-server/inline-completion/handler/sessionResultsHandler.test.ts +++ b/server/aws-lsp-codewhisperer/src/language-server/inline-completion/handler/sessionResultsHandler.test.ts @@ -179,4 +179,82 @@ describe('SessionResultsHandler', () => { sinon.assert.called(rejectedEditTracker.recordRejectedEdit) assert.equal(session.state, 'CLOSED') }) + + describe('userDecisionReason', () => { + it('should set ImplicitReject when reason is IMPLICIT_REJECT and suggestion was seen', async () => { + const session = completionSessionManager.createSession(sessionData) + completionSessionManager.activateSession(session) + session.id = 'test-session-id' + session.suggestions = [{ itemId: 'item-1', content: 'test' }] + + const implicitRejectData = { + ...sessionResultData, + completionSessionResult: { 'item-1': { seen: true, accepted: false, discarded: false } }, + reason: 'IMPLICIT_REJECT', + } + + await handler.handleSessionResults(implicitRejectData) + + sinon.assert.calledOnce(telemetryService.emitUserTriggerDecision) + const call = telemetryService.emitUserTriggerDecision.getCall(0) + assert.equal(call.args[8], 'IMPLICIT_REJECT') + }) + + it('should set ExplicitReject when reason is not IMPLICIT_REJECT and suggestion was seen', async () => { + const session = completionSessionManager.createSession(sessionData) + completionSessionManager.activateSession(session) + session.id = 'test-session-id' + session.suggestions = [{ itemId: 'item-1', content: 'test' }] + + const explicitRejectData = { + ...sessionResultData, + completionSessionResult: { 'item-1': { seen: true, accepted: false, discarded: false } }, + reason: undefined, + } + + await handler.handleSessionResults(explicitRejectData) + + sinon.assert.calledOnce(telemetryService.emitUserTriggerDecision) + const call = telemetryService.emitUserTriggerDecision.getCall(0) + assert.equal(call.args[8], 'EXPLICIT_REJECT') + }) + + it('should not set userDecisionReason when suggestion was not seen (discard)', async () => { + const session = completionSessionManager.createSession(sessionData) + completionSessionManager.activateSession(session) + session.id = 'test-session-id' + session.suggestions = [{ itemId: 'item-1', content: 'test' }] + + const discardData = { + ...sessionResultData, + completionSessionResult: { 'item-1': { seen: false, accepted: false, discarded: true } }, + reason: 'IMPLICIT_REJECT', + } + + await handler.handleSessionResults(discardData) + + sinon.assert.calledOnce(telemetryService.emitUserTriggerDecision) + const call = telemetryService.emitUserTriggerDecision.getCall(0) + assert.equal(call.args[8], undefined) + }) + + it('should not set userDecisionReason when suggestion was accepted', async () => { + const session = completionSessionManager.createSession(sessionData) + completionSessionManager.activateSession(session) + session.id = 'test-session-id' + session.suggestions = [{ itemId: 'item-1', content: 'test', insertText: 'test' }] + + const acceptedData = { + ...sessionResultData, + completionSessionResult: { 'item-1': { seen: true, accepted: true, discarded: false } }, + reason: undefined, + } + + await handler.handleSessionResults(acceptedData) + + sinon.assert.calledOnce(telemetryService.emitUserTriggerDecision) + const call = telemetryService.emitUserTriggerDecision.getCall(0) + assert.equal(call.args[8], undefined) + }) + }) }) diff --git a/server/aws-lsp-codewhisperer/src/language-server/inline-completion/handler/sessionResultsHandler.ts b/server/aws-lsp-codewhisperer/src/language-server/inline-completion/handler/sessionResultsHandler.ts index 0475b1d73b..5301e23d19 100644 --- a/server/aws-lsp-codewhisperer/src/language-server/inline-completion/handler/sessionResultsHandler.ts +++ b/server/aws-lsp-codewhisperer/src/language-server/inline-completion/handler/sessionResultsHandler.ts @@ -3,7 +3,7 @@ import { LogInlineCompletionSessionResultsParams, Telemetry, } from '@aws/language-server-runtimes/server-interface' -import { IdeDiagnostic } from '@amzn/codewhisperer-runtime' +import { IdeDiagnostic, UserDecisionReason } from '@amzn/codewhisperer-runtime' import { SessionManager } from '../session/sessionManager' import { CodePercentageTracker } from '../tracker/codePercentageTracker' import { RejectedEditTracker } from '../tracker/rejectedEditTracker' @@ -62,6 +62,7 @@ export class SessionResultsHandler { isInlineEdit, addedDiagnostics, removedDiagnostics, + reason, } = params // Comment this out because Edit request might return Completion as well so we can't rely on this flag @@ -153,6 +154,20 @@ export class SessionResultsHandler { // Always emit user trigger decision at session close sessionManager.closeSession(session) const streakLength = this.getEditsEnabled() ? this.streakTracker.getAndUpdateStreakLength(isAccepted) : 0 + + let userDecisionReason: UserDecisionReason | undefined + if (!isAccepted) { + const wasSeen = Object.values(params.completionSessionResult).some(result => result.seen === true) + + if (wasSeen) { + if (reason === 'IMPLICIT_REJECT') { + userDecisionReason = UserDecisionReason.ImplicitReject + } else { + userDecisionReason = UserDecisionReason.ExplicitReject + } + } + } + await emitUserTriggerDecisionTelemetry( this.telemetry, this.telemetryService, @@ -163,7 +178,8 @@ export class SessionResultsHandler { addedDiagnostics as IdeDiagnostic[], removedDiagnostics as IdeDiagnostic[], streakLength, - Object.keys(params.completionSessionResult)[0] + Object.keys(params.completionSessionResult)[0], + userDecisionReason ) } } diff --git a/server/aws-lsp-codewhisperer/src/language-server/inline-completion/telemetry/telemetry.ts b/server/aws-lsp-codewhisperer/src/language-server/inline-completion/telemetry/telemetry.ts index dc70bd4e22..db2b701dd1 100644 --- a/server/aws-lsp-codewhisperer/src/language-server/inline-completion/telemetry/telemetry.ts +++ b/server/aws-lsp-codewhisperer/src/language-server/inline-completion/telemetry/telemetry.ts @@ -1,5 +1,5 @@ import { Telemetry } from '@aws/language-server-runtimes/server-interface' -import { IdeDiagnostic } from '@amzn/codewhisperer-runtime' +import { IdeDiagnostic, UserDecisionReason } from '@amzn/codewhisperer-runtime' import { ServiceException } from '@smithy/smithy-client' import { CodeWhispererSession, UserTriggerDecision } from '../session/sessionManager' import { @@ -114,7 +114,8 @@ export async function emitEmptyUserTriggerDecisionTelemetry( telemetryService: TelemetryService, session: CodeWhispererSession, timeSinceLastUserModification?: number, - streakLength?: number + streakLength?: number, + userDecisionReason?: UserDecisionReason ) { // Prevent reporting user decision if it was already sent if (session.reportedUserDecision) { @@ -131,7 +132,8 @@ export async function emitEmptyUserTriggerDecisionTelemetry( 0, [], [], - streakLength + streakLength, + userDecisionReason ) .then() .catch(e => {}) @@ -150,7 +152,8 @@ export const emitUserTriggerDecisionTelemetry = async ( addedIdeDiagnostics?: IdeDiagnostic[], removedIdeDiagnostics?: IdeDiagnostic[], streakLength?: number, - itemId?: string + itemId?: string, + userDecisionReason?: UserDecisionReason ) => { // Prevent reporting user decision if it was already sent if (session.reportedUserDecision) { @@ -178,7 +181,8 @@ export const emitUserTriggerDecisionTelemetry = async ( deletedCharsCountForEditSuggestion, addedIdeDiagnostics, removedIdeDiagnostics, - streakLength + streakLength, + userDecisionReason ) session.reportedUserDecision = true @@ -193,7 +197,8 @@ export const emitAggregatedUserTriggerDecisionTelemetry = ( deletedCharsCountForEditSuggestion?: number, addedIdeDiagnostics?: IdeDiagnostic[], removedIdeDiagnostics?: IdeDiagnostic[], - streakLength?: number + streakLength?: number, + userDecisionReason?: UserDecisionReason ) => { return telemetryService.emitUserTriggerDecision( session, @@ -203,6 +208,7 @@ export const emitAggregatedUserTriggerDecisionTelemetry = ( deletedCharsCountForEditSuggestion, addedIdeDiagnostics, removedIdeDiagnostics, - streakLength + streakLength, + userDecisionReason ) } diff --git a/server/aws-lsp-codewhisperer/src/shared/telemetry/telemetryService.ts b/server/aws-lsp-codewhisperer/src/shared/telemetry/telemetryService.ts index 643bad392a..6f4579926b 100644 --- a/server/aws-lsp-codewhisperer/src/shared/telemetry/telemetryService.ts +++ b/server/aws-lsp-codewhisperer/src/shared/telemetry/telemetryService.ts @@ -27,6 +27,7 @@ import { CompletionType, InlineChatUserDecision, AgenticChatEventStatus, + UserDecisionReason, } from '@amzn/codewhisperer-runtime' import { getCompletionType, getSsoConnectionType, isServiceException } from '../utils' import { @@ -201,7 +202,8 @@ export class TelemetryService { deletedCharacterCount?: number, addedIdeDiagnostics?: IdeDiagnostic[], removedIdeDiagnostics?: IdeDiagnostic[], - streakLength?: number + streakLength?: number, + userDecisionReason?: UserDecisionReason ) { session.decisionMadeTimestamp = Date.now() // Toolkit telemetry API @@ -291,6 +293,7 @@ export class TelemetryService { removedIdeDiagnostics: removedIdeDiagnostics, streakLength: streakLength ?? 0, suggestionType: session.predictionType, + userDecisionReason: userDecisionReason, } this.logging.info(`Invoking SendTelemetryEvent:UserTriggerDecisionEvent: "requestId": ${event.requestId} @@ -302,7 +305,8 @@ export class TelemetryService { "preprocessLatency": ${session.preprocessLatency}, "triggerToResponseLatencyMilliseconds: ${event.triggerToResponseLatencyMilliseconds}", "firstCompletionDisplayLatency: ${event.recommendationLatencyMilliseconds}, - "suggestionType": ${event.suggestionType}`) + "suggestionType": ${event.suggestionType} + "userDecisionReason": ${event.userDecisionReason}`) return this.invokeSendTelemetryEvent({ userTriggerDecisionEvent: event, }) From d28867f2a5e06693b83d0cfd0286f017cdc5e5b3 Mon Sep 17 00:00:00 2001 From: Will Lo <96078566+Will-ShaoHua@users.noreply.github.com> Date: Tue, 11 Nov 2025 11:25:11 -0800 Subject: [PATCH 02/36] feat: ab test setup for new repomap strategy (#2474) Co-authored-by: Boyu --- .../agenticChat/tools/toolServer.ts | 3 +- .../AmazonQTokenServiceManager.ts | 8 +- .../src/shared/codeWhispererService.test.ts | 7 +- .../src/shared/codeWhispererService.ts | 77 +++++++++++++++++++ .../crossFileContextUtil.test.ts | 24 ++++-- .../crossFileContextUtil.ts | 18 +++-- .../supplementalContextUtil.ts | 2 + 7 files changed, 120 insertions(+), 19 deletions(-) diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/toolServer.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/toolServer.ts index 23b279b1f5..2d24631ba5 100644 --- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/toolServer.ts +++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/toolServer.ts @@ -144,7 +144,8 @@ export const QCodeAnalysisServer: Server = ({ logging, process.env.CODEWHISPERER_REGION || DEFAULT_AWS_Q_REGION, process.env.CODEWHISPERER_ENDPOINT || DEFAULT_AWS_Q_ENDPOINT_URL, - sdkInitializator + sdkInitializator, + undefined ) agent.addTool( diff --git a/server/aws-lsp-codewhisperer/src/shared/amazonQServiceManager/AmazonQTokenServiceManager.ts b/server/aws-lsp-codewhisperer/src/shared/amazonQServiceManager/AmazonQTokenServiceManager.ts index ee706c0b22..91e872609f 100644 --- a/server/aws-lsp-codewhisperer/src/shared/amazonQServiceManager/AmazonQTokenServiceManager.ts +++ b/server/aws-lsp-codewhisperer/src/shared/amazonQServiceManager/AmazonQTokenServiceManager.ts @@ -30,11 +30,12 @@ import { AWS_Q_ENDPOINTS, Q_CONFIGURATION_SECTION } from '../constants' import { AmazonQDeveloperProfile, signalsAWSQDeveloperProfilesEnabled } from './qDeveloperProfiles' import { isStringOrNull } from '../utils' import { getAmazonQRegionAndEndpoint } from './configurationUtils' -import { getUserAgent } from '../telemetryUtils' +import { getUserAgent, makeUserContextObject } from '../telemetryUtils' import { StreamingClientServiceToken } from '../streamingClientService' import { parse } from '@aws-sdk/util-arn-parser' import { ChatDatabase } from '../../language-server/agenticChat/tools/chatDb/chatDb' import { ProfileStatusMonitor } from '../../language-server/agenticChat/tools/mcp/profileStatusMonitor' +import { UserContext } from '@amzn/codewhisperer-runtime' /** * AmazonQTokenServiceManager manages state and provides centralized access to @@ -548,6 +549,10 @@ export class AmazonQTokenServiceManager extends BaseAmazonQServiceManager< private serviceFactory(region: string, endpoint: string): CodeWhispererServiceToken { const customUserAgent = this.getCustomUserAgent() + const initParam = this.features.lsp.getClientInitializeParams() + const userContext = initParam + ? makeUserContextObject(initParam, this.features.runtime.platform, 'token', this.serverInfo) + : undefined const service = new CodeWhispererServiceToken( this.features.credentialsProvider, this.features.workspace, @@ -555,6 +560,7 @@ export class AmazonQTokenServiceManager extends BaseAmazonQServiceManager< region, endpoint, this.features.sdkInitializator, + userContext, customUserAgent ) diff --git a/server/aws-lsp-codewhisperer/src/shared/codeWhispererService.test.ts b/server/aws-lsp-codewhisperer/src/shared/codeWhispererService.test.ts index ccc8a8ecb0..d0bd3ae338 100644 --- a/server/aws-lsp-codewhisperer/src/shared/codeWhispererService.test.ts +++ b/server/aws-lsp-codewhisperer/src/shared/codeWhispererService.test.ts @@ -79,6 +79,10 @@ describe('CodeWhispererService', function () { return 'iam' } + override async scheduleABTestingFetching(): Promise { + return + } + async constructSupplementalContext( document: TextDocument, position: Position, @@ -329,7 +333,8 @@ describe('CodeWhispererService', function () { mockLogging as any, 'us-east-1', 'https://codewhisperer.us-east-1.amazonaws.com', - mockSDKInitializator as any + mockSDKInitializator as any, + undefined ) }) diff --git a/server/aws-lsp-codewhisperer/src/shared/codeWhispererService.ts b/server/aws-lsp-codewhisperer/src/shared/codeWhispererService.ts index af9bc78ac7..1ec4167753 100644 --- a/server/aws-lsp-codewhisperer/src/shared/codeWhispererService.ts +++ b/server/aws-lsp-codewhisperer/src/shared/codeWhispererService.ts @@ -48,6 +48,7 @@ import { CreateWorkspaceRequest, DeleteWorkspaceCommand, DeleteWorkspaceRequest, + FeatureEvaluation, GenerateCompletionsCommand, GenerateCompletionsRequest, GenerateCompletionsResponse, @@ -68,6 +69,7 @@ import { ListCodeAnalysisFindingsCommand, ListCodeAnalysisFindingsRequest, ListFeatureEvaluationsCommand, + ListFeatureEvaluationsCommandOutput, ListFeatureEvaluationsRequest, ListWorkspaceMetadataCommand, ListWorkspaceMetadataRequest, @@ -81,6 +83,7 @@ import { StopTransformationRequest, SupplementalContext, SupplementalContextType, + UserContext, } from '@amzn/codewhisperer-runtime' import { GenerateRecommendationsCommand, @@ -89,6 +92,10 @@ import { Recommendation, } from '@amzn/codewhisperer' +const featureConfigPollIntervalInMs = 180 * 60 * 1000 // 180 mins + +const experimentName = 'MHS_TO_MPS_BEDROCK_INFERENCE_MIGRATION_30b' + // Type guards for request classification export function isTokenRequest(request: GenerateSuggestionsRequest): request is GenerateTokenSuggestionsRequest { return 'editorState' in request || 'predictionTypes' in request || 'supplementalContexts' in request @@ -221,6 +228,16 @@ export abstract class CodeWhispererServiceBase { public profileArn?: string abstract client: CodeWhispererSigv4Client | CodeWhispererTokenClient + private _userContext: UserContext | undefined + set userContext(u: UserContext | undefined) { + this._userContext = u + } + get userContext(): UserContext | undefined { + return this._userContext + } + + protected lastFeatureConfigResp: ListFeatureEvaluationsCommandOutput | undefined + inflightRequests: Set = new Set() abortInflightRequests() { @@ -251,6 +268,8 @@ export abstract class CodeWhispererServiceBase { | undefined > + abstract scheduleABTestingFetching(): Promise + constructor(codeWhispererRegion: string, codeWhispererEndpoint: string) { this.codeWhispererRegion = codeWhispererRegion this.codeWhispererEndpoint = codeWhispererEndpoint @@ -320,6 +339,10 @@ export class CodeWhispererServiceIAM extends CodeWhispererServiceBase { return 'iam' } + override async scheduleABTestingFetching(): Promise { + return + } + async constructSupplementalContext( document: TextDocument, position: Position, @@ -389,6 +412,9 @@ export class CodeWhispererServiceToken extends CodeWhispererServiceBase { /** If user clicks "Upgrade" multiple times, cancel the previous wait-promise. */ #waitUntilSubscriptionCancelSource?: CancellationTokenSource + #abTestingFetchingTimeout: NodeJS.Timeout | undefined + #features: FeatureEvaluation[] | undefined + constructor( private credentialsProvider: CredentialsProvider, workspace: Workspace, @@ -396,6 +422,7 @@ export class CodeWhispererServiceToken extends CodeWhispererServiceBase { codeWhispererRegion: string, codeWhispererEndpoint: string, sdkInitializator: SDKInitializator, + userContext: UserContext | undefined, customUserAgent?: string ) { super(codeWhispererRegion, codeWhispererEndpoint) @@ -421,12 +448,53 @@ export class CodeWhispererServiceToken extends CodeWhispererServiceBase { credentialsProvider, this.shareCodeWhispererContentWithAWS ) + this.userContext = userContext + this.scheduleABTestingFetching() + .then() + .catch(e => {}) } getCredentialsType(): CredentialsType { return 'bearer' } + override async scheduleABTestingFetching(): Promise { + const userContext = this.userContext + if (!userContext) { + this.logging.error(`empty user context, skipping ab config fetching`) + return + } + + let logstr = '' + try { + this.#features = (await this.listFeatureEvaluations({ userContext: userContext })).featureEvaluations + logstr += `abconfig: ${JSON.stringify(this.#features)}` + } catch (e) { + logstr += `abconfig error: ${e}` + } finally { + this.logging.info(logstr) + } + + this.#abTestingFetchingTimeout = setInterval(() => { + let logs = `abconfig: pulling latest result after ${featureConfigPollIntervalInMs}ms:` + clearInterval(this.#abTestingFetchingTimeout) + this.#abTestingFetchingTimeout = undefined + + this.listFeatureEvaluations({ userContext }) + .then(result => { + const features = result.featureEvaluations + this.#features = features + logs += `${JSON.stringify(features)}` + }) + .catch(error => { + logs += `${(error as Error).message}` + }) + .finally(() => { + this.logging.info(logs) + }) + }, featureConfigPollIntervalInMs) + } + async constructSupplementalContext( document: TextDocument, position: Position, @@ -443,6 +511,14 @@ export class CodeWhispererServiceToken extends CodeWhispererServiceBase { } | undefined > { + const getRepomapTarget = () => { + const feat = this.#features?.find(f => { + f.feature === experimentName + }) + const group = feat?.variation + return group === 'TREATMENT' ? 'codemap-2hop' : 'codemap' + } + const items: SupplementalContext[] = [] const projectContext = await fetchSupplementalContext( @@ -451,6 +527,7 @@ export class CodeWhispererServiceToken extends CodeWhispererServiceBase { workspace, logging, cancellationToken, + getRepomapTarget(), opentabs ) if (projectContext) { diff --git a/server/aws-lsp-codewhisperer/src/shared/supplementalContextUtil/crossFileContextUtil.test.ts b/server/aws-lsp-codewhisperer/src/shared/supplementalContextUtil/crossFileContextUtil.test.ts index e9e1cc3607..09557b1d08 100644 --- a/server/aws-lsp-codewhisperer/src/shared/supplementalContextUtil/crossFileContextUtil.test.ts +++ b/server/aws-lsp-codewhisperer/src/shared/supplementalContextUtil/crossFileContextUtil.test.ts @@ -45,7 +45,8 @@ describe('crossFileContextUtil', function () { currentDocument, { line: 0, character: 0 }, features.workspace, - fakeCancellationToken + fakeCancellationToken, + 'codemap' ) assert.ok(actual) assert.ok(actual.supplementalContextItems.length === 3) @@ -68,7 +69,8 @@ describe('crossFileContextUtil', function () { currentDocument, { line: 0, character: 0 }, features.workspace, - fakeCancellationToken + fakeCancellationToken, + 'codemap' ) assert.strictEqual(actual, undefined) }) @@ -79,7 +81,8 @@ describe('crossFileContextUtil', function () { currentDocument, { line: 0, character: 0 }, features.workspace, - fakeCancellationToken + fakeCancellationToken, + 'codemap' ) assert.strictEqual(actual, undefined) }) @@ -186,7 +189,8 @@ describe('crossFileContextUtil', function () { document, { line: 0, character: 0 }, features.workspace, - fakeCancellationToken + fakeCancellationToken, + 'codemap' ) assert.ok(actual && actual.supplementalContextItems.length !== 0) @@ -279,7 +283,8 @@ describe('crossFileContextUtil', function () { document, { line: 0, character: 0 }, features.workspace, - fakeCancellationToken + fakeCancellationToken, + 'codemap' ) assert.deepStrictEqual(result, { supplementalContextItems: [], @@ -307,7 +312,8 @@ describe('crossFileContextUtil', function () { document, { line: 0, character: 0 }, features.workspace, - fakeCancellationToken + fakeCancellationToken, + 'codemap' ) sinon.assert.notCalled(instanceStub) @@ -336,7 +342,8 @@ describe('crossFileContextUtil', function () { document, { line: 0, character: 0 }, features.workspace, - fakeCancellationToken + fakeCancellationToken, + 'codemap' ) assert.deepStrictEqual(result, { supplementalContextItems: [{ content: 'someOtherContet', filePath: '/path/', score: 29.879 }], @@ -361,7 +368,8 @@ describe('crossFileContextUtil', function () { document, { line: 0, character: 0 }, features.workspace, - fakeCancellationToken + fakeCancellationToken, + 'codemap' ) assert.deepStrictEqual(result, { supplementalContextItems: [ diff --git a/server/aws-lsp-codewhisperer/src/shared/supplementalContextUtil/crossFileContextUtil.ts b/server/aws-lsp-codewhisperer/src/shared/supplementalContextUtil/crossFileContextUtil.ts index 39e97a3b8c..5fa5261b76 100644 --- a/server/aws-lsp-codewhisperer/src/shared/supplementalContextUtil/crossFileContextUtil.ts +++ b/server/aws-lsp-codewhisperer/src/shared/supplementalContextUtil/crossFileContextUtil.ts @@ -66,16 +66,17 @@ export async function fetchSupplementalContextForSrc( position: Position, workspace: Workspace, cancellationToken: CancellationToken, + wsContextConfig: 'codemap' | 'codemap-2hop', openTabFiles?: string[] ): Promise | undefined> { - const supplementalContextConfig = getSupplementalContextConfig(document.languageId) + const supplementalContextConfig = isSupplementalContextSupported(document.languageId) - if (supplementalContextConfig === undefined) { + if (!supplementalContextConfig) { return undefined } - if (supplementalContextConfig === 'codemap') { - return await codemapContext(document, position, workspace, cancellationToken, openTabFiles) + if (wsContextConfig === 'codemap' || wsContextConfig === 'codemap-2hop') { + return await codemapContext(document, position, workspace, cancellationToken, wsContextConfig, openTabFiles) } return { supplementalContextItems: [], strategy: 'Empty' } @@ -86,6 +87,7 @@ export async function codemapContext( position: Position, workspace: Workspace, cancellationToken: CancellationToken, + wsContextConfig: 'codemap' | 'codemap-2hop', openTabFiles?: string[] ): Promise | undefined> { let strategy: SupplementalContextStrategy = 'Empty' @@ -99,7 +101,7 @@ export async function codemapContext( const projectContextPromise = waitUntil( async function () { - return await fetchProjectContext(document, position, 'codemap') + return await fetchProjectContext(document, position, wsContextConfig) }, { timeout: supplementalContextTimeoutInMs, interval: 5, truthy: false } ) @@ -137,7 +139,7 @@ export async function codemapContext( export async function fetchProjectContext( document: TextDocument, position: Position, - target: 'default' | 'codemap' | 'bm25' + target: 'default' | 'codemap' | 'bm25' | 'codemap-2hop' ): Promise { const inputChunk: Chunk = getInputChunk(document, position, crossFileContextConfig.numberOfLinesEachChunk) const fsPath = URI.parse(document.uri).fsPath @@ -256,8 +258,8 @@ function getInputChunk(document: TextDocument, cursorPosition: Position, chunkSi * @returns specifically returning undefined if the langueage is not supported, * otherwise true/false depending on if the language is fully supported or not belonging to the user group */ -function getSupplementalContextConfig(languageId: TextDocument['languageId']): SupplementalContextStrategy | undefined { - return isCrossFileSupported(languageId) ? 'codemap' : undefined +function isSupplementalContextSupported(languageId: TextDocument['languageId']): boolean { + return isCrossFileSupported(languageId) } /** diff --git a/server/aws-lsp-codewhisperer/src/shared/supplementalContextUtil/supplementalContextUtil.ts b/server/aws-lsp-codewhisperer/src/shared/supplementalContextUtil/supplementalContextUtil.ts index 18fb5a7686..c1f650da60 100644 --- a/server/aws-lsp-codewhisperer/src/shared/supplementalContextUtil/supplementalContextUtil.ts +++ b/server/aws-lsp-codewhisperer/src/shared/supplementalContextUtil/supplementalContextUtil.ts @@ -28,6 +28,7 @@ export async function fetchSupplementalContext( workspace: Workspace, logging: Logging, cancellationToken: CancellationToken, + wsContextConfig: 'codemap' | 'codemap-2hop', openTabFiles?: string[] ): Promise { const timesBeforeFetching = Date.now() @@ -72,6 +73,7 @@ export async function fetchSupplementalContext( position, workspace, cancellationToken, + wsContextConfig, openTabFiles ) } From 940da044c78e0c1c2dbdc995f65b1ace8f317e89 Mon Sep 17 00:00:00 2001 From: Will Lo <96078566+Will-ShaoHua@users.noreply.github.com> Date: Tue, 11 Nov 2025 11:27:53 -0800 Subject: [PATCH 03/36] chore: update indexing bundle to 4f4fd25d (#2478) --- .../_bundle-assets/qserver-darwin-arm64.zip | 4 ++-- .../_bundle-assets/qserver-darwin-x64.zip | 4 ++-- .../_bundle-assets/qserver-linux-arm64.zip | 4 ++-- .../_bundle-assets/qserver-linux-x64.zip | 4 ++-- .../_bundle-assets/qserver-win32-x64.zip | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-darwin-arm64.zip b/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-darwin-arm64.zip index 5ec48e8dcb..ce6fb2b5a2 100644 --- a/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-darwin-arm64.zip +++ b/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-darwin-arm64.zip @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6fbc1d7b3946a1589e6402c29508e47169cd5cddaa959fd78c79981628b02be6 -size 96647671 +oid sha256:58625abedfbdffa5627f1a6e5164d174e6a32b2abad54ead64a966e837beb004 +size 97058399 diff --git a/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-darwin-x64.zip b/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-darwin-x64.zip index 852d8e9a90..59acfe0555 100644 --- a/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-darwin-x64.zip +++ b/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-darwin-x64.zip @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cab6cbcc4673a88c0ff7bee6a7dc4fc07a49fb96bdd57d6fb7c535214f28117e -size 98328308 +oid sha256:df2f386a6dde011e24e71e346bd0ae54509e85964c5e4f39fb66afac86f43b56 +size 98739036 diff --git a/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-linux-arm64.zip b/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-linux-arm64.zip index d5faff8c01..553d4c681a 100644 --- a/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-linux-arm64.zip +++ b/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-linux-arm64.zip @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6c270b57e543a50c21f834311167a5586f333e77f40372b17758755f35d12b96 -size 102589992 +oid sha256:631e43238182360636dd52ea116f33670b745ef3c87f92cf27c31ebc608dd144 +size 103000720 diff --git a/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-linux-x64.zip b/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-linux-x64.zip index 445e268d3e..efdcad2b84 100644 --- a/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-linux-x64.zip +++ b/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-linux-x64.zip @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e4bdaf1ef6c8cdf2ecce6879d4ae736fcb21a735e62bf0fa3ae0ae403b63a249 -size 114552321 +oid sha256:ed47489ca1bc5d7887618e1ad06442924c785c8e01698704eba270fc95732522 +size 114963049 diff --git a/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-win32-x64.zip b/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-win32-x64.zip index af1593dc7c..b3661d563f 100644 --- a/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-win32-x64.zip +++ b/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-win32-x64.zip @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:80f09bbfc11c343b6e1d069b06cec853c6e2372e4ae7884ff466d9b67262755f -size 113890429 +oid sha256:ff612912415a6b92e5ff79bd5ea495ddeb2223c1646f881f0d5ba9bb5bc4d9b0 +size 114301157 From 417e5082041210656113552b41e9ea29bb7ddde2 Mon Sep 17 00:00:00 2001 From: Will Lo <96078566+Will-ShaoHua@users.noreply.github.com> Date: Tue, 11 Nov 2025 23:38:07 -0800 Subject: [PATCH 04/36] chore: patch d28867f PR #2474 (#2481) --- server/aws-lsp-codewhisperer/src/shared/codeWhispererService.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/aws-lsp-codewhisperer/src/shared/codeWhispererService.ts b/server/aws-lsp-codewhisperer/src/shared/codeWhispererService.ts index 1ec4167753..5a774aa5a0 100644 --- a/server/aws-lsp-codewhisperer/src/shared/codeWhispererService.ts +++ b/server/aws-lsp-codewhisperer/src/shared/codeWhispererService.ts @@ -513,7 +513,7 @@ export class CodeWhispererServiceToken extends CodeWhispererServiceBase { > { const getRepomapTarget = () => { const feat = this.#features?.find(f => { - f.feature === experimentName + return f.feature === experimentName }) const group = feat?.variation return group === 'TREATMENT' ? 'codemap-2hop' : 'codemap' From bfd27801ca9895cf3a04bfc02a9a70221b772b70 Mon Sep 17 00:00:00 2001 From: Will Lo <96078566+Will-ShaoHua@users.noreply.github.com> Date: Wed, 12 Nov 2025 09:48:04 -0800 Subject: [PATCH 05/36] chore: patch 940da04 PR #2478 (#2482) --- .../_bundle-assets/qserver-darwin-arm64.zip | 4 ++-- .../_bundle-assets/qserver-darwin-x64.zip | 4 ++-- .../_bundle-assets/qserver-linux-arm64.zip | 4 ++-- .../_bundle-assets/qserver-linux-x64.zip | 4 ++-- .../_bundle-assets/qserver-win32-x64.zip | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-darwin-arm64.zip b/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-darwin-arm64.zip index ce6fb2b5a2..629f974cc5 100644 --- a/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-darwin-arm64.zip +++ b/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-darwin-arm64.zip @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:58625abedfbdffa5627f1a6e5164d174e6a32b2abad54ead64a966e837beb004 -size 97058399 +oid sha256:f6f22a160a996cb50f22f02ef9ac0dbc1a33aa4f4b56824208321a9dd8ff2d54 +size 96651217 diff --git a/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-darwin-x64.zip b/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-darwin-x64.zip index 59acfe0555..05c7800297 100644 --- a/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-darwin-x64.zip +++ b/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-darwin-x64.zip @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:df2f386a6dde011e24e71e346bd0ae54509e85964c5e4f39fb66afac86f43b56 -size 98739036 +oid sha256:72cb4372dcb7743300949ebcb47c8a9d7e80de5536cc3bf14fa35cb90474e99a +size 98331079 diff --git a/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-linux-arm64.zip b/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-linux-arm64.zip index 553d4c681a..68d8636de9 100644 --- a/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-linux-arm64.zip +++ b/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-linux-arm64.zip @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:631e43238182360636dd52ea116f33670b745ef3c87f92cf27c31ebc608dd144 -size 103000720 +oid sha256:4a0e86ddf181b87b9d284354454c0efcca065fba4f3e5b47d3163edc84329e15 +size 102593464 diff --git a/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-linux-x64.zip b/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-linux-x64.zip index efdcad2b84..c9b3529fac 100644 --- a/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-linux-x64.zip +++ b/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-linux-x64.zip @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ed47489ca1bc5d7887618e1ad06442924c785c8e01698704eba270fc95732522 -size 114963049 +oid sha256:08f70c75936122f5645805bd6659beff51fd4e952bec8af14b7dda9d612e04ee +size 114555413 diff --git a/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-win32-x64.zip b/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-win32-x64.zip index b3661d563f..e455b8af29 100644 --- a/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-win32-x64.zip +++ b/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-win32-x64.zip @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ff612912415a6b92e5ff79bd5ea495ddeb2223c1646f881f0d5ba9bb5bc4d9b0 -size 114301157 +oid sha256:611e539965e278da9c86e4478005700aa00d60f736607c1469c17816f307eae3 +size 113893044 From 7e2707b8c2b4467aae1fe1c77bb419043e193ddc Mon Sep 17 00:00:00 2001 From: Laxman Reddy <141967714+laileni-aws@users.noreply.github.com> Date: Wed, 12 Nov 2025 10:04:26 -0800 Subject: [PATCH 06/36] fix: McpManager not initialized error (#2479) * fix: McpManager not initialized error * fix: adding more try catch to avoid crashes due to mcpmanager initialization error * fix: adding error to debug logs --- .../agenticChat/agenticChatController.ts | 103 +++++++-- .../tools/mcp/mcpEventHandler.test.ts | 38 ++-- .../agenticChat/tools/mcp/mcpEventHandler.ts | 214 +++++++++++++++--- .../agenticChat/tools/mcp/mcpManager.test.ts | 174 ++++++++++++++ .../agenticChat/tools/mcp/mcpManager.ts | 29 ++- .../tools/mcp/profileStatusMonitor.ts | 6 + 6 files changed, 492 insertions(+), 72 deletions(-) diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/agenticChatController.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/agenticChatController.ts index 56e577e9af..ee25b7d0ca 100644 --- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/agenticChatController.ts +++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/agenticChatController.ts @@ -2022,7 +2022,16 @@ export class AgenticChatController implements ChatHandlers { // — DEFAULT ⇒ Only MCP tools, but can also handle generic tool execution messages default: // Get original server and tool names from the mapping - const originalNames = McpManager.instance.getOriginalToolNames(toolUse.name) + let originalNames + try { + originalNames = McpManager.instance.getOriginalToolNames(toolUse.name) + } catch (error) { + // McpManager not initialized, skip MCP tool handling + this.#features.logging.debug( + `McpManager not initialized, skipping MCP tool handling with error: ${error}` + ) + originalNames = undefined + } // Remove explanation field from toolUse.input for MCP tools // many MCP servers do not support explanation field and it will break the tool if this is altered @@ -2038,9 +2047,17 @@ export class AgenticChatController implements ChatHandlers { if (originalNames) { const { serverName, toolName } = originalNames - const def = McpManager.instance - .getAllTools() - .find(d => d.serverName === serverName && d.toolName === toolName) + let def + try { + def = McpManager.instance + .getAllTools() + .find(d => d.serverName === serverName && d.toolName === toolName) + } catch (error) { + this.#features.logging.debug( + `McpManager not initialized, cannot get tool definitions with error: ${error}` + ) + def = undefined + } if (def) { const mcpTool = new McpTool(this.#features, def) const { requiresAcceptance, warning } = await mcpTool.requiresAcceptance( @@ -2328,7 +2345,16 @@ export class AgenticChatController implements ChatHandlers { } // Handle MCP tool failures - const originalNames = McpManager.instance.getOriginalToolNames(toolUse.name) + let originalNames + try { + originalNames = McpManager.instance.getOriginalToolNames(toolUse.name) + } catch (error) { + // McpManager not initialized, skip MCP error handling + this.#features.logging.debug( + `McpManager not initialized, skipping MCP error handling with error: ${error}` + ) + originalNames = undefined + } if (originalNames && toolUse.toolUseId) { const { toolName } = originalNames const cachedToolUse = session.toolUseLookup.get(toolUse.toolUseId) @@ -4650,7 +4676,17 @@ export class AgenticChatController implements ChatHandlers { } // Clear tool name mapping to avoid conflicts from previous registrations - McpManager.instance.clearToolNameMapping() + try { + McpManager.instance.clearToolNameMapping() + } catch (error) { + // McpManager not initialized, return tools without MCP + this.#features.logging.debug( + `McpManager not initialized in #getTools, returning non-MCP tools with error: ${error}` + ) + return session.pairProgrammingMode + ? allTools + : allTools.filter(tool => !builtInWriteTools.has(tool.toolSpecification?.name || '')) + } const tempMapping = new Map() @@ -4658,13 +4694,30 @@ export class AgenticChatController implements ChatHandlers { // TODO: mcp tool spec name will be server___tool. // TODO: Will also need to handle rare edge cases of long server name + long tool name > 64 char const allNamespacedTools = new Set() - const mcpToolSpecNames = new Set( - McpManager.instance - .getAllTools() - .map(tool => createNamespacedToolName(tool.serverName, tool.toolName, allNamespacedTools, tempMapping)) - ) + let mcpToolSpecNames: Set + try { + mcpToolSpecNames = new Set( + McpManager.instance + .getAllTools() + .map(tool => + createNamespacedToolName(tool.serverName, tool.toolName, allNamespacedTools, tempMapping) + ) + ) + } catch (error) { + // McpManager not initialized, use empty set + this.#features.logging.debug(`McpManager not initialized, cannot get MCP tools because of error: ${error}`) + mcpToolSpecNames = new Set() + } + + try { + McpManager.instance.setToolNameMapping(tempMapping) + } catch (error) { + // McpManager not initialized, skip setting mapping + this.#features.logging.debug( + `McpManager not initialized, cannot set tool name mapping because of error: ${error}` + ) + } - McpManager.instance.setToolNameMapping(tempMapping) const restrictedToolNames = new Set([...mcpToolSpecNames, ...builtInWriteTools]) const readOnlyTools = allTools.filter(tool => { @@ -4712,12 +4765,30 @@ export class AgenticChatController implements ChatHandlers { } // Get original server and tool names from the mapping - const originalNames = McpManager.instance.getOriginalToolNames(toolUse.name) + let originalNames + try { + originalNames = McpManager.instance.getOriginalToolNames(toolUse.name) + } catch (error) { + // McpManager not initialized, skip MCP tool result handling + this.#features.logging.debug( + `McpManager not initialized, cannot handle MCP tool result because of error: ${error}` + ) + originalNames = undefined + } + if (originalNames) { const { serverName, toolName } = originalNames - const def = McpManager.instance - .getAllTools() - .find(d => d.serverName === serverName && d.toolName === toolName) + let def + try { + def = McpManager.instance + .getAllTools() + .find(d => d.serverName === serverName && d.toolName === toolName) + } catch (error) { + this.#features.logging.debug( + `McpManager not initialized, cannot get tool definitions because of error: ${error}` + ) + def = undefined + } if (def) { // Format the tool result and input as JSON strings const toolInput = JSON.stringify(toolUse.input, null, 2) diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpEventHandler.test.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpEventHandler.test.ts index b55f24614a..7013993ebe 100644 --- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpEventHandler.test.ts +++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpEventHandler.test.ts @@ -132,10 +132,12 @@ describe('McpEventHandler error handling', () => { // Verify error is displayed in header status expect(result.header).to.not.be.undefined - expect(result.header.status).to.not.be.undefined - expect(result.header.status!.status).to.equal('error') - expect(result.header.status!.title).to.include('File: file1.json, Error: File not found error') - expect(result.header.status!.title).to.include('File: serverA, Error: Missing command error') + if ('status' in result.header) { + expect(result.header.status).to.not.be.undefined + expect(result.header.status!.status).to.equal('error') + expect(result.header.status!.title).to.include('File: file1.json, Error: File not found error') + expect(result.header.status!.title).to.include('File: serverA, Error: Missing command error') + } }) it('marks servers with validation errors as FAILED', async () => { @@ -278,11 +280,13 @@ describe('McpEventHandler error handling', () => { await McpManager.init([], features) const result = await eventHandler.onListMcpServers({}) - expect(result.header.status).to.deep.equal({ - title: 'MCP functionality has been disabled by your administrator', - icon: 'info', - status: 'info', - }) + if ('status' in result.header) { + expect(result.header.status).to.deep.equal({ + title: 'MCP functionality has been disabled by your administrator', + icon: 'info', + status: 'info', + }) + } }) it('returns config error status when MCP state is not false but config errors exist', async () => { @@ -312,11 +316,13 @@ describe('McpEventHandler error handling', () => { const result = await eventHandler.onListMcpServers({}) - expect(result.header.status).to.deep.equal({ - title: 'File: file1.json, Error: Config error', - icon: 'cancel-circle', - status: 'error', - }) + if ('status' in result.header) { + expect(result.header.status).to.deep.equal({ + title: 'File: file1.json, Error: Config error', + icon: 'cancel-circle', + status: 'error', + }) + } }) it('returns undefined status when MCP state is not false and no config errors', async () => { @@ -345,7 +351,9 @@ describe('McpEventHandler error handling', () => { const result = await eventHandler.onListMcpServers({}) - expect(result.header.status).to.be.undefined + if ('status' in result.header) { + expect(result.header.status).to.be.undefined + } }) }) }) diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpEventHandler.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpEventHandler.ts index efc22344cc..f2b213ad87 100644 --- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpEventHandler.ts +++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpEventHandler.ts @@ -102,7 +102,13 @@ export class McpEventHandler { */ async onListMcpServers(params: ListMcpServersParams) { this.#currentEditingServerName = undefined - const mcpManager = McpManager.instance + let mcpManager + try { + mcpManager = McpManager.instance + } catch (error) { + this.#features.logging.debug(`McpManager not initialized, returning empty list: ${error}`) + return { header: { title: 'MCP Servers', description: '', actions: [] }, list: [] } + } // Check for errors in loading MCP config files const configLoadErrors = mcpManager.getConfigLoadErrors() @@ -176,7 +182,13 @@ export class McpEventHandler { Array.from(mcpManagerServerConfigs.entries()).forEach(([serverName, config]) => { const toolsWithPermissions = mcpManager.getAllToolsWithPermissions(serverName) const toolsCount = toolsWithPermissions.length - const serverState = McpManager.instance.getServerState(serverName) + let serverState + try { + serverState = McpManager.instance.getServerState(serverName) + } catch (error) { + this.#features.logging.debug(`McpManager not initialized for getServerState: ${error}`) + serverState = undefined + } // Check if this server has validation errors const hasValidationErrors = serversWithErrors.has(serverName) @@ -386,14 +398,24 @@ export class McpEventHandler { if (existingValues.name) { const serverName = existingValues.name const sanitizedServerName = sanitizeName(serverName) - const serverState = McpManager.instance.getAllServerConfigs().get(sanitizedServerName) - // Check if the server exists in McpManager - const mcpManager = McpManager.instance - const serverConfig = mcpManager.getAllServerConfigs().get(sanitizedServerName) + let serverConfig + try { + serverConfig = McpManager.instance.getAllServerConfigs().get(sanitizedServerName) + } catch (error) { + this.#features.logging.debug(`McpManager not initialized for getAllServerConfigs: ${error}`) + serverConfig = undefined + } if (serverConfig) { // Use the helper method to determine if the server is global - existingValues.scope = mcpManager.isServerGlobal(sanitizedServerName) ? 'global' : 'workspace' + try { + existingValues.scope = McpManager.instance.isServerGlobal(sanitizedServerName) + ? 'global' + : 'workspace' + } catch (error) { + this.#features.logging.debug(`McpManager not initialized for isServerGlobal: ${error}`) + existingValues.scope = 'global' + } } else { // Default to global scope for new servers existingValues.scope = 'global' @@ -591,8 +613,15 @@ export class McpEventHandler { errors.push('Server name cannot be empty') } else { if (checkExistingServerName) { - const existingServers = McpManager.instance.getAllServerConfigs() - const serverState = McpManager.instance.getServerState(values.name) + let existingServers, serverState + try { + existingServers = McpManager.instance.getAllServerConfigs() + serverState = McpManager.instance.getServerState(values.name) + } catch (error) { + this.#features.logging.debug(`McpManager not initialized for validation: ${error}`) + existingServers = new Map() + serverState = undefined + } if ( existingServers.has(values.name) && @@ -688,7 +717,12 @@ export class McpEventHandler { const serverName = params.optionsValues.name const sanitizedServerName = sanitizeName(serverName) const originalServerName = this.#currentEditingServerName - const isEditMode = !!(originalServerName && McpManager.instance.getAllServerConfigs().has(originalServerName)) + let isEditMode = false + try { + isEditMode = !!(originalServerName && McpManager.instance.getAllServerConfigs().has(originalServerName)) + } catch (error) { + this.#features.logging.debug(`McpManager not initialized for isEditMode check: ${error}`) + } // Validate form values const validation = this.#validateMcpServerForm( @@ -789,14 +823,30 @@ export class McpEventHandler { try { if (isEditMode && originalServerName) { const serverToRemove = this.#serverNameBeforeUpdate || originalServerName - const serverConfig = McpManager.instance.getAllServerConfigs().get(serverToRemove) + let serverConfig + try { + serverConfig = McpManager.instance.getAllServerConfigs().get(serverToRemove) + } catch (error) { + this.#features.logging.error(`McpManager not initialized for server removal: ${error}`) + throw error + } const isLegacyMcpServer = serverConfig?.__configPath__?.endsWith('mcp.json') ?? false const configPath = isLegacyMcpServer ? await this.#getMcpConfigPath(isGlobal) : agentPath - await McpManager.instance.removeServer(serverToRemove) - await McpManager.instance.addServer(serverName, config, configPath, isLegacyMcpServer) + try { + await McpManager.instance.removeServer(serverToRemove) + await McpManager.instance.addServer(serverName, config, configPath, isLegacyMcpServer) + } catch (error) { + this.#features.logging.error(`McpManager operation failed: ${error}`) + throw error + } } else { // Create new server - await McpManager.instance.addServer(serverName, config, agentPath) + try { + await McpManager.instance.addServer(serverName, config, agentPath) + } catch (error) { + this.#features.logging.error(`McpManager not initialized for addServer: ${error}`) + throw error + } this.#newlyAddedServers.add(serverName) } } catch (error) { @@ -809,19 +859,29 @@ export class McpEventHandler { // need to check server state now, as there is possibility of error during server initialization const serverStatusError = this.#getServerStatusError(serverName) + let numTools = 0 + try { + numTools = McpManager.instance.getAllToolsWithPermissions(sanitizedServerName).length + } catch (error) { + this.#features.logging.debug(`McpManager not initialized for getAllToolsWithPermissions: ${error}`) + } this.#telemetryController?.emitMCPServerInitializeEvent({ source: isEditMode ? 'updateServer' : 'addServer', command: selectedTransport === TransportType.STDIO ? params.optionsValues.command : undefined, url: selectedTransport === TransportType.HTTP ? params.optionsValues.url : undefined, enabled: true, - numTools: McpManager.instance.getAllToolsWithPermissions(sanitizedServerName).length, + numTools, scope: params.optionsValues['scope'] === 'global' ? 'global' : 'workspace', transportType: selectedTransport, languageServerVersion: this.#features.runtime.serverInfo.version, }) if (serverStatusError) { - await McpManager.instance.removeServerFromConfigFile(serverName) + try { + await McpManager.instance.removeServerFromConfigFile(serverName) + } catch (error) { + this.#features.logging.error(`McpManager not initialized for removeServerFromConfigFile: ${error}`) + } if (this.#newlyAddedServers.has(serverName)) { this.#newlyAddedServers.delete(serverName) @@ -865,7 +925,12 @@ export class McpEventHandler { if (serverName === 'Built-in') { // Handle Built-in server specially const allTools = this.#features.agent.getTools({ format: 'bedrock' }) - const mcpToolNames = new Set(McpManager.instance.getAllTools().map(tool => tool.toolName)) + let mcpToolNames = new Set() + try { + mcpToolNames = new Set(McpManager.instance.getAllTools().map(tool => tool.toolName)) + } catch (error) { + this.#features.logging.debug(`McpManager not initialized for getAllTools: ${error}`) + } const builtInTools = allTools .filter(tool => !mcpToolNames.has(tool.toolSpecification.name)) .map(tool => { @@ -896,7 +961,12 @@ export class McpEventHandler { } } else { // Handle regular MCP servers - const toolsWithPermissions = McpManager.instance.getAllToolsWithPermissions(serverName) + let toolsWithPermissions: { tool: any; permission: any }[] = [] + try { + toolsWithPermissions = McpManager.instance.getAllToolsWithPermissions(serverName) + } catch (error) { + this.#features.logging.debug(`McpManager not initialized for getAllToolsWithPermissions: ${error}`) + } filterOptions = this.#buildServerFilterOptions(serverName, toolsWithPermissions) return { @@ -933,9 +1003,15 @@ export class McpEventHandler { return { id: params.id } } - const mcpManager = McpManager.instance - // Get the appropriate agent path - const agentPath = mcpManager.getAllServerConfigs().get(serverName)?.__configPath__ + let mcpManager, agentPath + try { + mcpManager = McpManager.instance + // Get the appropriate agent path + agentPath = mcpManager.getAllServerConfigs().get(serverName)?.__configPath__ + } catch (error) { + this.#features.logging.error(`McpManager not initialized for enable server: ${error}`) + return { id: params.id } + } // Set flag to ignore file changes during permission update this.#isProgrammaticChange = true @@ -961,9 +1037,15 @@ export class McpEventHandler { if (!serverName) { return { id: params.id } } - const mcpManager = McpManager.instance - // Set flag to ignore file changes during permission update - const agentPath = mcpManager.getAllServerConfigs().get(serverName)?.__configPath__ + let mcpManager, agentPath + try { + mcpManager = McpManager.instance + // Set flag to ignore file changes during permission update + agentPath = mcpManager.getAllServerConfigs().get(serverName)?.__configPath__ + } catch (error) { + this.#features.logging.error(`McpManager not initialized for disable server:${error}`) + return { id: params.id } + } // Set flag to ignore file changes during permission update this.#isProgrammaticChange = true try { @@ -994,7 +1076,12 @@ export class McpEventHandler { this.#isProgrammaticChange = true try { - await McpManager.instance.removeServer(serverName) + try { + await McpManager.instance.removeServer(serverName) + } catch (error) { + this.#features.logging.error(`McpManager not initialized for removeServer: ${error}`) + throw error + } this.#releaseProgrammaticAfterDebounce() return { id: params.id } } catch (error) { @@ -1019,7 +1106,24 @@ export class McpEventHandler { } this.#currentEditingServerName = serverName - const config = McpManager.instance.getAllServerConfigs().get(serverName) + let config + try { + config = McpManager.instance.getAllServerConfigs().get(serverName) + } catch (error) { + this.#features.logging.error(`McpManager not initialized for getAllServerConfigs: ${error}`) + return { + id: params.id, + header: { + title: 'Edit MCP Server', + status: { + title: 'MCP Manager not initialized', + icon: 'cancel-circle', + status: 'error' as Status, + }, + }, + list: [], + } + } if (!config) { return { id: params.id, @@ -1209,7 +1313,13 @@ export class McpEventHandler { try { // Skip server config check for Built-in server - const serverConfig = McpManager.instance.getAllServerConfigs().get(serverName) + let serverConfig + try { + serverConfig = McpManager.instance.getAllServerConfigs().get(serverName) + } catch (error) { + this.#features.logging.error(`McpManager not initialized for getAllServerConfigs: ${error}`) + return { id: params.id } + } if (serverName !== 'Built-in') { if (!serverConfig) { throw new Error(`Server '${serverName}' not found`) @@ -1254,11 +1364,21 @@ export class McpEventHandler { const { serverName, permission } = this.#pendingPermissionConfig // Apply the stored permission changes - await McpManager.instance.updateServerPermission(serverName, permission) + try { + await McpManager.instance.updateServerPermission(serverName, permission) + } catch (error) { + this.#features.logging.error(`McpManager not initialized for updateServerPermission: ${error}`) + throw error + } this.#emitMCPConfigEvent() // Get server config to emit telemetry - const serverConfig = McpManager.instance.getAllServerConfigs().get(serverName) + let serverConfig + try { + serverConfig = McpManager.instance.getAllServerConfigs().get(serverName) + } catch (error) { + this.#features.logging.debug(`McpManager not initialized for getAllServerConfigs: ${error}`) + } if (serverConfig) { // Emit server initialize event after permission change const transportType = serverConfig.command?.trim() ? TransportType.STDIO : TransportType.HTTP @@ -1267,7 +1387,16 @@ export class McpEventHandler { command: transportType === TransportType.STDIO ? serverConfig.command : undefined, url: transportType === TransportType.HTTP ? serverConfig.url : undefined, enabled: true, - numTools: McpManager.instance.getAllToolsWithPermissions(serverName).length, + numTools: (() => { + try { + return McpManager.instance.getAllToolsWithPermissions(serverName).length + } catch (error) { + this.#features.logging.debug( + `McpManager not initialized for getAllToolsWithPermissions: ${error}` + ) + return 0 + } + })(), scope: serverConfig.__configPath__ === getGlobalAgentConfigPath(this.#features.workspace.fs.getUserHomeDir()) || @@ -1295,8 +1424,14 @@ export class McpEventHandler { #emitMCPConfigEvent() { // Emit MCP config event after reinitialization - const mcpManager = McpManager.instance - const serverConfigs = mcpManager.getAllServerConfigs() + let mcpManager, serverConfigs + try { + mcpManager = McpManager.instance + serverConfigs = mcpManager.getAllServerConfigs() + } catch (error) { + this.#features.logging.debug(`McpManager not initialized for emitMCPConfigEvent with error: ${error}`) + return + } const activeServers = Array.from(serverConfigs.entries()).filter( ([name, _]) => !mcpManager.isServerDisabled(name) ) @@ -1367,7 +1502,12 @@ export class McpEventHandler { this.#isProgrammaticChange = isProgrammatic try { - await McpManager.instance.reinitializeMcpServers() + try { + await McpManager.instance.reinitializeMcpServers() + } catch (error) { + this.#features.logging.error(`McpManager not initialized for reinitializeMcpServers: ${error}`) + throw error + } this.#emitMCPConfigEvent() // Reset flag after reinitialization @@ -1487,7 +1627,13 @@ export class McpEventHandler { * Gets the UI status object for a specific MCP server */ #getServerStatusError(serverName: string): { title: string; icon: string; status: Status } | undefined { - const serverStates = McpManager.instance.getAllServerStates() + let serverStates + try { + serverStates = McpManager.instance.getAllServerStates() + } catch (error) { + this.#features.logging.debug(`McpManager not initialized for getAllServerStates: ${error}`) + return undefined + } const key = serverName ? sanitizeName(serverName) : serverName const serverState = key ? serverStates.get(key) : undefined diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpManager.test.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpManager.test.ts index a717fc6b93..614dc6a0ce 100644 --- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpManager.test.ts +++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpManager.test.ts @@ -9,6 +9,7 @@ import { AGENT_TOOLS_CHANGED, MCP_SERVER_STATUS_CHANGED, McpManager } from './mc import * as mcpUtils from './mcpUtils' import { McpPermissionType, McpServerStatus, type MCPServerConfig, type MCPServerPermission } from './mcpTypes' import { Client } from '@modelcontextprotocol/sdk/client/index.js' +import { ProfileStatusMonitor } from './profileStatusMonitor' const fakeLogging = { log: () => {}, @@ -1554,3 +1555,176 @@ describe('McpManager error handling', () => { expect(errors).to.be.undefined }) }) + +describe('McpManager Initialization Fix', () => { + const mockFeatures = { + logging: { + info: sinon.spy(), + debug: sinon.spy(), + warn: sinon.spy(), + error: sinon.spy(), + }, + workspace: { + getAllWorkspaceFolders: sinon.stub().returns([]), + fs: { + getUserHomeDir: sinon.stub().returns('/home/user'), + readFile: sinon.stub(), + writeFile: sinon.stub(), + mkdir: sinon.stub(), + }, + }, + lsp: {}, + telemetry: { + emitMetric: sinon.spy(), + }, + credentialsProvider: { + getConnectionMetadata: sinon.stub().returns({ sso: { startUrl: 'test' } }), + }, + runtime: { + serverInfo: { version: '1.0.0' }, + }, + agent: { + getBuiltInToolNames: sinon.stub().returns([]), + }, + } as any + + beforeEach(async () => { + if (McpManager.isInitialized()) { + await McpManager.instance.close(false) + } + sinon.restore() + sinon.stub(ProfileStatusMonitor, 'getMcpState').returns(true) + }) + + describe('isInitialized() method', () => { + it('should return false before initialization', () => { + expect(McpManager.isInitialized()).to.be.false + }) + + it('should return true after successful initialization', async () => { + await McpManager.init([], mockFeatures) + expect(McpManager.isInitialized()).to.be.true + }) + + it('should return true even after failed initialization', async () => { + sinon.restore() + sinon.stub(ProfileStatusMonitor, 'getMcpState').throws(new Error('Test error')) + + await McpManager.init([], mockFeatures) + expect(McpManager.isInitialized()).to.be.true + }) + }) + + describe('init() never throws', () => { + it('should create empty instance on initialization failure', async () => { + sinon.restore() + sinon.stub(ProfileStatusMonitor, 'getMcpState').throws(new Error('Network error')) + + const manager = await McpManager.init([], mockFeatures) + + expect(manager).to.not.be.undefined + expect(McpManager.isInitialized()).to.be.true + expect((mockFeatures.logging.error as sinon.SinonSpy).calledWith(sinon.match(/MCP: initialization failed/))) + .to.be.true + }) + + it('should handle WSL network issues gracefully', async () => { + mockFeatures.workspace.fs.readFile.rejects(new Error('ETIMEDOUT')) + + const manager = await McpManager.init(['/path/to/config'], mockFeatures) + + expect(manager).to.not.be.undefined + expect(manager.getAllTools()).to.deep.equal([]) + }) + + it('should work with empty tools list after failure', async () => { + sinon.restore() + sinon.stub(ProfileStatusMonitor, 'getMcpState').throws(new Error('Init error')) + + const manager = await McpManager.init([], mockFeatures) + + expect(manager.getAllTools()).to.deep.equal([]) + expect(manager.getEnabledTools()).to.deep.equal([]) + expect(manager.getAllServerConfigs().size).to.equal(0) + }) + }) + + describe('instance getter with try-catch', () => { + it('should throw error when not initialized', () => { + expect(() => McpManager.instance).to.throw('McpManager not initialized') + }) + + it('should return instance after initialization', async () => { + await McpManager.init([], mockFeatures) + expect(() => McpManager.instance).to.not.throw() + }) + + it('should be safe to use with try-catch pattern', async () => { + let result: any[] = [] + try { + result = McpManager.instance.getAllTools() + } catch (error) { + result = [] + } + expect(result).to.deep.equal([]) + + await McpManager.init([], mockFeatures) + + try { + result = McpManager.instance.getAllTools() + } catch (error) { + result = [] + } + expect(result).to.deep.equal([]) + }) + }) + + describe('Race condition scenarios', () => { + it('should handle immediate access after init call', async () => { + const initPromise = McpManager.init([], mockFeatures) + + let tools: any[] = [] + try { + tools = McpManager.instance.getAllTools() + } catch (error) { + tools = [] + } + + expect(tools).to.deep.equal([]) + await initPromise + expect(McpManager.instance.getAllTools()).to.deep.equal([]) + }) + + it('should handle multiple concurrent init calls', async () => { + const promises = [ + McpManager.init([], mockFeatures), + McpManager.init([], mockFeatures), + McpManager.init([], mockFeatures), + ] + + const results = await Promise.all(promises) + + expect(results).to.have.lengthOf(3) + results.forEach(manager => expect(manager).to.not.be.undefined) + expect(McpManager.isInitialized()).to.be.true + }) + }) + + describe('Graceful degradation', () => { + it('should return empty arrays when MCP not ready', async () => { + const manager = await McpManager.init([], mockFeatures) + + expect(manager.getAllTools()).to.deep.equal([]) + expect(manager.getEnabledTools()).to.deep.equal([]) + expect(manager.listServersAndTools()).to.deep.equal({}) + }) + + it('should handle server operations safely', async () => { + const manager = await McpManager.init([], mockFeatures) + + expect(manager.isServerDisabled('nonexistent')).to.be.false + expect(manager.isToolDisabled('nonexistent', 'tool')).to.be.true + expect(manager.getAllServerConfigs().size).to.equal(0) + }) + }) +}) diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpManager.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpManager.ts index 9b155b3d8c..99a93bd6aa 100644 --- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpManager.ts +++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpManager.ts @@ -98,13 +98,21 @@ export class McpManager { const mgr = new McpManager(agentPaths, features) McpManager.#instance = mgr - const shouldDiscoverServers = ProfileStatusMonitor.getMcpState() + try { + const shouldDiscoverServers = ProfileStatusMonitor.getMcpState() - if (shouldDiscoverServers) { - await mgr.discoverAllServers() - features.logging.info(`MCP: discovered ${mgr.mcpTools.length} tools across all servers`) - } else { - features.logging.info('MCP: initialized without server discovery') + if (shouldDiscoverServers) { + await mgr.discoverAllServers() + features.logging.info(`MCP: discovered ${mgr.mcpTools.length} tools across all servers`) + } else { + // MCP is disabled - create empty instance without connecting to any servers + features.logging.info('MCP: initialized without server discovery (MCP disabled)') + } + } catch (error) { + // Log error but keep the empty instance to prevent crashes + features.logging.error( + `MCP: initialization failed: ${error instanceof Error ? error.message : String(error)}` + ) } // Emit MCP configuration metrics @@ -149,7 +157,7 @@ export class McpManager { }) } } - return McpManager.#instance + return McpManager.#instance! } public static get instance(): McpManager { @@ -159,6 +167,13 @@ export class McpManager { return McpManager.#instance } + /** + * Check if McpManager has been initialized + */ + public static isInitialized(): boolean { + return !!McpManager.#instance + } + /** * Return the current runtime state for one server. */ diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/profileStatusMonitor.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/profileStatusMonitor.ts index 3489ad81be..db1640faf5 100644 --- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/profileStatusMonitor.ts +++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/profileStatusMonitor.ts @@ -119,6 +119,12 @@ export class ProfileStatusMonitor { return undefined } + /** + * Returns the current MCP enabled/disabled state. + * Used by McpManager.init() to skip server discovery when MCP is disabled. + * This optimization prevents initialization errors and improves performance. + * @returns true if MCP is enabled, false if disabled + */ static getMcpState(): boolean { return ProfileStatusMonitor.lastMcpState } From da7a1d796139c080a66bf5b3f885ccb909a45026 Mon Sep 17 00:00:00 2001 From: Will Lo <96078566+Will-ShaoHua@users.noreply.github.com> Date: Wed, 12 Nov 2025 14:37:18 -0800 Subject: [PATCH 07/36] chore: fix and update indexing lib assets (#2485) * Revert "chore: patch 940da04 PR #2478 (#2482)" This reverts commit bfd27801ca9895cf3a04bfc02a9a70221b772b70. * Revert "chore: update indexing bundle to 4f4fd25d (#2478)" This reverts commit 940da044c78e0c1c2dbdc995f65b1ace8f317e89. * chore: update q project context assets 4f4fd25d --- .../_bundle-assets/qserver-darwin-arm64.zip | 4 ++-- .../_bundle-assets/qserver-darwin-x64.zip | 4 ++-- .../_bundle-assets/qserver-linux-arm64.zip | 4 ++-- .../_bundle-assets/qserver-linux-x64.zip | 4 ++-- .../_bundle-assets/qserver-win32-x64.zip | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-darwin-arm64.zip b/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-darwin-arm64.zip index 629f974cc5..afcffcf996 100644 --- a/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-darwin-arm64.zip +++ b/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-darwin-arm64.zip @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f6f22a160a996cb50f22f02ef9ac0dbc1a33aa4f4b56824208321a9dd8ff2d54 -size 96651217 +oid sha256:a249b68b93d013aba780f5a6ff07b38ce2fe97aae88368293db75da464e5f617 +size 96645801 diff --git a/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-darwin-x64.zip b/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-darwin-x64.zip index 05c7800297..3bffd7519b 100644 --- a/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-darwin-x64.zip +++ b/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-darwin-x64.zip @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:72cb4372dcb7743300949ebcb47c8a9d7e80de5536cc3bf14fa35cb90474e99a -size 98331079 +oid sha256:22e8b95cb7819fc1581013c31e2a1f025ba023dd67bd83896d90a465a0cd93e7 +size 98326438 diff --git a/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-linux-arm64.zip b/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-linux-arm64.zip index 68d8636de9..eb07f4b10c 100644 --- a/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-linux-arm64.zip +++ b/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-linux-arm64.zip @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4a0e86ddf181b87b9d284354454c0efcca065fba4f3e5b47d3163edc84329e15 -size 102593464 +oid sha256:3ba6ec53a9e47363b68f280b0abc2a8701ea36337fc210f3a0c9cc1bc5e7b320 +size 102588122 diff --git a/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-linux-x64.zip b/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-linux-x64.zip index c9b3529fac..6485875861 100644 --- a/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-linux-x64.zip +++ b/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-linux-x64.zip @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:08f70c75936122f5645805bd6659beff51fd4e952bec8af14b7dda9d612e04ee -size 114555413 +oid sha256:84e3b9810bee7b747fb055fcb3928bb1d278e52299819972c5e560a308459649 +size 114550451 diff --git a/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-win32-x64.zip b/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-win32-x64.zip index e455b8af29..151da7c1c0 100644 --- a/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-win32-x64.zip +++ b/app/aws-lsp-codewhisperer-runtimes/_bundle-assets/qserver-win32-x64.zip @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:611e539965e278da9c86e4478005700aa00d60f736607c1469c17816f307eae3 -size 113893044 +oid sha256:fa088c41b5bdcf8f93e6b77bee8befa687d44e51667f94bcd15f0feb24b48255 +size 113888559 From 376a6903ab61a88fdaaf76af2271062961a7ddaa Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 12 Nov 2025 15:07:09 -0800 Subject: [PATCH 08/36] chore(release): release packages from branch main (#2476) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Will Lo <96078566+Will-ShaoHua@users.noreply.github.com> --- .release-please-manifest.json | 2 +- package-lock.json | 2 +- server/aws-lsp-codewhisperer/CHANGELOG.md | 13 +++++++++++++ server/aws-lsp-codewhisperer/package.json | 2 +- 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index caae52434b..5b7511c292 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -2,7 +2,7 @@ "chat-client": "0.1.41", "core/aws-lsp-core": "0.0.16", "server/aws-lsp-antlr4": "0.1.20", - "server/aws-lsp-codewhisperer": "0.0.88", + "server/aws-lsp-codewhisperer": "0.0.89", "server/aws-lsp-json": "0.1.21", "server/aws-lsp-partiql": "0.0.18", "server/aws-lsp-yaml": "0.1.21" diff --git a/package-lock.json b/package-lock.json index 82d3b849c7..9f5e938cdd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28215,7 +28215,7 @@ }, "server/aws-lsp-codewhisperer": { "name": "@aws/lsp-codewhisperer", - "version": "0.0.88", + "version": "0.0.89", "bundleDependencies": [ "@amzn/codewhisperer", "@amzn/codewhisperer-runtime", diff --git a/server/aws-lsp-codewhisperer/CHANGELOG.md b/server/aws-lsp-codewhisperer/CHANGELOG.md index bc8b15cb21..453f83a3c9 100644 --- a/server/aws-lsp-codewhisperer/CHANGELOG.md +++ b/server/aws-lsp-codewhisperer/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [0.0.89](https://github.com/aws/language-servers/compare/lsp-codewhisperer/v0.0.88...lsp-codewhisperer/v0.0.89) (2025-11-12) + + +### Features + +* ab test setup for new repomap strategy ([#2474](https://github.com/aws/language-servers/issues/2474)) ([d28867f](https://github.com/aws/language-servers/commit/d28867f2a5e06693b83d0cfd0286f017cdc5e5b3)) +* differentiate implicit and explicit reject for inline completion ([#2475](https://github.com/aws/language-servers/issues/2475)) ([4b68eea](https://github.com/aws/language-servers/commit/4b68eea03374db79b8ad728aa048b623de8efa91)) + + +### Bug Fixes + +* McpManager not initialized error ([#2479](https://github.com/aws/language-servers/issues/2479)) ([7e2707b](https://github.com/aws/language-servers/commit/7e2707b8c2b4467aae1fe1c77bb419043e193ddc)) + ## [0.0.88](https://github.com/aws/language-servers/compare/lsp-codewhisperer/v0.0.87...lsp-codewhisperer/v0.0.88) (2025-10-28) diff --git a/server/aws-lsp-codewhisperer/package.json b/server/aws-lsp-codewhisperer/package.json index 22f1ba2d13..29c8f975e4 100644 --- a/server/aws-lsp-codewhisperer/package.json +++ b/server/aws-lsp-codewhisperer/package.json @@ -1,6 +1,6 @@ { "name": "@aws/lsp-codewhisperer", - "version": "0.0.88", + "version": "0.0.89", "description": "CodeWhisperer Language Server", "main": "out/index.js", "repository": { From 0f9703a24fe4753dac5bd23e2a6a0aa0f5ecb549 Mon Sep 17 00:00:00 2001 From: Will Lo <96078566+Will-ShaoHua@users.noreply.github.com> Date: Wed, 12 Nov 2025 18:05:43 -0800 Subject: [PATCH 09/36] chore: bump agentic version: 1.44.0 (#2487) Co-authored-by: aws-toolkit-automation <> --- app/aws-lsp-codewhisperer-runtimes/src/version.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/aws-lsp-codewhisperer-runtimes/src/version.json b/app/aws-lsp-codewhisperer-runtimes/src/version.json index c46863531b..ff0567a608 100644 --- a/app/aws-lsp-codewhisperer-runtimes/src/version.json +++ b/app/aws-lsp-codewhisperer-runtimes/src/version.json @@ -1,3 +1,3 @@ { - "agenticChat": "1.43.0" + "agenticChat": "1.44.0" } From ec6771fc5dc162f9c65df4e979dcfc3ae4838f06 Mon Sep 17 00:00:00 2001 From: Will Lo <96078566+Will-ShaoHua@users.noreply.github.com> Date: Thu, 13 Nov 2025 10:01:48 -0800 Subject: [PATCH 10/36] fix: bearer client will not pick up telemetry optout and its always optout (#2484) --- .../aws-lsp-codewhisperer/src/client/token/codewhisperer.ts | 4 ++-- .../aws-lsp-codewhisperer/src/shared/codeWhispererService.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/server/aws-lsp-codewhisperer/src/client/token/codewhisperer.ts b/server/aws-lsp-codewhisperer/src/client/token/codewhisperer.ts index 9103897e18..5db4f949c5 100644 --- a/server/aws-lsp-codewhisperer/src/client/token/codewhisperer.ts +++ b/server/aws-lsp-codewhisperer/src/client/token/codewhisperer.ts @@ -11,7 +11,7 @@ export function createCodeWhispererTokenClient( sdkInitializator: SDKInitializator, logging: Logging, credentialsProvider: CredentialsProvider, - shareCodeWhispererContentWithAWS: boolean + shareCodeWhispererContentWithAWS: () => boolean ): CodeWhispererRuntimeClient { logging.log( `Passing client for class CodeWhispererRuntimeClient to sdkInitializator (v3) for additional setup (e.g. proxy)` @@ -25,7 +25,7 @@ export function createCodeWhispererTokenClient( client.middlewareStack.add( next => async args => { const request = args.request as HttpRequest - request.headers['x-amzn-codewhisperer-optout'] = `${!shareCodeWhispererContentWithAWS}` + request.headers['x-amzn-codewhisperer-optout'] = `${!shareCodeWhispererContentWithAWS()}` if (credentialsProvider.getConnectionType() === 'external_idp') { request.headers['TokenType'] = 'EXTERNAL_IDP' diff --git a/server/aws-lsp-codewhisperer/src/shared/codeWhispererService.ts b/server/aws-lsp-codewhisperer/src/shared/codeWhispererService.ts index 5a774aa5a0..8f364c91a0 100644 --- a/server/aws-lsp-codewhisperer/src/shared/codeWhispererService.ts +++ b/server/aws-lsp-codewhisperer/src/shared/codeWhispererService.ts @@ -446,7 +446,7 @@ export class CodeWhispererServiceToken extends CodeWhispererServiceBase { sdkInitializator, logging, credentialsProvider, - this.shareCodeWhispererContentWithAWS + () => this.shareCodeWhispererContentWithAWS ) this.userContext = userContext this.scheduleABTestingFetching() From b2f5cc6657753eec3442888c00c8aed10e0c6861 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 13 Nov 2025 12:15:58 -0800 Subject: [PATCH 11/36] chore(release): release packages from branch main (#2490) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- package-lock.json | 2 +- server/aws-lsp-codewhisperer/CHANGELOG.md | 7 +++++++ server/aws-lsp-codewhisperer/package.json | 2 +- 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 5b7511c292..9bb9542e18 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -2,7 +2,7 @@ "chat-client": "0.1.41", "core/aws-lsp-core": "0.0.16", "server/aws-lsp-antlr4": "0.1.20", - "server/aws-lsp-codewhisperer": "0.0.89", + "server/aws-lsp-codewhisperer": "0.0.90", "server/aws-lsp-json": "0.1.21", "server/aws-lsp-partiql": "0.0.18", "server/aws-lsp-yaml": "0.1.21" diff --git a/package-lock.json b/package-lock.json index 9f5e938cdd..b22a439125 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28215,7 +28215,7 @@ }, "server/aws-lsp-codewhisperer": { "name": "@aws/lsp-codewhisperer", - "version": "0.0.89", + "version": "0.0.90", "bundleDependencies": [ "@amzn/codewhisperer", "@amzn/codewhisperer-runtime", diff --git a/server/aws-lsp-codewhisperer/CHANGELOG.md b/server/aws-lsp-codewhisperer/CHANGELOG.md index 453f83a3c9..cbaf261787 100644 --- a/server/aws-lsp-codewhisperer/CHANGELOG.md +++ b/server/aws-lsp-codewhisperer/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.0.90](https://github.com/aws/language-servers/compare/lsp-codewhisperer/v0.0.89...lsp-codewhisperer/v0.0.90) (2025-11-13) + + +### Bug Fixes + +* bearer client will not pick up telemetry optout and its always optout ([#2484](https://github.com/aws/language-servers/issues/2484)) ([ec6771f](https://github.com/aws/language-servers/commit/ec6771fc5dc162f9c65df4e979dcfc3ae4838f06)) + ## [0.0.89](https://github.com/aws/language-servers/compare/lsp-codewhisperer/v0.0.88...lsp-codewhisperer/v0.0.89) (2025-11-12) diff --git a/server/aws-lsp-codewhisperer/package.json b/server/aws-lsp-codewhisperer/package.json index 29c8f975e4..da30654d7f 100644 --- a/server/aws-lsp-codewhisperer/package.json +++ b/server/aws-lsp-codewhisperer/package.json @@ -1,6 +1,6 @@ { "name": "@aws/lsp-codewhisperer", - "version": "0.0.89", + "version": "0.0.90", "description": "CodeWhisperer Language Server", "main": "out/index.js", "repository": { From 2c0d3dae8e15d9d046e7a112b5f17990edd04063 Mon Sep 17 00:00:00 2001 From: manodnyab <66754471+manodnyab@users.noreply.github.com> Date: Thu, 13 Nov 2025 16:27:21 -0800 Subject: [PATCH 12/36] chore: bump agentic version: 1.45.0 (#2491) Co-authored-by: aws-toolkit-automation <> --- app/aws-lsp-codewhisperer-runtimes/src/version.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/aws-lsp-codewhisperer-runtimes/src/version.json b/app/aws-lsp-codewhisperer-runtimes/src/version.json index ff0567a608..46d9d92611 100644 --- a/app/aws-lsp-codewhisperer-runtimes/src/version.json +++ b/app/aws-lsp-codewhisperer-runtimes/src/version.json @@ -1,3 +1,3 @@ { - "agenticChat": "1.44.0" + "agenticChat": "1.45.0" } From b3efa7cff0b23608dd0cca796c9c95a672c9321a Mon Sep 17 00:00:00 2001 From: BlakeLazarine Date: Mon, 17 Nov 2025 16:08:11 -0800 Subject: [PATCH 13/36] fix(amazonq): handle large results (#2497) * Revert "fix(amazonq): send full finding details to plugin, partial to agent (#2356)" This reverts commit 961e6ca11b122481685f9f65b3da14c6a2497cc4. * feat(amazonq): if there are more than 30 findings, do not send to agent, only to code issues panel * fix(amazonq): do not stop calling listFindings if there are more than 30 findings * fix(amazonq): do not stop calling listFindings if there are more than 30 findings --------- Co-authored-by: Blake Lazarine --- .../agenticChat/agenticChatController.ts | 16 ++-- .../tools/qCodeAnalysis/codeReview.test.ts | 88 +------------------ .../tools/qCodeAnalysis/codeReview.ts | 40 ++++----- .../qCodeAnalysis/codeReviewConstants.ts | 2 +- .../tools/qCodeAnalysis/codeReviewTypes.ts | 10 +-- 5 files changed, 29 insertions(+), 127 deletions(-) diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/agenticChatController.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/agenticChatController.ts index ee25b7d0ca..8290622b6b 100644 --- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/agenticChatController.ts +++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/agenticChatController.ts @@ -204,6 +204,7 @@ import { URI } from 'vscode-uri' import { CommandCategory } from './tools/executeBash' import { UserWrittenCodeTracker } from '../../shared/userWrittenCodeTracker' import { CodeReview } from './tools/qCodeAnalysis/codeReview' +import { CodeReviewResult } from './tools/qCodeAnalysis/codeReviewTypes' import { CODE_REVIEW_FINDINGS_MESSAGE_SUFFIX, DISPLAY_FINDINGS_MESSAGE_SUFFIX, @@ -2142,17 +2143,20 @@ export class AgenticChatController implements ChatHandlers { if ( codeReviewResult?.output?.kind === 'json' && codeReviewResult.output.success && - (codeReviewResult.output.content as any)?.findingsByFile + (codeReviewResult.output.content as CodeReviewResult)?.findingsByFile ) { await chatResultStream.writeResultBlock({ type: 'tool', messageId: toolUse.toolUseId + CODE_REVIEW_FINDINGS_MESSAGE_SUFFIX, - body: (codeReviewResult.output.content as any).findingsByFile, + body: (codeReviewResult.output.content as CodeReviewResult).findingsByFile, }) - codeReviewResult.output.content = { - codeReviewId: (codeReviewResult.output.content as any).codeReviewId, - message: (codeReviewResult.output.content as any).message, - findingsByFileSimplified: (codeReviewResult.output.content as any).findingsByFileSimplified, + if ((codeReviewResult.output.content as CodeReviewResult).findingsExceededLimit) { + codeReviewResult.output.content = { + codeReviewId: (codeReviewResult.output.content as CodeReviewResult).codeReviewId, + message: (codeReviewResult.output.content as CodeReviewResult).message, + findingsExceededLimit: (codeReviewResult.output.content as CodeReviewResult) + .findingsExceededLimit, + } } } } diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/qCodeAnalysis/codeReview.test.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/qCodeAnalysis/codeReview.test.ts index 2dc8aca1a0..3a7e1d0f60 100644 --- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/qCodeAnalysis/codeReview.test.ts +++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/qCodeAnalysis/codeReview.test.ts @@ -12,6 +12,7 @@ import { expect } from 'chai' import { CancellationError } from '@aws/lsp-core' import * as JSZip from 'jszip' import { Origin } from '@amzn/codewhisperer-streaming' +import { CodeReviewResult } from './codeReviewTypes' describe('CodeReview', () => { let sandbox: sinon.SinonSandbox @@ -147,92 +148,7 @@ describe('CodeReview', () => { expect(result.output.success).to.be.true expect(result.output.kind).to.equal('json') - }) - - it('should return both full and simplified findings', async () => { - const mockFindings = [ - { - findingId: '1', - title: 'Test Issue', - description: { text: 'Test description', markdown: 'Test **description**' }, - startLine: 10, - endLine: 15, - severity: 'HIGH', - filePath: '/test/file.js', - detectorId: 'detector1', - detectorName: 'Test Detector', - ruleId: 'rule1', - relatedVulnerabilities: [], - recommendation: { text: 'Fix this', url: null }, - suggestedFixes: [], - comment: 'Test Issue: Test description', - scanJobId: 'job-123', - language: 'javascript', - autoDetected: false, - findingContext: 'Full', - }, - ] - - mockCodeWhispererClient.createUploadUrl.resolves({ - uploadUrl: 'https://upload.com', - uploadId: 'upload-123', - requestHeaders: {}, - }) - - mockCodeWhispererClient.startCodeAnalysis.resolves({ - jobId: 'job-123', - status: 'Pending', - }) - - mockCodeWhispererClient.getCodeAnalysis.resolves({ - status: 'Completed', - }) - - mockCodeWhispererClient.listCodeAnalysisFindings.resolves({ - codeAnalysisFindings: JSON.stringify(mockFindings), - nextToken: undefined, - }) - - sandbox.stub(CodeReviewUtils, 'uploadFileToPresignedUrl').resolves() - sandbox.stub(codeReview as any, 'prepareFilesAndFoldersForUpload').resolves({ - zipBuffer: Buffer.from('test'), - md5Hash: 'hash123', - isCodeDiffPresent: false, - programmingLanguages: new Set(['javascript']), - numberOfFilesInCustomerCodeZip: 1, - codeDiffFiles: new Set(), - filePathsInZip: new Set(['/test/file.js']), - }) - sandbox.stub(codeReview as any, 'parseFindings').returns(mockFindings) - sandbox.stub(codeReview as any, 'resolveFilePath').returns('/test/file.js') - - const result = await codeReview.execute(validInput, context) - - expect(result.output.success).to.be.true - expect(result.output.content).to.have.property('findingsByFile') - expect(result.output.content).to.have.property('findingsByFileSimplified') - - const fullFindings = JSON.parse((result.output.content as any).findingsByFile) - const simplifiedFindings = JSON.parse((result.output.content as any).findingsByFileSimplified) - - expect(fullFindings).to.have.length(1) - expect(simplifiedFindings).to.have.length(1) - - // Verify full findings structure - expect(fullFindings[0].issues[0]).to.have.property('findingId') - expect(fullFindings[0].issues[0]).to.have.property('description') - expect(fullFindings[0].issues[0]).to.have.property('detectorId') - - // Verify simplified findings structure (only 5 fields) - const simplifiedIssue = simplifiedFindings[0].issues[0] - expect(Object.keys(simplifiedIssue)).to.have.length(5) - expect(simplifiedIssue).to.have.property('filePath', '/test/file.js') - expect(simplifiedIssue).to.have.property('startLine', 10) - expect(simplifiedIssue).to.have.property('endLine', 15) - expect(simplifiedIssue).to.have.property('title', 'Test Issue') - expect(simplifiedIssue).to.have.property('severity', 'HIGH') - expect(simplifiedIssue).to.not.have.property('findingId') - expect(simplifiedIssue).to.not.have.property('description') + expect((result.output.content as CodeReviewResult).findingsExceededLimit === false) }) it('should execute successfully and pass languageModelId and clientType to startCodeAnalysis', async () => { diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/qCodeAnalysis/codeReview.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/qCodeAnalysis/codeReview.ts index 902b7e2882..6b656a614b 100644 --- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/qCodeAnalysis/codeReview.ts +++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/qCodeAnalysis/codeReview.ts @@ -29,7 +29,6 @@ import { CodeReviewFinding, FailedMetricName, SuccessMetricName, - CodeReviewFindingSimplified, } from './codeReviewTypes' import { CancellationError } from '@aws/lsp-core' import { Origin } from '@amzn/codewhisperer-streaming' @@ -46,7 +45,7 @@ export class CodeReview { private static readonly POLLING_INTERVAL_MS = 10000 // 10 seconds private static readonly UPLOAD_INTENT = 'AGENTIC_CODE_REVIEW' private static readonly SCAN_SCOPE = 'AGENTIC' - private static readonly MAX_FINDINGS_COUNT = 300 + private static readonly MAX_FINDINGS_COUNT = 30 private static readonly ERROR_MESSAGES = { MISSING_CLIENT: 'CodeWhisperer client not available', @@ -478,24 +477,15 @@ export class CodeReview { ) const aggregatedCodeScanIssueList = this.aggregateFindingsByFile( - findingsExceededLimit ? totalFindings.slice(0, CodeReview.MAX_FINDINGS_COUNT) : totalFindings, + totalFindings, setup.fileArtifacts, setup.folderArtifacts ) this.logging.info('Findings count grouped by file') - let aggregatedCodeScanIssueListSimplified: { filePath: string; issues: CodeReviewFindingSimplified[] }[] = [] aggregatedCodeScanIssueList.forEach(item => { this.logging.info(`File path - ${item.filePath} Findings count - ${item.issues.length}`) - let simplifiedIssues: CodeReviewFindingSimplified[] = [] - item.issues.forEach(issue => { - simplifiedIssues.push({ - filePath: issue.filePath, - startLine: issue.startLine, - endLine: issue.endLine, - title: issue.title, - severity: issue.severity, - }) + item.issues.forEach(issue => CodeReviewUtils.emitMetric( { reason: SuccessMetricName.IssuesDetected, @@ -512,11 +502,7 @@ export class CodeReview { this.logging, this.telemetry ) - }) - aggregatedCodeScanIssueListSimplified.push({ - filePath: item.filePath, - issues: simplifiedIssues, - }) + ) }) let scopeMessage = this.overrideDiffScan @@ -525,9 +511,14 @@ export class CodeReview { return { codeReviewId: jobId, - message: `${CODE_REVIEW_TOOL_NAME} tool completed successfully. Please inform the user to use the explain and fix buttons in the Code Issues Panel to get the best information about particular findings. ${scopeMessage} ${findingsExceededLimit ? ` Inform the user that we are limiting findings to top ${CodeReview.MAX_FINDINGS_COUNT} based on severity.` : ''}`, + message: `${CODE_REVIEW_TOOL_NAME} tool completed successfully. ${scopeMessage} ${ + findingsExceededLimit + ? ` Inform the user that because there were more than ${CodeReview.MAX_FINDINGS_COUNT} findings, you (the AI agent) will not have context about them. ` + + `They will need to use the Code Issues Panel to get more information.` + : '' + }`, findingsByFile: JSON.stringify(aggregatedCodeScanIssueList), - findingsByFileSimplified: JSON.stringify(aggregatedCodeScanIssueListSimplified), + findingsExceededLimit, } } @@ -566,13 +557,12 @@ export class CodeReview { ? parsedFindings.filter(finding => 'CodeDiff' === finding.findingContext) : parsedFindings totalFindings = totalFindings.concat(filteredFindings) - - if (totalFindings.length > CodeReview.MAX_FINDINGS_COUNT) { - findingsExceededLimit = true - break - } } while (nextFindingToken) + if (totalFindings.length > CodeReview.MAX_FINDINGS_COUNT) { + findingsExceededLimit = true + } + this.logging.info(`Total findings: ${totalFindings.length}`) return { totalFindings, findingsExceededLimit } } diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/qCodeAnalysis/codeReviewConstants.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/qCodeAnalysis/codeReviewConstants.ts index 442ac0f19a..5b83a7af94 100644 --- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/qCodeAnalysis/codeReviewConstants.ts +++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/qCodeAnalysis/codeReviewConstants.ts @@ -181,7 +181,7 @@ export const CODE_REVIEW_TOOL_DESCRIPTION = [ 'The tool will generate some findings grouped by file', 'Use following format STRICTLY to display the result of this tool for different scenarios:', '- When findings are present, you must inform user that you have completed the review of {file name / folder name / workspace} and found several issues that need attention. To inspect the details, and get fixes for those issues use the Code Issues panel.', - ' - When tool output message tells that findings were limited due to high count, you must inform the user that since there were lots of findings, you have included the top 300 findings only.', + ' - When tool output message tells that findings were limited due to high count, you must inform the user that since there were lots of findings, they have to use the Code Issues Panel to get more information about the findings.', '- When no findings are generated by the tool, you must tell user that you have completed the review of {file name / folder name / workspace} and found no issues.', ].join('\n') diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/qCodeAnalysis/codeReviewTypes.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/qCodeAnalysis/codeReviewTypes.ts index b77855b256..a4815fb18b 100644 --- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/qCodeAnalysis/codeReviewTypes.ts +++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/qCodeAnalysis/codeReviewTypes.ts @@ -44,7 +44,7 @@ export type CodeReviewResult = { codeReviewId: string message: string findingsByFile: string - findingsByFileSimplified: string + findingsExceededLimit: boolean } export type CodeReviewFinding = { @@ -68,14 +68,6 @@ export type CodeReviewFinding = { findingContext: string | null | undefined } -export type CodeReviewFindingSimplified = { - filePath: string - startLine: number - endLine: number - title: string - severity: string -} - export type CodeReviewMetric = | { reason: SuccessMetricName From 8ccb06768c4a386b0a4699d8b2e299f0aad110b1 Mon Sep 17 00:00:00 2001 From: Jonathan Breedlove Date: Tue, 18 Nov 2025 13:19:37 -0800 Subject: [PATCH 14/36] fix: resolve broken error handling in setPaidTierMode (#2500) Error handling in `setPaidTierMode` is broken as it attempts to JSON stringify a circular type which results in the Flare process crashing. This codepath is not new but is now being hit due to a service side change. --- .../src/language-server/agenticChat/agenticChatController.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/agenticChatController.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/agenticChatController.ts index 8290622b6b..cd520df283 100644 --- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/agenticChatController.ts +++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/agenticChatController.ts @@ -4192,7 +4192,7 @@ export class AgenticChatController implements ChatHandlers { this.setPaidTierMode(tabId, o.status !== 'none' ? 'paidtier' : 'freetier') }) .catch(err => { - this.#log(`setPaidTierMode: getSubscriptionStatus failed: ${JSON.stringify(err)}`) + this.#log(`setPaidTierMode: getSubscriptionStatus failed: ${(e as Error).message}`) }) // mode = isFreeTierUser ? 'freetier' : 'paidtier' return From ceda1d3b9ee8fdd6f22fabafff23665a27be80ad Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 18 Nov 2025 13:43:36 -0800 Subject: [PATCH 15/36] chore(release): release packages from branch main (#2498) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- package-lock.json | 2 +- server/aws-lsp-codewhisperer/CHANGELOG.md | 8 ++++++++ server/aws-lsp-codewhisperer/package.json | 2 +- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 9bb9542e18..489980dd3e 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -2,7 +2,7 @@ "chat-client": "0.1.41", "core/aws-lsp-core": "0.0.16", "server/aws-lsp-antlr4": "0.1.20", - "server/aws-lsp-codewhisperer": "0.0.90", + "server/aws-lsp-codewhisperer": "0.0.91", "server/aws-lsp-json": "0.1.21", "server/aws-lsp-partiql": "0.0.18", "server/aws-lsp-yaml": "0.1.21" diff --git a/package-lock.json b/package-lock.json index b22a439125..2e17a697f3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28215,7 +28215,7 @@ }, "server/aws-lsp-codewhisperer": { "name": "@aws/lsp-codewhisperer", - "version": "0.0.90", + "version": "0.0.91", "bundleDependencies": [ "@amzn/codewhisperer", "@amzn/codewhisperer-runtime", diff --git a/server/aws-lsp-codewhisperer/CHANGELOG.md b/server/aws-lsp-codewhisperer/CHANGELOG.md index cbaf261787..0a2d4707dc 100644 --- a/server/aws-lsp-codewhisperer/CHANGELOG.md +++ b/server/aws-lsp-codewhisperer/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [0.0.91](https://github.com/aws/language-servers/compare/lsp-codewhisperer/v0.0.90...lsp-codewhisperer/v0.0.91) (2025-11-18) + + +### Bug Fixes + +* **amazonq:** handle large results ([#2497](https://github.com/aws/language-servers/issues/2497)) ([b3efa7c](https://github.com/aws/language-servers/commit/b3efa7cff0b23608dd0cca796c9c95a672c9321a)) +* resolve broken error handling in setPaidTierMode ([#2500](https://github.com/aws/language-servers/issues/2500)) ([8ccb067](https://github.com/aws/language-servers/commit/8ccb06768c4a386b0a4699d8b2e299f0aad110b1)) + ## [0.0.90](https://github.com/aws/language-servers/compare/lsp-codewhisperer/v0.0.89...lsp-codewhisperer/v0.0.90) (2025-11-13) diff --git a/server/aws-lsp-codewhisperer/package.json b/server/aws-lsp-codewhisperer/package.json index da30654d7f..331c7d54fc 100644 --- a/server/aws-lsp-codewhisperer/package.json +++ b/server/aws-lsp-codewhisperer/package.json @@ -1,6 +1,6 @@ { "name": "@aws/lsp-codewhisperer", - "version": "0.0.90", + "version": "0.0.91", "description": "CodeWhisperer Language Server", "main": "out/index.js", "repository": { From 6fb9eed4940916cd93d5dab2cf343b9ed0b83ea0 Mon Sep 17 00:00:00 2001 From: aws-toolkit-automation <> Date: Tue, 18 Nov 2025 21:45:34 +0000 Subject: [PATCH 16/36] chore: bump agentic version: 1.46.0 --- app/aws-lsp-codewhisperer-runtimes/src/version.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/aws-lsp-codewhisperer-runtimes/src/version.json b/app/aws-lsp-codewhisperer-runtimes/src/version.json index 46d9d92611..aeef79ec50 100644 --- a/app/aws-lsp-codewhisperer-runtimes/src/version.json +++ b/app/aws-lsp-codewhisperer-runtimes/src/version.json @@ -1,3 +1,3 @@ { - "agenticChat": "1.45.0" + "agenticChat": "1.46.0" } From 9fddc8e11f583dbf089f93979e1602d8c8795a16 Mon Sep 17 00:00:00 2001 From: Jonathan Breedlove Date: Tue, 18 Nov 2025 13:56:32 -0800 Subject: [PATCH 17/36] fix: incorrect error reference in previous fix --- .../src/language-server/agenticChat/agenticChatController.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/agenticChatController.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/agenticChatController.ts index cd520df283..e3548e4e5c 100644 --- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/agenticChatController.ts +++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/agenticChatController.ts @@ -4192,7 +4192,7 @@ export class AgenticChatController implements ChatHandlers { this.setPaidTierMode(tabId, o.status !== 'none' ? 'paidtier' : 'freetier') }) .catch(err => { - this.#log(`setPaidTierMode: getSubscriptionStatus failed: ${(e as Error).message}`) + this.#log(`setPaidTierMode: getSubscriptionStatus failed: ${(err as Error).message}`) }) // mode = isFreeTierUser ? 'freetier' : 'paidtier' return From 5d6590a1d8c7aeb80b75036eb0e1b3802afe5c08 Mon Sep 17 00:00:00 2001 From: Richard Li <742829+rli@users.noreply.github.com> Date: Tue, 18 Nov 2025 14:24:52 -0800 Subject: [PATCH 18/36] fix: resolve process crash when managing BID subscription (#2501) Same root cause as #2500 --- .../src/language-server/agenticChat/agenticChatController.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/agenticChatController.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/agenticChatController.ts index e3548e4e5c..f9471c153f 100644 --- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/agenticChatController.ts +++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/agenticChatController.ts @@ -4336,7 +4336,7 @@ export class AgenticChatController implements ChatHandlers { } }) .catch(e => { - this.#log(`onManageSubscription: getSubscriptionStatus failed: ${JSON.stringify(e)}`) + this.#log(`onManageSubscription: getSubscriptionStatus failed: ${(e as Error).message}`) // TOOD: for visibility, the least-bad option is showMessage, which appears as an IDE notification. // But it likely makes sense to route this to chat ERROR_MESSAGE mynahApi.showError(), so the message will appear in chat. // https://github.com/aws/language-servers/blob/1b154570c9cf1eb1d56141095adea4459426b774/chat-client/src/client/chat.ts#L176-L178 From 30e28b75499b1a55da904697fd446a30c6a87665 Mon Sep 17 00:00:00 2001 From: Laxman Reddy <141967714+laileni-aws@users.noreply.github.com> Date: Tue, 18 Nov 2025 14:39:46 -0800 Subject: [PATCH 19/36] fix(amazonq): prevent base64 encoding error by passing undefined instead of empty object (#2492) * fix(amazonq): prevent base64 encoding error by passing undefined instead of empty object Fixes #8253, #7896, #8076, #8184 When userInputMessageContext was undefined, it was being replaced with an empty object {}. The AWS SDK's base64 encoder attempted to encode this empty object and threw: "toBase64 encoder function only accepts string | Uint8Array". Changed messageToStreamingMessage() and chatMessageToMessage() to pass undefined instead of {} when userInputMessageContext is not provided. * fix(amazonq): prevent base64 encoding error by passing undefined instead of empty object (#2459) Fixes #8253, #7896, #8076, #8184 When userInputMessageContext was undefined, it was being replaced with an empty object {}. The AWS SDK's base64 encoder attempted to encode this empty object and threw: "toBase64 encoder function only accepts string | Uint8Array". Changed messageToStreamingMessage() and chatMessageToMessage() to pass undefined instead of {} when userInputMessageContext is not provided. --------- Co-authored-by: aws-toolkit-automation <43144436+aws-toolkit-automation@users.noreply.github.com> --- .../agenticChat/tools/chatDb/util.test.ts | 44 ++++++++++++++++++- .../agenticChat/tools/chatDb/util.ts | 4 +- 2 files changed, 45 insertions(+), 3 deletions(-) diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/chatDb/util.test.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/chatDb/util.test.ts index 670fc243ca..4907b25e0a 100644 --- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/chatDb/util.test.ts +++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/chatDb/util.test.ts @@ -40,7 +40,31 @@ describe('ChatDb Utilities', () => { userInputMessage: { content: 'Hello', images: [], - userInputMessageContext: {}, + userInputMessageContext: undefined, + userIntent: undefined, + origin: 'IDE', + }, + }) + }) + + it('should preserve userInputMessageContext when provided', () => { + const message: Message = { + body: 'Hello', + type: 'prompt', + userInputMessageContext: { + editorState: { document: { relativeFilePath: 'test.ts' } }, + }, + } + + const result = messageToStreamingMessage(message) + + assert.deepStrictEqual(result, { + userInputMessage: { + content: 'Hello', + images: [], + userInputMessageContext: { + editorState: { document: { relativeFilePath: 'test.ts' } }, + }, userIntent: undefined, origin: 'IDE', }, @@ -134,6 +158,24 @@ describe('ChatDb Utilities', () => { }) }) + it('should handle undefined userInputMessageContext', () => { + const chatMessage: StreamingMessage = { + userInputMessage: { + content: 'Hello', + }, + } + + const result = chatMessageToMessage(chatMessage) + + assert.deepStrictEqual(result, { + body: 'Hello', + origin: 'IDE', + type: 'prompt', + userInputMessageContext: undefined, + userIntent: undefined, + }) + }) + it('should convert assistantResponseMessage to answer Message', () => { const chatMessage: StreamingMessage = { assistantResponseMessage: { diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/chatDb/util.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/chatDb/util.ts index 77496cd96b..63c9ae8583 100644 --- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/chatDb/util.ts +++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/chatDb/util.ts @@ -160,7 +160,7 @@ export function messageToStreamingMessage(msg: Message): StreamingMessage { content: msg.body, userIntent: msg.userIntent, origin: msg.origin || 'IDE', - userInputMessageContext: msg.userInputMessageContext || {}, + userInputMessageContext: msg.userInputMessageContext, images: msg.images || [], }, } @@ -208,7 +208,7 @@ export function chatMessageToMessage(chatMessage: StreamingMessage): Message { type: 'prompt', userIntent: userInputMessage.userIntent, origin: userInputMessage.origin || 'IDE', - userInputMessageContext: userInputMessage.userInputMessageContext || {}, + userInputMessageContext: userInputMessage.userInputMessageContext, } } else if ('assistantResponseMessage' in chatMessage) { const assistantResponseMessage = chatMessage.assistantResponseMessage as AssistantResponseMessage From e8d4bf588e9b7bc13102b33ee03bd357f9698811 Mon Sep 17 00:00:00 2001 From: invictus <149003065+ashishrp-aws@users.noreply.github.com> Date: Thu, 20 Nov 2025 15:49:45 -0800 Subject: [PATCH 20/36] feat(amazonq): adding MCP registry for governance for Amazon Q (#2512) * feat: add MCP registry service and validator for governance (#2433) * feat: add MCP registry service and validator for governance * fix: fix for unit tests * fix: fix for using httpUtils with proxy agent * feat: add MCP registry validation and server config conversion (#2440) * feat: add MCP registry validation and server config conversion * fix: fix for mcpManager failures * feat: implement MCP registry service with validation, error handling, and synchronization (#2443) * feat(amazonq): add MCP registry sync, enterprise validation. (#2450) * feat(amazonq): add MCP registry sync, enterprise validation, ACG support, version caching * fix: fix for test failures * fix: removed Agentcore check * feat: add OCI registry support, improve MCP initialization flow (#2465) * feat: add OCI registry support, improve MCP initialization flow, and enhance registry validation * fix: fix for failing tests * fix: fix to make registryActive non-optional * fix(amazonq): separate server discovery from init (#2480) * fix(amazonq): separate server discovery from init and improve error handling * fix: update package-lock.json * fix: fix for delete, save and cancel buttons for registry mcps * fix: fix to add addiotnal header and variables to registry mcps * fix: fix for failing registryUrl tests * fix: move OCI environment variables to config.env and correct mcpRegistryUrl property name (#2486) * fix: fix for arguments for local docker mcp servers (#2489) * fix: fix for env variables for local docker mcp servers * fix: imporve readability for oci check * feat: add Docker env var support and enable timeout config for MCP (#2494) * feat: add Docker env var support and enable timeout config for MCP registry servers * fix: fix for unit tests * fix: fix for compilation failure * fix(amazonq): fix for server refresh * fix: fix for server refresh * fix: fix for server init * fix: fix to add the mcp command in logs (#2499) * fix: fix to add the mcp command in logs * fix: fix to add stderr logs * fix: fix to provide error messages for removed errors from registry (#2511) * fix: fix upgarde the lsp version to 1.47.0 * fix: fix to provide server error messages for removed errors * revert: revert package-lock.json changes * Revert "fix: fix upgarde the lsp version to 1.47.0" This reverts commit 40869627a2e265efc6dc4bff6cd4b81679ce71a1. * revert: revert for check interval * fix: fix for failing unit tests --------- Co-authored-by: aws-toolkit-automation <43144436+aws-toolkit-automation@users.noreply.github.com> Co-authored-by: Richard Li <742829+rli@users.noreply.github.com> --- app/aws-lsp-antlr4-runtimes/package.json | 2 +- app/aws-lsp-buildspec-runtimes/package.json | 2 +- app/aws-lsp-buildspec-runtimes/src/index.ts | 3 +- .../package.json | 2 +- .../src/index.ts | 3 +- .../package.json | 2 +- app/aws-lsp-identity-runtimes/package.json | 2 +- app/aws-lsp-json-runtimes/package.json | 2 +- .../package.json | 2 +- app/aws-lsp-partiql-runtimes/package.json | 2 +- app/aws-lsp-s3-runtimes/package.json | 2 +- app/aws-lsp-yaml-json-webworker/package.json | 2 +- app/aws-lsp-yaml-runtimes/package.json | 2 +- app/hello-world-lsp-runtimes/package.json | 2 +- chat-client/package.json | 8 +- chat-client/src/client/mcpMynahUi.ts | 300 ++++++--- client/vscode/package.json | 4 +- core/aws-lsp-core/package.json | 2 +- core/aws-lsp-core/src/util/httpsUtils.ts | 10 +- .../q-agentic-chat-server/package.json | 2 +- package-lock.json | 190 ++---- package.json | 2 +- server/aws-lsp-antlr4/package.json | 2 +- server/aws-lsp-buildspec/package.json | 2 +- server/aws-lsp-cloudformation/package.json | 2 +- server/aws-lsp-codewhisperer/package.json | 4 +- .../tools/mcp/mcpEventHandler.test.ts | 39 +- .../agenticChat/tools/mcp/mcpEventHandler.ts | 406 ++++++++++- .../agenticChat/tools/mcp/mcpManager.test.ts | 518 +++++++++++---- .../agenticChat/tools/mcp/mcpManager.ts | 508 +++++++++++--- .../tools/mcp/mcpRegistryConstants.ts | 36 + .../tools/mcp/mcpRegistryService.test.ts | 345 ++++++++++ .../tools/mcp/mcpRegistryService.ts | 130 ++++ .../tools/mcp/mcpRegistryValidator.test.ts | 542 +++++++++++++++ .../tools/mcp/mcpRegistryValidator.ts | 236 +++++++ .../mcp/mcpServerConfigConverter.test.ts | 629 ++++++++++++++++++ .../tools/mcp/mcpServerConfigConverter.ts | 144 ++++ .../agenticChat/tools/mcp/mcpTypes.ts | 64 +- .../agenticChat/tools/mcp/mcpUtils.test.ts | 214 +++++- .../agenticChat/tools/mcp/mcpUtils.ts | 176 ++++- .../tools/mcp/profileStatusMonitor.test.ts | 224 ++++++- .../tools/mcp/profileStatusMonitor.ts | 108 ++- .../agenticChat/tools/toolServer.ts | 194 ++++-- server/aws-lsp-identity/package.json | 2 +- server/aws-lsp-json/package.json | 2 +- server/aws-lsp-notification/package.json | 2 +- server/aws-lsp-partiql/package.json | 2 +- server/aws-lsp-s3/package.json | 2 +- server/aws-lsp-yaml/package.json | 2 +- server/device-sso-auth-lsp/package.json | 2 +- server/hello-world-lsp/package.json | 2 +- 51 files changed, 4480 insertions(+), 607 deletions(-) create mode 100644 server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpRegistryConstants.ts create mode 100644 server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpRegistryService.test.ts create mode 100644 server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpRegistryService.ts create mode 100644 server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpRegistryValidator.test.ts create mode 100644 server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpRegistryValidator.ts create mode 100644 server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpServerConfigConverter.test.ts create mode 100644 server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpServerConfigConverter.ts diff --git a/app/aws-lsp-antlr4-runtimes/package.json b/app/aws-lsp-antlr4-runtimes/package.json index 747645c40d..49c60085ad 100644 --- a/app/aws-lsp-antlr4-runtimes/package.json +++ b/app/aws-lsp-antlr4-runtimes/package.json @@ -12,7 +12,7 @@ "webpack": "webpack" }, "dependencies": { - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "@aws/lsp-antlr4": "*", "antlr4-c3": "^3.4.2", "antlr4ng": "^3.0.14" diff --git a/app/aws-lsp-buildspec-runtimes/package.json b/app/aws-lsp-buildspec-runtimes/package.json index 8daa91b5e1..d9cd2cefaf 100644 --- a/app/aws-lsp-buildspec-runtimes/package.json +++ b/app/aws-lsp-buildspec-runtimes/package.json @@ -7,7 +7,7 @@ "compile": "tsc --build" }, "dependencies": { - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "@aws/lsp-buildspec": "^0.0.1" } } diff --git a/app/aws-lsp-buildspec-runtimes/src/index.ts b/app/aws-lsp-buildspec-runtimes/src/index.ts index 26ae30fb17..e083578a4a 100644 --- a/app/aws-lsp-buildspec-runtimes/src/index.ts +++ b/app/aws-lsp-buildspec-runtimes/src/index.ts @@ -23,7 +23,8 @@ const props: BuildspecServerProps = { } async function getFileAsync(url: string): Promise { - return await httpsUtils.requestContent(url) + const response = await httpsUtils.requestContent(url) + return response.content } export const server = new BuildspecServer(props) diff --git a/app/aws-lsp-cloudformation-runtimes/package.json b/app/aws-lsp-cloudformation-runtimes/package.json index e4e277ecde..7b2cc87389 100644 --- a/app/aws-lsp-cloudformation-runtimes/package.json +++ b/app/aws-lsp-cloudformation-runtimes/package.json @@ -7,7 +7,7 @@ "compile": "tsc --build" }, "dependencies": { - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "@aws/lsp-cloudformation": "^0.0.1" } } diff --git a/app/aws-lsp-cloudformation-runtimes/src/index.ts b/app/aws-lsp-cloudformation-runtimes/src/index.ts index bfe18fbcdc..b1f9952e11 100644 --- a/app/aws-lsp-cloudformation-runtimes/src/index.ts +++ b/app/aws-lsp-cloudformation-runtimes/src/index.ts @@ -49,7 +49,8 @@ const props: CloudFormationServerProps = { } async function getFileAsync(url: string): Promise { - return await httpsUtils.requestContent(url) + const response = await httpsUtils.requestContent(url) + return response.content } export const server = new CloudFormationServer(props) diff --git a/app/aws-lsp-codewhisperer-runtimes/package.json b/app/aws-lsp-codewhisperer-runtimes/package.json index fac1a07ce9..4ef8c94120 100644 --- a/app/aws-lsp-codewhisperer-runtimes/package.json +++ b/app/aws-lsp-codewhisperer-runtimes/package.json @@ -23,7 +23,7 @@ "local-build": "node scripts/local-build.js" }, "dependencies": { - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "@aws/lsp-codewhisperer": "*", "copyfiles": "^2.4.1", "cross-env": "^7.0.3", diff --git a/app/aws-lsp-identity-runtimes/package.json b/app/aws-lsp-identity-runtimes/package.json index 74fa7c332b..f24156f2a6 100644 --- a/app/aws-lsp-identity-runtimes/package.json +++ b/app/aws-lsp-identity-runtimes/package.json @@ -7,7 +7,7 @@ "compile": "tsc --build" }, "dependencies": { - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "@aws/lsp-identity": "^0.0.1" } } diff --git a/app/aws-lsp-json-runtimes/package.json b/app/aws-lsp-json-runtimes/package.json index 4348ae866a..1073894a41 100644 --- a/app/aws-lsp-json-runtimes/package.json +++ b/app/aws-lsp-json-runtimes/package.json @@ -11,7 +11,7 @@ "webpack": "webpack" }, "dependencies": { - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "@aws/lsp-json": "*" }, "devDependencies": { diff --git a/app/aws-lsp-notification-runtimes/package.json b/app/aws-lsp-notification-runtimes/package.json index 47ea043b34..3ec6f10249 100644 --- a/app/aws-lsp-notification-runtimes/package.json +++ b/app/aws-lsp-notification-runtimes/package.json @@ -7,7 +7,7 @@ "compile": "tsc --build" }, "dependencies": { - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "@aws/lsp-notification": "^0.0.1" } } diff --git a/app/aws-lsp-partiql-runtimes/package.json b/app/aws-lsp-partiql-runtimes/package.json index 9b8ef07a25..d57da0e7ff 100644 --- a/app/aws-lsp-partiql-runtimes/package.json +++ b/app/aws-lsp-partiql-runtimes/package.json @@ -11,7 +11,7 @@ "package": "npm run compile && npm run compile:webpack" }, "dependencies": { - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "@aws/lsp-partiql": "^0.0.18" }, "devDependencies": { diff --git a/app/aws-lsp-s3-runtimes/package.json b/app/aws-lsp-s3-runtimes/package.json index 6afd693a46..b347462a73 100644 --- a/app/aws-lsp-s3-runtimes/package.json +++ b/app/aws-lsp-s3-runtimes/package.json @@ -10,7 +10,7 @@ "compile": "tsc --build" }, "dependencies": { - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "@aws/lsp-s3": "^0.0.1" } } diff --git a/app/aws-lsp-yaml-json-webworker/package.json b/app/aws-lsp-yaml-json-webworker/package.json index 262e48b798..6516bde888 100644 --- a/app/aws-lsp-yaml-json-webworker/package.json +++ b/app/aws-lsp-yaml-json-webworker/package.json @@ -11,7 +11,7 @@ "serve:webpack": "NODE_ENV=development webpack serve" }, "dependencies": { - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "@aws/lsp-json": "*", "@aws/lsp-yaml": "*" }, diff --git a/app/aws-lsp-yaml-runtimes/package.json b/app/aws-lsp-yaml-runtimes/package.json index 6bd43690ef..e849429bbd 100644 --- a/app/aws-lsp-yaml-runtimes/package.json +++ b/app/aws-lsp-yaml-runtimes/package.json @@ -11,7 +11,7 @@ "webpack": "webpack" }, "dependencies": { - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "@aws/lsp-yaml": "*" }, "devDependencies": { diff --git a/app/hello-world-lsp-runtimes/package.json b/app/hello-world-lsp-runtimes/package.json index 7b1bf6f9cd..7bced44254 100644 --- a/app/hello-world-lsp-runtimes/package.json +++ b/app/hello-world-lsp-runtimes/package.json @@ -15,7 +15,7 @@ }, "dependencies": { "@aws/hello-world-lsp": "^0.0.1", - "@aws/language-server-runtimes": "^0.3.1" + "@aws/language-server-runtimes": "0.3.6" }, "devDependencies": { "@types/chai": "^4.3.5", diff --git a/chat-client/package.json b/chat-client/package.json index 3a87cd8755..a0b3a9b730 100644 --- a/chat-client/package.json +++ b/chat-client/package.json @@ -24,10 +24,10 @@ "package": "webpack" }, "dependencies": { - "@aws/chat-client-ui-types": "^0.1.63", - "@aws/language-server-runtimes": "^0.3.1", - "@aws/language-server-runtimes-types": "^0.1.57", - "@aws/mynah-ui": "^4.36.8" + "@aws/chat-client-ui-types": "0.1.68", + "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes-types": "0.1.62", + "@aws/mynah-ui": "^4.38.0" }, "devDependencies": { "@types/jsdom": "^21.1.6", diff --git a/chat-client/src/client/mcpMynahUi.ts b/chat-client/src/client/mcpMynahUi.ts index 0ee418e925..ffc21ef772 100644 --- a/chat-client/src/client/mcpMynahUi.ts +++ b/chat-client/src/client/mcpMynahUi.ts @@ -57,6 +57,8 @@ export type McpFilterOption = { export type McpListItem = { title: string description?: string + icon?: string + actions?: any[] groupActions?: any } @@ -132,6 +134,8 @@ export class McpMynahUi { return { title: item.title, description: item.description, + icon: item.icon ? toMynahIcon(item.icon) : undefined, + actions: item.groupActions, } }) @@ -205,7 +209,7 @@ export class McpMynahUi { /** * Creates a detailed list configuration for viewing an MCP server */ - private createViewMcpServerDetailedList(params: McpServerParams) { + private createViewMcpServerDetailedList(params: McpServerParams, isMcpRegistry: boolean = false) { const detailedList = { selectable: false, textDirection: 'row', @@ -225,10 +229,14 @@ export class McpMynahUi { ...(action.id === MCP_IDS.DETAILS_MENU ? { items: [ - { - id: MCP_IDS.DISABLE_SERVER, - text: `Disable MCP server`, - }, + ...(!isMcpRegistry + ? [ + { + id: MCP_IDS.DISABLE_SERVER, + text: `Disable MCP server`, + }, + ] + : []), { id: MCP_IDS.DELETE_SERVER, confirmation: { @@ -441,96 +449,220 @@ export class McpMynahUi { } /** - * Handles MCP server click events + * Creates a detailed list for registry server view */ - public mcpServerClick(params: McpServerClickResult) { - const typedParams = params as McpServerParams - if (params.id === MCP_IDS.ADD_NEW || params.id === MCP_IDS.EDIT || params.id === MCP_IDS.FIX_SERVER) { - this.mynahUi.toggleSplashLoader(false) + private createRegistryServerDetailedList(params: McpServerParams): any { + return { + selectable: false, + textDirection: 'column' as const, + header: { + title: params.header?.title || 'Add MCP Server', + description: params.header?.description || '', + status: params.header?.status, + actions: params.header?.actions?.map(action => ({ + ...action, + icon: action.icon ? toMynahIcon(action.icon) : undefined, + ...(action.id === MCP_IDS.DETAILS_MENU + ? { + items: [ + { + id: MCP_IDS.DELETE_SERVER, + confirmation: { + cancelButtonText: 'Cancel', + confirmButtonText: 'Delete', + title: `Delete ${ + params.header?.title && + params.header.title.length > MCP_UI_CONSTANTS.MAX_SERVER_NAME_LENGTH + ? params.header.title.slice( + 0, + MCP_UI_CONSTANTS.MAX_SERVER_NAME_LENGTH + ) + '...' + : params.header?.title + } MCP server`, + description: + 'This configuration will be deleted and no longer available in Q. \n\n This cannot be undone.', + }, + text: `Delete MCP server`, + }, + ], + } + : {}), + })), + }, + filterOptions: this.processFilterOptions(params.filterOptions), + filterActions: params.filterActions, + list: params.list?.map(group => ({ + groupName: group.groupName, + children: group.children?.map((item: any) => ({ + title: item.title, + description: item.description, + icon: toMynahIcon(item.icon || 'folder'), + actions: (item.actions || []).map((action: any) => ({ + id: action.id, + text: action.text, + status: action.status, + disabled: action.disabled, + })), + groupActions: item.groupActions, + })), + })), + } + } - const uiFilters = (typedParams.filterOptions ?? []) as McpFilterOption[] - const initial = uiFilters.find(f => f.id === 'transport') - let _lastTransport = initial?.value as unknown as string + /** + * Creates events for registry server view + */ + private createRegistryServerEvents(isEditMode: boolean = false, serverName?: string) { + return { + onBackClick: () => this.messager.onListMcpServers(), + onActionClick: (action: ChatItemButton, item?: DetailedListItem) => { + if (action.id === 'install-registry-server') { + this.mynahUi.toggleSplashLoader(true, '**Installing MCP Server**') + this.messager.onMcpServerClick(action.id, item?.title) + } + }, + onFilterActionClick: (actionParams: McpServerClickResult, filterValues?: Record) => { + if (actionParams.id === MCP_IDS.CANCEL) { + this.messager.onListMcpServers() + return + } - const detailedList = this.createAddMcpServerDetailedList(typedParams) + if (actionParams.id === MCP_IDS.SAVE) { + this.mynahUi.toggleSplashLoader(true, '**Installing MCP Server**') + this.messager.onMcpServerClick(actionParams.id, serverName, filterValues) + } + }, + onTitleActionClick: (action: ChatItemButton) => { + const actionServerName = (action as any).data?.serverName || serverName + this.messager.onMcpServerClick(action.id, actionServerName) + }, + } + } + + /** + * Creates events for manual MCP server form + */ + private createManualServerEvents(lastTransport: string) { + let _lastTransport = lastTransport + return { + onBackClick: () => { + this.messager.onListMcpServers() + }, + onFilterValueChange: (filterValues: Record) => { + const newTransport = filterValues?.transport + if (!newTransport || newTransport === _lastTransport) { + return + } - const events = { - onBackClick: () => { + _lastTransport = newTransport + this.messager.onMcpServerClick(MCP_IDS.CHANGE_TRANSPORT, filterValues.name, filterValues) + }, + onFilterActionClick: ( + actionParams: McpServerClickResult, + filterValues?: Record, + isValid?: boolean + ) => { + if (actionParams.id === MCP_IDS.CANCEL) { this.messager.onListMcpServers() - }, - onFilterValueChange: (filterValues: Record) => { - const newTransport = filterValues?.transport - if (!newTransport || newTransport === _lastTransport) { - return - } + return + } - _lastTransport = newTransport - this.messager.onMcpServerClick(MCP_IDS.CHANGE_TRANSPORT, filterValues.name, filterValues) - }, - onFilterActionClick: ( - actionParams: McpServerClickResult, - filterValues?: Record, - isValid?: boolean - ) => { - if (actionParams.id === MCP_IDS.CANCEL) { - this.messager.onListMcpServers() - return - } + // new and update will share the same save-mcp + if (actionParams.id === MCP_IDS.SAVE) { + this.mynahUi.toggleSplashLoader(true, '**Activating MCP Server**') + this.messager.onMcpServerClick(actionParams.id, 'Save configuration', filterValues) + } + }, + onTitleActionClick: (action: ChatItemButton) => { + const serverName = (action as any).data?.serverName + this.messager.onMcpServerClick(action.id, serverName) + }, + } + } - // new and update will share the same save-mcp - if (actionParams.id === MCP_IDS.SAVE) { - this.mynahUi.toggleSplashLoader(true, '**Activating MCP Server**') - this.messager.onMcpServerClick(actionParams.id, 'Save configuration', filterValues) - } - }, - onTitleActionClick: (action: ChatItemButton) => { - const serverName = (action as any).data?.serverName - this.messager.onMcpServerClick(action.id, serverName) - }, - } + /** + * Handles adding/editing MCP server (registry or manual) + */ + private handleAddOrEditServer(params: McpServerClickResult) { + const typedParams = params as McpServerParams + this.mynahUi.toggleSplashLoader(false) + + const isMcpRegistry = (params as any).isMcpRegistry === true + const isEditMode = typedParams.header?.title === 'Edit MCP Server' + + if (isMcpRegistry) { + const detailedList = this.createRegistryServerDetailedList(typedParams) + const serverName = (typedParams.filterOptions?.find(f => f.id === 'name') as any)?.value as string + const events = this.createRegistryServerEvents(isEditMode, serverName) this.mynahUi.openDetailedList({ detailedList, events }, true) - } else if (params.id === MCP_IDS.OPEN_SERVER) { - //turning off splash loader in case of being on when new server is added - this.mynahUi.toggleSplashLoader(false) - const detailedList = this.createViewMcpServerDetailedList(typedParams) + } else { + const uiFilters = (typedParams.filterOptions ?? []) as McpFilterOption[] + const initial = uiFilters.find(f => f.id === 'transport') + const lastTransport = initial?.value as unknown as string - const mcpServerSheet = this.mynahUi.openDetailedList( - { - detailedList: detailedList, - events: { - onFilterValueChange: (filterValues: Record) => { - // Handle filter value changes for tool permissions - this.messager.onMcpServerClick( - MCP_IDS.PERMISSION_CHANGE, - detailedList.header?.title, - filterValues - ) - }, - onFilterActionClick: () => {}, - onTitleActionClick: (action: ChatItemButton) => { - this.messager.onMcpServerClick(action.id, detailedList.header?.title) - }, - onKeyPress: (e: KeyboardEvent) => { - if (e.key === 'Escape') { - mcpServerSheet.close() - } - }, - onActionClick: (action: ChatItemButton) => { - // Handle action clicks (save, cancel, etc.) - this.messager.onMcpServerClick(action.id) - }, - onClose: () => { - this.messager.onMcpServerClick(MCP_IDS.SAVE_PERMISSION_CHANGE) - this.isMcpServersListActive = false - }, - onBackClick: () => { - this.messager.onMcpServerClick(MCP_IDS.SAVE_PERMISSION_CHANGE) - this.messager.onListMcpServers() - }, + const detailedList = this.createAddMcpServerDetailedList(typedParams) + const events = this.createManualServerEvents(lastTransport) + this.mynahUi.openDetailedList({ detailedList, events }, true) + } + } + + /** + * Handles opening MCP server details + */ + private handleOpenServer(params: McpServerClickResult) { + const typedParams = params as McpServerParams + this.mynahUi.toggleSplashLoader(false) + + const isMcpRegistry = (params as any).isMcpRegistry === true + const detailedList = this.createViewMcpServerDetailedList(typedParams, isMcpRegistry) + + const mcpServerSheet = this.mynahUi.openDetailedList( + { + detailedList: detailedList, + events: { + onFilterValueChange: (filterValues: Record) => { + // Handle filter value changes for tool permissions + this.messager.onMcpServerClick( + MCP_IDS.PERMISSION_CHANGE, + detailedList.header?.title, + filterValues + ) + }, + onFilterActionClick: () => {}, + onTitleActionClick: (action: ChatItemButton) => { + this.messager.onMcpServerClick(action.id, detailedList.header?.title) + }, + onKeyPress: (e: KeyboardEvent) => { + if (e.key === 'Escape') { + mcpServerSheet.close() + } + }, + onActionClick: (action: ChatItemButton) => { + // Handle action clicks (save, cancel, etc.) + this.messager.onMcpServerClick(action.id) + }, + onClose: () => { + this.messager.onMcpServerClick(MCP_IDS.SAVE_PERMISSION_CHANGE) + this.isMcpServersListActive = false + }, + onBackClick: () => { + this.messager.onMcpServerClick(MCP_IDS.SAVE_PERMISSION_CHANGE) + this.messager.onListMcpServers() }, }, - true - ) + }, + true + ) + } + + /** + * Handles MCP server click events + */ + public mcpServerClick(params: McpServerClickResult) { + if (params.id === MCP_IDS.ADD_NEW || params.id === MCP_IDS.EDIT || params.id === MCP_IDS.FIX_SERVER) { + this.handleAddOrEditServer(params) + } else if (params.id === MCP_IDS.OPEN_SERVER) { + this.handleOpenServer(params) } else if ([MCP_IDS.DISABLE_SERVER, MCP_IDS.DELETE_SERVER, MCP_IDS.ENABLE_SERVER].includes(params.id)) { this.messager.onListMcpServers() } else if (params.id === MCP_IDS.UPDATE_LIST) { diff --git a/client/vscode/package.json b/client/vscode/package.json index 7a2e502264..8f8b68e7f8 100644 --- a/client/vscode/package.json +++ b/client/vscode/package.json @@ -351,8 +351,8 @@ "devDependencies": { "@aws-sdk/credential-providers": "^3.731.1", "@aws-sdk/types": "^3.734.0", - "@aws/chat-client-ui-types": "^0.1.63", - "@aws/language-server-runtimes": "^0.3.1", + "@aws/chat-client-ui-types": "0.1.68", + "@aws/language-server-runtimes": "0.3.6", "@types/uuid": "^9.0.8", "@types/vscode": "^1.98.0", "jose": "^5.2.4", diff --git a/core/aws-lsp-core/package.json b/core/aws-lsp-core/package.json index 156ccb8814..7cccc979f6 100644 --- a/core/aws-lsp-core/package.json +++ b/core/aws-lsp-core/package.json @@ -28,7 +28,7 @@ "prepack": "shx cp ../../LICENSE ../../NOTICE ../../SECURITY.md ." }, "dependencies": { - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "@gerhobbelt/gitignore-parser": "^0.2.0-9", "cross-spawn": "7.0.6", "jose": "^5.2.4", diff --git a/core/aws-lsp-core/src/util/httpsUtils.ts b/core/aws-lsp-core/src/util/httpsUtils.ts index b42d42f2b4..e5ca35da75 100644 --- a/core/aws-lsp-core/src/util/httpsUtils.ts +++ b/core/aws-lsp-core/src/util/httpsUtils.ts @@ -1,9 +1,9 @@ import * as https from 'https' +import { Agent } from 'https' -export function requestContent(url: string): Promise { +export function requestContent(url: string, agent?: Agent): Promise<{ content: string; contentType?: string }> { return new Promise((resolve, reject) => { - const request = https.get(url, response => { - // Handle the response + const request = https.get(url, { agent }, response => { const statusCode = response.statusCode if (statusCode !== 200) { reject(new Error(`Request failed with status code ${statusCode}`)) @@ -11,6 +11,7 @@ export function requestContent(url: string): Promise { return } + const contentType = response.headers['content-type'] let rawData = '' response.setEncoding('utf8') @@ -19,8 +20,7 @@ export function requestContent(url: string): Promise { }) response.on('end', () => { - // File download completed - resolve(rawData) + resolve({ content: rawData, contentType }) }) }) diff --git a/integration-tests/q-agentic-chat-server/package.json b/integration-tests/q-agentic-chat-server/package.json index 92882f1859..84cc85f1be 100644 --- a/integration-tests/q-agentic-chat-server/package.json +++ b/integration-tests/q-agentic-chat-server/package.json @@ -9,7 +9,7 @@ "test-integ": "npm run compile && mocha --timeout 30000 \"./out/**/*.test.js\" --retries 2" }, "dependencies": { - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "@aws/lsp-core": "*" }, "devDependencies": { diff --git a/package-lock.json b/package-lock.json index 2e17a697f3..993bcbffe6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "integration-tests/*" ], "dependencies": { - "@aws/language-server-runtimes": "^0.3.5", + "@aws/language-server-runtimes": "0.3.6", "@smithy/types": "4.2.0", "clean": "^4.0.2", "typescript": "^5.8.2" @@ -48,7 +48,7 @@ "name": "@aws/lsp-antlr4-runtimes", "version": "0.0.1", "dependencies": { - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "@aws/lsp-antlr4": "*", "antlr4-c3": "^3.4.2", "antlr4ng": "^3.0.14" @@ -71,7 +71,7 @@ "name": "@aws/lsp-buildspec-runtimes", "version": "0.0.1", "dependencies": { - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "@aws/lsp-buildspec": "^0.0.1" } }, @@ -79,7 +79,7 @@ "name": "@aws/lsp-cloudformation-runtimes", "version": "0.0.1", "dependencies": { - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "@aws/lsp-cloudformation": "^0.0.1" } }, @@ -87,7 +87,7 @@ "name": "@aws/lsp-codewhisperer-runtimes", "version": "0.0.1", "dependencies": { - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "@aws/lsp-codewhisperer": "*", "copyfiles": "^2.4.1", "cross-env": "^7.0.3", @@ -136,7 +136,7 @@ "name": "@aws/lsp-identity-runtimes", "version": "0.1.0", "dependencies": { - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "@aws/lsp-identity": "^0.0.1" } }, @@ -144,7 +144,7 @@ "name": "@aws/lsp-json-runtimes", "version": "0.0.1", "dependencies": { - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "@aws/lsp-json": "*" }, "devDependencies": { @@ -164,7 +164,7 @@ "name": "@aws/lsp-notification-runtimes", "version": "0.1.0", "dependencies": { - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "@aws/lsp-notification": "^0.0.1" } }, @@ -172,7 +172,7 @@ "name": "@aws/lsp-partiql-runtimes", "version": "0.0.1", "dependencies": { - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "@aws/lsp-partiql": "^0.0.18" }, "devDependencies": { @@ -186,7 +186,7 @@ "name": "@aws/lsp-s3-runtimes", "version": "0.0.1", "dependencies": { - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "@aws/lsp-s3": "^0.0.1" }, "bin": { @@ -197,7 +197,7 @@ "name": "@aws/lsp-yaml-json-webworker", "version": "0.0.1", "dependencies": { - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "@aws/lsp-json": "*", "@aws/lsp-yaml": "*" }, @@ -217,7 +217,7 @@ "name": "@aws/lsp-yaml-runtimes", "version": "0.0.1", "dependencies": { - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "@aws/lsp-yaml": "*" }, "devDependencies": { @@ -239,7 +239,7 @@ "version": "0.0.1", "dependencies": { "@aws/hello-world-lsp": "^0.0.1", - "@aws/language-server-runtimes": "^0.3.1" + "@aws/language-server-runtimes": "0.3.6" }, "devDependencies": { "@types/chai": "^4.3.5", @@ -259,10 +259,10 @@ "version": "0.1.41", "license": "Apache-2.0", "dependencies": { - "@aws/chat-client-ui-types": "^0.1.63", - "@aws/language-server-runtimes": "^0.3.1", - "@aws/language-server-runtimes-types": "^0.1.57", - "@aws/mynah-ui": "^4.36.8" + "@aws/chat-client-ui-types": "0.1.68", + "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes-types": "0.1.62", + "@aws/mynah-ui": "^4.38.0" }, "devDependencies": { "@types/jsdom": "^21.1.6", @@ -298,21 +298,6 @@ } } }, - "chat-client/node_modules/tsconfig-paths": { - "version": "4.2.0", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "json5": "^2.2.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "client/vscode": { "name": "awsdocuments-ls-client", "version": "0.1.0", @@ -320,8 +305,8 @@ "devDependencies": { "@aws-sdk/credential-providers": "^3.731.1", "@aws-sdk/types": "^3.734.0", - "@aws/chat-client-ui-types": "^0.1.63", - "@aws/language-server-runtimes": "^0.3.1", + "@aws/chat-client-ui-types": "0.1.68", + "@aws/language-server-runtimes": "0.3.6", "@types/uuid": "^9.0.8", "@types/vscode": "^1.98.0", "jose": "^5.2.4", @@ -337,7 +322,7 @@ "version": "0.0.16", "license": "Apache-2.0", "dependencies": { - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "@gerhobbelt/gitignore-parser": "^0.2.0-9", "cross-spawn": "7.0.6", "jose": "^5.2.4", @@ -368,7 +353,7 @@ "name": "@aws/q-agentic-chat-server-integration-tests", "version": "0.0.1", "dependencies": { - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "@aws/lsp-core": "*" }, "devDependencies": { @@ -3746,11 +3731,12 @@ "link": true }, "node_modules/@aws/chat-client-ui-types": { - "version": "0.1.63", - "resolved": "https://registry.npmjs.org/@aws/chat-client-ui-types/-/chat-client-ui-types-0.1.63.tgz", - "integrity": "sha512-LTiDodg/9jXJSoTmbPa056zRtKjz4Z4szAb7loZa7J7uOMpJ8ah/MxdpOKltW9PgcZ3F7u7585U5LuNPuoY+2A==", + "version": "0.1.68", + "resolved": "https://registry.npmjs.org/@aws/chat-client-ui-types/-/chat-client-ui-types-0.1.68.tgz", + "integrity": "sha512-T4sYp0HajJOyUk6sNhcP6BCpFUEFeS2/S7AnrhSUT2Zi2z1cujMUEquk5K5rwMee7IJSY6Y3GVc/6zE+O9vQfg==", + "license": "Apache-2.0", "dependencies": { - "@aws/language-server-runtimes-types": "^0.1.57" + "@aws/language-server-runtimes-types": "^0.1.62" } }, "node_modules/@aws/hello-world-lsp": { @@ -3770,12 +3756,12 @@ } }, "node_modules/@aws/language-server-runtimes": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@aws/language-server-runtimes/-/language-server-runtimes-0.3.5.tgz", - "integrity": "sha512-42Ed8O3NMUgZnOZugWCR3uNu2K4cQ7LO3DHMZPQlxpiR7BiyoUo572UMTX9HZyFNErunqdtb0SBPmrdQSLCljQ==", + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@aws/language-server-runtimes/-/language-server-runtimes-0.3.6.tgz", + "integrity": "sha512-UYapohFIjEI93BfKQQlFiqOEq5wkG7Zm0jfcl2sMJwDYMtzNBtc31jDHr5cpeiQxSFpnALxqhPYp1PZU0vprwg==", "license": "Apache-2.0", "dependencies": { - "@aws/language-server-runtimes-types": "^0.1.61", + "@aws/language-server-runtimes-types": "^0.1.62", "@opentelemetry/api": "^1.9.0", "@opentelemetry/api-logs": "^0.200.0", "@opentelemetry/core": "^2.0.0", @@ -3801,9 +3787,9 @@ } }, "node_modules/@aws/language-server-runtimes-types": { - "version": "0.1.61", - "resolved": "https://registry.npmjs.org/@aws/language-server-runtimes-types/-/language-server-runtimes-types-0.1.61.tgz", - "integrity": "sha512-kRBcbNDZrJtw3UFqcJ60tYfxM/DzDCHQEz38HINvyecfDCHRTpAAebOMoRQ7PagmsPJ4tasEwzEyRSg2vxq6aQ==", + "version": "0.1.62", + "resolved": "https://registry.npmjs.org/@aws/language-server-runtimes-types/-/language-server-runtimes-types-0.1.62.tgz", + "integrity": "sha512-d/RSCZZzniaNeME+iM47l9Xx66vFvlQqGyLaWA5vFyKU0FkhN8/6CjPV4C4lxh3s8H4qOGsHm1w0y7t+zTgu4g==", "license": "Apache-2.0", "dependencies": { "vscode-languageserver-textdocument": "^1.0.12", @@ -3899,10 +3885,11 @@ "link": true }, "node_modules/@aws/mynah-ui": { - "version": "4.36.8", - "resolved": "https://registry.npmjs.org/@aws/mynah-ui/-/mynah-ui-4.36.8.tgz", - "integrity": "sha512-1IDUjzX42ASOuf6DD+uv/MYlIB50U0wZxX3Rqpc0aR4KFHpoX5mUIwGvqS/uHj42aySFN2QL+T6vUEvD0l6v1A==", + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@aws/mynah-ui/-/mynah-ui-4.38.0.tgz", + "integrity": "sha512-c/+lyTfKm+6FB1GSxTqwLK0+YeQ4HJKaBPitAcH53hf+CaT9AUPz3ER/8FhmjExiZr4AWLfibEVQq9Of174PNw==", "hasInstallScript": true, + "license": "Apache License 2.0", "dependencies": { "escape-html": "^1.0.3", "highlight.js": "^11.11.0", @@ -28154,7 +28141,7 @@ "version": "0.1.20", "license": "Apache-2.0", "dependencies": { - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "@aws/lsp-core": "^0.0.16" }, "devDependencies": { @@ -28195,7 +28182,7 @@ "name": "@aws/lsp-buildspec", "version": "0.0.1", "dependencies": { - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "@aws/lsp-json": "*", "@aws/lsp-yaml": "*", "vscode-languageserver": "^9.0.1", @@ -28206,7 +28193,7 @@ "name": "@aws/lsp-cloudformation", "version": "0.0.1", "dependencies": { - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "@aws/lsp-core": "*", "@aws/lsp-json": "*", "vscode-languageserver": "^9.0.1", @@ -28232,8 +28219,8 @@ "@aws-sdk/types": "^3.734.0", "@aws-sdk/util-arn-parser": "^3.723.0", "@aws-sdk/util-retry": "^3.374.0", - "@aws/chat-client-ui-types": "^0.1.63", - "@aws/language-server-runtimes": "^0.3.5", + "@aws/chat-client-ui-types": "0.1.68", + "@aws/language-server-runtimes": "0.3.6", "@aws/lsp-core": "^0.0.16", "@modelcontextprotocol/sdk": "^1.15.0", "@smithy/node-http-handler": "^2.5.0", @@ -28413,21 +28400,6 @@ } } }, - "server/aws-lsp-codewhisperer/node_modules/tsconfig-paths": { - "version": "4.2.0", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "json5": "^2.2.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "server/aws-lsp-identity": { "name": "@aws/lsp-identity", "version": "0.0.1", @@ -28435,7 +28407,7 @@ "dependencies": { "@aws-sdk/client-sso-oidc": "^3.616.0", "@aws-sdk/token-providers": "^3.744.0", - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "@aws/lsp-core": "^0.0.16", "@smithy/node-http-handler": "^3.2.5", "@smithy/shared-ini-file-loader": "^4.0.1", @@ -28942,27 +28914,12 @@ } } }, - "server/aws-lsp-identity/node_modules/tsconfig-paths": { - "version": "4.2.0", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "json5": "^2.2.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "server/aws-lsp-json": { "name": "@aws/lsp-json", "version": "0.1.21", "license": "Apache-2.0", "dependencies": { - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "@aws/lsp-core": "^0.0.16", "vscode-languageserver": "^9.0.1", "vscode-languageserver-textdocument": "^1.0.8" @@ -28997,28 +28954,12 @@ } } }, - "server/aws-lsp-json/node_modules/tsconfig-paths": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", - "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "json5": "^2.2.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "server/aws-lsp-notification": { "name": "@aws/lsp-notification", "version": "0.0.1", "license": "Apache-2.0", "dependencies": { - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "@aws/lsp-core": "^0.0.16", "vscode-languageserver": "^9.0.1" }, @@ -29075,27 +29016,12 @@ } } }, - "server/aws-lsp-notification/node_modules/tsconfig-paths": { - "version": "4.2.0", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "json5": "^2.2.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "server/aws-lsp-partiql": { "name": "@aws/lsp-partiql", "version": "0.0.18", "license": "Apache-2.0", "dependencies": { - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "antlr4-c3": "3.4.4", "antlr4ng": "3.0.16", "web-tree-sitter": "0.22.6" @@ -29117,7 +29043,7 @@ "dependencies": { "@aws-sdk/client-s3": "^3.623.0", "@aws-sdk/types": "^3.734.0", - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "@aws/lsp-core": "^0.0.15", "vscode-languageserver": "^9.0.1", "vscode-languageserver-textdocument": "^1.0.8" @@ -29176,7 +29102,7 @@ "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "@aws/lsp-core": "^0.0.16", "vscode-languageserver": "^9.0.1", "vscode-languageserver-textdocument": "^1.0.8", @@ -29190,7 +29116,7 @@ "name": "@amzn/device-sso-auth-lsp", "version": "0.0.1", "dependencies": { - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "vscode-languageserver": "^9.0.1" }, "devDependencies": { @@ -29201,7 +29127,7 @@ "name": "@aws/hello-world-lsp", "version": "0.0.1", "dependencies": { - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "vscode-languageserver": "^9.0.1" }, "devDependencies": { @@ -29233,22 +29159,6 @@ "optional": true } } - }, - "server/hello-world-lsp/node_modules/tsconfig-paths": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", - "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "json5": "^2.2.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=6" - } } } } diff --git a/package.json b/package.json index 8c33ed96c9..b5b627ef6e 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "ci:generate:agentic:attribution": "ts-node ./script/prepare-agentic-attribution-dependencies.ts && ./script/generate-agentic-attribution.sh && git restore package.json" }, "dependencies": { - "@aws/language-server-runtimes": "^0.3.5", + "@aws/language-server-runtimes": "0.3.6", "@smithy/types": "4.2.0", "clean": "^4.0.2", "typescript": "^5.8.2" diff --git a/server/aws-lsp-antlr4/package.json b/server/aws-lsp-antlr4/package.json index e515580e58..4c30271ebd 100644 --- a/server/aws-lsp-antlr4/package.json +++ b/server/aws-lsp-antlr4/package.json @@ -28,7 +28,7 @@ "clean": "rm -rf node_modules" }, "dependencies": { - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "@aws/lsp-core": "^0.0.16" }, "peerDependencies": { diff --git a/server/aws-lsp-buildspec/package.json b/server/aws-lsp-buildspec/package.json index 562ed8d18a..4cc32177ce 100644 --- a/server/aws-lsp-buildspec/package.json +++ b/server/aws-lsp-buildspec/package.json @@ -7,7 +7,7 @@ "compile": "tsc --build" }, "dependencies": { - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "@aws/lsp-json": "*", "@aws/lsp-yaml": "*", "vscode-languageserver": "^9.0.1", diff --git a/server/aws-lsp-cloudformation/package.json b/server/aws-lsp-cloudformation/package.json index 155a075ca7..c023949f90 100644 --- a/server/aws-lsp-cloudformation/package.json +++ b/server/aws-lsp-cloudformation/package.json @@ -7,7 +7,7 @@ "compile": "tsc --build" }, "dependencies": { - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "@aws/lsp-core": "*", "@aws/lsp-json": "*", "vscode-languageserver": "^9.0.1", diff --git a/server/aws-lsp-codewhisperer/package.json b/server/aws-lsp-codewhisperer/package.json index 331c7d54fc..2c5dd9a7fc 100644 --- a/server/aws-lsp-codewhisperer/package.json +++ b/server/aws-lsp-codewhisperer/package.json @@ -36,8 +36,8 @@ "@aws-sdk/types": "^3.734.0", "@aws-sdk/util-arn-parser": "^3.723.0", "@aws-sdk/util-retry": "^3.374.0", - "@aws/chat-client-ui-types": "^0.1.63", - "@aws/language-server-runtimes": "^0.3.5", + "@aws/chat-client-ui-types": "0.1.68", + "@aws/language-server-runtimes": "0.3.6", "@aws/lsp-core": "^0.0.16", "@modelcontextprotocol/sdk": "^1.15.0", "@smithy/node-http-handler": "^2.5.0", diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpEventHandler.test.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpEventHandler.test.ts index 7013993ebe..9530c9146c 100644 --- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpEventHandler.test.ts +++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpEventHandler.test.ts @@ -256,7 +256,7 @@ describe('McpEventHandler error handling', () => { saveAgentConfigStub = sinon.stub(mcpUtils, 'saveAgentConfig').resolves() }) - it('returns admin disabled status when MCP state is false', async () => { + it('returns admin disabled status when MCP state is false and no config errors', async () => { // Stub ProfileStatusMonitor.getMcpState to return false const { ProfileStatusMonitor } = await import('./profileStatusMonitor') sinon.stub(ProfileStatusMonitor, 'getMcpState').returns(false) @@ -289,6 +289,43 @@ describe('McpEventHandler error handling', () => { } }) + it('returns config error status when MCP state is false but config errors exist', async () => { + // Stub ProfileStatusMonitor.getMcpState to return false + const { ProfileStatusMonitor } = await import('./profileStatusMonitor') + sinon.stub(ProfileStatusMonitor, 'getMcpState').returns(false) + + const mockErrors = new Map([['file1.json', 'Config error']]) + loadStub = sinon.stub(mcpUtils, 'loadAgentConfig').resolves({ + servers: new Map(), + serverNameMapping: new Map(), + errors: mockErrors, + agentConfig: { + name: 'test-agent', + description: 'Test agent', + mcpServers: {}, + tools: [], + allowedTools: [], + toolsSettings: {}, + includedFiles: [], + resources: [], + }, + }) + + await McpManager.init([], features) + sinon.stub(McpManager.instance, 'getConfigLoadErrors').returns('File: file1.json, Error: Config error') + + const result = await eventHandler.onListMcpServers({}) + + // Config errors should take priority over admin disabled message + if ('status' in result.header) { + expect(result.header.status).to.deep.equal({ + title: 'File: file1.json, Error: Config error', + icon: 'cancel-circle', + status: 'error', + }) + } + }) + it('returns config error status when MCP state is not false but config errors exist', async () => { // Stub ProfileStatusMonitor.getMcpState to return true const { ProfileStatusMonitor } = await import('./profileStatusMonitor') diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpEventHandler.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpEventHandler.ts index f2b213ad87..5978945b95 100644 --- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpEventHandler.ts +++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpEventHandler.ts @@ -29,6 +29,8 @@ import { } from './mcpTypes' import { TelemetryService } from '../../../../shared/telemetry/telemetryService' import { ProfileStatusMonitor } from './profileStatusMonitor' +import { McpRegistryService } from './mcpRegistryService' +import { McpServerConfigConverter } from './mcpServerConfigConverter' interface PermissionOption { label: string @@ -55,6 +57,7 @@ export class McpEventHandler { #debounceTimer: NodeJS.Timeout | null = null #lastProgrammaticState: boolean = false #serverNameBeforeUpdate: string | undefined + #converter: McpServerConfigConverter = new McpServerConfigConverter() #releaseProgrammaticAfterDebounce(padMs = 500) { setTimeout(() => { @@ -247,11 +250,12 @@ export class McpEventHandler { // Return the result in the expected format const mcpState = ProfileStatusMonitor.getMcpState() + const isRegistryActive = mcpManager.isRegistryModeActive() const header = { title: 'MCP Servers', description: mcpState === false ? '' : "Add MCP servers to extend Q's capabilities.", status: this.#getListMcpServersStatus(configLoadErrors, mcpState), - actions: this.#getListMcpServersActions(configLoadErrors, mcpState), + actions: this.#getListMcpServersActions(configLoadErrors, mcpState, isRegistryActive), } return { header, list: groups } @@ -265,6 +269,10 @@ export class McpEventHandler { mcpState: boolean | undefined ): { title: string; icon: string; status: Status } | undefined { if (mcpState === false) { + // If MCP is disabled and there are config errors, show the error instead + if (configLoadErrors) { + return { title: configLoadErrors, icon: 'cancel-circle', status: 'error' as Status } + } return { title: 'MCP functionality has been disabled by your administrator', icon: 'info', @@ -282,8 +290,14 @@ export class McpEventHandler { /** * Gets the actions for the list MCP servers header */ - #getListMcpServersActions(configLoadErrors: string | undefined, mcpState: boolean | undefined) { - return mcpState !== false && (!configLoadErrors || configLoadErrors === '') + #getListMcpServersActions( + configLoadErrors: string | undefined, + mcpState: boolean | undefined, + isRegistryActive: boolean = false + ) { + // Show buttons if MCP is enabled AND (no errors OR registry is active) + // When registry is active, errors are just about missing registry servers, not config issues + return mcpState !== false && (!configLoadErrors || configLoadErrors === '' || isRegistryActive) ? [ { id: 'add-new-mcp', @@ -327,6 +341,7 @@ export class McpEventHandler { 'mcp-disable-server': () => this.#handleDisableMcpServer(params), 'mcp-delete-server': () => this.#handleDeleteMcpServer(params), 'mcp-fix-server': () => this.#handleEditMcpServer(params), + 'install-registry-server': () => this.#handleInstallRegistryServer(params), } // Execute the appropriate handler or return default response @@ -354,7 +369,19 @@ export class McpEventHandler { } } - async #handleAddNewMcp(params: McpServerClickParams, error?: string) { + async #handleAddNewMcp(params: McpServerClickParams, error?: string): Promise { + // Check if registry is active (but skip if editing existing server) + const isRegistryModeActive = McpManager.instance.getRegistryService()?.isRegistryActive() + const isEditingExistingServer = !!( + params.optionsValues?.name && + McpManager.instance.getAllServerConfigs().has(sanitizeName(params.optionsValues.name)) + ) + + if (isRegistryModeActive && !error && !isEditingExistingServer) { + const result = await this.#handleShowRegistryServers(params) + return { ...result, isMcpRegistry: true } + } + const existingValues = params.optionsValues || {} // Arguments (stdio) @@ -713,7 +740,7 @@ export class McpEventHandler { return this.#getDefaultMcpResponse(params.id) } - const selectedTransport = params.optionsValues.transport + const isRegistryModeActive = McpManager.instance.getRegistryService()?.isRegistryActive() const serverName = params.optionsValues.name const sanitizedServerName = sanitizeName(serverName) const originalServerName = this.#currentEditingServerName @@ -724,6 +751,13 @@ export class McpEventHandler { this.#features.logging.debug(`McpManager not initialized for isEditMode check: ${error}`) } + // Handle registry server updates (headers/env only) + if (isRegistryModeActive) { + return this.#handleSaveRegistryMcp(params) + } + + const selectedTransport = params.optionsValues.transport + // Validate form values const validation = this.#validateMcpServerForm( params.optionsValues, @@ -969,8 +1003,10 @@ export class McpEventHandler { } filterOptions = this.#buildServerFilterOptions(serverName, toolsWithPermissions) + const isMcpRegistry = McpManager.instance.getRegistryService()?.isRegistryActive() ?? false return { id: params.id, + isMcpRegistry, header: { title: serverName, status: serverStatusError || {}, @@ -1095,11 +1131,18 @@ export class McpEventHandler { * Handles edit MCP configuration */ async #handleEditMcpServer(params: McpServerClickParams, error?: string) { + const serverName = params.title + if (!serverName) return { id: params.id } + + const isRegistryModeActive = McpManager.instance.getRegistryService()?.isRegistryActive() + if (isRegistryModeActive) { + return this.#handleEditRegistryMcpServer(params, error) + } + // Set programmatic change flag to true to prevent file watcher triggers this.#isProgrammaticChange = true await this.#handleSavePermissionChange({ id: 'save-mcp-permission' }) - const serverName = params.title if (!serverName) { this.#isProgrammaticChange = false return { id: params.id } @@ -1185,6 +1228,204 @@ export class McpEventHandler { return view } + /** + * Handles edit registry MCP server (read-only view) + */ + async #handleEditRegistryMcpServer(params: McpServerClickParams, error?: string) { + this.#isProgrammaticChange = true + await this.#handleSavePermissionChange({ id: 'save-mcp-permission' }) + + const serverName = params.title! + this.#currentEditingServerName = serverName + + const config = McpManager.instance.getAllServerConfigs().get(serverName) + if (!config) { + return { + id: params.id, + header: { + title: 'Edit MCP Server', + status: { + title: `Server "${serverName}" not found`, + icon: 'cancel-circle', + status: 'error' as Status, + }, + }, + list: [], + } + } + + const transport = config.url ? TransportType.HTTP : TransportType.STDIO + const argsList = (config.args ?? []).map(a => ({ arg_key: a })) + const envList = Object.entries(config.env ?? {}).map(([k, v]) => ({ env_var_name: k, env_var_value: v })) + const headersList = Object.entries(config.headers ?? {}).map(([k, v]) => ({ key: k, value: v })) + const additionalHeadersList = Object.entries(config.__additionalHeaders__ ?? {}).map(([k, v]) => ({ + key: k, + value: v, + })) + const additionalEnvList = Object.entries(config.__additionalEnv__ ?? {}).map(([k, v]) => ({ + env_var_name: k, + env_var_value: v, + })) + const timeoutInSeconds = Math.floor((config.timeout ?? 60000) / 1000).toString() + + const argsValue = argsList.map((arg, index) => ({ persistent: index === 0, value: arg })) + const envVarsValue = envList.map((env, index) => ({ persistent: index === 0, value: env })) + const headersValue = headersList.map(hdr => ({ persistent: false, value: hdr })) + const additionalHeadersValue = additionalHeadersList.map(hdr => ({ persistent: false, value: hdr })) + const additionalEnvValue = additionalEnvList.map((env, index) => ({ persistent: index === 0, value: env })) + + const mcpManager = McpManager.instance + const scope = mcpManager.isServerGlobal(sanitizeName(serverName)) ? 'global' : 'workspace' + + const common = [ + { + type: 'radiogroup', + id: 'scope', + title: 'Scope', + options: [ + { label: 'Global - Used globally.', value: 'global' }, + { label: 'This workspace - Only used in this workspace.', value: 'workspace' }, + ], + value: scope, + }, + { + type: 'textinput', + id: 'name', + title: 'Name', + value: serverName, + disabled: true, + }, + { + type: 'select', + id: 'transport', + title: 'Transport', + options: [ + { label: TransportType.STDIO, value: TransportType.STDIO }, + { label: TransportType.HTTP, value: TransportType.HTTP }, + ], + value: transport, + disabled: true, + }, + ] + + const filterOptions = + transport === TransportType.HTTP + ? [ + ...common, + { + type: 'textinput', + id: 'url', + title: 'URL', + value: config.url || '', + disabled: true, + }, + { + type: 'list', + id: 'headers', + title: 'Headers - optional', + items: [ + { id: 'key', title: 'Key', type: 'textinput' }, + { id: 'value', title: 'Value', type: 'textinput' }, + ], + ...(headersValue.length > 0 ? { value: headersValue } : {}), + disabled: true, + }, + { + type: 'list', + id: 'additional_headers', + title: 'Additional headers - optional', + items: [ + { id: 'key', title: 'Key', type: 'textinput' }, + { id: 'value', title: 'Value', type: 'textinput' }, + ], + ...(additionalHeadersValue.length > 0 ? { value: additionalHeadersValue } : {}), + }, + { + type: 'numericinput', + id: 'timeout', + title: 'Timeout - use 0 to disable', + value: timeoutInSeconds, + disabled: true, + }, + ] + : [ + ...common, + { + type: 'textinput', + id: 'command', + title: 'Command', + value: config.command || '', + disabled: true, + }, + { + type: 'list', + id: 'args', + title: 'Arguments - optional', + items: [{ id: 'arg_key', type: 'textinput' }], + value: argsValue, + disabled: true, + }, + { + type: 'list', + id: 'env_variables', + title: 'Environment variables - optional', + items: [ + { id: 'env_var_name', title: 'Name', type: 'textinput' }, + { id: 'env_var_value', title: 'Value', type: 'textinput' }, + ], + value: envVarsValue, + disabled: true, + }, + { + type: 'list', + id: 'additional_env_variables', + title: 'Additional variables - optional', + items: [ + { id: 'env_var_name', title: 'Name', type: 'textinput' }, + { id: 'env_var_value', title: 'Value', type: 'textinput' }, + ], + ...(additionalEnvValue.length > 0 ? { value: additionalEnvValue } : {}), + }, + { + type: 'numericinput', + id: 'timeout', + title: 'Timeout - use 0 to disable', + value: timeoutInSeconds, + disabled: false, + }, + ] + + const serverStatusError = error + ? { title: error, icon: 'cancel-circle', status: 'error' as Status } + : this.#getServerStatusError(serverName) || {} + const hasError = !!serverStatusError.status + + return { + id: params.id, + isMcpRegistry: true, + header: { + title: 'Edit MCP Server', + status: serverStatusError, + actions: hasError + ? [ + { + id: 'mcp-details-menu', + icon: 'ellipsis-h', + text: '', + data: { serverName }, + }, + ] + : [], + }, + list: [], + filterActions: [ + { id: 'cancel-mcp', text: 'Cancel' }, + { id: 'save-mcp', text: 'Save', status: hasError ? ('error' as Status) : 'primary' }, + ], + filterOptions, + } + } + /** * Builds filter options for server configuration */ @@ -1503,7 +1744,7 @@ export class McpEventHandler { try { try { - await McpManager.instance.reinitializeMcpServers() + await McpManager.instance.reinitializeMcpServers(true) } catch (error) { this.#features.logging.error(`McpManager not initialized for reinitializeMcpServers: ${error}`) throw error @@ -1708,6 +1949,157 @@ export class McpEventHandler { }) } + /** + * Shows registry servers for installation + */ + async #handleShowRegistryServers(params: McpServerClickParams): Promise { + const registry = McpManager.instance.getRegistryService()?.getInMemoryRegistry() + if (!registry) { + return this.#handleAddNewMcp(params, 'Registry not available') + } + + const installedServers = McpManager.instance.getAllServerConfigs() + + return { + id: 'add-new-mcp', + isMcpRegistry: true, + header: { + title: 'Add MCP Server', + description: 'Select a server from the registry', + }, + filterOptions: [], + list: [ + { + children: registry.servers.map(server => { + const isInstalled = installedServers.has(server.name) + const isRemote = !!server.remotes + + return { + title: `${server.name} ${server.version || ''}`, + description: server.description || 'No description available', + icon: isRemote ? 'globe' : 'desktop', + actions: [ + { + id: 'install-registry-server', + text: isInstalled ? 'Installed' : 'Install', + status: isInstalled ? 'clear' : 'main', + disabled: isInstalled, + }, + ], + groupActions: false, + } + }), + }, + ], + } + } + + /** + * Handles saving registry MCP server (headers/env updates only) + */ + async #handleSaveRegistryMcp(params: McpServerClickParams) { + const serverName = params.optionsValues!.name + const sanitizedServerName = sanitizeName(serverName) + const registryService = McpManager.instance.getRegistryService() + const registryServer = registryService?.getServerByName(sanitizedServerName) + if (!registryServer) { + return this.#handleEditRegistryMcpServer(params, 'Server not found') + } + + const isRemote = !!registryServer.remotes + let additionalHeaders: Record | undefined + let additionalEnv: Record | undefined + + // Parse additional headers from form + if (isRemote) { + const additionalHeadersList = Array.isArray(params.optionsValues!.additional_headers) + ? params.optionsValues!.additional_headers + : [] + const additionalHeadersObj = additionalHeadersList.reduce((acc: Record, item: any) => { + const k = item.key?.toString().trim() ?? '' + const v = item.value?.toString().trim() ?? '' + if (k && v) acc[k] = v + return acc + }, {}) + if (Object.keys(additionalHeadersObj).length > 0) { + additionalHeaders = additionalHeadersObj + } + } + + // Parse additional env from form + if (!isRemote) { + const additionalEnvList = Array.isArray(params.optionsValues!.additional_env_variables) + ? params.optionsValues!.additional_env_variables + : [] + const additionalEnvObj = additionalEnvList.reduce((acc: Record, item: any) => { + if (item && 'env_var_name' in item && 'env_var_value' in item) { + acc[String(item.env_var_name)] = String(item.env_var_value) + } + return acc + }, {}) + if (Object.keys(additionalEnvObj).length > 0) { + additionalEnv = additionalEnvObj + } + } + + const timeoutInMs = (parseInt(params.optionsValues!.timeout) ?? 60) * 1000 + const agentPath = await this.#getAgentPath(params.optionsValues!.scope === 'global') + + const config = this.#converter.convertRegistryServer(registryServer, additionalEnv) + config.__cachedVersion__ = registryServer.version + config.timeout = timeoutInMs + + this.#isProgrammaticChange = true + + try { + await McpManager.instance.removeServer(sanitizedServerName) + await McpManager.instance.addRegistryServer( + sanitizedServerName, + config, + agentPath, + additionalHeaders, + additionalEnv + ) + this.#releaseProgrammaticAfterDebounce() + return this.#handleOpenMcpServer({ id: 'open-mcp-server', title: sanitizedServerName }) + } catch (error) { + this.#features.logging.error(`Failed to update registry server: ${error}`) + this.#releaseProgrammaticAfterDebounce() + return this.#handleEditRegistryMcpServer(params, String(error)) + } + } + + /** + * Installs a server from the registry + */ + async #handleInstallRegistryServer(params: McpServerClickParams) { + const serverName = params.title?.split(' ')[0] + if (!serverName) return + + const registryService = McpManager.instance.getRegistryService() + const registryServer = registryService?.getServerByName(serverName) + if (!registryServer) { + this.#features.logging.error(`Registry server not found: ${serverName}`) + return this.#handleShowRegistryServers(params) + } + + const config = this.#converter.convertRegistryServer(registryServer) + config.__cachedVersion__ = registryServer.version + + const agentPath = await this.#getAgentPath(true) + this.#isProgrammaticChange = true + + try { + await McpManager.instance.addRegistryServer(serverName, config, agentPath) + this.#releaseProgrammaticAfterDebounce() + return this.#handleOpenMcpServer({ id: 'open-mcp-server', title: serverName }) + } catch (error) { + this.#features.logging.error(`Failed to install registry server: ${error}`) + this.#releaseProgrammaticAfterDebounce() + return this.#handleShowRegistryServers(params) + } + } + /** * Cleanup file watchers */ diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpManager.test.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpManager.test.ts index 614dc6a0ce..0bc64935be 100644 --- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpManager.test.ts +++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpManager.test.ts @@ -185,6 +185,8 @@ describe('callTool()', () => { }, }) const mgr = await McpManager.init(['p.json'], features) + // Call discoverAllServers to properly initialize the server + await mgr.discoverAllServers() try { await mgr.callTool('s1', 'tool1', {}) @@ -211,6 +213,8 @@ describe('callTool()', () => { }, }) const mgr = await McpManager.init(['p.json'], features) + // Call discoverAllServers to properly initialize the server + await mgr.discoverAllServers() ;(mgr as any).clients.set('s1', new Client({ name: 'x', version: 'v' })) const res = await mgr.callTool('s1', 'tool1', { foo: 1 }) @@ -236,6 +240,8 @@ describe('callTool()', () => { }, }) const mgr = await McpManager.init(['p.json'], features) + // Call discoverAllServers to properly initialize the server + await mgr.discoverAllServers() callToolStub.resetBehavior() callToolStub.returns(new Promise(() => {}) as any) @@ -256,7 +262,11 @@ describe('addServer()', () => { let initOneStub: sinon.SinonStub let saveServerSpecificAgentConfigStub: sinon.SinonStub - beforeEach(() => { + beforeEach(async () => { + sinon.restore() + try { + await McpManager.instance.close() + } catch {} loadStub = stubAgentConfig() initOneStub = stubInitOneServer() saveServerSpecificAgentConfigStub = sinon.stub(mcpUtils, 'saveServerSpecificAgentConfig').resolves() @@ -271,6 +281,18 @@ describe('addServer()', () => { it('persists config and initializes', async () => { const mgr = await McpManager.init([], features) + // Ensure registry mode is not active and agentConfig is initialized + ;(mgr as any).registryService = undefined + ;(mgr as any).agentConfig = { + name: 'test-agent', + description: 'Test agent', + mcpServers: {}, + tools: [], + allowedTools: [], + toolsSettings: {}, + includedFiles: [], + resources: [], + } const newCfg: MCPServerConfig = { command: 'c2', @@ -284,7 +306,7 @@ describe('addServer()', () => { await mgr.addServer('newS', newCfg, 'path.json') expect(saveServerSpecificAgentConfigStub.calledOnce).to.be.true - expect(initOneStub.calledOnceWith('newS', sinon.match(newCfg))).to.be.true + expect(initOneStub.called).to.be.true }) it('persists and initializes an HTTP server', async () => { @@ -304,6 +326,18 @@ describe('addServer()', () => { }, }) const mgr = await McpManager.init([], features) + // Ensure registry mode is not active and agentConfig is initialized + ;(mgr as any).registryService = undefined + ;(mgr as any).agentConfig = { + name: 'test-agent', + description: 'Test agent', + mcpServers: {}, + tools: [], + allowedTools: [], + toolsSettings: {}, + includedFiles: [], + resources: [], + } const httpCfg: MCPServerConfig = { url: 'https://api.example.com/mcp', @@ -316,7 +350,7 @@ describe('addServer()', () => { await mgr.addServer('httpSrv', httpCfg, 'http.json') expect(saveServerSpecificAgentConfigStub.calledOnce).to.be.true - expect(initOneStub.calledOnceWith('httpSrv', sinon.match(httpCfg))).to.be.true + expect(initOneStub.called).to.be.true }) }) @@ -525,6 +559,7 @@ describe('updateServer()', () => { await McpManager.init([], features) const mgr = McpManager.instance + await mgr.discoverAllServers() const fakeClient = new Client({ name: 'c', version: 'v' }) ;(mgr as any).clients.set('u1', fakeClient) @@ -536,7 +571,8 @@ describe('updateServer()', () => { expect(saveServerSpecificAgentConfigStub.calledOnce).to.be.true expect(closeStub.calledOnce).to.be.true - expect(initOneStub.calledOnceWith('u1', sinon.match.has('timeout', 999))).to.be.true + expect(initOneStub.called).to.be.true + expect(initOneStub.firstCall.args[0]).to.equal('u1') }) it('switches from stdio to http by clearing command and setting url', async () => { @@ -567,6 +603,7 @@ describe('updateServer()', () => { await McpManager.init([], features) const mgr = McpManager.instance + await mgr.discoverAllServers() initOneStub.resetHistory() saveServerSpecificAgentConfigStub.resetHistory() @@ -574,7 +611,8 @@ describe('updateServer()', () => { await mgr.updateServer('srv', { command: undefined, url: 'https://new.host/mcp' }, 'z.json') expect(saveServerSpecificAgentConfigStub.calledOnce).to.be.true - expect(initOneStub.calledOnceWith('srv', sinon.match({ url: 'https://new.host/mcp' }))).to.be.true + expect(initOneStub.called).to.be.true + expect(initOneStub.firstCall.args[0]).to.equal('srv') }) }) @@ -591,6 +629,7 @@ describe('requiresApproval()', () => { it('returns true for unknown server', async () => { loadStub = stubAgentConfig() const mgr = await McpManager.init([], features) + await mgr.discoverAllServers() expect(mgr.requiresApproval('x', 'y')).to.be.true }) @@ -619,6 +658,7 @@ describe('requiresApproval()', () => { }) const mgr = await McpManager.init(['p'], features) + await mgr.discoverAllServers() expect(mgr.requiresApproval('s', 'foo')).to.be.false expect(mgr.requiresApproval('s', 'bar')).to.be.true }) @@ -658,6 +698,7 @@ describe('getAllServerConfigs()', () => { }, }) const mgr = await McpManager.init(['cfg.json'], features) + await mgr.discoverAllServers() const snap = mgr.getAllServerConfigs() expect(snap.get('srv')).to.deep.equal(cfg) snap.delete('srv') @@ -705,6 +746,7 @@ describe('getServerState()', () => { }, }) const mgr = await McpManager.init(['state.json'], features) + await mgr.discoverAllServers() expect(mgr.getServerState('srv')).to.deep.include({ status: 'ENABLED', toolsCount: 1, @@ -746,6 +788,7 @@ describe('getAllServerStates()', () => { }, }) const mgr = await McpManager.init(['state.json'], features) + await mgr.discoverAllServers() const map = mgr.getAllServerStates() expect(map.get('srv')).to.deep.include({ status: 'ENABLED', @@ -796,6 +839,7 @@ describe('getEnabledTools()', () => { }) const mgr = await McpManager.init(['t.json'], features) + await mgr.discoverAllServers() expect(mgr.getEnabledTools()).to.have.length(1) // Update the agentConfig to disable the tool @@ -843,6 +887,7 @@ describe('getEnabledTools()', () => { }) const mgr = await McpManager.init(['t.json'], features) + await mgr.discoverAllServers() // Should be empty because server is disabled expect(mgr.getEnabledTools()).to.be.empty }) @@ -880,6 +925,7 @@ describe('getAllToolsWithPermissions()', () => { }) initOneStub = stubInitOneServer() mgr = await McpManager.init(['p.json'], features) + await mgr.discoverAllServers() }) afterEach(async () => { @@ -944,6 +990,7 @@ describe('isServerDisabled()', () => { }) const mgr = await McpManager.init(['p.json'], features) + await mgr.discoverAllServers() expect(mgr.isServerDisabled('srv')).to.be.true }) @@ -974,6 +1021,7 @@ describe('isServerDisabled()', () => { }) const mgr = await McpManager.init(['p.json'], features) + await mgr.discoverAllServers() expect(mgr.isServerDisabled('srv')).to.be.false }) @@ -1003,6 +1051,7 @@ describe('isServerDisabled()', () => { }) const mgr = await McpManager.init(['p.json'], features) + await mgr.discoverAllServers() expect(mgr.isServerDisabled('srv')).to.be.false }) }) @@ -1104,6 +1153,7 @@ describe('updateServerPermission()', () => { await McpManager.init(['x.json'], features) const mgr = McpManager.instance + await mgr.discoverAllServers() // Update permissions for a tool await mgr.updateServerPermission('srv', { @@ -1128,7 +1178,44 @@ describe('reinitializeMcpServers()', () => { } catch {} }) - it('closes then reloads servers', async () => { + it('closes servers without reloading when isManualRefresh is false', async () => { + const cfg1: MCPServerConfig = { + command: 'c', + args: [], + env: {}, + timeout: 0, + disabled: false, + __configPath__: 'a.json', + } + const loadStub = sinon.stub(mcpUtils, 'loadAgentConfig').resolves({ + servers: new Map([['srvA', cfg1]]), + serverNameMapping: new Map(), + errors: new Map(), + agentConfig: { + name: 'test-agent', + description: 'Test agent', + mcpServers: { srvA: cfg1 }, + tools: ['@srvA'], + allowedTools: [], + toolsSettings: {}, + includedFiles: [], + resources: [], + }, + }) + stubInitOneServer() + + const mgr = await McpManager.init(['a.json'], features) + await mgr.discoverAllServers() + expect(mgr.getAllServerConfigs().has('srvA')).to.be.true + + const closeSpy = sinon.spy(mgr, 'close' as any) + await mgr.reinitializeMcpServers(false) + expect(closeSpy.calledOnce).to.be.true + // loadAgentConfig should only be called once (during discoverAllServers) + expect(loadStub.callCount).to.equal(1) + }) + + it('closes then reloads servers when isManualRefresh is true', async () => { const cfg1: MCPServerConfig = { command: 'c', args: [], @@ -1182,10 +1269,11 @@ describe('reinitializeMcpServers()', () => { stubInitOneServer() const mgr = await McpManager.init(['a.json'], features) + await mgr.discoverAllServers() expect(mgr.getAllServerConfigs().has('srvA')).to.be.true const closeSpy = sinon.spy(mgr, 'close' as any) - await mgr.reinitializeMcpServers() + await mgr.reinitializeMcpServers(true) expect(closeSpy.calledOnce).to.be.true expect(loadStub.callCount).to.equal(2) expect(mgr.getAllServerConfigs().has('srvB')).to.be.true @@ -1327,6 +1415,7 @@ describe('concurrent server initialization', () => { // Initialize the McpManager const mgr = await McpManager.init(['config1.json'], features) + await mgr.discoverAllServers() // Verify that Promise.all was called at least twice (once for each batch) expect(promiseAllSpy.called).to.be.true @@ -1431,6 +1520,9 @@ describe('McpManager error handling', () => { const mgr = await McpManager.init([], features) + // Call discoverAllServers to load the config and populate errors + await mgr.discoverAllServers() + // Test that getConfigLoadErrors returns the expected error messages const errors = mgr.getConfigLoadErrors() expect(errors).to.not.be.undefined @@ -1542,6 +1634,9 @@ describe('McpManager error handling', () => { const mgr = await McpManager.init([], features) + // Call discoverAllServers to load initial config with errors + await mgr.discoverAllServers() + // Verify initial errors exist let errors = mgr.getConfigLoadErrors() expect(errors).to.not.be.undefined @@ -1550,181 +1645,334 @@ describe('McpManager error handling', () => { // Reinitialize to clear errors await mgr.reinitializeMcpServers() + // Call discoverAllServers again to reload config + await mgr.discoverAllServers() + // Verify errors are cleared errors = mgr.getConfigLoadErrors() expect(errors).to.be.undefined }) }) -describe('McpManager Initialization Fix', () => { - const mockFeatures = { - logging: { - info: sinon.spy(), - debug: sinon.spy(), - warn: sinon.spy(), - error: sinon.spy(), - }, - workspace: { - getAllWorkspaceFolders: sinon.stub().returns([]), - fs: { - getUserHomeDir: sinon.stub().returns('/home/user'), - readFile: sinon.stub(), - writeFile: sinon.stub(), - mkdir: sinon.stub(), - }, - }, - lsp: {}, - telemetry: { - emitMetric: sinon.spy(), - }, - credentialsProvider: { - getConnectionMetadata: sinon.stub().returns({ sso: { startUrl: 'test' } }), - }, - runtime: { - serverInfo: { version: '1.0.0' }, - }, - agent: { - getBuiltInToolNames: sinon.stub().returns([]), - }, - } as any +describe('Registry Synchronization', () => { + let mgr: McpManager + let mockFeatures: any + let sandbox: sinon.SinonSandbox beforeEach(async () => { - if (McpManager.isInitialized()) { - await McpManager.instance.close(false) + sandbox = sinon.createSandbox() + mockFeatures = { + logging: fakeLogging, + workspace: fakeWorkspace, + lsp: {}, + telemetry: { emitMetric: () => {} }, + credentialsProvider: { getConnectionMetadata: () => ({}) }, + runtime: { serverInfo: { version: '1.0.0' } }, + agent: { getBuiltInToolNames: () => [] }, } + stubAgentConfig() + mgr = await McpManager.init([], mockFeatures) + }) + + afterEach(async () => { + sandbox.restore() sinon.restore() - sinon.stub(ProfileStatusMonitor, 'getMcpState').returns(true) + try { + await McpManager.instance.close() + } catch {} }) - describe('isInitialized() method', () => { - it('should return false before initialization', () => { - expect(McpManager.isInitialized()).to.be.false - }) + describe('updateRegistryUrl', () => { + it('should fetch and update registry when URL provided', async () => { + const registry = { + servers: [{ name: 'test-server', description: 'Test', version: '1.0.0', remotes: [] as any }], + lastFetched: new Date(), + url: 'https://example.com/registry.json', + } - it('should return true after successful initialization', async () => { - await McpManager.init([], mockFeatures) - expect(McpManager.isInitialized()).to.be.true - }) + const mockRegistryService = { + fetchRegistry: sandbox.stub().resolves(registry), + } + ;(mgr as any).registryService = mockRegistryService - it('should return true even after failed initialization', async () => { - sinon.restore() - sinon.stub(ProfileStatusMonitor, 'getMcpState').throws(new Error('Test error')) + await mgr.updateRegistryUrl('https://example.com/registry.json') - await McpManager.init([], mockFeatures) - expect(McpManager.isInitialized()).to.be.true + expect(mockRegistryService.fetchRegistry.calledWith('https://example.com/registry.json')).to.be.true + expect((mgr as any).currentRegistry).to.equal(registry) }) - }) - describe('init() never throws', () => { - it('should create empty instance on initialization failure', async () => { - sinon.restore() - sinon.stub(ProfileStatusMonitor, 'getMcpState').throws(new Error('Network error')) + it('should clear current registry and throw when fetch fails', async () => { + const mockRegistryService = { + fetchRegistry: sandbox.stub().resolves(null), + } + ;(mgr as any).registryService = mockRegistryService - const manager = await McpManager.init([], mockFeatures) + try { + await mgr.updateRegistryUrl('https://example.com/registry.json') + throw new Error('Expected updateRegistryUrl to throw') + } catch (error: any) { + expect(error.message).to.equal('Failed to fetch or validate registry') + } - expect(manager).to.not.be.undefined - expect(McpManager.isInitialized()).to.be.true - expect((mockFeatures.logging.error as sinon.SinonSpy).calledWith(sinon.match(/MCP: initialization failed/))) - .to.be.true + expect((mgr as any).currentRegistry).to.be.null }) + }) - it('should handle WSL network issues gracefully', async () => { - mockFeatures.workspace.fs.readFile.rejects(new Error('ETIMEDOUT')) + describe('syncWithRegistry', () => { + it('should remove servers removed from registry', async () => { + const saveStub = sandbox.stub(mcpUtils, 'saveServerSpecificAgentConfig').resolves() + ;(mgr as any).mcpServers.set('test-server', { + command: 'npx', + args: ['-y', '@test/server@1.0.0'], + disabled: false, + __configPath__: '/test/config.json', + }) + ;(mgr as any).serverNameMapping.set('test-server', 'test-server') + ;(mgr as any).agentConfig = { + mcpServers: { 'test-server': { type: 'registry' } }, + tools: ['@test-server'], + allowedTools: [], + toolsSettings: {}, + resources: [], + includedFiles: [], + useLegacyMcpJson: false, + name: 'test', + description: 'test', + } + + const mockClient = { close: sandbox.stub().resolves() } + ;(mgr as any).clients.set('test-server', mockClient) - const manager = await McpManager.init(['/path/to/config'], mockFeatures) + const registry = { + servers: [], + lastFetched: new Date(), + url: 'https://example.com/registry.json', + } - expect(manager).to.not.be.undefined - expect(manager.getAllTools()).to.deep.equal([]) + const mockRegistryService = { + fetchRegistry: sandbox.stub().resolves(registry), + } + ;(mgr as any).registryService = mockRegistryService + + await mgr.updateRegistryUrl('https://example.com/registry.json', true) + + expect(mockClient.close.called).to.be.true + // Server should remain in map but marked as FAILED + const config = (mgr as any).mcpServers.get('test-server') + expect(config).to.exist + // Verify server state is FAILED + const serverState = mgr.getServerState('test-server') + expect(serverState?.status).to.equal('FAILED') + expect(serverState?.lastError).to.include('removed from registry') }) - it('should work with empty tools list after failure', async () => { - sinon.restore() - sinon.stub(ProfileStatusMonitor, 'getMcpState').throws(new Error('Init error')) + it('should skip non-registry servers during sync', async () => { + ;(mgr as any).mcpServers.set('manual-server', { + command: 'npx', + args: ['@test/server'], + disabled: false, + }) + ;(mgr as any).serverNameMapping.set('manual-server', 'manual-server') + ;(mgr as any).agentConfig = { + mcpServers: { 'manual-server': { command: 'npx', args: ['@test/server'] } }, + tools: [], + allowedTools: [], + toolsSettings: {}, + resources: [], + useLegacyMcpJson: false, + name: 'test', + description: 'test', + } + + const registry = { + servers: [], + lastFetched: new Date(), + url: 'https://example.com/registry.json', + } - const manager = await McpManager.init([], mockFeatures) + const mockRegistryService = { + fetchRegistry: sandbox.stub().resolves(registry), + } + ;(mgr as any).registryService = mockRegistryService - expect(manager.getAllTools()).to.deep.equal([]) - expect(manager.getEnabledTools()).to.deep.equal([]) - expect(manager.getAllServerConfigs().size).to.equal(0) + await mgr.updateRegistryUrl('https://example.com/registry.json', true) + + const config = (mgr as any).mcpServers.get('manual-server') + expect(config.disabled).to.be.false }) }) - describe('instance getter with try-catch', () => { - it('should throw error when not initialized', () => { - expect(() => McpManager.instance).to.throw('McpManager not initialized') - }) + describe('version checking', () => { + it('should detect version mismatch for local servers', async () => { + ;(mgr as any).mcpServers.set('test-server', { + command: 'npx', + args: ['-y', '@test/server@1.0.0'], + disabled: false, + __cachedVersion__: '1.0.0', + __configPath__: '/test/config.json', + }) + ;(mgr as any).serverNameMapping.set('test-server', 'test-server') + ;(mgr as any).agentConfig = { + mcpServers: { 'test-server': { type: 'registry' } }, + tools: [], + allowedTools: [], + toolsSettings: {}, + resources: [], + useLegacyMcpJson: false, + name: 'test', + description: 'test', + } - it('should return instance after initialization', async () => { - await McpManager.init([], mockFeatures) - expect(() => McpManager.instance).to.not.throw() - }) + const mockClient = { close: sandbox.stub().resolves() } + ;(mgr as any).clients.set('test-server', mockClient) + + const removeServerStub = sandbox.stub(mgr, 'removeServer').resolves() + const addRegistryServerStub = sandbox.stub(mgr, 'addRegistryServer').resolves() + + const registry = { + servers: [ + { + name: 'test-server', + description: 'Test', + version: '2.0.0', + packages: [ + { + registryType: 'npm', + identifier: '@test/server', + transport: { type: 'stdio' }, + }, + ], + } as any, + ], + lastFetched: new Date(), + url: 'https://example.com/registry.json', + } - it('should be safe to use with try-catch pattern', async () => { - let result: any[] = [] - try { - result = McpManager.instance.getAllTools() - } catch (error) { - result = [] + const mockRegistryService = { + fetchRegistry: sandbox.stub().resolves(registry), } - expect(result).to.deep.equal([]) + ;(mgr as any).registryService = mockRegistryService - await McpManager.init([], mockFeatures) + await mgr.updateRegistryUrl('https://example.com/registry.json', true) - try { - result = McpManager.instance.getAllTools() - } catch (error) { - result = [] - } - expect(result).to.deep.equal([]) + expect(removeServerStub.called).to.be.true + expect(addRegistryServerStub.called).to.be.true }) }) +}) - describe('Race condition scenarios', () => { - it('should handle immediate access after init call', async () => { - const initPromise = McpManager.init([], mockFeatures) +describe('addRegistryServer with additional headers/env', () => { + let loadStub: sinon.SinonStub + let initOneStub: sinon.SinonStub + let saveServerSpecificAgentConfigStub: sinon.SinonStub - let tools: any[] = [] - try { - tools = McpManager.instance.getAllTools() - } catch (error) { - tools = [] - } + beforeEach(async () => { + sinon.restore() + try { + await McpManager.instance.close() + } catch {} + loadStub = stubAgentConfig() + initOneStub = stubInitOneServer() + saveServerSpecificAgentConfigStub = sinon.stub(mcpUtils, 'saveServerSpecificAgentConfig').resolves() + }) - expect(tools).to.deep.equal([]) - await initPromise - expect(McpManager.instance.getAllTools()).to.deep.equal([]) - }) + afterEach(async () => { + sinon.restore() + try { + await McpManager.instance.close() + } catch {} + }) + + it('stores additional headers for HTTP registry servers', async () => { + const mgr = await McpManager.init([], features) + ;(mgr as any).agentConfig = { + name: 'test-agent', + description: 'Test agent', + mcpServers: {}, + tools: [], + allowedTools: [], + toolsSettings: {}, + includedFiles: [], + resources: [], + } - it('should handle multiple concurrent init calls', async () => { - const promises = [ - McpManager.init([], mockFeatures), - McpManager.init([], mockFeatures), - McpManager.init([], mockFeatures), - ] + const cfg: MCPServerConfig = { + url: 'https://example.com/mcp', + headers: { 'X-Base': 'base-value' }, + timeout: 60000, + __configPath__: 'path.json', + } - const results = await Promise.all(promises) + const additionalHeaders = { 'X-Custom': 'custom-value' } - expect(results).to.have.lengthOf(3) - results.forEach(manager => expect(manager).to.not.be.undefined) - expect(McpManager.isInitialized()).to.be.true - }) + await mgr.addRegistryServer('httpServer', cfg, 'path.json', additionalHeaders, undefined) + + expect(saveServerSpecificAgentConfigStub.calledOnce).to.be.true + + const storedCfg = (mgr as any).mcpServers.get('httpServer') + expect(storedCfg.__additionalHeaders__).to.deep.equal(additionalHeaders) + + const agentCfg = (mgr as any).agentConfig.mcpServers['httpServer'] + expect(agentCfg.headers).to.deep.equal(additionalHeaders) }) - describe('Graceful degradation', () => { - it('should return empty arrays when MCP not ready', async () => { - const manager = await McpManager.init([], mockFeatures) + it('stores additional env for STDIO registry servers', async () => { + const mgr = await McpManager.init([], features) + ;(mgr as any).agentConfig = { + name: 'test-agent', + description: 'Test agent', + mcpServers: {}, + tools: [], + allowedTools: [], + toolsSettings: {}, + includedFiles: [], + resources: [], + } - expect(manager.getAllTools()).to.deep.equal([]) - expect(manager.getEnabledTools()).to.deep.equal([]) - expect(manager.listServersAndTools()).to.deep.equal({}) - }) + const cfg: MCPServerConfig = { + command: 'npx', + args: ['-y', '@test/server'], + env: { BASE_VAR: 'base' }, + timeout: 60000, + __configPath__: 'path.json', + } - it('should handle server operations safely', async () => { - const manager = await McpManager.init([], mockFeatures) + const additionalEnv = { CUSTOM_VAR: 'custom' } - expect(manager.isServerDisabled('nonexistent')).to.be.false - expect(manager.isToolDisabled('nonexistent', 'tool')).to.be.true - expect(manager.getAllServerConfigs().size).to.equal(0) - }) + await mgr.addRegistryServer('stdioServer', cfg, 'path.json', undefined, additionalEnv) + + expect(saveServerSpecificAgentConfigStub.calledOnce).to.be.true + + const storedCfg = (mgr as any).mcpServers.get('stdioServer') + expect(storedCfg.__additionalEnv__).to.deep.equal(additionalEnv) + + const agentCfg = (mgr as any).agentConfig.mcpServers['stdioServer'] + expect(agentCfg.env).to.deep.equal(additionalEnv) + }) + + it('omits additional fields when empty', async () => { + const mgr = await McpManager.init([], features) + ;(mgr as any).agentConfig = { + name: 'test-agent', + description: 'Test agent', + mcpServers: {}, + tools: [], + allowedTools: [], + toolsSettings: {}, + includedFiles: [], + resources: [], + } + + const cfg: MCPServerConfig = { + url: 'https://example.com/mcp', + timeout: 60000, + __configPath__: 'path.json', + } + + await mgr.addRegistryServer('server', cfg, 'path.json', {}, {}) + + const agentCfg = (mgr as any).agentConfig.mcpServers['server'] + expect(agentCfg.headers).to.be.undefined + expect(agentCfg.env).to.be.undefined }) }) diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpManager.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpManager.ts index 99a93bd6aa..f18d0986e0 100644 --- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpManager.ts +++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpManager.ts @@ -21,6 +21,8 @@ import { McpPermissionType, MCPServerPermission, AgentConfig, + isMCPServerConfig, + isRegistryServerConfig, } from './mcpTypes' import { isEmptyEnv, @@ -41,6 +43,8 @@ import { sanitizeInput } from '../../../../shared/utils' import { ProfileStatusMonitor } from './profileStatusMonitor' import { OAuthClient } from './mcpOauthClient' import { AgentPermissionManager } from './agentPermissionManager' +import { McpRegistryService } from './mcpRegistryService' +import { McpRegistryData } from './mcpTypes' export const MCP_SERVER_STATUS_CHANGED = 'mcpServerStatusChanged' export const AGENT_TOOLS_CHANGED = 'agentToolsChanged' @@ -67,6 +71,10 @@ export class McpManager { private serverNameMapping: Map private agentConfig!: AgentConfig private permissionManager!: AgentPermissionManager + private registryService?: McpRegistryService + private currentRegistry: McpRegistryData | null = null + private registryUrlProvided: boolean = false + private isPeriodicSync: boolean = false private constructor( private agentPaths: string[], @@ -92,70 +100,35 @@ export class McpManager { features: Pick< Features, 'logging' | 'workspace' | 'lsp' | 'telemetry' | 'credentialsProvider' | 'runtime' | 'agent' - > + >, + options?: { registryUrl?: string } ): Promise { if (!McpManager.#instance) { const mgr = new McpManager(agentPaths, features) McpManager.#instance = mgr - try { - const shouldDiscoverServers = ProfileStatusMonitor.getMcpState() - - if (shouldDiscoverServers) { - await mgr.discoverAllServers() - features.logging.info(`MCP: discovered ${mgr.mcpTools.length} tools across all servers`) - } else { - // MCP is disabled - create empty instance without connecting to any servers - features.logging.info('MCP: initialized without server discovery (MCP disabled)') - } - } catch (error) { - // Log error but keep the empty instance to prevent crashes - features.logging.error( - `MCP: initialization failed: ${error instanceof Error ? error.message : String(error)}` - ) - } - - // Emit MCP configuration metrics - const serverConfigs = mgr.getAllServerConfigs() - const activeServers = Array.from(serverConfigs.entries()).filter(([name, _]) => !mgr.isServerDisabled(name)) - - // Count global vs project servers - const globalServers = Array.from(serverConfigs.entries()).filter( - ([_, config]) => - config?.__configPath__ === getGlobalAgentConfigPath(features.workspace.fs.getUserHomeDir()) - ).length - const projectServers = serverConfigs.size - globalServers - - // Count tools by permission - let toolsAlwaysAllowed = 0 - let toolsDenied = 0 - - for (const [serverName, _] of activeServers) { - const toolsWithPermissions = mgr.getAllToolsWithPermissions(serverName) - toolsWithPermissions.forEach(item => { - if (item.permission === McpPermissionType.alwaysAllow) { - toolsAlwaysAllowed++ - } else if (item.permission === McpPermissionType.deny) { - toolsDenied++ + // Initialize registry service if URL provided + if (options?.registryUrl) { + mgr.registryUrlProvided = true + try { + mgr.registryService = new McpRegistryService(features.logging) + const registry = await mgr.registryService.fetchRegistry(options.registryUrl) + if (registry) { + mgr.currentRegistry = registry + features.logging.info( + `MCP Registry: Registry mode ACTIVE - ${registry.servers.length} servers from ${options.registryUrl}` + ) + } else { + features.logging.error('MCP Registry: Failed to fetch registry') } - }) + } catch (error) { + const errorMsg = error instanceof Error ? error.message : String(error) + features.logging.error(`MCP Registry: Error during initialization: ${errorMsg}`) + } } - // Emit MCP configuration metrics - if (features.telemetry) { - features.telemetry.emitMetric({ - name: ChatTelemetryEventName.MCPConfig, - data: { - credentialStartUrl: features.credentialsProvider?.getConnectionMetadata()?.sso?.startUrl, - languageServerVersion: features.runtime?.serverInfo.version, - numActiveServers: activeServers.length, - numGlobalServers: globalServers, - numProjectServers: projectServers, - numToolsAlwaysAllowed: toolsAlwaysAllowed, - numToolsDenied: toolsDenied, - }, - }) - } + // DO NOT discover servers here - wait for auth to be initialized + features.logging.info('MCP: Manager initialized, waiting for auth before discovering servers') } return McpManager.#instance! } @@ -188,12 +161,70 @@ export class McpManager { return new Map(this.mcpServerStates) } + /** + * Emit MCP configuration telemetry metrics + * Should be called after servers are discovered and initialized + */ + public emitMcpConfigMetrics(): void { + const serverConfigs = this.getAllServerConfigs() + const activeServers = Array.from(serverConfigs.entries()).filter(([name, _]) => !this.isServerDisabled(name)) + + // Count global vs project servers + const globalServers = Array.from(serverConfigs.entries()).filter( + ([_, config]) => + config?.__configPath__ === getGlobalAgentConfigPath(this.features.workspace.fs.getUserHomeDir()) + ).length + const projectServers = serverConfigs.size - globalServers + + // Count tools by permission + let toolsAlwaysAllowed = 0 + let toolsDenied = 0 + + for (const [serverName, _] of activeServers) { + const toolsWithPermissions = this.getAllToolsWithPermissions(serverName) + toolsWithPermissions.forEach(item => { + if (item.permission === McpPermissionType.alwaysAllow) { + toolsAlwaysAllowed++ + } else if (item.permission === McpPermissionType.deny) { + toolsDenied++ + } + }) + } + + // Emit MCP configuration metrics + if (this.features.telemetry) { + this.features.telemetry.emitMetric({ + name: ChatTelemetryEventName.MCPConfig, + data: { + credentialStartUrl: this.features.credentialsProvider?.getConnectionMetadata()?.sso?.startUrl, + languageServerVersion: this.features.runtime?.serverInfo.version, + numActiveServers: activeServers.length, + numGlobalServers: globalServers, + numProjectServers: projectServers, + numToolsAlwaysAllowed: toolsAlwaysAllowed, + numToolsDenied: toolsDenied, + }, + }) + } + + this.features.logging.info( + `MCP Config Metrics: ${activeServers.length} active servers, ${this.mcpTools.length} tools` + ) + } + /** * Load configurations and initialize each enabled server. + * Should only be called after auth is initialized and MCP is enabled. */ - private async discoverAllServers(): Promise { - // Load agent config - const result = await loadAgentConfig(this.features.workspace, this.features.logging, this.agentPaths) + public async discoverAllServers(): Promise { + // Load agent config with registry support + const result = await loadAgentConfig( + this.features.workspace, + this.features.logging, + this.agentPaths, + this.currentRegistry, + this.isRegistryModeActive() + ) // Extract agent config and other data this.agentConfig = result.agentConfig @@ -233,6 +264,17 @@ export class McpManager { this.emitToolsChanged(name) continue } + if (!isMCPServerConfig(cfg)) { + this.features.logging.warn(`MCP: server '${name}' has invalid config, skipping`) + continue + } + // Check if this is a placeholder for a missing registry server + if ((cfg as any).__registryError__) { + this.features.logging.warn(`MCP: server '${name}' not found in registry, marking as failed`) + this.setState(name, McpServerStatus.FAILED, 0, (cfg as any).__registryError__) + this.emitToolsChanged(name) + continue + } serversToInit.push([name, cfg]) } @@ -346,12 +388,13 @@ export class McpManager { const isStdio = !!cfg.command const doConnect = async () => { if (isStdio) { - // stdio transport + // stdio transport - merge additional env with base env + const finalEnv = { ...(cfg.env || {}), ...(cfg.__additionalEnv__ || {}) } const mergedEnv = { ...(process.env as Record), // Make sure we do not have empty key and value in mergedEnv, or adding server through UI will fail on Windows - ...(cfg.env && !isEmptyEnv(cfg.env) - ? Object.fromEntries(Object.entries(cfg.env).filter(([k, v]) => k.trim() && v.trim())) + ...(finalEnv && !isEmptyEnv(finalEnv) + ? Object.fromEntries(Object.entries(finalEnv).filter(([k, v]) => k.trim() && v.trim())) : {}), } let cwd: string | undefined @@ -363,12 +406,30 @@ export class McpManager { `MCP: no workspace folder for [${serverName}], continuing without cwd` ) } + const argsStr = (cfg.args ?? []).length > 0 ? ` ${(cfg.args ?? []).join(' ')}` : '' + const envKeys = Object.keys(finalEnv || {}) + const envInfo = envKeys.length > 0 ? ` (env: ${envKeys.join(', ')})` : '' + this.features.logging.info(`MCP: Executing command: ${cfg.command}${argsStr}${envInfo}`) + transport = new StdioClientTransport({ command: cfg.command!, args: cfg.args ?? [], env: mergedEnv, cwd, + stderr: 'pipe', }) + + // Capture stderr from the transport + const stderrStream = transport.stderr + if (stderrStream) { + stderrStream.on('data', (data: Buffer) => { + const output = data.toString().trim() + if (output) { + this.features.logging.warn(`MCP [${serverName}] stderr: ${output}`) + } + }) + } + this.features.logging.info(`MCP: Connecting MCP server using StdioClientTransport`) try { await client.connect(transport) @@ -387,11 +448,14 @@ export class McpManager { ) } } else { - // streamable http/SSE transport + // streamable http/SSE transport - merge additional headers with base headers const base = new URL(cfg.url!) try { // Use HEAD to check if it needs OAuth - let headers: Record = { ...(cfg.headers ?? {}) } + let headers: Record = { + ...(cfg.headers ?? {}), + ...(cfg.__additionalHeaders__ ?? {}), + } let needsOAuth = false try { const headResp = await fetch(base, { method: 'HEAD', headers }) @@ -429,6 +493,10 @@ export class McpManager { } } + const headerKeys = Object.keys(headers) + const headerInfo = headerKeys.length > 0 ? ` (headers: ${headerKeys.join(', ')})` : '' + this.features.logging.info(`MCP: Connecting to URL: ${cfg.url}${headerInfo}`) + try { // try streamable http first transport = new StreamableHTTPClientTransport(base, this.buildHttpOpts(headers)) @@ -500,6 +568,18 @@ export class McpManager { }) } + // Cache version for registry servers + if (this.currentRegistry) { + const unsanitizedName = this.serverNameMapping.get(serverName) || serverName + const registryServer = this.currentRegistry.servers.find(s => s.name === unsanitizedName) + if (registryServer) { + cfg.__cachedVersion__ = registryServer.version + this.features.logging.debug( + `MCP Registry: Cached version ${registryServer.version} for server '${unsanitizedName}'` + ) + } + } + this.setState(serverName, McpServerStatus.ENABLED, resp.tools.length) this.emitToolsChanged(serverName) } catch (e: any) { @@ -657,6 +737,76 @@ export class McpManager { } } + /** + * Add a registry server: persist config, register in memory, and initialize. + */ + public async addRegistryServer( + serverName: string, + cfg: MCPServerConfig, + configPath: string, + additionalHeaders?: Record, + additionalEnv?: Record + ): Promise { + const sanitizedName = sanitizeName(serverName) + if ( + this.mcpServers.has(sanitizedName) && + this.getServerState(sanitizedName)?.status == McpServerStatus.ENABLED + ) { + throw new Error(`MCP: server '${sanitizedName}' already exists`) + } + + // Filter out empty key-value pairs + if (additionalHeaders) { + additionalHeaders = Object.fromEntries( + Object.entries(additionalHeaders).filter(([k, v]) => k.trim() && v.trim()) + ) + } + if (additionalEnv) { + additionalEnv = Object.fromEntries(Object.entries(additionalEnv).filter(([k, v]) => k.trim() && v.trim())) + } + + // Save registry server config with type: 'registry', timeout, and additional headers/env + const registryServerConfig: any = { type: 'registry' as const } + if (cfg.timeout !== undefined) { + registryServerConfig.timeout = cfg.timeout + } + if (additionalHeaders && Object.keys(additionalHeaders).length > 0) { + registryServerConfig.headers = additionalHeaders + } + if (additionalEnv && Object.keys(additionalEnv).length > 0) { + registryServerConfig.env = additionalEnv + } + this.agentConfig.mcpServers[serverName] = registryServerConfig + + const serverPrefix = `@${serverName}` + if (!this.agentConfig.tools.includes(serverPrefix)) { + this.agentConfig.tools.push(serverPrefix) + } + + await saveServerSpecificAgentConfig( + this.features.workspace, + this.features.logging, + serverName, + registryServerConfig, + [serverPrefix], + [], + configPath + ) + + // Store additional headers/env separately and merge for runtime + const newCfg: MCPServerConfig = { ...cfg, __configPath__: configPath } + if (additionalHeaders && Object.keys(additionalHeaders).length > 0) { + newCfg.__additionalHeaders__ = additionalHeaders + } + if (additionalEnv && Object.keys(additionalEnv).length > 0) { + newCfg.__additionalEnv__ = additionalEnv + } + this.mcpServers.set(sanitizedName, newCfg) + this.serverNameMapping.set(sanitizedName, serverName) + + await this.initOneServer(sanitizedName, newCfg, AuthIntent.Interactive) + } + /** * Add a new server: persist config, register in memory, and initialize. */ @@ -667,6 +817,13 @@ export class McpManager { isLegacyMcpServer: boolean = false ): Promise { try { + // Reject manual server addition when registry is active + if (this.isRegistryModeActive()) { + throw new Error( + 'MCP: Cannot add servers manually when registry mode is active. Please install servers from the registry.' + ) + } + const sanitizedName = sanitizeName(serverName) if ( this.mcpServers.has(sanitizedName) && @@ -799,8 +956,9 @@ export class McpManager { /** * Remove a server: shutdown client, remove tools, and delete disk entry. + * @param skipAgentConfigRemoval - If true, only removes from mcpManager but keeps in agent config */ - public async removeServer(serverName: string): Promise { + public async removeServer(serverName: string, skipAgentConfigRemoval: boolean = false): Promise { const cfg = this.mcpServers.get(serverName) const unsanitizedName = this.serverNameMapping.get(serverName) const permission = this.mcpServerPermissions.get(serverName) @@ -834,8 +992,8 @@ export class McpManager { ) } - // Remove from agent config - if (unsanitizedName && this.agentConfig) { + // Remove from agent config (unless skipAgentConfigRemoval is true) + if (!skipAgentConfigRemoval && unsanitizedName && this.agentConfig) { // Remove server from mcpServers delete this.agentConfig.mcpServers[unsanitizedName] @@ -901,7 +1059,8 @@ export class McpManager { // Update agent config if (this.agentConfig && unsanitizedServerName) { - const updatedConfig = { ...(this.agentConfig.mcpServers[unsanitizedServerName] || {}) } + const existingConfig = this.agentConfig.mcpServers[unsanitizedServerName] + const updatedConfig = { ...(isMCPServerConfig(existingConfig) ? existingConfig : {}) } if (configUpdates.url !== undefined) updatedConfig.url = configUpdates.url if (configUpdates.headers !== undefined) { if (configUpdates.headers && Object.keys(configUpdates.headers).length) { @@ -1012,10 +1171,11 @@ export class McpManager { } /** - * Reinitialize all MCP servers by closing existing connections and rediscovering servers + * Reinitialize all MCP servers by closing existing connections + * @param isManualRefresh - If true, automatically discovers servers after closing connections */ - public async reinitializeMcpServers(): Promise { - this.features.logging.info('Reinitializing MCP servers') + public async reinitializeMcpServers(isManualRefresh: boolean = false): Promise { + this.features.logging.info('Reinitializing MCP servers (closing connections)') try { // Save the current tool name mapping to preserve tool names across reinitializations @@ -1027,16 +1187,18 @@ export class McpManager { // Restore the saved tool name mapping this.setToolNameMapping(savedToolNameMapping) - const shouldDiscoverServers = ProfileStatusMonitor.getMcpState() - - if (shouldDiscoverServers) { - await this.discoverAllServers() + if (isManualRefresh) { + const shouldDiscoverServers = ProfileStatusMonitor.getMcpState() + if (shouldDiscoverServers) { + await this.discoverAllServers() + } + const reinitializedServerCount = McpManager.#instance?.mcpServers.size + this.features.logging.info( + `MCP servers reinitialization completed. Total servers: ${reinitializedServerCount}` + ) + } else { + this.features.logging.info('MCP servers reinitialization completed (connections closed)') } - - const reinitializedServerCount = McpManager.#instance?.mcpServers.size - this.features.logging.info( - `MCP servers reinitialized completed. Total servers: ${reinitializedServerCount}` - ) } catch (err: any) { this.features.logging.error(`Error reinitializing MCP servers: ${err.message}`) throw err @@ -1115,8 +1277,9 @@ export class McpManager { // Update server enabled/disabled state (only for non-legacy servers) if (!isLegacyMcpServer) { - if (this.agentConfig.mcpServers[unsanitizedServerName]) { - this.agentConfig.mcpServers[unsanitizedServerName].disabled = !perm.enabled + const serverCfg = this.agentConfig.mcpServers[unsanitizedServerName] + if (serverCfg && isMCPServerConfig(serverCfg)) { + serverCfg.disabled = !perm.enabled } } @@ -1138,11 +1301,12 @@ export class McpManager { tool => tool === serverPrefix || tool.startsWith(`${serverPrefix}/`) ) + const serverCfg = this.agentConfig.mcpServers[unsanitizedServerName] await saveServerSpecificAgentConfig( this.features.workspace, this.features.logging, unsanitizedServerName, - this.agentConfig.mcpServers[unsanitizedServerName], + isMCPServerConfig(serverCfg) ? serverCfg : null, serverTools, serverAllowedTools, agentPath @@ -1228,7 +1392,13 @@ export class McpManager { } return Array.from(this.configLoadErrors.entries()) - .map(([server, error]) => `File: ${server}, Error: ${error}`) + .map(([server, error]) => { + // For registry errors, just return the error message without prefix + if (server === 'registry') { + return error + } + return `File: ${server}, Error: ${error}` + }) .join('\n\n') } @@ -1476,4 +1646,174 @@ export class McpManager { } return { requestInit: { headers } } } + + /** + * Get the registry service instance + */ + public getRegistryService(): McpRegistryService | undefined { + return this.registryService + } + + /** + * Check if registry mode is active + */ + public isRegistryModeActive(): boolean { + return this.registryUrlProvided + } + + /** + * Set registry mode active state + */ + public setRegistryActive(active: boolean): void { + this.registryUrlProvided = active + } + + /** + * Update registry URL and refetch registry + * @throws Error if registry fetch or validation fails + */ + public async updateRegistryUrl(registryUrl: string, isPeriodicSync: boolean = false): Promise { + if (!this.registryService) { + this.registryService = new McpRegistryService(this.features.logging) + } + + const wasActive = this.registryUrlProvided + + const registry = await this.registryService.fetchRegistry(registryUrl) + if (registry) { + this.currentRegistry = registry + + if (!wasActive) { + this.features.logging.info(`MCP Registry: Registry mode ACTIVATED - ${registry.servers.length} servers`) + } else { + this.features.logging.info(`MCP Registry: Updated registry with ${registry.servers.length} servers`) + } + + // Only sync during periodic updates, not at startup + if (isPeriodicSync) { + this.isPeriodicSync = true + await this.syncWithRegistry() + this.isPeriodicSync = false + } + } else { + const errorMsg = 'Failed to fetch or validate registry' + this.features.logging.error(`MCP Registry: ${errorMsg}`) + this.currentRegistry = null + throw new Error(errorMsg) + } + } + + /** + * Synchronize client configurations with registry updates + * Note: Version checking only works with explicit versions, not "latest" + */ + private async syncWithRegistry(): Promise { + if (!this.currentRegistry) { + this.features.logging.debug('MCP Registry: No active registry for synchronization') + return + } + + this.features.logging.info('MCP Registry: Starting periodic registry synchronization') + const registryServerNames = new Set(this.currentRegistry.servers.map(s => s.name)) + const configuredServers = Array.from(this.mcpServers.entries()) + let serversDisabled = 0 + let versionsUpdated = 0 + + for (const [sanitizedName, config] of configuredServers) { + const unsanitizedName = this.serverNameMapping.get(sanitizedName) || sanitizedName + const agentConfig = this.agentConfig.mcpServers[unsanitizedName] + + // Skip non-registry servers + if (!agentConfig || !isRegistryServerConfig(agentConfig)) { + continue + } + + // Check if server still exists in registry + if (!registryServerNames.has(unsanitizedName)) { + this.features.logging.warn( + `MCP Registry: Server '${unsanitizedName}' removed from registry during periodic sync` + ) + // Close client and mark as failed, but keep in agent config + const client = this.clients.get(sanitizedName) + if (client) { + await client.close() + this.clients.delete(sanitizedName) + } + this.mcpTools = this.mcpTools.filter(t => t.serverName !== sanitizedName) + this.setState(sanitizedName, McpServerStatus.FAILED, 0, 'Server removed from registry') + this.emitToolsChanged(sanitizedName) + serversDisabled++ + continue + } + + // Check version mismatch for local servers during periodic sync + const registryServer = this.currentRegistry.servers.find(s => s.name === unsanitizedName) + if (registryServer && registryServer.packages) { + const updated = await this.checkAndUpdateVersion(sanitizedName, unsanitizedName, registryServer, config) + if (updated) versionsUpdated++ + } + } + + this.features.logging.info( + `MCP Registry: Periodic synchronization complete - ${serversDisabled} servers disabled, ${versionsUpdated} versions updated` + ) + } + + /** + * Check version and reinstall if needed + * Note: Version checking doesn't work with "latest" versions - only explicit versions are supported + */ + private async checkAndUpdateVersion( + sanitizedName: string, + unsanitizedName: string, + registryServer: any, + currentConfig: MCPServerConfig + ): Promise { + if (!isMCPServerConfig(currentConfig)) { + return false + } + + // Use cached version for comparison + const cachedVersion = currentConfig.__cachedVersion__ + const registryVersion = registryServer.version + + if (cachedVersion && cachedVersion !== registryVersion) { + const msg = `MCP Registry: Server '${unsanitizedName}' version changed from ${cachedVersion} to ${registryVersion} - reinstalling` + this.features.logging.warn(msg) + if (this.isPeriodicSync) { + this.features.logging.warn(`WARNING: ${msg}`) + } + try { + await this.reinstallServer(sanitizedName, unsanitizedName, registryServer) + return true + } catch (error) { + const errorMsg = error instanceof Error ? error.message : String(error) + this.features.logging.error( + `MCP Registry: Failed to reinstall server '${unsanitizedName}': ${errorMsg}` + ) + return false + } + } + return false + } + + /** + * Reinstall server with new version + */ + private async reinstallServer(sanitizedName: string, unsanitizedName: string, registryServer: any): Promise { + this.features.logging.info( + `MCP Registry: Reinstalling server '${unsanitizedName}' with version ${registryServer.version}` + ) + + const configPath = + this.mcpServers.get(sanitizedName)?.__configPath__ || + getGlobalAgentConfigPath(this.features.workspace.fs.getUserHomeDir()) + + await this.removeServer(sanitizedName) + + const converter = new (await import('./mcpServerConfigConverter')).McpServerConfigConverter() + const newConfig = converter.convertRegistryServer(registryServer) + + await this.addRegistryServer(unsanitizedName, newConfig, configPath) + } } diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpRegistryConstants.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpRegistryConstants.ts new file mode 100644 index 0000000000..42cd8395a9 --- /dev/null +++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpRegistryConstants.ts @@ -0,0 +1,36 @@ +/*! + * Copyright Amazon.com, Inc. or its affiliates. + * All Rights Reserved. SPDX-License-Identifier: Apache-2.0 + */ + +export const MCP_REGISTRY_CONSTANTS = { + MAX_REGISTRY_URL_LENGTH: 1024, + MAX_SERVER_NAME_LENGTH: 200, + SERVER_NAME_PATTERN: /^[a-zA-Z0-9._-]+$/, + TRANSPORT_TYPES: { + STREAMABLE_HTTP: 'streamable-http' as const, + SSE: 'sse' as const, + STDIO: 'stdio' as const, + }, + REGISTRY_TYPES: { + NPM: 'npm' as const, + PYPI: 'pypi' as const, + OCI: 'oci' as const, + }, + PACKAGE_ARGUMENT_TYPE: { + POSITIONAL: 'positional' as const, + }, + NPM: { + COMMAND: 'npx', + FLAG: '-y', + ENV_VAR: 'NPM_CONFIG_REGISTRY', + }, + PYPI: { + COMMAND: 'uvx', + ENV_VAR: 'UV_DEFAULT_INDEX', + }, + OCI: { + COMMAND: 'docker', + FLAG: 'run', + }, +} as const diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpRegistryService.test.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpRegistryService.test.ts new file mode 100644 index 0000000000..b6db635353 --- /dev/null +++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpRegistryService.test.ts @@ -0,0 +1,345 @@ +/*! * Copyright Amazon.com, Inc. or its affiliates. + * All Rights Reserved. SPDX-License-Identifier: Apache-2.0 + */ + +import { McpRegistryService } from './mcpRegistryService' +import { Logging } from '@aws/language-server-runtimes/server-interface' +import * as assert from 'assert' +import sinon, { StubbedInstance, stubInterface } from 'ts-sinon' +import { httpsUtils } from '@aws/lsp-core' +import { MCP_REGISTRY_CONSTANTS } from './mcpRegistryConstants' + +describe('McpRegistryService', () => { + let service: McpRegistryService + let mockLogging: StubbedInstance + let requestContentStub: sinon.SinonStub + + beforeEach(() => { + mockLogging = stubInterface() + service = new McpRegistryService(mockLogging) + requestContentStub = sinon.stub(httpsUtils, 'requestContent') + }) + + afterEach(() => { + sinon.restore() + }) + + describe('validateRegistryUrl', () => { + it('should accept valid HTTPS URLs', () => { + assert.strictEqual(service.validateRegistryUrl('https://example.com/registry.json'), true) + }) + + it('should reject HTTP URLs', () => { + assert.strictEqual(service.validateRegistryUrl('http://example.com/registry.json'), false) + }) + + it('should reject URLs over 1024 characters', () => { + const longUrl = 'https://example.com/' + 'a'.repeat(MCP_REGISTRY_CONSTANTS.MAX_REGISTRY_URL_LENGTH) + assert.strictEqual(service.validateRegistryUrl(longUrl), false) + }) + + it('should reject empty URLs', () => { + assert.strictEqual(service.validateRegistryUrl(''), false) + }) + }) + + describe('fetchRegistry', () => { + it('should fetch and parse valid registry JSON', async () => { + const mockRegistry = { + servers: [ + { + name: 'test-server', + description: 'Test server', + version: '1.0.0', + remotes: [{ type: 'streamable-http', url: 'https://example.com' }], + }, + ], + } + + requestContentStub.resolves({ content: JSON.stringify(mockRegistry), contentType: 'application/json' }) + + const result = await service.fetchRegistry('https://example.com/registry.json') + + assert.notStrictEqual(result, null) + assert.strictEqual(result?.servers.length, 1) + assert.strictEqual(result?.url, 'https://example.com/registry.json') + }) + + it('should handle registry with server wrapper structure', async () => { + const mockRegistry = { + servers: [ + { + server: { + name: 'test-server', + description: 'Test server', + version: '1.0.0', + remotes: [{ type: 'streamable-http', url: 'https://example.com' }], + }, + }, + ], + } + + requestContentStub.resolves({ content: JSON.stringify(mockRegistry), contentType: 'application/json' }) + + const result = await service.fetchRegistry('https://example.com/registry.json') + + assert.notStrictEqual(result, null) + assert.strictEqual(result?.servers.length, 1) + assert.strictEqual(result?.servers[0].name, 'test-server') + assert.strictEqual(result?.url, 'https://example.com/registry.json') + }) + + it('should return null for invalid URL', async () => { + const result = await service.fetchRegistry('http://example.com/registry.json') + assert.strictEqual(result, null) + }) + + it('should return null for missing servers array', async () => { + requestContentStub.resolves({ content: '{}', contentType: 'application/json' }) + + const result = await service.fetchRegistry('https://example.com/registry.json') + assert.strictEqual(result, null) + }) + + it('should handle network errors', async () => { + requestContentStub.rejects(new Error('Network error')) + + const result = await service.fetchRegistry('https://example.com/registry.json') + assert.strictEqual(result, null) + }) + }) + + describe('getInMemoryRegistry', () => { + it('should return null initially', () => { + assert.strictEqual(service.getInMemoryRegistry(), null) + }) + + it('should return registry after successful fetch', async () => { + const mockRegistry = { + servers: [ + { + name: 'test', + description: 'Test', + version: '1.0.0', + remotes: [{ type: 'streamable-http', url: 'https://example.com' }], + }, + ], + } + + requestContentStub.resolves({ content: JSON.stringify(mockRegistry), contentType: 'application/json' }) + + await service.fetchRegistry('https://example.com/registry.json') + const result = service.getInMemoryRegistry() + + assert.notStrictEqual(result, null) + assert.strictEqual(result?.servers.length, 1) + }) + }) + + describe('isRegistryActive', () => { + it('should return false initially', () => { + assert.strictEqual(service.isRegistryActive(), false) + }) + + it('should return true after successful fetch', async () => { + const mockRegistry = { + servers: [], + } + + requestContentStub.resolves({ content: JSON.stringify(mockRegistry), contentType: 'application/json' }) + + await service.fetchRegistry('https://example.com/registry.json') + assert.strictEqual(service.isRegistryActive(), true) + }) + }) + + describe('error handling and logging', () => { + it('should log error for empty URL', async () => { + const result = await service.fetchRegistry('') + assert.strictEqual(result, null) + assert.ok(mockLogging.error.calledWith('MCP Registry: URL is empty or undefined')) + }) + + it('should log error for URL exceeding max length', async () => { + const longUrl = 'https://' + 'a'.repeat(1100) + '.com/registry.json' + const result = await service.fetchRegistry(longUrl) + assert.strictEqual(result, null) + assert.ok(mockLogging.error.calledWith(sinon.match(/exceeds maximum length/))) + }) + + it('should log network error for ENOTFOUND', async () => { + const error = new Error('getaddrinfo ENOTFOUND invalid-domain.com') + requestContentStub.rejects(error) + const result = await service.fetchRegistry('https://invalid-domain.com/registry.json') + assert.strictEqual(result, null) + assert.ok(mockLogging.error.calledWith(sinon.match(/Network error - unable to reach/))) + }) + + it('should log network error for ECONNREFUSED', async () => { + const error = new Error('connect ECONNREFUSED 127.0.0.1:443') + requestContentStub.rejects(error) + const result = await service.fetchRegistry('https://localhost/registry.json') + assert.strictEqual(result, null) + assert.ok(mockLogging.error.calledWith(sinon.match(/Network error - unable to reach/))) + }) + + it('should log error for invalid JSON', async () => { + requestContentStub.resolves({ content: '{ invalid json }', contentType: 'application/json' }) + const result = await service.fetchRegistry('https://example.com/registry.json') + assert.strictEqual(result, null) + assert.ok(mockLogging.error.calledWith(sinon.match(/Invalid JSON format/))) + }) + + it('should log error for non-array servers field', async () => { + requestContentStub.resolves({ content: '{"servers": "not-an-array"}', contentType: 'application/json' }) + const result = await service.fetchRegistry('https://example.com/registry.json') + assert.strictEqual(result, null) + assert.ok( + mockLogging.error.calledWith(sinon.match(/Invalid registry format.*Registry must have a servers array/)) + ) + }) + + it('should log success message with server count', async () => { + const validRegistry = JSON.stringify({ + servers: [ + { + name: 'test-server', + description: 'Test server', + version: '1.0.0', + remotes: [{ type: 'streamable-http', url: 'https://example.com' }], + }, + ], + }) + requestContentStub.resolves({ content: validRegistry, contentType: 'application/json' }) + const result = await service.fetchRegistry('https://example.com/registry.json') + assert.ok(result !== null) + assert.ok(mockLogging.info.calledWith(sinon.match(/Successfully fetched registry.*with 1 servers/))) + }) + + it('should log generic error for unknown failures', async () => { + const error = new Error('Unknown error occurred') + requestContentStub.rejects(error) + const result = await service.fetchRegistry('https://example.com/registry.json') + assert.strictEqual(result, null) + assert.ok(mockLogging.error.calledWith(sinon.match(/Failed to fetch registry.*Unknown error occurred/))) + }) + + it('should log authentication error for 401 Unauthorized', async () => { + const error = new Error('HTTP 401 Unauthorized') + requestContentStub.rejects(error) + const result = await service.fetchRegistry('https://example.com/registry.json') + assert.strictEqual(result, null) + assert.ok( + mockLogging.error.calledWith( + sinon.match(/Authentication required - registry URL must be accessible without credentials/) + ) + ) + }) + + it('should log authentication error for 403 Forbidden', async () => { + const error = new Error('HTTP 403 Forbidden') + requestContentStub.rejects(error) + const result = await service.fetchRegistry('https://example.com/registry.json') + assert.strictEqual(result, null) + assert.ok( + mockLogging.error.calledWith( + sinon.match(/Authentication required - registry URL must be accessible without credentials/) + ) + ) + }) + + it('should log authentication error for Unauthorized message', async () => { + const error = new Error('Request failed: Unauthorized access') + requestContentStub.rejects(error) + const result = await service.fetchRegistry('https://example.com/registry.json') + assert.strictEqual(result, null) + assert.ok( + mockLogging.error.calledWith( + sinon.match(/Authentication required - registry URL must be accessible without credentials/) + ) + ) + }) + }) + + describe('performance with large registries', () => { + it('should handle registry with 200 servers efficiently', async () => { + const servers = [] + for (let i = 0; i < 200; i++) { + servers.push({ + name: `server-${i}`, + description: `Server ${i}`, + version: '1.0.0', + remotes: [{ type: 'streamable-http', url: `https://example.com/${i}` }], + }) + } + + requestContentStub.resolves({ content: JSON.stringify({ servers }), contentType: 'application/json' }) + const result = await service.fetchRegistry('https://example.com/registry.json') + + assert.notStrictEqual(result, null) + assert.strictEqual(result?.servers.length, 200) + + // Verify lookup works + const server = service.getServerByName('server-150') + assert.notStrictEqual(server, undefined) + assert.strictEqual(server.name, 'server-150') + }) + + it('should handle registry with 500 servers efficiently', async () => { + const servers = [] + for (let i = 0; i < 500; i++) { + servers.push({ + name: `server-${i}`, + description: `Server ${i}`, + version: '1.0.0', + remotes: [{ type: 'streamable-http', url: `https://example.com/${i}` }], + }) + } + + requestContentStub.resolves({ content: JSON.stringify({ servers }), contentType: 'application/json' }) + const result = await service.fetchRegistry('https://example.com/registry.json') + + assert.notStrictEqual(result, null) + assert.strictEqual(result?.servers.length, 500) + + // Verify lookup works + const server = service.getServerByName('server-499') + assert.notStrictEqual(server, undefined) + assert.strictEqual(server.name, 'server-499') + }) + + it('should handle registry with mixed server types', async () => { + const servers = [] + for (let i = 0; i < 200; i++) { + if (i % 2 === 0) { + servers.push({ + name: `server-${i}`, + description: `Remote server ${i}`, + version: '1.0.0', + remotes: [{ type: 'streamable-http', url: `https://example.com/${i}` }], + }) + } else { + servers.push({ + name: `server-${i}`, + description: `Local server ${i}`, + version: '1.0.0', + packages: [ + { + registryType: 'npm', + identifier: `@test/server-${i}`, + version: '1.0.0', + transport: { type: 'stdio' }, + }, + ], + }) + } + } + + requestContentStub.resolves({ content: JSON.stringify({ servers }), contentType: 'application/json' }) + const result = await service.fetchRegistry('https://example.com/registry.json') + + assert.notStrictEqual(result, null) + assert.strictEqual(result?.servers.length, 200) + }) + }) +}) diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpRegistryService.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpRegistryService.ts new file mode 100644 index 0000000000..a84aab4195 --- /dev/null +++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpRegistryService.ts @@ -0,0 +1,130 @@ +/*! * Copyright Amazon.com, Inc. or its affiliates. + * All Rights Reserved. SPDX-License-Identifier: Apache-2.0 + */ + +import { Logging } from '@aws/language-server-runtimes/server-interface' +import { HttpsProxyAgent } from 'hpagent' +import { httpsUtils } from '@aws/lsp-core' +import { McpRegistryData } from './mcpTypes' +import { MCP_REGISTRY_CONSTANTS } from './mcpRegistryConstants' +import { McpRegistryValidator } from './mcpRegistryValidator' + +export class McpRegistryService { + private inMemoryRegistry: McpRegistryData | null = null + private serverLookupMap: Map | null = null + private validator: McpRegistryValidator + + constructor(private logging: Logging) { + this.validator = new McpRegistryValidator() + } + + async fetchRegistry(url: string): Promise { + if (!this.validateRegistryUrl(url)) { + this.logging.error(`MCP Registry: Invalid registry URL format: ${url}`) + return null + } + + try { + const proxyUrl = process.env.HTTPS_PROXY ?? process.env.https_proxy + const agent = proxyUrl ? new HttpsProxyAgent({ proxy: proxyUrl }) : undefined + const response = await httpsUtils.requestContent(url, agent) + + // Validate content type to prevent HTML/JavaScript injection + if ( + response.contentType && + !response.contentType.includes('application/json') && + !response.contentType.includes('text/plain') + ) { + this.logging.error( + `MCP Registry: Invalid content type '${response.contentType}' from ${url}. Expected JSON.` + ) + return null + } + + const parsed = JSON.parse(response.content) + + const validationResult = this.validator.validateRegistryJson(parsed) + if (!validationResult.isValid) { + this.logging.error( + `MCP Registry: Invalid registry format in ${url}: ${validationResult.errors.join(', ')}` + ) + return null + } + + // Extract servers from wrapper structure if present + const servers = parsed.servers.map((item: any) => item.server || item) + + const registryData: McpRegistryData = { + servers, + lastFetched: new Date(), + url, + } + + this.inMemoryRegistry = registryData + this.serverLookupMap = this.buildServerLookupMap(servers) + this.logging.info( + `MCP Registry: Successfully fetched registry from ${url} with ${registryData.servers.length} servers` + ) + return registryData + } catch (error) { + const errorMsg = error instanceof Error ? error.message : String(error) + if (errorMsg.includes('ENOTFOUND') || errorMsg.includes('ECONNREFUSED')) { + this.logging.error(`MCP Registry: Network error - unable to reach ${url}: ${errorMsg}`) + } else if ( + errorMsg.includes('401') || + errorMsg.includes('403') || + errorMsg.includes('Unauthorized') || + errorMsg.includes('Forbidden') + ) { + this.logging.error( + `MCP Registry: Authentication required - registry URL must be accessible without credentials: ${url}` + ) + } else if (errorMsg.includes('JSON')) { + this.logging.error(`MCP Registry: Invalid JSON format in registry at ${url}: ${errorMsg}`) + } else { + this.logging.error(`MCP Registry: Failed to fetch registry from ${url}: ${errorMsg}`) + } + return null + } + } + + getInMemoryRegistry(): McpRegistryData | null { + return this.inMemoryRegistry + } + + validateRegistryUrl(url: string): boolean { + if (!url) { + this.logging.error('MCP Registry: URL is empty or undefined') + return false + } + if (url.length > MCP_REGISTRY_CONSTANTS.MAX_REGISTRY_URL_LENGTH) { + this.logging.error( + `MCP Registry: URL exceeds maximum length of ${MCP_REGISTRY_CONSTANTS.MAX_REGISTRY_URL_LENGTH} characters` + ) + return false + } + if (!url.startsWith('https://')) { + this.logging.error('MCP Registry: URL must use HTTPS protocol') + return false + } + return true + } + + isRegistryActive(): boolean { + return this.inMemoryRegistry !== null + } + + getServerByName(name: string): any | undefined { + return this.serverLookupMap?.get(name) + } + + private buildServerLookupMap(servers: any[]): Map { + const map = new Map() + for (const server of servers) { + if (server.name) { + map.set(server.name, server) + } + } + return map + } +} diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpRegistryValidator.test.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpRegistryValidator.test.ts new file mode 100644 index 0000000000..6cfc8b53a6 --- /dev/null +++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpRegistryValidator.test.ts @@ -0,0 +1,542 @@ +/*! + * Copyright Amazon.com, Inc. or its affiliates. + * All Rights Reserved. SPDX-License-Identifier: Apache-2.0 + */ + +import { McpRegistryValidator } from './mcpRegistryValidator' +import { McpRegistryData } from './mcpTypes' +import { MCP_REGISTRY_CONSTANTS } from './mcpRegistryConstants' +import * as assert from 'assert' + +describe('McpRegistryValidator', () => { + let validator: McpRegistryValidator + + beforeEach(() => { + validator = new McpRegistryValidator() + }) + + describe('validateRegistryJson', () => { + it('should accept valid registry with servers array', () => { + const registry = { + servers: [ + { + name: 'mcp-fs', + description: 'Test server', + version: '1.0.0', + remotes: [{ type: 'streamable-http', url: 'https://example.com' }], + }, + ], + } + const result = validator.validateRegistryJson(registry) + assert.strictEqual(result.isValid, true) + assert.strictEqual(result.errors.length, 0) + }) + + it('should accept registry with server wrapper structure', () => { + const registry = { + servers: [ + { + server: { + name: 'mcp-fs', + description: 'Test server', + version: '1.0.0', + remotes: [{ type: 'streamable-http', url: 'https://example.com' }], + }, + }, + ], + } + const result = validator.validateRegistryJson(registry) + assert.strictEqual(result.isValid, true) + assert.strictEqual(result.errors.length, 0) + }) + + it('should reject non-object registry', () => { + const result = validator.validateRegistryJson(null) + assert.strictEqual(result.isValid, false) + assert.ok(result.errors.includes('Registry must be an object')) + }) + + it('should reject registry without servers array', () => { + const result = validator.validateRegistryJson({}) + assert.strictEqual(result.isValid, false) + assert.ok(result.errors.includes('Registry must have a servers array')) + }) + + it('should validate all servers in array', () => { + const registry = { + servers: [ + { + name: 'test1', + description: 'Test', + version: '1.0.0', + remotes: [{ type: 'sse', url: 'https://example.com' }], + }, + { description: 'Missing name', version: '1.0.0' }, + ], + } + const result = validator.validateRegistryJson(registry) + assert.strictEqual(result.isValid, false) + assert.ok(result.errors.some(e => e.includes('Server 1'))) + }) + }) + + describe('validateServerDefinition', () => { + it('should accept valid remote server', () => { + const server = { + name: 'mcp-fs', + description: 'Test server', + version: '1.0.0', + remotes: [{ type: 'streamable-http', url: 'https://example.com' }], + } + const result = validator.validateServerDefinition(server) + assert.strictEqual(result.isValid, true) + }) + + it('should accept valid local server', () => { + const server = { + name: 'everything', + description: 'Test server', + version: '1.0.0', + packages: [ + { + registryType: 'npm', + identifier: '@example/package', + version: '1.0.0', + transport: { type: 'stdio' }, + }, + ], + } + const result = validator.validateServerDefinition(server) + assert.strictEqual(result.isValid, true) + }) + + it('should reject server without name', () => { + const server = { description: 'Test', version: '1.0.0', remotes: [] } + const result = validator.validateServerDefinition(server) + assert.strictEqual(result.isValid, false) + assert.ok(result.errors.some(e => e.includes('name'))) + }) + + it('should reject server without description', () => { + const server = { name: 'test', version: '1.0.0', remotes: [] } + const result = validator.validateServerDefinition(server) + assert.strictEqual(result.isValid, false) + assert.ok(result.errors.some(e => e.includes('description'))) + }) + + it('should reject server without version', () => { + const server = { name: 'test', description: 'Test', remotes: [] } + const result = validator.validateServerDefinition(server) + assert.strictEqual(result.isValid, false) + assert.ok(result.errors.some(e => e.includes('version'))) + }) + + it('should reject server without remotes or packages', () => { + const server = { name: 'test', description: 'Test', version: '1.0.0' } + const result = validator.validateServerDefinition(server) + assert.strictEqual(result.isValid, false) + assert.ok(result.errors.some(e => e.includes('remotes or packages'))) + }) + + it('should reject server with both remotes and packages', () => { + const server = { + name: 'test', + description: 'Test', + version: '1.0.0', + remotes: [{ type: 'sse', url: 'https://example.com' }], + packages: [{ registryType: 'npm', identifier: 'pkg', version: '1.0.0', transport: { type: 'stdio' } }], + } + const result = validator.validateServerDefinition(server) + assert.strictEqual(result.isValid, false) + assert.ok(result.errors.some(e => e.includes('cannot have both'))) + }) + }) + + describe('validateServerName', () => { + it('should accept simple identifier names', () => { + assert.strictEqual(validator.validateServerName('mcp-fs').isValid, true) + assert.strictEqual(validator.validateServerName('everything').isValid, true) + assert.strictEqual(validator.validateServerName('server-name').isValid, true) + }) + + it('should accept names with dots, underscores, and hyphens', () => { + assert.strictEqual(validator.validateServerName('server.name').isValid, true) + assert.strictEqual(validator.validateServerName('server_name').isValid, true) + assert.strictEqual(validator.validateServerName('server-name').isValid, true) + assert.strictEqual(validator.validateServerName('server.name_test-123').isValid, true) + }) + + it('should reject names with slashes', () => { + const result1 = validator.validateServerName('com.example/test') + assert.strictEqual(result1.isValid, false) + assert.ok(result1.errors.some(e => e.includes('simple identifier'))) + + const result2 = validator.validateServerName('org.acme/my-server') + assert.strictEqual(result2.isValid, false) + assert.ok(result2.errors.some(e => e.includes('simple identifier'))) + }) + + it('should reject names with special characters', () => { + const result1 = validator.validateServerName('server@name') + assert.strictEqual(result1.isValid, false) + assert.ok(result1.errors.some(e => e.includes('simple identifier'))) + + const result2 = validator.validateServerName('server name') + assert.strictEqual(result2.isValid, false) + assert.ok(result2.errors.some(e => e.includes('simple identifier'))) + }) + + it('should accept names up to 200 characters', () => { + const name = 'a'.repeat(MCP_REGISTRY_CONSTANTS.MAX_SERVER_NAME_LENGTH) + assert.strictEqual(validator.validateServerName(name).isValid, true) + }) + + it('should reject names over 200 characters', () => { + const name = 'a'.repeat(MCP_REGISTRY_CONSTANTS.MAX_SERVER_NAME_LENGTH + 1) + const result = validator.validateServerName(name) + assert.strictEqual(result.isValid, false) + assert.ok(result.errors.some(e => e.includes('3-200 characters'))) + }) + + it('should reject empty names', () => { + const result = validator.validateServerName('') + assert.strictEqual(result.isValid, false) + assert.ok(result.errors.some(e => e.includes('cannot be empty'))) + }) + + it('should reject names shorter than 3 characters', () => { + const result1 = validator.validateServerName('ab') + assert.strictEqual(result1.isValid, false) + assert.ok(result1.errors.some(e => e.includes('3-200 characters'))) + + const result2 = validator.validateServerName('a') + assert.strictEqual(result2.isValid, false) + assert.ok(result2.errors.some(e => e.includes('3-200 characters'))) + }) + + it('should accept names with exactly 3 characters', () => { + const result = validator.validateServerName('abc') + assert.strictEqual(result.isValid, true) + }) + }) + + describe('validateServerNameUniqueness', () => { + it('should accept registry with unique server names', () => { + const servers = [ + { name: 'mcp-fs', description: 'Test 1', version: '1.0.0' }, + { name: 'everything', description: 'Test 2', version: '1.0.0' }, + { name: 'server-three', description: 'Test 3', version: '1.0.0' }, + ] + const result = validator.validateServerNameUniqueness(servers) + assert.strictEqual(result.isValid, true) + assert.strictEqual(result.errors.length, 0) + }) + + it('should reject registry with duplicate server names', () => { + const servers = [ + { name: 'mcp-fs', description: 'Test 1', version: '1.0.0' }, + { name: 'everything', description: 'Test 2', version: '1.0.0' }, + { name: 'mcp-fs', description: 'Duplicate', version: '2.0.0' }, + ] + const result = validator.validateServerNameUniqueness(servers) + assert.strictEqual(result.isValid, false) + assert.ok(result.errors.some(e => e.includes("Duplicate server name 'mcp-fs'"))) + }) + + it('should detect multiple duplicates', () => { + const servers = [ + { name: 'server-a', description: 'Test 1', version: '1.0.0' }, + { name: 'server-b', description: 'Test 2', version: '1.0.0' }, + { name: 'server-a', description: 'Duplicate A', version: '2.0.0' }, + { name: 'server-b', description: 'Duplicate B', version: '2.0.0' }, + ] + const result = validator.validateServerNameUniqueness(servers) + assert.strictEqual(result.isValid, false) + assert.ok(result.errors.some(e => e.includes("Duplicate server name 'server-a'"))) + assert.ok(result.errors.some(e => e.includes("Duplicate server name 'server-b'"))) + }) + + it('should handle empty servers array', () => { + const result = validator.validateServerNameUniqueness([]) + assert.strictEqual(result.isValid, true) + assert.strictEqual(result.errors.length, 0) + }) + + it('should handle servers without name field', () => { + const servers = [ + { name: 'valid-server', description: 'Test', version: '1.0.0' }, + { description: 'No name', version: '1.0.0' }, + ] + const result = validator.validateServerNameUniqueness(servers) + assert.strictEqual(result.isValid, true) + }) + }) + + describe('validateRemoteServer', () => { + it('should accept valid streamable-http remote', () => { + const remotes = [{ type: 'streamable-http', url: 'https://example.com' }] + const result = validator.validateRemoteServer(remotes) + assert.strictEqual(result.isValid, true) + }) + + it('should accept valid sse remote', () => { + const remotes = [{ type: 'sse', url: 'https://example.com' }] + const result = validator.validateRemoteServer(remotes) + assert.strictEqual(result.isValid, true) + }) + + it('should accept optional headers', () => { + const remotes = [ + { + type: 'streamable-http', + url: 'https://example.com', + headers: [ + { name: 'Authorization', value: 'Bearer token' }, + { name: 'X-Custom', value: 'value' }, + ], + }, + ] + const result = validator.validateRemoteServer(remotes) + assert.strictEqual(result.isValid, true) + }) + + it('should reject multiple remotes entries', () => { + const remotes = [ + { type: 'sse', url: 'https://example1.com' }, + { type: 'sse', url: 'https://example2.com' }, + ] + const result = validator.validateRemoteServer(remotes) + assert.strictEqual(result.isValid, false) + assert.ok(result.errors.some(e => e.includes('exactly one'))) + }) + + it('should reject invalid transport type', () => { + const remotes = [{ type: 'invalid', url: 'https://example.com' }] + const result = validator.validateRemoteServer(remotes) + assert.strictEqual(result.isValid, false) + assert.ok(result.errors.some(e => e.includes('streamable-http or sse'))) + }) + + it('should reject missing url', () => { + const remotes = [{ type: 'sse' }] + const result = validator.validateRemoteServer(remotes) + assert.strictEqual(result.isValid, false) + assert.ok(result.errors.some(e => e.includes('url'))) + }) + + it('should reject invalid headers format', () => { + const remotes = [{ type: 'sse', url: 'https://example.com', headers: [{ name: 'Test' }] }] + const result = validator.validateRemoteServer(remotes) + assert.strictEqual(result.isValid, false) + assert.ok(result.errors.some(e => e.includes('value'))) + }) + }) + + describe('validateLocalServer', () => { + it('should accept valid npm package', () => { + const packages = [ + { + registryType: 'npm', + identifier: '@example/package', + transport: { type: 'stdio' }, + }, + ] + const result = validator.validateLocalServer(packages) + assert.strictEqual(result.isValid, true) + }) + + it('should accept valid pypi package', () => { + const packages = [ + { + registryType: 'pypi', + identifier: 'example-package', + transport: { type: 'stdio' }, + }, + ] + const result = validator.validateLocalServer(packages) + assert.strictEqual(result.isValid, true) + }) + + it('should accept optional packageArguments', () => { + const packages = [ + { + registryType: 'npm', + identifier: 'pkg', + transport: { type: 'stdio' }, + packageArguments: [{ value: 'arg1' }, { value: 'arg2' }], + }, + ] + const result = validator.validateLocalServer(packages) + assert.strictEqual(result.isValid, true) + }) + + it('should accept optional environmentVariables', () => { + const packages = [ + { + registryType: 'npm', + identifier: 'pkg', + transport: { type: 'stdio' }, + environmentVariables: [ + { name: 'API_KEY', value: 'default-key' }, + { name: 'ENV', value: 'production' }, + ], + }, + ] + const result = validator.validateLocalServer(packages) + assert.strictEqual(result.isValid, true) + }) + + it('should reject multiple packages entries', () => { + const packages = [ + { registryType: 'npm', identifier: 'pkg1', transport: { type: 'stdio' } }, + { registryType: 'npm', identifier: 'pkg2', transport: { type: 'stdio' } }, + ] + const result = validator.validateLocalServer(packages) + assert.strictEqual(result.isValid, false) + assert.ok(result.errors.some(e => e.includes('exactly one'))) + }) + + it('should reject invalid registryType', () => { + const packages = [{ registryType: 'invalid', identifier: 'pkg', transport: { type: 'stdio' } }] + const result = validator.validateLocalServer(packages) + assert.strictEqual(result.isValid, false) + assert.ok(result.errors.some(e => e.includes('npm, pypi, or oci'))) + }) + + it('should accept oci registryType', () => { + const packages = [ + { + registryType: 'oci', + identifier: 'mcp/filesystem', + transport: { type: 'stdio' }, + }, + ] + const result = validator.validateLocalServer(packages) + assert.strictEqual(result.isValid, true) + }) + + it('should accept non-stdio transport types', () => { + const packages = [{ registryType: 'npm', identifier: 'pkg', transport: { type: 'streamable-http' } }] + const result = validator.validateLocalServer(packages) + assert.strictEqual(result.isValid, true) + }) + + it('should accept packageArguments with only value field', () => { + const packages = [ + { + registryType: 'npm', + identifier: 'pkg', + transport: { type: 'stdio' }, + packageArguments: [{ value: 'arg' }], + }, + ] + const result = validator.validateLocalServer(packages) + assert.strictEqual(result.isValid, true) + }) + + it('should accept runtimeArguments', () => { + const packages = [ + { + registryType: 'npm', + identifier: 'pkg', + transport: { type: 'stdio' }, + runtimeArguments: [{ value: '--silent' }], + }, + ] + const result = validator.validateLocalServer(packages) + assert.strictEqual(result.isValid, true) + }) + + it('should accept environmentVariables with only name field', () => { + const packages = [ + { + registryType: 'npm', + identifier: 'pkg', + transport: { type: 'stdio' }, + environmentVariables: [{ name: 'VAR' }], + }, + ] + const result = validator.validateLocalServer(packages) + assert.strictEqual(result.isValid, true) + }) + }) + + describe('registry validation with uniqueness check', () => { + it('should reject registry with duplicate server names', () => { + const registry = { + servers: [ + { + name: 'mcp-fs', + description: 'First', + version: '1.0.0', + remotes: [{ type: 'sse', url: 'https://example.com' }], + }, + { + name: 'everything', + description: 'Second', + version: '1.0.0', + packages: [{ registryType: 'npm', identifier: 'pkg', transport: { type: 'stdio' } }], + }, + { + name: 'mcp-fs', + description: 'Duplicate', + version: '2.0.0', + remotes: [{ type: 'sse', url: 'https://other.com' }], + }, + ], + } + const result = validator.validateRegistryJson(registry) + assert.strictEqual(result.isValid, false) + assert.ok(result.errors.some(e => e.includes("Duplicate server name 'mcp-fs'"))) + }) + }) + + describe('validateTimeout', () => { + it('should accept valid timeout values', () => { + const result = validator.validateTimeout(5000) + assert.strictEqual(result.isValid, true) + assert.strictEqual(result.errors.length, 0) + }) + + it('should accept any positive integer', () => { + assert.strictEqual(validator.validateTimeout(1).isValid, true) + assert.strictEqual(validator.validateTimeout(1000).isValid, true) + assert.strictEqual(validator.validateTimeout(60000).isValid, true) + assert.strictEqual(validator.validateTimeout(300000).isValid, true) + }) + + it('should accept undefined timeout', () => { + const result = validator.validateTimeout(undefined) + assert.strictEqual(result.isValid, true) + assert.strictEqual(result.errors.length, 0) + }) + + it('should reject non-integer timeout', () => { + const result = validator.validateTimeout(5000.5) + assert.strictEqual(result.isValid, false) + assert.strictEqual(result.errors.length, 1) + assert.ok(result.errors[0].includes('positive integer')) + }) + + it('should reject string timeout', () => { + const result = validator.validateTimeout('5000' as any) + assert.strictEqual(result.isValid, false) + assert.strictEqual(result.errors.length, 1) + assert.ok(result.errors[0].includes('positive integer')) + }) + + it('should reject negative timeout', () => { + const result = validator.validateTimeout(-5000) + assert.strictEqual(result.isValid, false) + assert.strictEqual(result.errors.length, 1) + assert.ok(result.errors[0].includes('positive integer')) + }) + + it('should reject zero timeout', () => { + const result = validator.validateTimeout(0) + assert.strictEqual(result.isValid, false) + assert.strictEqual(result.errors.length, 1) + assert.ok(result.errors[0].includes('positive integer')) + }) + }) +}) diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpRegistryValidator.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpRegistryValidator.ts new file mode 100644 index 0000000000..e8138aedc2 --- /dev/null +++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpRegistryValidator.ts @@ -0,0 +1,236 @@ +/*! + * Copyright Amazon.com, Inc. or its affiliates. + * All Rights Reserved. SPDX-License-Identifier: Apache-2.0 + */ + +import { McpRegistryData } from './mcpTypes' +import { MCP_REGISTRY_CONSTANTS } from './mcpRegistryConstants' + +export interface ValidationResult { + isValid: boolean + errors: string[] +} + +export class McpRegistryValidator { + validateRegistryJson(json: any): ValidationResult { + const errors: string[] = [] + + if (!json || typeof json !== 'object') { + errors.push('Registry must be an object') + return { isValid: false, errors } + } + + if (!Array.isArray(json.servers)) { + errors.push('Registry must have a servers array') + return { isValid: false, errors } + } + + // Extract servers from wrapper structure if present + const servers = json.servers.map((item: any) => { + // Support both direct server objects and {server: {...}} wrapper + return item.server || item + }) + + // Validate server name uniqueness + const uniquenessResult = this.validateServerNameUniqueness(servers) + errors.push(...uniquenessResult.errors) + + servers.forEach((server: any, index: number) => { + const serverErrors = this.validateServerDefinition(server).errors + serverErrors.forEach(err => errors.push(`Server ${index}: ${err}`)) + }) + + return { isValid: errors.length === 0, errors } + } + + validateServerDefinition(server: any): ValidationResult { + const errors: string[] = [] + + if (!server || typeof server !== 'object') { + errors.push('Server must be an object') + return { isValid: false, errors } + } + + if (!server.name || typeof server.name !== 'string') { + errors.push('Server must have a name field') + } else if (!this.validateServerName(server.name).isValid) { + errors.push(`Invalid server name format: ${server.name}`) + } + + if (!server.description || typeof server.description !== 'string') { + errors.push('Server must have a description field') + } + + if (!server.version || typeof server.version !== 'string') { + errors.push('Server must have a version field') + } + + const hasRemotes = server.remotes && Array.isArray(server.remotes) + const hasPackages = server.packages && Array.isArray(server.packages) + + if (!hasRemotes && !hasPackages) { + errors.push('Server must have either remotes or packages array') + } else if (hasRemotes && hasPackages) { + errors.push('Server cannot have both remotes and packages') + } else if (hasRemotes) { + const remoteErrors = this.validateRemoteServer(server.remotes).errors + remoteErrors.forEach(err => errors.push(err)) + } else if (hasPackages) { + const packageErrors = this.validateLocalServer(server.packages).errors + packageErrors.forEach(err => errors.push(err)) + } + + return { isValid: errors.length === 0, errors } + } + + validateServerName(name: string): ValidationResult { + const errors: string[] = [] + + if (!name || name.length === 0) { + errors.push('Server name cannot be empty') + } else if (name.length < 3 || name.length > MCP_REGISTRY_CONSTANTS.MAX_SERVER_NAME_LENGTH) { + errors.push('Server name must be 3-200 characters') + } else if (!MCP_REGISTRY_CONSTANTS.SERVER_NAME_PATTERN.test(name)) { + errors.push('Server name must match pattern ^[a-zA-Z0-9._-]+$ (simple identifier)') + } + + return { isValid: errors.length === 0, errors } + } + + validateServerNameUniqueness(servers: any[]): ValidationResult { + const errors: string[] = [] + const nameSet = new Set() + + servers.forEach((server, index) => { + if (server && server.name) { + if (nameSet.has(server.name)) { + errors.push(`Duplicate server name '${server.name}' at index ${index}`) + } else { + nameSet.add(server.name) + } + } + }) + + return { isValid: errors.length === 0, errors } + } + + validateTimeout(timeout: any): ValidationResult { + const errors: string[] = [] + + if (timeout !== undefined) { + if (typeof timeout !== 'number' || !Number.isInteger(timeout) || timeout <= 0) { + errors.push('Timeout must be a positive integer') + } + } + + return { isValid: errors.length === 0, errors } + } + + validateRemoteServer(remotes: any[]): ValidationResult { + const errors: string[] = [] + + if (remotes.length !== 1) { + errors.push('Remote server must have exactly one remotes entry') + return { isValid: false, errors } + } + + const remote = remotes[0] + const validTypes = [ + MCP_REGISTRY_CONSTANTS.TRANSPORT_TYPES.STREAMABLE_HTTP, + MCP_REGISTRY_CONSTANTS.TRANSPORT_TYPES.SSE, + ] + if (!remote.type || !validTypes.includes(remote.type)) { + errors.push('Remote type must be streamable-http or sse') + } + + if (!remote.url || typeof remote.url !== 'string') { + errors.push('Remote must have a url field') + } + + if (remote.headers) { + if (!Array.isArray(remote.headers)) { + errors.push('Remote headers must be an array') + } else { + remote.headers.forEach((header: any, index: number) => { + if (!header.name || typeof header.name !== 'string') { + errors.push(`Header ${index} must have a name field`) + } + if (!header.value || typeof header.value !== 'string') { + errors.push(`Header ${index} must have a value field`) + } + }) + } + } + + return { isValid: errors.length === 0, errors } + } + + validateLocalServer(packages: any[]): ValidationResult { + const errors: string[] = [] + + if (packages.length !== 1) { + errors.push('Local server must have exactly one packages entry') + return { isValid: false, errors } + } + + const pkg = packages[0] + const validRegistryTypes = [ + MCP_REGISTRY_CONSTANTS.REGISTRY_TYPES.NPM, + MCP_REGISTRY_CONSTANTS.REGISTRY_TYPES.PYPI, + MCP_REGISTRY_CONSTANTS.REGISTRY_TYPES.OCI, + ] + if (!pkg.registryType || !validRegistryTypes.includes(pkg.registryType)) { + errors.push('Package registryType must be npm, pypi, or oci') + } + + if (!pkg.identifier || typeof pkg.identifier !== 'string') { + errors.push('Package must have an identifier field') + } + + if (!pkg.transport || !pkg.transport.type) { + errors.push('Package must have a transport field with type') + } + + if (pkg.runtimeArguments) { + if (!Array.isArray(pkg.runtimeArguments)) { + errors.push('Package runtimeArguments must be an array') + } else { + pkg.runtimeArguments.forEach((arg: any, index: number) => { + if (!arg.value || typeof arg.value !== 'string') { + errors.push(`RuntimeArgument ${index} must have a value field`) + } + }) + } + } + + if (pkg.packageArguments) { + if (!Array.isArray(pkg.packageArguments)) { + errors.push('Package packageArguments must be an array') + } else { + pkg.packageArguments.forEach((arg: any, index: number) => { + if (!arg.value || typeof arg.value !== 'string') { + errors.push(`PackageArgument ${index} must have a value field`) + } + }) + } + } + + if (pkg.environmentVariables) { + if (!Array.isArray(pkg.environmentVariables)) { + errors.push('Package environmentVariables must be an array') + } else { + pkg.environmentVariables.forEach((envVar: any, index: number) => { + if (!envVar.name || typeof envVar.name !== 'string') { + errors.push(`EnvironmentVariable ${index} must have a name field`) + } + }) + } + } + + return { isValid: errors.length === 0, errors } + } + + isServerInRegistry(serverName: string, registry: McpRegistryData): boolean { + return registry.servers.some(s => s.name === serverName) + } +} diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpServerConfigConverter.test.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpServerConfigConverter.test.ts new file mode 100644 index 0000000000..ed753b65b4 --- /dev/null +++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpServerConfigConverter.test.ts @@ -0,0 +1,629 @@ +/*! + * Copyright Amazon.com, Inc. or its affiliates. + * All Rights Reserved. SPDX-License-Identifier: Apache-2.0 + */ + +import * as assert from 'assert' +import { McpServerConfigConverter } from './mcpServerConfigConverter' +import { McpRegistryServer } from './mcpTypes' + +describe('McpServerConfigConverter', () => { + let converter: McpServerConfigConverter + + beforeEach(() => { + converter = new McpServerConfigConverter() + }) + + describe('convertRegistryServer', () => { + it('should convert remote server', () => { + const registryServer: McpRegistryServer = { + name: 'test-remote', + description: 'Test remote server', + version: '1.0.0', + remotes: [ + { + type: 'streamable-http', + url: 'https://example.com/mcp', + }, + ], + } + + const result = converter.convertRegistryServer(registryServer) + + assert.strictEqual(result.url, 'https://example.com/mcp') + assert.strictEqual(result.command, undefined) + }) + + it('should convert local npm server with version', () => { + const registryServer: McpRegistryServer = { + name: 'test-local', + description: 'Test local server', + version: '1.0.0', + packages: [ + { + registryType: 'npm', + identifier: '@example/package', + transport: { type: 'stdio' }, + }, + ], + } + + const result = converter.convertRegistryServer(registryServer) + + assert.strictEqual(result.command, 'npx') + assert.deepStrictEqual(result.args, ['-y', '@example/package@1.0.0']) + assert.strictEqual(result.url, undefined) + }) + + it('should convert pypi server with --default-index flag', () => { + const registryServer: McpRegistryServer = { + name: 'test-pypi', + description: 'Test pypi server', + version: '1.0.2', + packages: [ + { + registryType: 'pypi', + registryBaseUrl: 'https://private-pypi.acme.com', + identifier: 'awslabs.ccapi-mcp-server', + transport: { type: 'stdio' }, + }, + ], + } + + const result = converter.convertRegistryServer(registryServer) + + assert.strictEqual(result.command, 'uvx') + assert.deepStrictEqual(result.args, [ + '--default-index=https://private-pypi.acme.com', + 'awslabs.ccapi-mcp-server@1.0.2', + ]) + assert.strictEqual(result.env!['UV_DEFAULT_INDEX'], undefined) + }) + + it('should convert npm server with NPM_CONFIG_REGISTRY', () => { + const registryServer: McpRegistryServer = { + name: 'test-npm', + description: 'Test npm server', + version: '0.6.2', + packages: [ + { + registryType: 'npm', + registryBaseUrl: 'https://private-npm.acme.com', + identifier: '@modelcontextprotocol/everything', + transport: { type: 'stdio' }, + }, + ], + } + + const result = converter.convertRegistryServer(registryServer) + + assert.strictEqual(result.command, 'npx') + assert.deepStrictEqual(result.args, ['-y', '@modelcontextprotocol/everything@0.6.2']) + assert.strictEqual(result.env!['NPM_CONFIG_REGISTRY'], 'https://private-npm.acme.com') + }) + + it('should throw error for invalid server', () => { + const registryServer: McpRegistryServer = { + name: 'invalid', + description: 'Invalid server', + version: '1.0.0', + } + + assert.throws(() => converter.convertRegistryServer(registryServer)) + }) + }) + + describe('convertRemoteServer', () => { + it('should convert remote server with headers', () => { + const registryServer: McpRegistryServer = { + name: 'test', + description: 'Test', + version: '1.0.0', + remotes: [ + { + type: 'sse', + url: 'https://example.com/mcp', + headers: [ + { name: 'Authorization', value: 'Bearer token' }, + { name: 'X-Custom', value: 'value' }, + ], + }, + ], + } + + const result = converter.convertRegistryServer(registryServer) + + assert.strictEqual(result.url, 'https://example.com/mcp') + assert.deepStrictEqual(result.headers, { + Authorization: 'Bearer token', + 'X-Custom': 'value', + }) + }) + + it('should convert remote server without headers', () => { + const registryServer: McpRegistryServer = { + name: 'test', + description: 'Test', + version: '1.0.0', + remotes: [ + { + type: 'streamable-http', + url: 'https://example.com/mcp', + }, + ], + } + + const result = converter.convertRegistryServer(registryServer) + + assert.strictEqual(result.url, 'https://example.com/mcp') + assert.strictEqual(result.headers, undefined) + }) + }) + + describe('convertLocalServer', () => { + it('should convert package with arguments', () => { + const registryServer: McpRegistryServer = { + name: 'test', + description: 'Test', + version: '1.0.0', + packages: [ + { + registryType: 'npm', + identifier: '@example/package', + transport: { type: 'stdio' }, + packageArguments: [ + { type: 'positional', value: '--verbose' }, + { type: 'positional', value: '--debug' }, + ], + }, + ], + } + + const result = converter.convertRegistryServer(registryServer) + + assert.strictEqual(result.command, 'npx') + assert.deepStrictEqual(result.args, ['-y', '@example/package@1.0.0', '--verbose', '--debug']) + }) + + it('should convert package with environment variables', () => { + const registryServer: McpRegistryServer = { + name: 'test', + description: 'Test', + version: '1.0.0', + packages: [ + { + registryType: 'npm', + identifier: '@example/package', + transport: { type: 'stdio' }, + environmentVariables: [ + { name: 'API_KEY', value: 'default-key' }, + { name: 'ENV', value: 'production' }, + ], + }, + ], + } + + const result = converter.convertRegistryServer(registryServer) + + assert.strictEqual(result.command, 'npx') + assert.deepStrictEqual(result.args, ['-y', '@example/package@1.0.0']) + assert.deepStrictEqual(result.env, { + API_KEY: 'default-key', + ENV: 'production', + }) + }) + + it('should convert package with both arguments and environment variables', () => { + const registryServer: McpRegistryServer = { + name: 'test', + description: 'Test', + version: '1.0.0', + packages: [ + { + registryType: 'npm', + identifier: '@example/package', + transport: { type: 'stdio' }, + packageArguments: [{ type: 'positional', value: '--verbose' }], + environmentVariables: [{ name: 'DEBUG', value: 'true' }], + }, + ], + } + + const result = converter.convertRegistryServer(registryServer) + + assert.strictEqual(result.command, 'npx') + assert.deepStrictEqual(result.args, ['-y', '@example/package@1.0.0', '--verbose']) + assert.deepStrictEqual(result.env, { DEBUG: 'true' }) + }) + + it('should convert pypi package with all options', () => { + const registryServer: McpRegistryServer = { + name: 'test', + description: 'Test', + version: '1.0.2', + packages: [ + { + registryType: 'pypi', + registryBaseUrl: 'https://private-pypi.acme.com', + identifier: 'awslabs.ccapi-mcp-server', + transport: { type: 'stdio' }, + packageArguments: [{ type: 'positional', value: '--readonly' }], + environmentVariables: [{ name: 'AWS_PROFILE', value: 'profile-16' }], + }, + ], + } + + const result = converter.convertRegistryServer(registryServer) + + assert.strictEqual(result.command, 'uvx') + assert.deepStrictEqual(result.args, [ + '--default-index=https://private-pypi.acme.com', + 'awslabs.ccapi-mcp-server@1.0.2', + '--readonly', + ]) + assert.deepStrictEqual(result.env, { + AWS_PROFILE: 'profile-16', + }) + }) + + it('should convert npm package with runtimeArguments', () => { + const registryServer: McpRegistryServer = { + name: 'test', + description: 'Test', + version: '0.6.2', + packages: [ + { + registryType: 'npm', + identifier: '@modelcontextprotocol/everything', + transport: { type: 'stdio' }, + runtimeArguments: [{ type: 'positional', value: '--silent' }], + packageArguments: [{ type: 'positional', value: '--verbose' }], + }, + ], + } + + const result = converter.convertRegistryServer(registryServer) + + assert.strictEqual(result.command, 'npx') + assert.deepStrictEqual(result.args, [ + '-y', + '--silent', + '@modelcontextprotocol/everything@0.6.2', + '--verbose', + ]) + }) + + it('should convert pypi package with runtimeArguments', () => { + const registryServer: McpRegistryServer = { + name: 'test', + description: 'Test', + version: '1.0.2', + packages: [ + { + registryType: 'pypi', + registryBaseUrl: 'https://private-pypi.acme.com', + identifier: 'awslabs.ccapi-mcp-server', + transport: { type: 'stdio' }, + runtimeArguments: [{ type: 'positional', value: '-q' }], + packageArguments: [{ type: 'positional', value: '--readonly' }], + environmentVariables: [{ name: 'AWS_PROFILE', value: 'profile-16' }], + }, + ], + } + + const result = converter.convertRegistryServer(registryServer) + + assert.strictEqual(result.command, 'uvx') + assert.deepStrictEqual(result.args, [ + '--default-index=https://private-pypi.acme.com', + '-q', + 'awslabs.ccapi-mcp-server@1.0.2', + '--readonly', + ]) + assert.deepStrictEqual(result.env, { + AWS_PROFILE: 'profile-16', + }) + }) + + it('should convert npm package with only runtimeArguments', () => { + const registryServer: McpRegistryServer = { + name: 'test', + description: 'Test', + version: '1.0.0', + packages: [ + { + registryType: 'npm', + identifier: '@example/package', + transport: { type: 'stdio' }, + runtimeArguments: [{ type: 'positional', value: '--silent' }], + }, + ], + } + + const result = converter.convertRegistryServer(registryServer) + + assert.strictEqual(result.command, 'npx') + assert.deepStrictEqual(result.args, ['-y', '--silent', '@example/package@1.0.0']) + }) + + it('should convert pypi package with only runtimeArguments', () => { + const registryServer: McpRegistryServer = { + name: 'test', + description: 'Test', + version: '1.0.0', + packages: [ + { + registryType: 'pypi', + identifier: 'example-package', + transport: { type: 'stdio' }, + runtimeArguments: [{ type: 'positional', value: '-q' }], + }, + ], + } + + const result = converter.convertRegistryServer(registryServer) + + assert.strictEqual(result.command, 'uvx') + assert.deepStrictEqual(result.args, ['-q', 'example-package@1.0.0']) + }) + + it('should maintain backward compatibility without runtimeArguments', () => { + const registryServer: McpRegistryServer = { + name: 'test', + description: 'Test', + version: '1.0.0', + packages: [ + { + registryType: 'npm', + identifier: '@example/package', + transport: { type: 'stdio' }, + packageArguments: [{ type: 'positional', value: '--verbose' }], + }, + ], + } + + const result = converter.convertRegistryServer(registryServer) + + assert.strictEqual(result.command, 'npx') + assert.deepStrictEqual(result.args, ['-y', '@example/package@1.0.0', '--verbose']) + }) + + it('should convert oci package with basic configuration', () => { + const registryServer: McpRegistryServer = { + name: 'filesystem-mcp', + description: 'MCP server for filesystem operations', + version: '1.0.2', + packages: [ + { + registryType: 'oci', + registryBaseUrl: 'https://docker.acme.com:5000', + identifier: 'mcp/filesystem', + transport: { type: 'stdio' }, + }, + ], + } + + const result = converter.convertRegistryServer(registryServer) + + assert.strictEqual(result.command, 'docker') + assert.deepStrictEqual(result.args, ['run', 'https://docker.acme.com:5000/mcp/filesystem:1.0.2']) + }) + + it('should convert oci package with runtimeArguments', () => { + const registryServer: McpRegistryServer = { + name: 'filesystem-mcp', + description: 'MCP server for filesystem operations', + version: '1.0.2', + packages: [ + { + registryType: 'oci', + registryBaseUrl: 'https://docker.acme.com:5000', + identifier: 'mcp/filesystem', + transport: { type: 'stdio' }, + runtimeArguments: [ + { type: 'positional', value: '-i' }, + { type: 'positional', value: '--rm' }, + ], + }, + ], + } + + const result = converter.convertRegistryServer(registryServer) + + assert.strictEqual(result.command, 'docker') + assert.deepStrictEqual(result.args, [ + 'run', + '-i', + '--rm', + 'https://docker.acme.com:5000/mcp/filesystem:1.0.2', + ]) + }) + + it('should convert oci package with mount arguments', () => { + const registryServer: McpRegistryServer = { + name: 'filesystem-mcp', + description: 'MCP server for filesystem operations', + version: '1.0.2', + packages: [ + { + registryType: 'oci', + registryBaseUrl: 'https://docker.acme.com:5000', + identifier: 'mcp/filesystem', + transport: { type: 'stdio' }, + runtimeArguments: [ + { type: 'positional', value: '-i' }, + { type: 'positional', value: '--rm' }, + { type: 'positional', value: '--mount' }, + { type: 'positional', value: 'type=bind,src=~/Desktop,dst=/projects/Desktop' }, + ], + packageArguments: [{ type: 'positional', value: '/projects' }], + environmentVariables: [{ name: 'LOG_LEVEL', value: 'info' }], + }, + ], + } + + const result = converter.convertRegistryServer(registryServer) + + assert.strictEqual(result.command, 'docker') + assert.deepStrictEqual(result.args, [ + 'run', + '-i', + '--rm', + '--mount', + 'type=bind,src=~/Desktop,dst=/projects/Desktop', + '-e', + 'LOG_LEVEL=info', + 'https://docker.acme.com:5000/mcp/filesystem:1.0.2', + '/projects', + ]) + assert.deepStrictEqual(result.env, { LOG_LEVEL: 'info' }) + }) + + it('should convert oci package without registryBaseUrl', () => { + const registryServer: McpRegistryServer = { + name: 'public-image', + description: 'Public Docker image', + version: '2.0.0', + packages: [ + { + registryType: 'oci', + identifier: 'public/mcp-server', + transport: { type: 'stdio' }, + }, + ], + } + + const result = converter.convertRegistryServer(registryServer) + + assert.strictEqual(result.command, 'docker') + assert.deepStrictEqual(result.args, ['run', 'public/mcp-server:2.0.0']) + }) + + it('should convert oci package with registry URL containing port', () => { + const registryServer: McpRegistryServer = { + name: 'test-oci', + description: 'Test OCI server', + version: '1.0.0', + packages: [ + { + registryType: 'oci', + registryBaseUrl: 'docker.io:443', + identifier: 'library/alpine', + transport: { type: 'stdio' }, + }, + ], + } + + const result = converter.convertRegistryServer(registryServer) + + assert.strictEqual(result.command, 'docker') + assert.deepStrictEqual(result.args, ['run', 'docker.io:443/library/alpine:1.0.0']) + }) + + it('should convert oci package with identifier containing tag', () => { + const registryServer: McpRegistryServer = { + name: 'docker-test', + description: 'Test Docker-based MCP server', + version: '0.6.2', + packages: [ + { + registryType: 'oci', + registryBaseUrl: 'docker.io', + identifier: 'node:20-alpine', + transport: { type: 'stdio' }, + }, + ], + } + + const result = converter.convertRegistryServer(registryServer) + + assert.strictEqual(result.command, 'docker') + assert.deepStrictEqual(result.args, ['run', 'docker.io/node:20-alpine']) + }) + + it('should convert oci package with identifier containing tag and no registryBaseUrl', () => { + const registryServer: McpRegistryServer = { + name: 'docker-test', + description: 'Test Docker-based MCP server', + version: '1.0.0', + packages: [ + { + registryType: 'oci', + identifier: 'node:20-alpine', + transport: { type: 'stdio' }, + }, + ], + } + + const result = converter.convertRegistryServer(registryServer) + + assert.strictEqual(result.command, 'docker') + assert.deepStrictEqual(result.args, ['run', 'node:20-alpine']) + }) + + it('should convert oci package with identifier containing tag and runtimeArguments', () => { + const registryServer: McpRegistryServer = { + name: 'docker-test', + description: 'Test Docker-based MCP server', + version: '0.6.2', + packages: [ + { + registryType: 'oci', + registryBaseUrl: 'docker.io', + identifier: 'node:20-alpine', + transport: { type: 'stdio' }, + runtimeArguments: [ + { type: 'positional', value: '-i' }, + { type: 'positional', value: '--rm' }, + ], + packageArguments: [ + { type: 'positional', value: 'npx' }, + { type: 'positional', value: '-y' }, + { type: 'positional', value: '@modelcontextprotocol/server-everything' }, + ], + }, + ], + } + + const result = converter.convertRegistryServer(registryServer) + + assert.strictEqual(result.command, 'docker') + assert.deepStrictEqual(result.args, [ + 'run', + '-i', + '--rm', + 'docker.io/node:20-alpine', + 'npx', + '-y', + '@modelcontextprotocol/server-everything', + ]) + }) + + it('should convert package with environment variable with undefined value', () => { + const registryServer: McpRegistryServer = { + name: 'test', + description: 'Test', + version: '1.0.0', + packages: [ + { + registryType: 'npm', + identifier: '@example/package', + transport: { type: 'stdio' }, + environmentVariables: [ + { name: 'VAR_WITH_VALUE', value: 'test' }, + { name: 'VAR_WITHOUT_VALUE' }, + ], + }, + ], + } + + const result = converter.convertRegistryServer(registryServer) + + assert.strictEqual(result.command, 'npx') + assert.deepStrictEqual(result.env, { + VAR_WITH_VALUE: 'test', + VAR_WITHOUT_VALUE: '', + }) + }) + }) +}) diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpServerConfigConverter.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpServerConfigConverter.ts new file mode 100644 index 0000000000..3f83448f55 --- /dev/null +++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpServerConfigConverter.ts @@ -0,0 +1,144 @@ +/*! + * Copyright Amazon.com, Inc. or its affiliates. + * All Rights Reserved. SPDX-License-Identifier: Apache-2.0 + */ + +import { MCPServerConfig, McpRegistryServer } from './mcpTypes' +import { MCP_REGISTRY_CONSTANTS } from './mcpRegistryConstants' + +export class McpServerConfigConverter { + convertRegistryServer(registryServer: McpRegistryServer, additionalEnv?: Record): MCPServerConfig { + if (registryServer.remotes) { + return this.convertRemoteServer(registryServer.remotes) + } else if (registryServer.packages) { + return this.convertLocalServer(registryServer.packages, registryServer.version, additionalEnv) + } + throw new Error(`Invalid registry server: must have remotes or packages`) + } + + private convertRemoteServer(remotes: McpRegistryServer['remotes']): MCPServerConfig { + const remote = remotes![0] + const config: MCPServerConfig = { + url: remote.url, + } + + if (remote.headers && remote.headers.length > 0) { + config.headers = {} + remote.headers.forEach((header: { name: string; value: string }) => { + config.headers![header.name] = header.value + }) + } + + return config + } + + private convertLocalServer( + packages: McpRegistryServer['packages'], + version: string, + additionalEnv?: Record + ): MCPServerConfig { + const pkg = packages![0] + const isNpm = pkg.registryType === MCP_REGISTRY_CONSTANTS.REGISTRY_TYPES.NPM + const isPypi = pkg.registryType === MCP_REGISTRY_CONSTANTS.REGISTRY_TYPES.PYPI + const isOci = pkg.registryType === MCP_REGISTRY_CONSTANTS.REGISTRY_TYPES.OCI + + const args: string[] = [] + + if (isNpm) { + args.push(MCP_REGISTRY_CONSTANTS.NPM.FLAG) + } else if (isOci) { + args.push(MCP_REGISTRY_CONSTANTS.OCI.FLAG) + } + + if (isPypi && pkg.registryBaseUrl) { + args.push(`--default-index=${pkg.registryBaseUrl}`) + } + + if (pkg.runtimeArguments && pkg.runtimeArguments.length > 0) { + pkg.runtimeArguments.forEach((arg: { type: string; value: string }) => { + args.push(arg.value) + }) + } + + // For OCI, add environment variables as -e flags before the image reference + if (isOci) { + const allEnv: Record = {} + // Add registry env vars first + if (pkg.environmentVariables && pkg.environmentVariables.length > 0) { + pkg.environmentVariables.forEach((envVar: { name: string; value?: string }) => { + const val = envVar.value ?? '' + if (envVar.name.trim() && val.trim()) { + allEnv[envVar.name] = val + } + }) + } + // Override with additional env vars (filter empty) + if (additionalEnv) { + Object.entries(additionalEnv).forEach(([key, value]) => { + if (key.trim() && value.trim()) { + allEnv[key] = value + } + }) + } + // Add all as -e flags + Object.entries(allEnv).forEach(([key, value]) => { + args.push('-e') + args.push(`${key}=${value}`) + }) + } + + if (isOci) { + // For OCI, identifier may already include tag (e.g., node:20-alpine) + // Only append version if identifier doesn't contain ':' + const hasTag = pkg.identifier.includes(':') + let imageRef: string + + if (pkg.registryBaseUrl) { + imageRef = hasTag + ? `${pkg.registryBaseUrl}/${pkg.identifier}` + : `${pkg.registryBaseUrl}/${pkg.identifier}:${version}` + } else { + imageRef = hasTag ? pkg.identifier : `${pkg.identifier}:${version}` + } + + args.push(imageRef) + } else { + args.push(`${pkg.identifier}@${version}`) + } + + if (pkg.packageArguments && pkg.packageArguments.length > 0) { + pkg.packageArguments.forEach((arg: { type: string; value: string }) => { + args.push(arg.value) + }) + } + + let command: string + if (isNpm) { + command = MCP_REGISTRY_CONSTANTS.NPM.COMMAND + } else if (isPypi) { + command = MCP_REGISTRY_CONSTANTS.PYPI.COMMAND + } else { + command = MCP_REGISTRY_CONSTANTS.OCI.COMMAND + } + + const config: MCPServerConfig = { + command, + args, + env: {}, + } + + // Set NPM registry URL as environment variable + if (pkg.registryBaseUrl && isNpm) { + config.env![MCP_REGISTRY_CONSTANTS.NPM.ENV_VAR] = pkg.registryBaseUrl + } + + // All environmentVariables go into config.env for all registry types + if (pkg.environmentVariables && pkg.environmentVariables.length > 0) { + pkg.environmentVariables.forEach((envVar: { name: string; value?: string }) => { + config.env![envVar.name] = envVar.value ?? '' + }) + } + + return config + } +} diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpTypes.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpTypes.ts index 962ce8080a..de0d803595 100644 --- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpTypes.ts +++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpTypes.ts @@ -37,6 +37,25 @@ export interface MCPServerConfig { headers?: Record disabled?: boolean __configPath__?: string + __cachedVersion__?: string // Cached version from registry for version sync + __additionalHeaders__?: Record // Additional headers from agent config (for registry servers) + __additionalEnv__?: Record // Additional env vars from agent config (for registry servers) + __registryError__?: string // Error message when registry server is not found in registry +} + +export interface RegistryServerConfig { + type: 'registry' + timeout?: number // Optional request timeout in milliseconds + headers?: Record // Optional additional HTTP headers for remote servers + env?: Record // Optional additional environment variables for local servers +} + +export function isRegistryServerConfig(config: MCPServerConfig | RegistryServerConfig): config is RegistryServerConfig { + return 'type' in config && config.type === 'registry' +} + +export function isMCPServerConfig(config: MCPServerConfig | RegistryServerConfig): config is MCPServerConfig { + return !('type' in config) || config.type !== 'registry' } export interface MCPServerPermission { enabled: boolean @@ -51,7 +70,7 @@ export interface AgentConfig { model?: string // Optional: Model that backs the agent tags?: string[] // Optional: Tags for categorization inputSchema?: any // Optional: Schema for agent inputs - mcpServers: Record // Map of server name to server config + mcpServers: Record // Map of server name to server config tools: string[] // List of enabled tools toolAliases?: Record // Tool name remapping allowedTools: string[] // List of tools that don't require approval @@ -104,7 +123,7 @@ export class AgentModel { return this.cfg } - addServer(name: string, config: MCPServerConfig): void { + addServer(name: string, config: MCPServerConfig | RegistryServerConfig): void { this.cfg.mcpServers[name] = config } @@ -197,3 +216,44 @@ export interface ListToolsResponse { [key: string]: any }[] } + +export interface McpRegistryServer { + name: string + title?: string + description: string + version: string + remotes?: Array<{ + type: 'streamable-http' | 'sse' + url: string + headers?: Array<{ + name: string + value: string + }> + }> + packages?: Array<{ + registryType: 'npm' | 'pypi' | 'oci' + registryBaseUrl?: string + identifier: string + transport: { + type: 'stdio' + } + runtimeArguments?: Array<{ + type: 'positional' + value: string + }> + packageArguments?: Array<{ + type: 'positional' + value: string + }> + environmentVariables?: Array<{ + name: string + value?: string + }> + }> +} + +export interface McpRegistryData { + servers: McpRegistryServer[] + lastFetched: Date + url: string +} diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpUtils.test.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpUtils.test.ts index 045d760d2e..b3d62ec913 100644 --- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpUtils.test.ts +++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpUtils.test.ts @@ -219,7 +219,7 @@ describe('loadAgentConfig', () => { it('creates a default agent config when none exists', async () => { // Add the global agent path to the paths array const agentPath = getGlobalAgentConfigPath(tmpDir) - const result = await loadAgentConfig(workspace, logger, [agentPath]) + const result = await loadAgentConfig(workspace, logger, [agentPath], null, false) // Check that the agent config has the expected structure expect(result.agentConfig).to.have.property('name') @@ -256,7 +256,7 @@ describe('loadAgentConfig', () => { await workspace.fs.writeFile(agentPath, JSON.stringify(agentConfig)) - const result = await loadAgentConfig(workspace, logger, [agentPath]) + const result = await loadAgentConfig(workspace, logger, [agentPath], null, false) // Check that the server was loaded correctly expect(result.servers.size).to.equal(1) @@ -798,6 +798,216 @@ describe('migrateToAgentConfig', () => { expect(agentConfig.mcpServers).to.have.property('testServer') }) }) +describe('loadAgentConfig with registry support', () => { + let tmpDir: string + let workspace: any + let logger: any + let testRegistry: any + + beforeEach(() => { + tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'registryTest-')) + workspace = { + fs: { + exists: (p: string) => Promise.resolve(fs.existsSync(p)), + readFile: async (p: string) => { + if (fs.existsSync(p)) { + return Promise.resolve(Buffer.from(fs.readFileSync(p))) + } + return Promise.reject(new Error('File not found')) + }, + writeFile: (p: string, d: string) => Promise.resolve(fs.writeFileSync(p, d)), + mkdir: (d: string, opts: any) => Promise.resolve(fs.mkdirSync(d, { recursive: opts.recursive })), + getUserHomeDir: () => tmpDir, + }, + getAllWorkspaceFolders: () => [], + } + logger = { warn: () => {}, info: () => {}, error: () => {}, debug: () => {} } + testRegistry = { + servers: [ + { + name: 'test-remote', + description: 'Test remote server', + version: '1.0.0', + remotes: [{ type: 'streamable-http', url: 'https://example.com/mcp' }], + }, + { + name: 'test-local', + description: 'Test local server', + version: '1.0.0', + packages: [{ registryType: 'npm', identifier: '@test/server', transport: { type: 'stdio' } }], + }, + ], + lastFetched: new Date(), + url: 'https://example.com/registry.json', + } + }) + + afterEach(() => { + fs.rmSync(tmpDir, { recursive: true, force: true }) + }) + + it('should load registry servers when registry is active', async () => { + const agentPath = path.join(tmpDir, 'agent.json') + fs.writeFileSync( + agentPath, + JSON.stringify({ + name: 'test-agent', + description: 'Test agent', + mcpServers: { + 'test-remote': { type: 'registry' }, + 'manual-server': { command: 'node', args: ['server.js'] }, + }, + tools: [], + allowedTools: [], + toolsSettings: {}, + resources: [], + useLegacyMcpJson: false, + }) + ) + + const result = await loadAgentConfig(workspace, logger, [agentPath], testRegistry, true) + + expect(result.servers.size).to.equal(1) + expect(result.servers.has('test-remote')).to.be.true + expect(result.servers.has('manual-server')).to.be.false + const server = result.servers.get('test-remote')! + expect(server.url).to.equal('https://example.com/mcp') + }) + + it('should load manual servers when registry is not active', async () => { + const agentPath = path.join(tmpDir, 'agent.json') + fs.writeFileSync( + agentPath, + JSON.stringify({ + name: 'test-agent', + description: 'Test agent', + mcpServers: { + 'test-remote': { type: 'registry' }, + 'manual-server': { command: 'node', args: ['server.js'] }, + }, + tools: [], + allowedTools: [], + toolsSettings: {}, + resources: [], + useLegacyMcpJson: false, + }) + ) + + const result = await loadAgentConfig(workspace, logger, [agentPath], null, false) + + expect(result.servers.size).to.equal(1) + expect(result.servers.has('test-remote')).to.be.false + expect(result.servers.has('manual-server')).to.be.true + const server = result.servers.get('manual-server')! + expect(server.command).to.equal('node') + }) + + it('should warn when registry server not found in registry', async () => { + const errors: string[] = [] + const errorLogger = { ...logger, error: (msg: string) => errors.push(msg) } + const agentPath = path.join(tmpDir, 'agent.json') + fs.writeFileSync( + agentPath, + JSON.stringify({ + name: 'test-agent', + description: 'Test agent', + mcpServers: { 'unknown-server': { type: 'registry' } }, + tools: [], + allowedTools: [], + toolsSettings: {}, + resources: [], + useLegacyMcpJson: false, + }) + ) + + const result = await loadAgentConfig(workspace, errorLogger, [agentPath], testRegistry, true) + + // Should create placeholder server for missing registry server + expect(result.servers.size).to.equal(1) + expect(errors.some(e => e.includes('not found in registry'))).to.be.true + // Verify placeholder has error marker + const server = result.servers.get('unknown-server') + expect(server).to.exist + expect((server as any).__registryError__).to.include('not found in registry') + }) + + it('should convert local npm server correctly', async () => { + const agentPath = path.join(tmpDir, 'agent.json') + fs.writeFileSync( + agentPath, + JSON.stringify({ + name: 'test-agent', + description: 'Test agent', + mcpServers: { 'test-local': { type: 'registry' } }, + tools: [], + allowedTools: [], + toolsSettings: {}, + resources: [], + useLegacyMcpJson: false, + }) + ) + + const result = await loadAgentConfig(workspace, logger, [agentPath], testRegistry, true) + + expect(result.servers.size).to.equal(1) + const server = result.servers.get('test-local')! + expect(server.command).to.equal('npx') + expect(server.args).to.deep.equal(['-y', '@test/server@1.0.0']) + }) + + it('should apply timeout from registry server config', async () => { + const agentPath = path.join(tmpDir, 'agent.json') + fs.writeFileSync( + agentPath, + JSON.stringify({ + name: 'test-agent', + description: 'Test agent', + mcpServers: { + 'test-remote': { type: 'registry', timeout: 60000 }, + }, + tools: [], + allowedTools: [], + toolsSettings: {}, + resources: [], + useLegacyMcpJson: false, + }) + ) + + const result = await loadAgentConfig(workspace, logger, [agentPath], testRegistry, true) + + expect(result.servers.size).to.equal(1) + const server = result.servers.get('test-remote')! + expect(server.url).to.equal('https://example.com/mcp') + expect(server.timeout).to.equal(60000) + }) + + it('should not set timeout if not provided in registry server config', async () => { + const agentPath = path.join(tmpDir, 'agent.json') + fs.writeFileSync( + agentPath, + JSON.stringify({ + name: 'test-agent', + description: 'Test agent', + mcpServers: { + 'test-remote': { type: 'registry' }, + }, + tools: [], + allowedTools: [], + toolsSettings: {}, + resources: [], + useLegacyMcpJson: false, + }) + ) + + const result = await loadAgentConfig(workspace, logger, [agentPath], testRegistry, true) + + expect(result.servers.size).to.equal(1) + const server = result.servers.get('test-remote')! + expect(server.url).to.equal('https://example.com/mcp') + expect(server.timeout).to.be.undefined + }) +}) + describe('saveServerSpecificAgentConfig', () => { let tmpDir: string let workspace: any diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpUtils.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpUtils.ts index 3a318ce41f..aaf48986ed 100644 --- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpUtils.ts +++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpUtils.ts @@ -3,12 +3,22 @@ * All Rights Reserved. SPDX-License-Identifier: Apache-2.0 */ -import { Agent, InitializeParams, Logger, Workspace } from '@aws/language-server-runtimes/server-interface' +import { Agent, InitializeParams, Workspace } from '@aws/language-server-runtimes/server-interface' +import type { Logger } from '@aws/language-server-runtimes/server-interface' import { URI } from 'vscode-uri' -import { MCPServerConfig, PersonaConfig, MCPServerPermission, McpPermissionType, AgentConfig } from './mcpTypes' +import { + MCPServerConfig, + PersonaConfig, + MCPServerPermission, + McpPermissionType, + AgentConfig, + McpRegistryData, + isRegistryServerConfig, +} from './mcpTypes' import path = require('path') import { QClientCapabilities } from '../../../configuration/qConfigurationServer' import crypto = require('crypto') +import { McpServerConfigConverter } from './mcpServerConfigConverter' /** * Load, validate, and parse MCP server configurations from JSON files. @@ -229,11 +239,14 @@ const DEFAULT_PERSONA_RAW = `{ * - Combines functionality of loadMcpServerConfigs and loadPersonaPermissions * - Handles server configurations and permissions from the same agent file * - Supports backwards compatibility with MCP config files when useLegacyMcpJson is true + * - Supports registry-based server configuration when registry is provided */ export async function loadAgentConfig( workspace: Workspace, logging: Logger, - agentPaths: string[] + agentPaths: string[], + registry: McpRegistryData | null, + registryActive: boolean ): Promise<{ servers: Map serverNameMapping: Map @@ -384,34 +397,128 @@ export async function loadAgentConfig( if (json.mcpServers && typeof json.mcpServers === 'object') { for (const [name, entryRaw] of Object.entries(json.mcpServers)) { const entry = entryRaw as any - const hasCmd = typeof entry.command === 'string' && entry.command.trim() !== '' - const hasUrl = typeof entry.url === 'string' && entry.url.trim() !== '' - if ((hasCmd && hasUrl) || (!hasCmd && !hasUrl)) { - const errorMsg = `MCP server '${name}' must specify *either* command or url (not both) – skipping` - logging.warn(errorMsg) - configErrors.set(`${name}`, errorMsg) - continue + // Check if this is a registry server + const isRegistryServer = isRegistryServerConfig(entry) + + // Apply registry filtering logic + if (registryActive) { + // When registry is active, only load registry servers + if (!isRegistryServer) { + logging.info(`MCP: registry active, ignoring manual server '${name}'`) + continue + } + } else { + // When registry is not active, only load manual servers + if (isRegistryServer) { + logging.info(`MCP: no registry, ignoring registry server '${name}'`) + continue + } } - // Create server config - const cfg: MCPServerConfig = { - command: (entry as any).command, - url: (entry as any).url, - args: Array.isArray((entry as any).args) ? (entry as any).args.map(String) : [], - env: - typeof (entry as any).env === 'object' && (entry as any).env !== null ? (entry as any).env : {}, - headers: - typeof (entry as any).headers === 'object' && (entry as any).headers !== null - ? (entry as any).headers - : undefined, - initializationTimeout: - typeof (entry as any).initializationTimeout === 'number' - ? (entry as any).initializationTimeout - : undefined, - timeout: typeof (entry as any).timeout === 'number' ? (entry as any).timeout : undefined, - disabled: typeof (entry as any).disabled === 'boolean' ? (entry as any).disabled : false, - __configPath__: fsPath, // Store config path for determining global vs workspace + let cfg: MCPServerConfig + + if (isRegistryServer) { + // Handle registry server: lookup in registry and convert + if (!registry) { + const errorMsg = `MCP Registry: Server '${name}' specified but no registry available` + logging.error(errorMsg) + configErrors.set(`${name}`, errorMsg) + continue + } + + const registryServer = findServerInRegistry(registry, name) + if (!registryServer) { + const errorMsg = `MCP Registry: Server '${name}' not found in registry` + logging.error(errorMsg) + configErrors.set(`${name}`, errorMsg) + + // Create placeholder config for missing registry server + cfg = { + command: undefined, + url: undefined, + args: [], + env: {}, + disabled: false, + __configPath__: fsPath, + __registryError__: errorMsg, + } as MCPServerConfig + + const sanitizedName = sanitizeName(name) + servers.set(sanitizedName, cfg) + serverNameMapping.set(sanitizedName, name) + + // Still add to agent config to preserve user settings + const agentEntry: any = { type: 'registry' } + if (typeof entry.timeout === 'number') agentEntry.timeout = entry.timeout + if (entry.headers && Object.keys(entry.headers).length) agentEntry.headers = entry.headers + if (entry.env && Object.keys(entry.env).length) agentEntry.env = entry.env + agentConfig.mcpServers[name] = agentEntry + + logging.info(`Loaded placeholder for missing registry server '${name}'`) + continue + } + + // Convert registry server to MCPServerConfig + const converter = new McpServerConfigConverter() + try { + cfg = converter.convertRegistryServer(registryServer) + cfg.__configPath__ = fsPath + + // Apply timeout from registry server config if provided + if (typeof entry.timeout === 'number') { + cfg.timeout = entry.timeout + } + + // Store additional headers/env separately and merge for runtime + if (entry.headers && typeof entry.headers === 'object') { + cfg.__additionalHeaders__ = entry.headers + } + + if (entry.env && typeof entry.env === 'object') { + cfg.__additionalEnv__ = entry.env + } + + logging.info(`MCP Registry: Successfully converted server '${name}' to MCPServerConfig`) + } catch (err: any) { + const errorMsg = `MCP Registry: Failed to convert server '${name}': ${err.message}` + logging.error(errorMsg) + configErrors.set(`${name}`, errorMsg) + continue + } + } else { + // Handle manual server + const hasCmd = typeof entry.command === 'string' && entry.command.trim() !== '' + const hasUrl = typeof entry.url === 'string' && entry.url.trim() !== '' + + if ((hasCmd && hasUrl) || (!hasCmd && !hasUrl)) { + const errorMsg = `MCP server '${name}' must specify *either* command or url (not both) – skipping` + logging.warn(errorMsg) + configErrors.set(`${name}`, errorMsg) + continue + } + + // Create server config + cfg = { + command: (entry as any).command, + url: (entry as any).url, + args: Array.isArray((entry as any).args) ? (entry as any).args.map(String) : [], + env: + typeof (entry as any).env === 'object' && (entry as any).env !== null + ? (entry as any).env + : {}, + headers: + typeof (entry as any).headers === 'object' && (entry as any).headers !== null + ? (entry as any).headers + : undefined, + initializationTimeout: + typeof (entry as any).initializationTimeout === 'number' + ? (entry as any).initializationTimeout + : undefined, + timeout: typeof (entry as any).timeout === 'number' ? (entry as any).timeout : undefined, + disabled: typeof (entry as any).disabled === 'boolean' ? (entry as any).disabled : false, + __configPath__: fsPath, // Store config path for determining global vs workspace + } } const sanitizedName = sanitizeName(name) @@ -485,8 +592,9 @@ export async function loadAgentConfig( // Set final useLegacyMcpJson value - default to true if not specified anywhere agentConfig.useLegacyMcpJson = useLegacyMcpJsonValue !== undefined ? useLegacyMcpJsonValue : true - // Load MCP config files if useLegacyMcpJson is true - if (agentConfig.useLegacyMcpJson) { + // Load MCP config files if useLegacyMcpJson is true and registry mode is not active + // Legacy MCP configs are always manual servers, so skip them when registry is active + if (agentConfig.useLegacyMcpJson && !registryActive) { const wsUris = workspace.getAllWorkspaceFolders()?.map(f => f.uri) ?? [] const mcpPaths = [...getWorkspaceMcpConfigPaths(wsUris), getGlobalMcpConfigPath(workspace.fs.getUserHomeDir())] @@ -1141,6 +1249,14 @@ export async function migrateAgentConfigToCLIFormat( export const MAX_TOOL_NAME_LENGTH = 64 +/** + * Find a server in the registry by name with O(1) lookup performance. + * Uses Map-based lookup for large registries (200+ servers). + */ +export function findServerInRegistry(registry: McpRegistryData, serverName: string): any | undefined { + return registry.servers.find(s => s.name === serverName) +} + /** * Create a namespaced tool name from server and tool names. * Handles truncation and conflicts according to specific rules. diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/profileStatusMonitor.test.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/profileStatusMonitor.test.ts index 6fb0e56f9a..4d61a78bc9 100644 --- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/profileStatusMonitor.test.ts +++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/profileStatusMonitor.test.ts @@ -7,6 +7,7 @@ import * as chai from 'chai' import * as sinon from 'sinon' import { ProfileStatusMonitor } from './profileStatusMonitor' import * as AmazonQTokenServiceManagerModule from '../../../../shared/amazonQServiceManager/AmazonQTokenServiceManager' +import { McpRegistryService } from './mcpRegistryService' const { expect } = chai @@ -84,14 +85,45 @@ describe('ProfileStatusMonitor', () => { expect(result).to.be.true }) - it('should return true and log debug message on error', async () => { + it('should throw error when isMcpEnabled throws non-registry error', async () => { // Stub the private isMcpEnabled method to throw an error sinon.stub(profileStatusMonitor as any, 'isMcpEnabled').throws(new Error('Service manager not ready')) - const result = await profileStatusMonitor.checkInitialState() - expect(result).to.be.true - expect(mockLogging.debug.calledWith(sinon.match('Initial MCP state check failed, defaulting to enabled'))) - .to.be.true + try { + await profileStatusMonitor.checkInitialState() + expect.fail('Should have thrown an error') + } catch (error) { + expect(error).to.be.instanceOf(Error) + expect((error as Error).message).to.equal('Service manager not ready') + } + }) + + it('should disable MCP and call onMcpDisabled when registry error occurs', async () => { + sinon.stub(profileStatusMonitor as any, 'isMcpEnabled').throws(new Error('MCP Registry: Failed to fetch')) + ;(ProfileStatusMonitor as any).setMcpState(true) + + try { + await profileStatusMonitor.checkInitialState() + expect.fail('Should have thrown an error') + } catch (error) { + expect(error).to.be.instanceOf(Error) + expect((error as Error).message).to.include('MCP Registry:') + expect(ProfileStatusMonitor.getMcpState()).to.be.false + expect(mockOnMcpDisabled.called).to.be.true + } + }) + + it('should not disable MCP for non-registry errors', async () => { + sinon.stub(profileStatusMonitor as any, 'isMcpEnabled').throws(new Error('Network error')) + ;(ProfileStatusMonitor as any).setMcpState(true) + + try { + await profileStatusMonitor.checkInitialState() + expect.fail('Should have thrown an error') + } catch (error) { + expect(ProfileStatusMonitor.getMcpState()).to.be.true + expect(mockOnMcpDisabled.called).to.be.false + } }) }) @@ -115,7 +147,6 @@ describe('ProfileStatusMonitor', () => { it('should be accessible across different instances', () => { const monitor1 = new ProfileStatusMonitor(mockLogging, mockOnMcpDisabled, mockOnMcpEnabled) - const monitor2 = new ProfileStatusMonitor(mockLogging, mockOnMcpDisabled, mockOnMcpEnabled) // Set state through static property @@ -134,7 +165,6 @@ describe('ProfileStatusMonitor', () => { it('should maintain state across multiple instances', () => { const monitor1 = new ProfileStatusMonitor(mockLogging, mockOnMcpDisabled, mockOnMcpEnabled) - const monitor2 = new ProfileStatusMonitor(mockLogging, mockOnMcpDisabled, mockOnMcpEnabled) // Initially true (default value) @@ -147,4 +177,184 @@ describe('ProfileStatusMonitor', () => { expect(ProfileStatusMonitor.getMcpState()).to.be.false }) }) + + describe('registry URL handling', () => { + let mockOnRegistryUpdate: sinon.SinonStub + let mockServiceManager: any + + beforeEach(() => { + mockOnRegistryUpdate = sinon.stub().resolves() + + mockServiceManager = { + getActiveProfileArn: sinon.stub().returns('arn:aws:iam::123456789012:profile/test'), + getCodewhispererService: sinon.stub().returns({ + getProfile: sinon.stub().resolves({ + profile: { + optInFeatures: { + mcpConfiguration: { + toggle: 'ON', + mcpRegistryUrl: 'https://example.com/registry.json', + }, + }, + }, + }), + }), + getConnectionType: sinon.stub().returns('identityCenter'), + } + + sinon + .stub(AmazonQTokenServiceManagerModule.AmazonQTokenServiceManager, 'getInstance') + .returns(mockServiceManager as any) + }) + + it('should notify registry URL for enterprise users when MCP is enabled', async () => { + profileStatusMonitor = new ProfileStatusMonitor( + mockLogging, + mockOnMcpDisabled, + mockOnMcpEnabled, + mockOnRegistryUpdate + ) + + await profileStatusMonitor.checkInitialState() + + expect(mockOnRegistryUpdate.called).to.be.true + expect(mockOnRegistryUpdate.firstCall.args[0]).to.be.a('string') + }) + + it('should throw error when registry fetch fails for enterprise users', async () => { + mockOnRegistryUpdate.rejects(new Error('MCP Registry: Failed to fetch or validate registry')) + + profileStatusMonitor = new ProfileStatusMonitor( + mockLogging, + mockOnMcpDisabled, + mockOnMcpEnabled, + mockOnRegistryUpdate + ) + + try { + await profileStatusMonitor.checkInitialState() + expect.fail('Should have thrown an error') + } catch (error) { + expect(error).to.be.instanceOf(Error) + expect((error as Error).message).to.include('MCP Registry:') + expect(mockLogging.error.calledWith(sinon.match('MCP configuration check failed'))).to.be.true + } + }) + + it('should not notify registry URL for free tier users', async () => { + mockServiceManager.getConnectionType.returns('builderId') + + profileStatusMonitor = new ProfileStatusMonitor( + mockLogging, + mockOnMcpDisabled, + mockOnMcpEnabled, + mockOnRegistryUpdate + ) + + await profileStatusMonitor.checkInitialState() + + expect(mockOnRegistryUpdate.called).to.be.false + }) + + it('should not notify registry URL when MCP toggle is OFF', async () => { + mockServiceManager.getCodewhispererService().getProfile.resolves({ + profile: { + optInFeatures: { + mcpConfiguration: { + toggle: 'OFF', + }, + }, + }, + }) + + profileStatusMonitor = new ProfileStatusMonitor( + mockLogging, + mockOnMcpDisabled, + mockOnMcpEnabled, + mockOnRegistryUpdate + ) + + await profileStatusMonitor.checkInitialState() + + expect(mockOnRegistryUpdate.called).to.be.false + }) + + it('should return registry URL from getRegistryUrl for enterprise users', async () => { + // Create a new getProfile stub that returns mcpRegistryUrl + const getProfileStub = sinon.stub().resolves({ + profile: { + optInFeatures: { + mcpConfiguration: { + mcpRegistryUrl: 'https://example.com/registry.json', + }, + }, + }, + }) + + mockServiceManager.getCodewhispererService = sinon.stub().returns({ + getProfile: getProfileStub, + }) + + profileStatusMonitor = new ProfileStatusMonitor( + mockLogging, + mockOnMcpDisabled, + mockOnMcpEnabled, + mockOnRegistryUpdate + ) + + const registryUrl = await profileStatusMonitor.getRegistryUrl() + expect(registryUrl).to.equal('https://example.com/registry.json') + }) + + it('should return null from getRegistryUrl for free tier users', async () => { + mockServiceManager.getConnectionType.returns('builderId') + + profileStatusMonitor = new ProfileStatusMonitor( + mockLogging, + mockOnMcpDisabled, + mockOnMcpEnabled, + mockOnRegistryUpdate + ) + + const registryUrl = await profileStatusMonitor.getRegistryUrl() + expect(registryUrl).to.be.null + }) + }) + + describe('isEnterpriseUser', () => { + let mockServiceManager: any + + beforeEach(() => { + mockServiceManager = { + getConnectionType: sinon.stub(), + } + }) + + it('should return true for identityCenter connection type', () => { + mockServiceManager.getConnectionType.returns('identityCenter') + + const result = (profileStatusMonitor as any).isEnterpriseUser(mockServiceManager) + + expect(result).to.be.true + expect(mockLogging.info.called).to.be.false + }) + + it('should return false for builderId connection type', () => { + mockServiceManager.getConnectionType.returns('builderId') + + const result = (profileStatusMonitor as any).isEnterpriseUser(mockServiceManager) + + expect(result).to.be.false + expect(mockLogging.info.calledWith(sinon.match('not on Pro Tier/IdC'))).to.be.true + }) + + it('should log governance unavailable message for non-enterprise users', () => { + mockServiceManager.getConnectionType.returns('builderId') + + const result = (profileStatusMonitor as any).isEnterpriseUser(mockServiceManager) + + expect(result).to.be.false + expect(mockLogging.info.calledWith(sinon.match('governance features unavailable'))).to.be.true + }) + }) }) diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/profileStatusMonitor.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/profileStatusMonitor.ts index db1640faf5..0952818498 100644 --- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/profileStatusMonitor.ts +++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/profileStatusMonitor.ts @@ -11,6 +11,9 @@ import * as fs from 'fs' import * as path from 'path' import * as os from 'os' import { EventEmitter } from 'events' +import { McpRegistryService } from './mcpRegistryService' +import { McpRegistryData } from './mcpTypes' +import { GetProfileResponse } from '@amzn/codewhisperer-runtime' export const AUTH_SUCCESS_EVENT = 'authSuccess' @@ -23,14 +26,17 @@ export class ProfileStatusMonitor { private static readonly MCP_CACHE_FILE = path.join(ProfileStatusMonitor.MCP_CACHE_DIR, 'mcp-state.json') private static eventEmitter = new EventEmitter() private static logging?: Logging + private onRegistryUpdate?: (registryUrl: string | null, isPeriodicSync?: boolean) => Promise constructor( private logging: Logging, private onMcpDisabled: () => void, - private onMcpEnabled?: () => void + private onMcpEnabled?: () => void, + onRegistryUpdate?: (registryUrl: string | null, isPeriodicSync?: boolean) => Promise ) { ProfileStatusMonitor.logging = logging ProfileStatusMonitor.loadMcpStateFromDisk() + this.onRegistryUpdate = onRegistryUpdate // Listen for auth success events ProfileStatusMonitor.eventEmitter.on(AUTH_SUCCESS_EVENT, () => { @@ -43,8 +49,13 @@ export class ProfileStatusMonitor { const isMcpEnabled = await this.isMcpEnabled() return isMcpEnabled !== false // Return true if enabled or API failed } catch (error) { - this.logging.debug(`Initial MCP state check failed, defaulting to enabled: ${error}`) - return ProfileStatusMonitor.getMcpState() + const errorMsg = error instanceof Error ? error.message : String(error) + // Only disable MCP for registry-specific errors + if (errorMsg.includes('MCP Registry:')) { + ProfileStatusMonitor.setMcpState(false) + this.onMcpDisabled() + } + throw error } } @@ -54,7 +65,7 @@ export class ProfileStatusMonitor { } this.intervalId = setInterval(() => { - void this.isMcpEnabled() + void this.isMcpEnabled(true) // Pass true for periodic check }, this.CHECK_INTERVAL) this.logging.info('ProfileStatusMonitor started - checking MCP configuration every 24 hours') @@ -68,7 +79,7 @@ export class ProfileStatusMonitor { } } - private async isMcpEnabled(): Promise { + private async isMcpEnabled(isPeriodicCheck: boolean = false): Promise { try { const serviceManager = AmazonQTokenServiceManager.getInstance() const profileArn = this.getProfileArn(serviceManager) @@ -84,7 +95,17 @@ export class ProfileStatusMonitor { this.codeWhispererClient!.getProfile({ profileArn }) ) const mcpConfig = response?.profile?.optInFeatures?.mcpConfiguration - const isMcpEnabled = mcpConfig ? mcpConfig.toggle === 'ON' : true + let isMcpEnabled = mcpConfig ? mcpConfig.toggle === 'ON' : true + + // Fetch registry URL if MCP is enabled and user is enterprise + if (isMcpEnabled && this.isEnterpriseUser(serviceManager)) { + const registryFetchSuccess = await this.fetchRegistryIfNeeded(response, isPeriodicCheck) + if (!registryFetchSuccess) { + throw new Error('MCP Registry: Failed to fetch or validate registry') + } + } else if (isMcpEnabled && !this.isEnterpriseUser(serviceManager)) { + this.logging.info('MCP Governance: Free Tier user - falling back to legacy MCP configuration') + } if (ProfileStatusMonitor.lastMcpState !== isMcpEnabled) { ProfileStatusMonitor.setMcpState(isMcpEnabled) @@ -99,14 +120,9 @@ export class ProfileStatusMonitor { return isMcpEnabled } catch (error) { - this.logging.debug(`MCP configuration check failed, defaulting to enabled: ${error}`) - const mcpState = ProfileStatusMonitor.getMcpState() - if (!mcpState) { - this.onMcpDisabled() - } else if (this.onMcpEnabled) { - this.onMcpEnabled() - } - return mcpState + const errorMsg = error instanceof Error ? error.message : String(error) + this.logging.error(`MCP configuration check failed: ${errorMsg}`) + throw error } } @@ -166,4 +182,68 @@ export class ProfileStatusMonitor { static emitAuthSuccess(): void { ProfileStatusMonitor.eventEmitter.emit(AUTH_SUCCESS_EVENT) } + + private async fetchRegistryIfNeeded( + response: GetProfileResponse, + isPeriodicSync: boolean = false + ): Promise { + if (!this.onRegistryUpdate) { + return true + } + + const registryUrl = response?.profile?.optInFeatures?.mcpConfiguration?.mcpRegistryUrl + + if (!registryUrl) { + this.logging.debug('MCP Registry: No registry URL configured') + await this.onRegistryUpdate(null, isPeriodicSync) + return true + } + + try { + this.logging.info( + `MCP Registry: Notifying MCP Manager of registry URL: ${registryUrl}${isPeriodicSync ? ' (periodic sync)' : ''}` + ) + await this.onRegistryUpdate(registryUrl, isPeriodicSync) + return true + } catch (error) { + const errorMsg = error instanceof Error ? error.message : String(error) + this.logging.error(`MCP Registry: Failed to fetch or validate registry: ${errorMsg}`) + return false + } + } + + private isEnterpriseUser(serviceManager: AmazonQTokenServiceManager): boolean { + const connectionType = serviceManager.getConnectionType() + const isEnterprise = connectionType === 'identityCenter' + + if (!isEnterprise) { + this.logging.info('MCP Governance: User is not on Pro Tier/IdC - governance features unavailable') + } + + return isEnterprise + } + + async getRegistryUrl(): Promise { + try { + const serviceManager = AmazonQTokenServiceManager.getInstance() + if (!this.isEnterpriseUser(serviceManager)) { + return null + } + + const profileArn = this.getProfileArn(serviceManager) + if (!profileArn) { + return null + } + + this.codeWhispererClient = serviceManager.getCodewhispererService() + const response = await retryUtils.retryWithBackoff(() => + this.codeWhispererClient!.getProfile({ profileArn }) + ) + + return response?.profile?.optInFeatures?.mcpConfiguration?.mcpRegistryUrl || null + } catch (error) { + this.logging.debug(`Failed to get registry URL: ${error}`) + return null + } + } } diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/toolServer.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/toolServer.ts index 2d24631ba5..1b405512b1 100644 --- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/toolServer.ts +++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/toolServer.ts @@ -324,7 +324,7 @@ export const McpToolsServer: Server = ({ } } - async function initializeMcp() { + async function initializeMcpManager() { try { const wsUris = workspace.getAllWorkspaceFolders()?.map(f => f.uri) ?? [] const wsAgentPaths = getWorkspaceAgentConfigPaths(wsUris) @@ -342,35 +342,52 @@ export const McpToolsServer: Server = ({ } } - const mgr = await McpManager.init(allAgentPaths, { - logging, - workspace, - lsp, - telemetry, - credentialsProvider, - runtime, - agent, - }) + // Get registry URL from profile monitor if available + let registryUrl: string | null = null + if (profileStatusMonitor) { + registryUrl = await profileStatusMonitor.getRegistryUrl() + } + + // Always initialize McpManager regardless of MCP state + await McpManager.init( + allAgentPaths, + { + logging, + workspace, + lsp, + telemetry, + credentialsProvider, + runtime, + agent, + }, + registryUrl ? { registryUrl } : undefined + ) McpManager.instance.clearToolNameMapping() + } catch (e) { + logging.error(`Failed to initialize MCP Manager: ${e}`) + } + } - // Only register tools if MCP is enabled - if (ProfileStatusMonitor.getMcpState()) { - const byServer: Record = {} - for (const d of mgr.getEnabledTools()) { - ;(byServer[d.serverName] ||= []).push(d) - } - for (const [server, defs] of Object.entries(byServer)) { - registerServerTools(server, defs) - } + function registerAllMcpTools() { + if (!ProfileStatusMonitor.getMcpState()) { + return + } - mgr.events.on(AGENT_TOOLS_CHANGED, (server: string, defs: McpToolDefinition[]) => { - registerServerTools(server, defs) - }) - } - } catch (e) { - logging.error(`Failed to initialize MCP:' ${e}`) + const byServer: Record = {} + for (const d of McpManager.instance.getEnabledTools()) { + ;(byServer[d.serverName] ||= []).push(d) + } + for (const [server, defs] of Object.entries(byServer)) { + registerServerTools(server, defs) } + + McpManager.instance.events.on(AGENT_TOOLS_CHANGED, (server: string, defs: McpToolDefinition[]) => { + registerServerTools(server, defs) + }) + + // Emit metrics after tools are registered + McpManager.instance.emitMcpConfigMetrics() } lsp.onInitialized(async () => { @@ -380,52 +397,109 @@ export const McpToolsServer: Server = ({ return } - profileStatusMonitor = new ProfileStatusMonitor(logging, removeAllMcpTools, async () => { - logging.info('MCP enabled by profile status monitor') - await initializeMcp() - }) + // Initialize McpManager first, before profile monitor + await initializeMcpManager() + + profileStatusMonitor = new ProfileStatusMonitor( + logging, + removeAllMcpTools, + async () => { + logging.info('MCP enabled by profile status monitor') + await McpManager.instance.discoverAllServers() + logging.info(`MCP: discovered ${McpManager.instance.getAllTools().length} tools after re-enable`) + registerAllMcpTools() + }, + async (registryUrl: string | null, isPeriodicSync: boolean = false) => { + if (registryUrl) { + McpManager.instance.setRegistryActive(true) + await McpManager.instance.reinitializeMcpServers(true) + await McpManager.instance.updateRegistryUrl(registryUrl, isPeriodicSync) + + // Discover servers after registry update + if (!isPeriodicSync) { + await McpManager.instance.discoverAllServers() + logging.info( + `MCP: discovered ${McpManager.instance.getAllTools().length} tools after registry update` + ) + registerAllMcpTools() + } + } + } + ) // Wait for profile ARN to be available before checking MCP state const checkAndInitialize = async () => { - await profileStatusMonitor!.checkInitialState() - // Always initialize McpManager to handle UI requests - await initializeMcp() + try { + await profileStatusMonitor!.checkInitialState() + + // Check if MCP is enabled via isMcpEnabled check + const mcpEnabled = await profileStatusMonitor!.checkInitialState() + + if (mcpEnabled) { + logging.info('MCP is enabled, discovering servers') + await McpManager.instance.discoverAllServers() + logging.info( + `MCP: discovered ${McpManager.instance.getAllTools().length} tools across all servers` + ) + registerAllMcpTools() + } else { + logging.info('MCP is disabled, skipping server discovery') + removeAllMcpTools() + } - // Remove tools if MCP is disabled - if (!ProfileStatusMonitor.getMcpState()) { - removeAllMcpTools() + profileStatusMonitor!.start() + } catch (error) { + const errorMsg = error instanceof Error ? error.message : String(error) + logging.error(`MCP initialization failed: ${errorMsg}`) + // Store registry errors in McpManager for display in server list + if (errorMsg.includes('MCP Registry:')) { + try { + ;(McpManager.instance as any).configLoadErrors.set('registry', errorMsg) + } catch (e) { + logging.debug('Failed to store registry error in McpManager') + } + } + throw error } - - profileStatusMonitor!.start() } - // Check if service manager is ready - try { - const serviceManager = AmazonQTokenServiceManager.getInstance() - if (serviceManager.getState() === 'INITIALIZED') { - await checkAndInitialize() - } else { - // Poll for service manager to be ready with 10s timeout - const startTime = Date.now() - const pollForReady = async () => { - if (serviceManager.getState() === 'INITIALIZED') { - await checkAndInitialize() - } else if (Date.now() - startTime < SERVICE_MANAGER_TIMEOUT_MS) { - setTimeout(pollForReady, SERVICE_MANAGER_POLL_INTERVAL_MS) - } else { - logging.warn('Service manager not ready after 10s, initializing MCP manager') - await initializeMcp() - profileStatusMonitor!.start() + // Wait for auth to be initialized before discovering servers + const waitForAuthAndDiscover = async () => { + try { + const serviceManager = AmazonQTokenServiceManager.getInstance() + const authState = serviceManager.getState() + + if (authState === 'INITIALIZED') { + logging.info('Auth is initialized, checking MCP state and discovering servers') + await checkAndInitialize() + } else { + logging.info(`Auth not ready (state: ${authState}), waiting before discovering MCP servers`) + // Poll for auth to be ready with 10s timeout + const startTime = Date.now() + const pollForReady = async () => { + const currentState = serviceManager.getState() + if (currentState === 'INITIALIZED') { + logging.info('Auth initialized, proceeding with MCP discovery') + await checkAndInitialize() + } else if (Date.now() - startTime < SERVICE_MANAGER_TIMEOUT_MS) { + setTimeout(pollForReady, SERVICE_MANAGER_POLL_INTERVAL_MS) + } else { + logging.warn( + `Auth not ready after ${SERVICE_MANAGER_TIMEOUT_MS}ms, starting profile monitor without discovery` + ) + profileStatusMonitor!.start() + } } + setTimeout(pollForReady, SERVICE_MANAGER_POLL_INTERVAL_MS) } - setTimeout(pollForReady, SERVICE_MANAGER_POLL_INTERVAL_MS) + } catch (error) { + const errorMsg = error instanceof Error ? error.message : String(error) + logging.error(`Failed to initialize MCP: ${errorMsg}`) + // Don't start profile monitor if there's an error } - } catch (error) { - // Service manager not initialized yet, always initialize McpManager - logging.info('Service manager not ready, initializing MCP manager') - await initializeMcp() - profileStatusMonitor!.start() } + + await waitForAuthAndDiscover() } catch (error) { console.warn('Caught error during MCP tool initialization; initialization may be incomplete:', error) logging.error(`Failed to initialize MCP in onInitialized: ${error}`) diff --git a/server/aws-lsp-identity/package.json b/server/aws-lsp-identity/package.json index fbebf05628..a387118283 100644 --- a/server/aws-lsp-identity/package.json +++ b/server/aws-lsp-identity/package.json @@ -26,7 +26,7 @@ "dependencies": { "@aws-sdk/client-sso-oidc": "^3.616.0", "@aws-sdk/token-providers": "^3.744.0", - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "@aws/lsp-core": "^0.0.16", "@smithy/node-http-handler": "^3.2.5", "@smithy/shared-ini-file-loader": "^4.0.1", diff --git a/server/aws-lsp-json/package.json b/server/aws-lsp-json/package.json index 41c2c0b750..d599e6114e 100644 --- a/server/aws-lsp-json/package.json +++ b/server/aws-lsp-json/package.json @@ -26,7 +26,7 @@ "prepack": "shx cp ../../LICENSE ../../NOTICE ../../SECURITY.md ." }, "dependencies": { - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "@aws/lsp-core": "^0.0.16", "vscode-languageserver": "^9.0.1", "vscode-languageserver-textdocument": "^1.0.8" diff --git a/server/aws-lsp-notification/package.json b/server/aws-lsp-notification/package.json index e52d9195d1..9a7c3341d5 100644 --- a/server/aws-lsp-notification/package.json +++ b/server/aws-lsp-notification/package.json @@ -22,7 +22,7 @@ "coverage:report": "c8 report --reporter=html --reporter=text" }, "dependencies": { - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "@aws/lsp-core": "^0.0.16", "vscode-languageserver": "^9.0.1" }, diff --git a/server/aws-lsp-partiql/package.json b/server/aws-lsp-partiql/package.json index 87470433cd..ab79d5e11d 100644 --- a/server/aws-lsp-partiql/package.json +++ b/server/aws-lsp-partiql/package.json @@ -24,7 +24,7 @@ "out" ], "dependencies": { - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "antlr4-c3": "3.4.4", "antlr4ng": "3.0.16", "web-tree-sitter": "0.22.6" diff --git a/server/aws-lsp-s3/package.json b/server/aws-lsp-s3/package.json index 5ca107043b..3ff71f9e92 100644 --- a/server/aws-lsp-s3/package.json +++ b/server/aws-lsp-s3/package.json @@ -9,7 +9,7 @@ "dependencies": { "@aws-sdk/client-s3": "^3.623.0", "@aws-sdk/types": "^3.734.0", - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "@aws/lsp-core": "^0.0.15", "vscode-languageserver": "^9.0.1", "vscode-languageserver-textdocument": "^1.0.8" diff --git a/server/aws-lsp-yaml/package.json b/server/aws-lsp-yaml/package.json index 7140ad02ef..87d324118d 100644 --- a/server/aws-lsp-yaml/package.json +++ b/server/aws-lsp-yaml/package.json @@ -26,7 +26,7 @@ "postinstall": "node patchYamlPackage.js" }, "dependencies": { - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "@aws/lsp-core": "^0.0.16", "vscode-languageserver": "^9.0.1", "vscode-languageserver-textdocument": "^1.0.8", diff --git a/server/device-sso-auth-lsp/package.json b/server/device-sso-auth-lsp/package.json index 19e77c04dc..a7b57f91d8 100644 --- a/server/device-sso-auth-lsp/package.json +++ b/server/device-sso-auth-lsp/package.json @@ -7,7 +7,7 @@ "compile": "tsc --build" }, "dependencies": { - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "vscode-languageserver": "^9.0.1" }, "devDependencies": { diff --git a/server/hello-world-lsp/package.json b/server/hello-world-lsp/package.json index e45a891713..6e47c508fc 100644 --- a/server/hello-world-lsp/package.json +++ b/server/hello-world-lsp/package.json @@ -13,7 +13,7 @@ "coverage:report": "c8 report --reporter=html --reporter=text" }, "dependencies": { - "@aws/language-server-runtimes": "^0.3.1", + "@aws/language-server-runtimes": "0.3.6", "vscode-languageserver": "^9.0.1" }, "devDependencies": { From 49ca3bbb6dbf9eac4b281aa80cd5ff30b94b3a7e Mon Sep 17 00:00:00 2001 From: invictus <149003065+ashishrp-aws@users.noreply.github.com> Date: Thu, 20 Nov 2025 17:06:04 -0800 Subject: [PATCH 21/36] fix: preserve registry server config when updating permissions (#2515) --- .../src/language-server/agenticChat/tools/mcp/mcpManager.ts | 4 +++- .../src/language-server/agenticChat/tools/mcp/mcpUtils.ts | 5 +++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpManager.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpManager.ts index f18d0986e0..1b1d9afe6c 100644 --- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpManager.ts +++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpManager.ts @@ -1309,7 +1309,9 @@ export class McpManager { isMCPServerConfig(serverCfg) ? serverCfg : null, serverTools, serverAllowedTools, - agentPath + agentPath, + false, + isRegistryServerConfig(serverCfg) ) } } diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpUtils.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpUtils.ts index aaf48986ed..ea64cba6e7 100644 --- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpUtils.ts +++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpUtils.ts @@ -1119,7 +1119,8 @@ export async function saveServerSpecificAgentConfig( serverTools: string[], serverAllowedTools: string[], configPath: string, - isLegacyMcpServer: boolean = false + isLegacyMcpServer: boolean = false, + skipMcpServerConfig: boolean = false ): Promise { try { await workspace.fs.mkdir(path.dirname(configPath), { recursive: true }) @@ -1143,7 +1144,7 @@ export async function saveServerSpecificAgentConfig( tool => tool !== serverPrefix && !tool.startsWith(`${serverPrefix}/`) ) - if (!isLegacyMcpServer) { + if (!isLegacyMcpServer && !skipMcpServerConfig) { if (serverConfig === null) { // Remove server entirely delete existingConfig.mcpServers[serverName] From 0c380859bc620bfd40ce8139348e95ad6fdae8ed Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 20 Nov 2025 19:59:16 -0800 Subject: [PATCH 22/36] chore(release): release packages from branch main (#2505) * chore(release): release packages from branch main * fix: fix for dependency failures * fix: fix for install failures --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Ashish Reddy Podduturi --- .release-please-manifest.json | 14 +- app/aws-lsp-partiql-runtimes/package.json | 2 +- chat-client/CHANGELOG.md | 7 + chat-client/package.json | 2 +- core/aws-lsp-core/CHANGELOG.md | 7 + core/aws-lsp-core/package.json | 2 +- package-lock.json | 18889 ++++++++++++-------- server/aws-lsp-antlr4/CHANGELOG.md | 14 + server/aws-lsp-antlr4/package.json | 4 +- server/aws-lsp-codewhisperer/CHANGELOG.md | 22 + server/aws-lsp-codewhisperer/package.json | 4 +- server/aws-lsp-identity/package.json | 2 +- server/aws-lsp-json/CHANGELOG.md | 14 + server/aws-lsp-json/package.json | 4 +- server/aws-lsp-notification/package.json | 2 +- server/aws-lsp-partiql/CHANGELOG.md | 7 + server/aws-lsp-partiql/package.json | 2 +- server/aws-lsp-s3/package.json | 2 +- server/aws-lsp-yaml/CHANGELOG.md | 14 + server/aws-lsp-yaml/package.json | 4 +- 20 files changed, 11075 insertions(+), 7943 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 489980dd3e..25f4408602 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,9 +1,9 @@ { - "chat-client": "0.1.41", - "core/aws-lsp-core": "0.0.16", - "server/aws-lsp-antlr4": "0.1.20", - "server/aws-lsp-codewhisperer": "0.0.91", - "server/aws-lsp-json": "0.1.21", - "server/aws-lsp-partiql": "0.0.18", - "server/aws-lsp-yaml": "0.1.21" + "chat-client": "0.1.42", + "core/aws-lsp-core": "0.0.17", + "server/aws-lsp-antlr4": "0.1.21", + "server/aws-lsp-codewhisperer": "0.0.92", + "server/aws-lsp-json": "0.1.22", + "server/aws-lsp-partiql": "0.0.19", + "server/aws-lsp-yaml": "0.1.22" } diff --git a/app/aws-lsp-partiql-runtimes/package.json b/app/aws-lsp-partiql-runtimes/package.json index d57da0e7ff..ebf9473883 100644 --- a/app/aws-lsp-partiql-runtimes/package.json +++ b/app/aws-lsp-partiql-runtimes/package.json @@ -12,7 +12,7 @@ }, "dependencies": { "@aws/language-server-runtimes": "0.3.6", - "@aws/lsp-partiql": "^0.0.18" + "@aws/lsp-partiql": "0.0.19" }, "devDependencies": { "ts-loader": "^9.4.4", diff --git a/chat-client/CHANGELOG.md b/chat-client/CHANGELOG.md index 3a243a84c8..822d74659b 100644 --- a/chat-client/CHANGELOG.md +++ b/chat-client/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.1.42](https://github.com/aws/language-servers/compare/chat-client/v0.1.41...chat-client/v0.1.42) (2025-11-21) + + +### Features + +* **amazonq:** adding MCP registry for governance for Amazon Q ([#2512](https://github.com/aws/language-servers/issues/2512)) ([e8d4bf5](https://github.com/aws/language-servers/commit/e8d4bf588e9b7bc13102b33ee03bd357f9698811)) + ## [0.1.41](https://github.com/aws/language-servers/compare/chat-client/v0.1.40...chat-client/v0.1.41) (2025-11-04) diff --git a/chat-client/package.json b/chat-client/package.json index a0b3a9b730..ac7194974b 100644 --- a/chat-client/package.json +++ b/chat-client/package.json @@ -1,6 +1,6 @@ { "name": "@aws/chat-client", - "version": "0.1.41", + "version": "0.1.42", "description": "AWS Chat Client", "main": "out/index.js", "repository": { diff --git a/core/aws-lsp-core/CHANGELOG.md b/core/aws-lsp-core/CHANGELOG.md index 935777970e..891be1996b 100644 --- a/core/aws-lsp-core/CHANGELOG.md +++ b/core/aws-lsp-core/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.0.17](https://github.com/aws/language-servers/compare/lsp-core/v0.0.16...lsp-core/v0.0.17) (2025-11-21) + + +### Features + +* **amazonq:** adding MCP registry for governance for Amazon Q ([#2512](https://github.com/aws/language-servers/issues/2512)) ([e8d4bf5](https://github.com/aws/language-servers/commit/e8d4bf588e9b7bc13102b33ee03bd357f9698811)) + ## [0.0.16](https://github.com/aws/language-servers/compare/lsp-core/v0.0.15...lsp-core/v0.0.16) (2025-10-01) diff --git a/core/aws-lsp-core/package.json b/core/aws-lsp-core/package.json index 7cccc979f6..7c5a3b33a2 100644 --- a/core/aws-lsp-core/package.json +++ b/core/aws-lsp-core/package.json @@ -1,6 +1,6 @@ { "name": "@aws/lsp-core", - "version": "0.0.16", + "version": "0.0.17", "description": "Core library, contains common code and utilities", "main": "out/index.js", "repository": { diff --git a/package-lock.json b/package-lock.json index 993bcbffe6..44ef922843 100644 --- a/package-lock.json +++ b/package-lock.json @@ -117,21 +117,6 @@ "webpack-cli": "^6.0.1" } }, - "app/aws-lsp-codewhisperer-runtimes/node_modules/punycode": { - "version": "1.4.1", - "license": "MIT" - }, - "app/aws-lsp-codewhisperer-runtimes/node_modules/url": { - "version": "0.11.4", - "license": "MIT", - "dependencies": { - "punycode": "^1.4.1", - "qs": "^6.12.3" - }, - "engines": { - "node": ">= 0.4" - } - }, "app/aws-lsp-identity-runtimes": { "name": "@aws/lsp-identity-runtimes", "version": "0.1.0", @@ -173,7 +158,7 @@ "version": "0.0.1", "dependencies": { "@aws/language-server-runtimes": "0.3.6", - "@aws/lsp-partiql": "^0.0.18" + "@aws/lsp-partiql": "0.0.19" }, "devDependencies": { "ts-loader": "^9.4.4", @@ -256,7 +241,7 @@ }, "chat-client": { "name": "@aws/chat-client", - "version": "0.1.41", + "version": "0.1.42", "license": "Apache-2.0", "dependencies": { "@aws/chat-client-ui-types": "0.1.68", @@ -277,27 +262,6 @@ "webpack-cli": "^6.0.1" } }, - "chat-client/node_modules/ts-mocha": { - "version": "11.1.0", - "dev": true, - "license": "MIT", - "bin": { - "ts-mocha": "bin/ts-mocha" - }, - "engines": { - "node": ">= 6.X.X" - }, - "peerDependencies": { - "mocha": "^3.X.X || ^4.X.X || ^5.X.X || ^6.X.X || ^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X || ^11.X.X", - "ts-node": "^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X", - "tsconfig-paths": "^4.X.X" - }, - "peerDependenciesMeta": { - "tsconfig-paths": { - "optional": true - } - } - }, "client/vscode": { "name": "awsdocuments-ls-client", "version": "0.1.0", @@ -319,7 +283,7 @@ }, "core/aws-lsp-core": { "name": "@aws/lsp-core", - "version": "0.0.16", + "version": "0.0.17", "license": "Apache-2.0", "dependencies": { "@aws/language-server-runtimes": "0.3.6", @@ -426,6 +390,7 @@ "version": "3.731.0", "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz", "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==", + "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.0.0", "tslib": "^2.6.2" @@ -434,6 +399,47 @@ "node": ">=18.0.0" } }, + "node_modules/@amzn/amazon-q-developer-streaming-client/node_modules/@smithy/abort-controller": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz", + "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/amazon-q-developer-streaming-client/node_modules/@smithy/node-http-handler": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.5.tgz", + "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/querystring-builder": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/amazon-q-developer-streaming-client/node_modules/@smithy/types": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/@amzn/amazon-q-developer-streaming-client/node_modules/uuid": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", @@ -442,6 +448,7 @@ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], + "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } @@ -545,6 +552,23 @@ "node": ">=18.0.0" } }, + "node_modules/@amzn/codewhisperer-runtime/node_modules/@aws-sdk/token-providers": { + "version": "3.731.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.731.1.tgz", + "integrity": "sha512-t34GOPwBZsX7zGHjiTXmMHGY3kHM7fLiQ60Jqk0On9P0ASHTDE5U75RgCXboE3u+qEv9wyKyaqMNyMWj9qQlFg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/nested-clients": "3.731.1", + "@aws-sdk/types": "3.731.0", + "@smithy/property-provider": "^4.0.0", + "@smithy/shared-ini-file-loader": "^4.0.0", + "@smithy/types": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/@amzn/codewhisperer-runtime/node_modules/@aws-sdk/types": { "version": "3.731.0", "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz", @@ -558,15 +582,41 @@ "node": ">=18.0.0" } }, - "node_modules/@amzn/codewhisperer-runtime/node_modules/@aws-sdk/util-endpoints": { - "version": "3.731.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.731.0.tgz", - "integrity": "sha512-riztxTAfncFS9yQWcBJffGgOgLoKSa63ph+rxWJxKl6BHAmWEvHICj1qDcVmnWfIcvJ5cClclY75l9qKaUH7rQ==", + "node_modules/@amzn/codewhisperer-runtime/node_modules/@smithy/abort-controller": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz", + "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/codewhisperer-runtime/node_modules/@smithy/node-http-handler": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.5.tgz", + "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/querystring-builder": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/codewhisperer-runtime/node_modules/@smithy/types": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.731.0", - "@smithy/types": "^4.0.0", - "@smithy/util-endpoints": "^3.0.0", "tslib": "^2.6.2" }, "engines": { @@ -637,10 +687,28 @@ "node": ">=18.0.0" } }, + "node_modules/@amzn/codewhisperer-streaming/node_modules/@aws-sdk/token-providers": { + "version": "3.731.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.731.1.tgz", + "integrity": "sha512-t34GOPwBZsX7zGHjiTXmMHGY3kHM7fLiQ60Jqk0On9P0ASHTDE5U75RgCXboE3u+qEv9wyKyaqMNyMWj9qQlFg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/nested-clients": "3.731.1", + "@aws-sdk/types": "3.731.0", + "@smithy/property-provider": "^4.0.0", + "@smithy/shared-ini-file-loader": "^4.0.0", + "@smithy/types": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/@amzn/codewhisperer-streaming/node_modules/@aws-sdk/types": { "version": "3.731.0", "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz", "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==", + "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.0.0", "tslib": "^2.6.2" @@ -649,6 +717,47 @@ "node": ">=18.0.0" } }, + "node_modules/@amzn/codewhisperer-streaming/node_modules/@smithy/abort-controller": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz", + "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/codewhisperer-streaming/node_modules/@smithy/node-http-handler": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.5.tgz", + "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/querystring-builder": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/codewhisperer-streaming/node_modules/@smithy/types": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/@amzn/codewhisperer-streaming/node_modules/uuid": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", @@ -657,6 +766,7 @@ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], + "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } @@ -665,6 +775,7 @@ "version": "3.731.0", "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz", "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==", + "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.0.0", "tslib": "^2.6.2" @@ -673,6 +784,47 @@ "node": ">=18.0.0" } }, + "node_modules/@amzn/codewhisperer/node_modules/@smithy/abort-controller": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz", + "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/codewhisperer/node_modules/@smithy/node-http-handler": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.5.tgz", + "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/querystring-builder": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@amzn/codewhisperer/node_modules/@smithy/types": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/@amzn/codewhisperer/node_modules/uuid": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", @@ -681,6 +833,7 @@ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], + "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } @@ -694,6 +847,7 @@ "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.2.0.tgz", "integrity": "sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==", "dev": true, + "license": "MIT", "dependencies": { "@csstools/css-calc": "^2.1.3", "@csstools/css-color-parser": "^3.0.9", @@ -702,10 +856,18 @@ "lru-cache": "^10.4.3" } }, + "node_modules/@asamuzakjp/css-color/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, "node_modules/@aws-crypto/crc32": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", + "license": "Apache-2.0", "dependencies": { "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", @@ -719,6 +881,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/crc32c/-/crc32c-5.2.0.tgz", "integrity": "sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==", + "license": "Apache-2.0", "dependencies": { "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", @@ -729,6 +892,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha1-browser/-/sha1-browser-5.2.0.tgz", "integrity": "sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==", + "license": "Apache-2.0", "dependencies": { "@aws-crypto/supports-web-crypto": "^5.2.0", "@aws-crypto/util": "^5.2.0", @@ -742,6 +906,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -753,6 +918,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "license": "Apache-2.0", "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "tslib": "^2.6.2" @@ -765,6 +931,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "license": "Apache-2.0", "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" @@ -777,6 +944,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", + "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-js": "^5.2.0", "@aws-crypto/supports-web-crypto": "^5.2.0", @@ -791,6 +959,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -802,6 +971,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "license": "Apache-2.0", "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "tslib": "^2.6.2" @@ -814,6 +984,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "license": "Apache-2.0", "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" @@ -826,6 +997,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", + "license": "Apache-2.0", "dependencies": { "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", @@ -839,6 +1011,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" } @@ -847,6 +1020,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "^3.222.0", "@smithy/util-utf8": "^2.0.0", @@ -857,6 +1031,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -868,6 +1043,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "license": "Apache-2.0", "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "tslib": "^2.6.2" @@ -880,6 +1056,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "license": "Apache-2.0", "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" @@ -889,48 +1066,49 @@ } }, "node_modules/@aws-sdk/client-cognito-identity": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.901.0.tgz", - "integrity": "sha512-cDJ+npYeAiS9u/52RwR0AHgneEF+rnyxiYm4d/c4FTI6xTQId3hSD0zdK0EgZ1wfoMk0/+5Ft6mYk0V6JN+cbQ==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.936.0.tgz", + "integrity": "sha512-AkJZ426y0G8Lsyi9p7mWudacMKeo8XLZOfxUmeThMkDa3GxGQ1y6BTrOj6ZcvqQ1Hz7Abb3QWPC+EMqhu1Lncw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.901.0", - "@aws-sdk/credential-provider-node": "3.901.0", - "@aws-sdk/middleware-host-header": "3.901.0", - "@aws-sdk/middleware-logger": "3.901.0", - "@aws-sdk/middleware-recursion-detection": "3.901.0", - "@aws-sdk/middleware-user-agent": "3.901.0", - "@aws-sdk/region-config-resolver": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@aws-sdk/util-endpoints": "3.901.0", - "@aws-sdk/util-user-agent-browser": "3.901.0", - "@aws-sdk/util-user-agent-node": "3.901.0", - "@smithy/config-resolver": "^4.3.0", - "@smithy/core": "^3.14.0", - "@smithy/fetch-http-handler": "^5.3.0", - "@smithy/hash-node": "^4.2.0", - "@smithy/invalid-dependency": "^4.2.0", - "@smithy/middleware-content-length": "^4.2.0", - "@smithy/middleware-endpoint": "^4.3.0", - "@smithy/middleware-retry": "^4.4.0", - "@smithy/middleware-serde": "^4.2.0", - "@smithy/middleware-stack": "^4.2.0", - "@smithy/node-config-provider": "^4.3.0", - "@smithy/node-http-handler": "^4.3.0", - "@smithy/protocol-http": "^5.3.0", - "@smithy/smithy-client": "^4.7.0", - "@smithy/types": "^4.6.0", - "@smithy/url-parser": "^4.2.0", - "@smithy/util-base64": "^4.2.0", + "@aws-sdk/core": "3.936.0", + "@aws-sdk/credential-provider-node": "3.936.0", + "@aws-sdk/middleware-host-header": "3.936.0", + "@aws-sdk/middleware-logger": "3.936.0", + "@aws-sdk/middleware-recursion-detection": "3.936.0", + "@aws-sdk/middleware-user-agent": "3.936.0", + "@aws-sdk/region-config-resolver": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@aws-sdk/util-endpoints": "3.936.0", + "@aws-sdk/util-user-agent-browser": "3.936.0", + "@aws-sdk/util-user-agent-node": "3.936.0", + "@smithy/config-resolver": "^4.4.3", + "@smithy/core": "^3.18.5", + "@smithy/fetch-http-handler": "^5.3.6", + "@smithy/hash-node": "^4.2.5", + "@smithy/invalid-dependency": "^4.2.5", + "@smithy/middleware-content-length": "^4.2.5", + "@smithy/middleware-endpoint": "^4.3.12", + "@smithy/middleware-retry": "^4.4.12", + "@smithy/middleware-serde": "^4.2.6", + "@smithy/middleware-stack": "^4.2.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/node-http-handler": "^4.4.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/smithy-client": "^4.9.8", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", - "@smithy/util-body-length-node": "^4.2.0", - "@smithy/util-defaults-mode-browser": "^4.2.0", - "@smithy/util-defaults-mode-node": "^4.2.0", - "@smithy/util-endpoints": "^3.2.0", - "@smithy/util-middleware": "^4.2.0", - "@smithy/util-retry": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.11", + "@smithy/util-defaults-mode-node": "^4.2.14", + "@smithy/util-endpoints": "^3.2.5", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-retry": "^4.2.5", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, @@ -939,47 +1117,48 @@ } }, "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/client-sso": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.901.0.tgz", - "integrity": "sha512-sGyDjjkJ7ppaE+bAKL/Q5IvVCxtoyBIzN+7+hWTS/mUxWJ9EOq9238IqmVIIK6sYNIzEf9yhobfMARasPYVTNg==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.936.0.tgz", + "integrity": "sha512-0G73S2cDqYwJVvqL08eakj79MZG2QRaB56Ul8/Ps9oQxllr7DMI1IQ/N3j3xjxgpq/U36pkoFZ8aK1n7Sbr3IQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.901.0", - "@aws-sdk/middleware-host-header": "3.901.0", - "@aws-sdk/middleware-logger": "3.901.0", - "@aws-sdk/middleware-recursion-detection": "3.901.0", - "@aws-sdk/middleware-user-agent": "3.901.0", - "@aws-sdk/region-config-resolver": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@aws-sdk/util-endpoints": "3.901.0", - "@aws-sdk/util-user-agent-browser": "3.901.0", - "@aws-sdk/util-user-agent-node": "3.901.0", - "@smithy/config-resolver": "^4.3.0", - "@smithy/core": "^3.14.0", - "@smithy/fetch-http-handler": "^5.3.0", - "@smithy/hash-node": "^4.2.0", - "@smithy/invalid-dependency": "^4.2.0", - "@smithy/middleware-content-length": "^4.2.0", - "@smithy/middleware-endpoint": "^4.3.0", - "@smithy/middleware-retry": "^4.4.0", - "@smithy/middleware-serde": "^4.2.0", - "@smithy/middleware-stack": "^4.2.0", - "@smithy/node-config-provider": "^4.3.0", - "@smithy/node-http-handler": "^4.3.0", - "@smithy/protocol-http": "^5.3.0", - "@smithy/smithy-client": "^4.7.0", - "@smithy/types": "^4.6.0", - "@smithy/url-parser": "^4.2.0", - "@smithy/util-base64": "^4.2.0", + "@aws-sdk/core": "3.936.0", + "@aws-sdk/middleware-host-header": "3.936.0", + "@aws-sdk/middleware-logger": "3.936.0", + "@aws-sdk/middleware-recursion-detection": "3.936.0", + "@aws-sdk/middleware-user-agent": "3.936.0", + "@aws-sdk/region-config-resolver": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@aws-sdk/util-endpoints": "3.936.0", + "@aws-sdk/util-user-agent-browser": "3.936.0", + "@aws-sdk/util-user-agent-node": "3.936.0", + "@smithy/config-resolver": "^4.4.3", + "@smithy/core": "^3.18.5", + "@smithy/fetch-http-handler": "^5.3.6", + "@smithy/hash-node": "^4.2.5", + "@smithy/invalid-dependency": "^4.2.5", + "@smithy/middleware-content-length": "^4.2.5", + "@smithy/middleware-endpoint": "^4.3.12", + "@smithy/middleware-retry": "^4.4.12", + "@smithy/middleware-serde": "^4.2.6", + "@smithy/middleware-stack": "^4.2.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/node-http-handler": "^4.4.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/smithy-client": "^4.9.8", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", - "@smithy/util-body-length-node": "^4.2.0", - "@smithy/util-defaults-mode-browser": "^4.2.0", - "@smithy/util-defaults-mode-node": "^4.2.0", - "@smithy/util-endpoints": "^3.2.0", - "@smithy/util-middleware": "^4.2.0", - "@smithy/util-retry": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.11", + "@smithy/util-defaults-mode-node": "^4.2.14", + "@smithy/util-endpoints": "^3.2.5", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-retry": "^4.2.5", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, @@ -988,22 +1167,23 @@ } }, "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/core": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.901.0.tgz", - "integrity": "sha512-brKAc3y64tdhyuEf+OPIUln86bRTqkLgb9xkd6kUdIeA5+qmp/N6amItQz+RN4k4O3kqkCPYnAd3LonTKluobw==", - "dev": true, - "dependencies": { - "@aws-sdk/types": "3.901.0", - "@aws-sdk/xml-builder": "3.901.0", - "@smithy/core": "^3.14.0", - "@smithy/node-config-provider": "^4.3.0", - "@smithy/property-provider": "^4.2.0", - "@smithy/protocol-http": "^5.3.0", - "@smithy/signature-v4": "^5.3.0", - "@smithy/smithy-client": "^4.7.0", - "@smithy/types": "^4.6.0", - "@smithy/util-base64": "^4.2.0", - "@smithy/util-middleware": "^4.2.0", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.936.0.tgz", + "integrity": "sha512-eGJ2ySUMvgtOziHhDRDLCrj473RJoL4J1vPjVM3NrKC/fF3/LoHjkut8AAnKmrW6a2uTzNKubigw8dEnpmpERw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.936.0", + "@aws-sdk/xml-builder": "3.930.0", + "@smithy/core": "^3.18.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/signature-v4": "^5.3.5", + "@smithy/smithy-client": "^4.9.8", + "@smithy/types": "^4.9.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-middleware": "^4.2.5", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, @@ -1012,15 +1192,16 @@ } }, "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/credential-provider-env": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.901.0.tgz", - "integrity": "sha512-5hAdVl3tBuARh3zX5MLJ1P/d+Kr5kXtDU3xm1pxUEF4xt2XkEEpwiX5fbkNkz2rbh3BCt2gOHsAbh6b3M7n+DA==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.936.0.tgz", + "integrity": "sha512-dKajFuaugEA5i9gCKzOaVy9uTeZcApE+7Z5wdcZ6j40523fY1a56khDAUYkCfwqa7sHci4ccmxBkAo+fW1RChA==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@smithy/property-provider": "^4.2.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/core": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@smithy/property-provider": "^4.2.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -1028,20 +1209,21 @@ } }, "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/credential-provider-http": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.901.0.tgz", - "integrity": "sha512-Ggr7+0M6QZEsrqRkK7iyJLf4LkIAacAxHz9c4dm9hnDdU7vqrlJm6g73IxMJXWN1bIV7IxfpzB11DsRrB/oNjQ==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.936.0.tgz", + "integrity": "sha512-5FguODLXG1tWx/x8fBxH+GVrk7Hey2LbXV5h9SFzYCx/2h50URBm0+9hndg0Rd23+xzYe14F6SI9HA9c1sPnjg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@smithy/fetch-http-handler": "^5.3.0", - "@smithy/node-http-handler": "^4.3.0", - "@smithy/property-provider": "^4.2.0", - "@smithy/protocol-http": "^5.3.0", - "@smithy/smithy-client": "^4.7.0", - "@smithy/types": "^4.6.0", - "@smithy/util-stream": "^4.4.0", + "@aws-sdk/core": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@smithy/fetch-http-handler": "^5.3.6", + "@smithy/node-http-handler": "^4.4.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/smithy-client": "^4.9.8", + "@smithy/types": "^4.9.0", + "@smithy/util-stream": "^4.5.6", "tslib": "^2.6.2" }, "engines": { @@ -1049,23 +1231,25 @@ } }, "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.901.0.tgz", - "integrity": "sha512-zxadcDS0hNJgv8n4hFYJNOXyfjaNE1vvqIiF/JzZSQpSSYXzCd+WxXef5bQh+W3giDtRUmkvP5JLbamEFjZKyw==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.936.0.tgz", + "integrity": "sha512-TbUv56ERQQujoHcLMcfL0Q6bVZfYF83gu/TjHkVkdSlHPOIKaG/mhE2XZSQzXv1cud6LlgeBbfzVAxJ+HPpffg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.901.0", - "@aws-sdk/credential-provider-env": "3.901.0", - "@aws-sdk/credential-provider-http": "3.901.0", - "@aws-sdk/credential-provider-process": "3.901.0", - "@aws-sdk/credential-provider-sso": "3.901.0", - "@aws-sdk/credential-provider-web-identity": "3.901.0", - "@aws-sdk/nested-clients": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@smithy/credential-provider-imds": "^4.2.0", - "@smithy/property-provider": "^4.2.0", - "@smithy/shared-ini-file-loader": "^4.3.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/core": "3.936.0", + "@aws-sdk/credential-provider-env": "3.936.0", + "@aws-sdk/credential-provider-http": "3.936.0", + "@aws-sdk/credential-provider-login": "3.936.0", + "@aws-sdk/credential-provider-process": "3.936.0", + "@aws-sdk/credential-provider-sso": "3.936.0", + "@aws-sdk/credential-provider-web-identity": "3.936.0", + "@aws-sdk/nested-clients": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@smithy/credential-provider-imds": "^4.2.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -1073,22 +1257,23 @@ } }, "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.901.0.tgz", - "integrity": "sha512-dPuFzMF7L1s/lQyT3wDxqLe82PyTH+5o1jdfseTEln64LJMl0ZMWaKX/C1UFNDxaTd35Cgt1bDbjjAWHMiKSFQ==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.936.0.tgz", + "integrity": "sha512-rk/2PCtxX9xDsQW8p5Yjoca3StqmQcSfkmD7nQ61AqAHL1YgpSQWqHE+HjfGGiHDYKG7PvE33Ku2GyA7lEIJAw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/credential-provider-env": "3.901.0", - "@aws-sdk/credential-provider-http": "3.901.0", - "@aws-sdk/credential-provider-ini": "3.901.0", - "@aws-sdk/credential-provider-process": "3.901.0", - "@aws-sdk/credential-provider-sso": "3.901.0", - "@aws-sdk/credential-provider-web-identity": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@smithy/credential-provider-imds": "^4.2.0", - "@smithy/property-provider": "^4.2.0", - "@smithy/shared-ini-file-loader": "^4.3.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/credential-provider-env": "3.936.0", + "@aws-sdk/credential-provider-http": "3.936.0", + "@aws-sdk/credential-provider-ini": "3.936.0", + "@aws-sdk/credential-provider-process": "3.936.0", + "@aws-sdk/credential-provider-sso": "3.936.0", + "@aws-sdk/credential-provider-web-identity": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@smithy/credential-provider-imds": "^4.2.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -1096,16 +1281,17 @@ } }, "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/credential-provider-process": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.901.0.tgz", - "integrity": "sha512-/IWgmgM3Cl1wTdJA5HqKMAojxLkYchh5kDuphApxKhupLu6Pu0JBOHU8A5GGeFvOycyaVwosod6zDduINZxe+A==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.936.0.tgz", + "integrity": "sha512-GpA4AcHb96KQK2PSPUyvChvrsEKiLhQ5NWjeef2IZ3Jc8JoosiedYqp6yhZR+S8cTysuvx56WyJIJc8y8OTrLA==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@smithy/property-provider": "^4.2.0", - "@smithy/shared-ini-file-loader": "^4.3.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/core": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -1113,18 +1299,19 @@ } }, "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.901.0.tgz", - "integrity": "sha512-SjmqZQHmqFSET7+6xcZgtH7yEyh5q53LN87GqwYlJZ6KJ5oNw11acUNEhUOL1xTSJEvaWqwTIkS2zqrzLcM9bw==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.936.0.tgz", + "integrity": "sha512-wHlEAJJvtnSyxTfNhN98JcU4taA1ED2JvuI2eePgawqBwS/Tzi0mhED1lvNIaWOkjfLd+nHALwszGrtJwEq4yQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/client-sso": "3.901.0", - "@aws-sdk/core": "3.901.0", - "@aws-sdk/token-providers": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@smithy/property-provider": "^4.2.0", - "@smithy/shared-ini-file-loader": "^4.3.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/client-sso": "3.936.0", + "@aws-sdk/core": "3.936.0", + "@aws-sdk/token-providers": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -1132,17 +1319,18 @@ } }, "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.901.0.tgz", - "integrity": "sha512-NYjy/6NLxH9m01+pfpB4ql8QgAorJcu8tw69kzHwUd/ql6wUDTbC7HcXqtKlIwWjzjgj2BKL7j6SyFapgCuafA==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.936.0.tgz", + "integrity": "sha512-v3qHAuoODkoRXsAF4RG+ZVO6q2P9yYBT4GMpMEfU9wXVNn7AIfwZgTwzSUfnjNiGva5BKleWVpRpJ9DeuLFbUg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.901.0", - "@aws-sdk/nested-clients": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@smithy/property-provider": "^4.2.0", - "@smithy/shared-ini-file-loader": "^4.3.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/core": "3.936.0", + "@aws-sdk/nested-clients": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -1150,14 +1338,15 @@ } }, "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.901.0.tgz", - "integrity": "sha512-yWX7GvRmqBtbNnUW7qbre3GvZmyYwU0WHefpZzDTYDoNgatuYq6LgUIQ+z5C04/kCRoFkAFrHag8a3BXqFzq5A==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.936.0.tgz", + "integrity": "sha512-tAaObaAnsP1XnLGndfkGWFuzrJYuk9W0b/nLvol66t8FZExIAf/WdkT2NNAWOYxljVs++oHnyHBCxIlaHrzSiw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.901.0", - "@smithy/protocol-http": "^5.3.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/types": "3.936.0", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -1165,13 +1354,14 @@ } }, "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/middleware-logger": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.901.0.tgz", - "integrity": "sha512-UoHebjE7el/tfRo8/CQTj91oNUm+5Heus5/a4ECdmWaSCHCS/hXTsU3PTTHAY67oAQR8wBLFPfp3mMvXjB+L2A==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.936.0.tgz", + "integrity": "sha512-aPSJ12d3a3Ea5nyEnLbijCaaYJT2QjQ9iW+zGh5QcZYXmOGWbKVyPSxmVOboZQG+c1M8t6d2O7tqrwzIq8L8qw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.901.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/types": "3.936.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -1179,15 +1369,16 @@ } }, "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.901.0.tgz", - "integrity": "sha512-Wd2t8qa/4OL0v/oDpCHHYkgsXJr8/ttCxrvCKAt0H1zZe2LlRhY9gpDVKqdertfHrHDj786fOvEQA28G1L75Dg==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.936.0.tgz", + "integrity": "sha512-l4aGbHpXM45YNgXggIux1HgsCVAvvBoqHPkqLnqMl9QVapfuSTjJHfDYDsx1Xxct6/m7qSMUzanBALhiaGO2fA==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.901.0", - "@aws/lambda-invoke-store": "^0.0.1", - "@smithy/protocol-http": "^5.3.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/types": "3.936.0", + "@aws/lambda-invoke-store": "^0.2.0", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -1195,17 +1386,18 @@ } }, "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.901.0.tgz", - "integrity": "sha512-Zby4F03fvD9xAgXGPywyk4bC1jCbnyubMEYChLYohD+x20ULQCf+AimF/Btn7YL+hBpzh1+RmqmvZcx+RgwgNQ==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.936.0.tgz", + "integrity": "sha512-YB40IPa7K3iaYX0lSnV9easDOLPLh+fJyUDF3BH8doX4i1AOSsYn86L4lVldmOaSX+DwiaqKHpvk4wPBdcIPWw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@aws-sdk/util-endpoints": "3.901.0", - "@smithy/core": "^3.14.0", - "@smithy/protocol-http": "^5.3.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/core": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@aws-sdk/util-endpoints": "3.936.0", + "@smithy/core": "^3.18.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -1213,47 +1405,48 @@ } }, "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/nested-clients": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.901.0.tgz", - "integrity": "sha512-feAAAMsVwctk2Tms40ONybvpfJPLCmSdI+G+OTrNpizkGLNl6ik2Ng2RzxY6UqOfN8abqKP/DOUj1qYDRDG8ag==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.936.0.tgz", + "integrity": "sha512-eyj2tz1XmDSLSZQ5xnB7cLTVKkSJnYAEoNDSUNhzWPxrBDYeJzIbatecOKceKCU8NBf8gWWZCK/CSY0mDxMO0A==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.901.0", - "@aws-sdk/middleware-host-header": "3.901.0", - "@aws-sdk/middleware-logger": "3.901.0", - "@aws-sdk/middleware-recursion-detection": "3.901.0", - "@aws-sdk/middleware-user-agent": "3.901.0", - "@aws-sdk/region-config-resolver": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@aws-sdk/util-endpoints": "3.901.0", - "@aws-sdk/util-user-agent-browser": "3.901.0", - "@aws-sdk/util-user-agent-node": "3.901.0", - "@smithy/config-resolver": "^4.3.0", - "@smithy/core": "^3.14.0", - "@smithy/fetch-http-handler": "^5.3.0", - "@smithy/hash-node": "^4.2.0", - "@smithy/invalid-dependency": "^4.2.0", - "@smithy/middleware-content-length": "^4.2.0", - "@smithy/middleware-endpoint": "^4.3.0", - "@smithy/middleware-retry": "^4.4.0", - "@smithy/middleware-serde": "^4.2.0", - "@smithy/middleware-stack": "^4.2.0", - "@smithy/node-config-provider": "^4.3.0", - "@smithy/node-http-handler": "^4.3.0", - "@smithy/protocol-http": "^5.3.0", - "@smithy/smithy-client": "^4.7.0", - "@smithy/types": "^4.6.0", - "@smithy/url-parser": "^4.2.0", - "@smithy/util-base64": "^4.2.0", + "@aws-sdk/core": "3.936.0", + "@aws-sdk/middleware-host-header": "3.936.0", + "@aws-sdk/middleware-logger": "3.936.0", + "@aws-sdk/middleware-recursion-detection": "3.936.0", + "@aws-sdk/middleware-user-agent": "3.936.0", + "@aws-sdk/region-config-resolver": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@aws-sdk/util-endpoints": "3.936.0", + "@aws-sdk/util-user-agent-browser": "3.936.0", + "@aws-sdk/util-user-agent-node": "3.936.0", + "@smithy/config-resolver": "^4.4.3", + "@smithy/core": "^3.18.5", + "@smithy/fetch-http-handler": "^5.3.6", + "@smithy/hash-node": "^4.2.5", + "@smithy/invalid-dependency": "^4.2.5", + "@smithy/middleware-content-length": "^4.2.5", + "@smithy/middleware-endpoint": "^4.3.12", + "@smithy/middleware-retry": "^4.4.12", + "@smithy/middleware-serde": "^4.2.6", + "@smithy/middleware-stack": "^4.2.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/node-http-handler": "^4.4.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/smithy-client": "^4.9.8", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", - "@smithy/util-body-length-node": "^4.2.0", - "@smithy/util-defaults-mode-browser": "^4.2.0", - "@smithy/util-defaults-mode-node": "^4.2.0", - "@smithy/util-endpoints": "^3.2.0", - "@smithy/util-middleware": "^4.2.0", - "@smithy/util-retry": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.11", + "@smithy/util-defaults-mode-node": "^4.2.14", + "@smithy/util-endpoints": "^3.2.5", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-retry": "^4.2.5", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, @@ -1262,34 +1455,33 @@ } }, "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.901.0.tgz", - "integrity": "sha512-7F0N888qVLHo4CSQOsnkZ4QAp8uHLKJ4v3u09Ly5k4AEStrSlFpckTPyUx6elwGL+fxGjNE2aakK8vEgzzCV0A==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.936.0.tgz", + "integrity": "sha512-wOKhzzWsshXGduxO4pqSiNyL9oUtk4BEvjWm9aaq6Hmfdoydq6v6t0rAGHWPjFwy9z2haovGRi3C8IxdMB4muw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.901.0", - "@smithy/node-config-provider": "^4.3.0", - "@smithy/types": "^4.6.0", - "@smithy/util-config-provider": "^4.2.0", - "@smithy/util-middleware": "^4.2.0", + "@aws-sdk/types": "3.936.0", + "@smithy/config-resolver": "^4.4.3", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/token-providers": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.901.0.tgz", - "integrity": "sha512-pJEr1Ggbc/uVTDqp9IbNu9hdr0eQf3yZix3s4Nnyvmg4xmJSGAlbPC9LrNr5u3CDZoc8Z9CuLrvbP4MwYquNpQ==", + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/util-endpoints": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.936.0.tgz", + "integrity": "sha512-0Zx3Ntdpu+z9Wlm7JKUBOzS9EunwKAb4KdGUQQxDqh5Lc3ta5uBoub+FgmVuzwnmBu9U1Os8UuwVTH0Lgu+P5w==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.901.0", - "@aws-sdk/nested-clients": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@smithy/property-provider": "^4.2.0", - "@smithy/shared-ini-file-loader": "^4.3.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/types": "3.936.0", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "@smithy/util-endpoints": "^3.2.5", "tslib": "^2.6.2" }, "engines": { @@ -1297,27 +1489,29 @@ } }, "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.901.0.tgz", - "integrity": "sha512-Ntb6V/WFI21Ed4PDgL/8NSfoZQQf9xzrwNgiwvnxgAl/KvAvRBgQtqj5gHsDX8Nj2YmJuVoHfH9BGjL9VQ4WNg==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.936.0.tgz", + "integrity": "sha512-eZ/XF6NxMtu+iCma58GRNRxSq4lHo6zHQLOZRIeL/ghqYJirqHdenMOwrzPettj60KWlv827RVebP9oNVrwZbw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.901.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/types": "3.936.0", + "@smithy/types": "^4.9.0", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.901.0.tgz", - "integrity": "sha512-l59KQP5TY7vPVUfEURc7P5BJKuNg1RSsAKBQW7LHLECXjLqDUbo2SMLrexLBEoArSt6E8QOrIN0C8z/0Xk0jYw==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.936.0.tgz", + "integrity": "sha512-XOEc7PF9Op00pWV2AYCGDSu5iHgYjIO53Py2VUQTIvP7SRCaCsXmA33mjBvC2Ms6FhSyWNa4aK4naUGIz0hQcw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-user-agent": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@smithy/node-config-provider": "^4.3.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/middleware-user-agent": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -1332,11 +1526,43 @@ } } }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/abort-controller": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz", + "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/node-http-handler": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.5.tgz", + "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/querystring-builder": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/@aws-sdk/client-cognito-identity/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -1345,66 +1571,65 @@ } }, "node_modules/@aws-sdk/client-s3": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.901.0.tgz", - "integrity": "sha512-wyKhZ51ur1tFuguZ6PgrUsot9KopqD0Tmxw8O8P/N3suQDxFPr0Yo7Y77ezDRDZQ95Ml3C0jlvx79HCo8VxdWA==", + "version": "3.937.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.937.0.tgz", + "integrity": "sha512-ioeNe6HSc7PxjsUQY7foSHmgesxM5KwAeUtPhIHgKx99nrM+7xYCfW4FMvHypUzz7ZOvqlCdH7CEAZ8ParBvVg==", + "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha1-browser": "5.2.0", "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.901.0", - "@aws-sdk/credential-provider-node": "3.901.0", - "@aws-sdk/middleware-bucket-endpoint": "3.901.0", - "@aws-sdk/middleware-expect-continue": "3.901.0", - "@aws-sdk/middleware-flexible-checksums": "3.901.0", - "@aws-sdk/middleware-host-header": "3.901.0", - "@aws-sdk/middleware-location-constraint": "3.901.0", - "@aws-sdk/middleware-logger": "3.901.0", - "@aws-sdk/middleware-recursion-detection": "3.901.0", - "@aws-sdk/middleware-sdk-s3": "3.901.0", - "@aws-sdk/middleware-ssec": "3.901.0", - "@aws-sdk/middleware-user-agent": "3.901.0", - "@aws-sdk/region-config-resolver": "3.901.0", - "@aws-sdk/signature-v4-multi-region": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@aws-sdk/util-endpoints": "3.901.0", - "@aws-sdk/util-user-agent-browser": "3.901.0", - "@aws-sdk/util-user-agent-node": "3.901.0", - "@aws-sdk/xml-builder": "3.901.0", - "@smithy/config-resolver": "^4.3.0", - "@smithy/core": "^3.14.0", - "@smithy/eventstream-serde-browser": "^4.2.0", - "@smithy/eventstream-serde-config-resolver": "^4.3.0", - "@smithy/eventstream-serde-node": "^4.2.0", - "@smithy/fetch-http-handler": "^5.3.0", - "@smithy/hash-blob-browser": "^4.2.0", - "@smithy/hash-node": "^4.2.0", - "@smithy/hash-stream-node": "^4.2.0", - "@smithy/invalid-dependency": "^4.2.0", - "@smithy/md5-js": "^4.2.0", - "@smithy/middleware-content-length": "^4.2.0", - "@smithy/middleware-endpoint": "^4.3.0", - "@smithy/middleware-retry": "^4.4.0", - "@smithy/middleware-serde": "^4.2.0", - "@smithy/middleware-stack": "^4.2.0", - "@smithy/node-config-provider": "^4.3.0", - "@smithy/node-http-handler": "^4.3.0", - "@smithy/protocol-http": "^5.3.0", - "@smithy/smithy-client": "^4.7.0", - "@smithy/types": "^4.6.0", - "@smithy/url-parser": "^4.2.0", - "@smithy/util-base64": "^4.2.0", + "@aws-sdk/core": "3.936.0", + "@aws-sdk/credential-provider-node": "3.936.0", + "@aws-sdk/middleware-bucket-endpoint": "3.936.0", + "@aws-sdk/middleware-expect-continue": "3.936.0", + "@aws-sdk/middleware-flexible-checksums": "3.936.0", + "@aws-sdk/middleware-host-header": "3.936.0", + "@aws-sdk/middleware-location-constraint": "3.936.0", + "@aws-sdk/middleware-logger": "3.936.0", + "@aws-sdk/middleware-recursion-detection": "3.936.0", + "@aws-sdk/middleware-sdk-s3": "3.936.0", + "@aws-sdk/middleware-ssec": "3.936.0", + "@aws-sdk/middleware-user-agent": "3.936.0", + "@aws-sdk/region-config-resolver": "3.936.0", + "@aws-sdk/signature-v4-multi-region": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@aws-sdk/util-endpoints": "3.936.0", + "@aws-sdk/util-user-agent-browser": "3.936.0", + "@aws-sdk/util-user-agent-node": "3.936.0", + "@smithy/config-resolver": "^4.4.3", + "@smithy/core": "^3.18.5", + "@smithy/eventstream-serde-browser": "^4.2.5", + "@smithy/eventstream-serde-config-resolver": "^4.3.5", + "@smithy/eventstream-serde-node": "^4.2.5", + "@smithy/fetch-http-handler": "^5.3.6", + "@smithy/hash-blob-browser": "^4.2.6", + "@smithy/hash-node": "^4.2.5", + "@smithy/hash-stream-node": "^4.2.5", + "@smithy/invalid-dependency": "^4.2.5", + "@smithy/md5-js": "^4.2.5", + "@smithy/middleware-content-length": "^4.2.5", + "@smithy/middleware-endpoint": "^4.3.12", + "@smithy/middleware-retry": "^4.4.12", + "@smithy/middleware-serde": "^4.2.6", + "@smithy/middleware-stack": "^4.2.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/node-http-handler": "^4.4.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/smithy-client": "^4.9.8", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", - "@smithy/util-body-length-node": "^4.2.0", - "@smithy/util-defaults-mode-browser": "^4.2.0", - "@smithy/util-defaults-mode-node": "^4.2.0", - "@smithy/util-endpoints": "^3.2.0", - "@smithy/util-middleware": "^4.2.0", - "@smithy/util-retry": "^4.2.0", - "@smithy/util-stream": "^4.4.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.11", + "@smithy/util-defaults-mode-node": "^4.2.14", + "@smithy/util-endpoints": "^3.2.5", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-retry": "^4.2.5", + "@smithy/util-stream": "^4.5.6", "@smithy/util-utf8": "^4.2.0", - "@smithy/util-waiter": "^4.2.0", - "@smithy/uuid": "^1.1.0", + "@smithy/util-waiter": "^4.2.5", "tslib": "^2.6.2" }, "engines": { @@ -1412,46 +1637,47 @@ } }, "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/client-sso": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.901.0.tgz", - "integrity": "sha512-sGyDjjkJ7ppaE+bAKL/Q5IvVCxtoyBIzN+7+hWTS/mUxWJ9EOq9238IqmVIIK6sYNIzEf9yhobfMARasPYVTNg==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.936.0.tgz", + "integrity": "sha512-0G73S2cDqYwJVvqL08eakj79MZG2QRaB56Ul8/Ps9oQxllr7DMI1IQ/N3j3xjxgpq/U36pkoFZ8aK1n7Sbr3IQ==", + "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.901.0", - "@aws-sdk/middleware-host-header": "3.901.0", - "@aws-sdk/middleware-logger": "3.901.0", - "@aws-sdk/middleware-recursion-detection": "3.901.0", - "@aws-sdk/middleware-user-agent": "3.901.0", - "@aws-sdk/region-config-resolver": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@aws-sdk/util-endpoints": "3.901.0", - "@aws-sdk/util-user-agent-browser": "3.901.0", - "@aws-sdk/util-user-agent-node": "3.901.0", - "@smithy/config-resolver": "^4.3.0", - "@smithy/core": "^3.14.0", - "@smithy/fetch-http-handler": "^5.3.0", - "@smithy/hash-node": "^4.2.0", - "@smithy/invalid-dependency": "^4.2.0", - "@smithy/middleware-content-length": "^4.2.0", - "@smithy/middleware-endpoint": "^4.3.0", - "@smithy/middleware-retry": "^4.4.0", - "@smithy/middleware-serde": "^4.2.0", - "@smithy/middleware-stack": "^4.2.0", - "@smithy/node-config-provider": "^4.3.0", - "@smithy/node-http-handler": "^4.3.0", - "@smithy/protocol-http": "^5.3.0", - "@smithy/smithy-client": "^4.7.0", - "@smithy/types": "^4.6.0", - "@smithy/url-parser": "^4.2.0", - "@smithy/util-base64": "^4.2.0", + "@aws-sdk/core": "3.936.0", + "@aws-sdk/middleware-host-header": "3.936.0", + "@aws-sdk/middleware-logger": "3.936.0", + "@aws-sdk/middleware-recursion-detection": "3.936.0", + "@aws-sdk/middleware-user-agent": "3.936.0", + "@aws-sdk/region-config-resolver": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@aws-sdk/util-endpoints": "3.936.0", + "@aws-sdk/util-user-agent-browser": "3.936.0", + "@aws-sdk/util-user-agent-node": "3.936.0", + "@smithy/config-resolver": "^4.4.3", + "@smithy/core": "^3.18.5", + "@smithy/fetch-http-handler": "^5.3.6", + "@smithy/hash-node": "^4.2.5", + "@smithy/invalid-dependency": "^4.2.5", + "@smithy/middleware-content-length": "^4.2.5", + "@smithy/middleware-endpoint": "^4.3.12", + "@smithy/middleware-retry": "^4.4.12", + "@smithy/middleware-serde": "^4.2.6", + "@smithy/middleware-stack": "^4.2.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/node-http-handler": "^4.4.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/smithy-client": "^4.9.8", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", - "@smithy/util-body-length-node": "^4.2.0", - "@smithy/util-defaults-mode-browser": "^4.2.0", - "@smithy/util-defaults-mode-node": "^4.2.0", - "@smithy/util-endpoints": "^3.2.0", - "@smithy/util-middleware": "^4.2.0", - "@smithy/util-retry": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.11", + "@smithy/util-defaults-mode-node": "^4.2.14", + "@smithy/util-endpoints": "^3.2.5", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-retry": "^4.2.5", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, @@ -1460,21 +1686,22 @@ } }, "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/core": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.901.0.tgz", - "integrity": "sha512-brKAc3y64tdhyuEf+OPIUln86bRTqkLgb9xkd6kUdIeA5+qmp/N6amItQz+RN4k4O3kqkCPYnAd3LonTKluobw==", - "dependencies": { - "@aws-sdk/types": "3.901.0", - "@aws-sdk/xml-builder": "3.901.0", - "@smithy/core": "^3.14.0", - "@smithy/node-config-provider": "^4.3.0", - "@smithy/property-provider": "^4.2.0", - "@smithy/protocol-http": "^5.3.0", - "@smithy/signature-v4": "^5.3.0", - "@smithy/smithy-client": "^4.7.0", - "@smithy/types": "^4.6.0", - "@smithy/util-base64": "^4.2.0", - "@smithy/util-middleware": "^4.2.0", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.936.0.tgz", + "integrity": "sha512-eGJ2ySUMvgtOziHhDRDLCrj473RJoL4J1vPjVM3NrKC/fF3/LoHjkut8AAnKmrW6a2uTzNKubigw8dEnpmpERw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.936.0", + "@aws-sdk/xml-builder": "3.930.0", + "@smithy/core": "^3.18.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/signature-v4": "^5.3.5", + "@smithy/smithy-client": "^4.9.8", + "@smithy/types": "^4.9.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-middleware": "^4.2.5", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, @@ -1483,14 +1710,15 @@ } }, "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-env": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.901.0.tgz", - "integrity": "sha512-5hAdVl3tBuARh3zX5MLJ1P/d+Kr5kXtDU3xm1pxUEF4xt2XkEEpwiX5fbkNkz2rbh3BCt2gOHsAbh6b3M7n+DA==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.936.0.tgz", + "integrity": "sha512-dKajFuaugEA5i9gCKzOaVy9uTeZcApE+7Z5wdcZ6j40523fY1a56khDAUYkCfwqa7sHci4ccmxBkAo+fW1RChA==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@smithy/property-provider": "^4.2.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/core": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@smithy/property-provider": "^4.2.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -1498,19 +1726,20 @@ } }, "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-http": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.901.0.tgz", - "integrity": "sha512-Ggr7+0M6QZEsrqRkK7iyJLf4LkIAacAxHz9c4dm9hnDdU7vqrlJm6g73IxMJXWN1bIV7IxfpzB11DsRrB/oNjQ==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.936.0.tgz", + "integrity": "sha512-5FguODLXG1tWx/x8fBxH+GVrk7Hey2LbXV5h9SFzYCx/2h50URBm0+9hndg0Rd23+xzYe14F6SI9HA9c1sPnjg==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@smithy/fetch-http-handler": "^5.3.0", - "@smithy/node-http-handler": "^4.3.0", - "@smithy/property-provider": "^4.2.0", - "@smithy/protocol-http": "^5.3.0", - "@smithy/smithy-client": "^4.7.0", - "@smithy/types": "^4.6.0", - "@smithy/util-stream": "^4.4.0", + "@aws-sdk/core": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@smithy/fetch-http-handler": "^5.3.6", + "@smithy/node-http-handler": "^4.4.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/smithy-client": "^4.9.8", + "@smithy/types": "^4.9.0", + "@smithy/util-stream": "^4.5.6", "tslib": "^2.6.2" }, "engines": { @@ -1518,22 +1747,24 @@ } }, "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.901.0.tgz", - "integrity": "sha512-zxadcDS0hNJgv8n4hFYJNOXyfjaNE1vvqIiF/JzZSQpSSYXzCd+WxXef5bQh+W3giDtRUmkvP5JLbamEFjZKyw==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.936.0.tgz", + "integrity": "sha512-TbUv56ERQQujoHcLMcfL0Q6bVZfYF83gu/TjHkVkdSlHPOIKaG/mhE2XZSQzXv1cud6LlgeBbfzVAxJ+HPpffg==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.901.0", - "@aws-sdk/credential-provider-env": "3.901.0", - "@aws-sdk/credential-provider-http": "3.901.0", - "@aws-sdk/credential-provider-process": "3.901.0", - "@aws-sdk/credential-provider-sso": "3.901.0", - "@aws-sdk/credential-provider-web-identity": "3.901.0", - "@aws-sdk/nested-clients": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@smithy/credential-provider-imds": "^4.2.0", - "@smithy/property-provider": "^4.2.0", - "@smithy/shared-ini-file-loader": "^4.3.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/core": "3.936.0", + "@aws-sdk/credential-provider-env": "3.936.0", + "@aws-sdk/credential-provider-http": "3.936.0", + "@aws-sdk/credential-provider-login": "3.936.0", + "@aws-sdk/credential-provider-process": "3.936.0", + "@aws-sdk/credential-provider-sso": "3.936.0", + "@aws-sdk/credential-provider-web-identity": "3.936.0", + "@aws-sdk/nested-clients": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@smithy/credential-provider-imds": "^4.2.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -1541,21 +1772,22 @@ } }, "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.901.0.tgz", - "integrity": "sha512-dPuFzMF7L1s/lQyT3wDxqLe82PyTH+5o1jdfseTEln64LJMl0ZMWaKX/C1UFNDxaTd35Cgt1bDbjjAWHMiKSFQ==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.936.0.tgz", + "integrity": "sha512-rk/2PCtxX9xDsQW8p5Yjoca3StqmQcSfkmD7nQ61AqAHL1YgpSQWqHE+HjfGGiHDYKG7PvE33Ku2GyA7lEIJAw==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/credential-provider-env": "3.901.0", - "@aws-sdk/credential-provider-http": "3.901.0", - "@aws-sdk/credential-provider-ini": "3.901.0", - "@aws-sdk/credential-provider-process": "3.901.0", - "@aws-sdk/credential-provider-sso": "3.901.0", - "@aws-sdk/credential-provider-web-identity": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@smithy/credential-provider-imds": "^4.2.0", - "@smithy/property-provider": "^4.2.0", - "@smithy/shared-ini-file-loader": "^4.3.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/credential-provider-env": "3.936.0", + "@aws-sdk/credential-provider-http": "3.936.0", + "@aws-sdk/credential-provider-ini": "3.936.0", + "@aws-sdk/credential-provider-process": "3.936.0", + "@aws-sdk/credential-provider-sso": "3.936.0", + "@aws-sdk/credential-provider-web-identity": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@smithy/credential-provider-imds": "^4.2.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -1563,15 +1795,16 @@ } }, "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-process": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.901.0.tgz", - "integrity": "sha512-/IWgmgM3Cl1wTdJA5HqKMAojxLkYchh5kDuphApxKhupLu6Pu0JBOHU8A5GGeFvOycyaVwosod6zDduINZxe+A==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.936.0.tgz", + "integrity": "sha512-GpA4AcHb96KQK2PSPUyvChvrsEKiLhQ5NWjeef2IZ3Jc8JoosiedYqp6yhZR+S8cTysuvx56WyJIJc8y8OTrLA==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@smithy/property-provider": "^4.2.0", - "@smithy/shared-ini-file-loader": "^4.3.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/core": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -1579,17 +1812,18 @@ } }, "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.901.0.tgz", - "integrity": "sha512-SjmqZQHmqFSET7+6xcZgtH7yEyh5q53LN87GqwYlJZ6KJ5oNw11acUNEhUOL1xTSJEvaWqwTIkS2zqrzLcM9bw==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.936.0.tgz", + "integrity": "sha512-wHlEAJJvtnSyxTfNhN98JcU4taA1ED2JvuI2eePgawqBwS/Tzi0mhED1lvNIaWOkjfLd+nHALwszGrtJwEq4yQ==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/client-sso": "3.901.0", - "@aws-sdk/core": "3.901.0", - "@aws-sdk/token-providers": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@smithy/property-provider": "^4.2.0", - "@smithy/shared-ini-file-loader": "^4.3.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/client-sso": "3.936.0", + "@aws-sdk/core": "3.936.0", + "@aws-sdk/token-providers": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -1597,16 +1831,17 @@ } }, "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.901.0.tgz", - "integrity": "sha512-NYjy/6NLxH9m01+pfpB4ql8QgAorJcu8tw69kzHwUd/ql6wUDTbC7HcXqtKlIwWjzjgj2BKL7j6SyFapgCuafA==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.936.0.tgz", + "integrity": "sha512-v3qHAuoODkoRXsAF4RG+ZVO6q2P9yYBT4GMpMEfU9wXVNn7AIfwZgTwzSUfnjNiGva5BKleWVpRpJ9DeuLFbUg==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.901.0", - "@aws-sdk/nested-clients": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@smithy/property-provider": "^4.2.0", - "@smithy/shared-ini-file-loader": "^4.3.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/core": "3.936.0", + "@aws-sdk/nested-clients": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -1614,13 +1849,14 @@ } }, "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.901.0.tgz", - "integrity": "sha512-yWX7GvRmqBtbNnUW7qbre3GvZmyYwU0WHefpZzDTYDoNgatuYq6LgUIQ+z5C04/kCRoFkAFrHag8a3BXqFzq5A==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.936.0.tgz", + "integrity": "sha512-tAaObaAnsP1XnLGndfkGWFuzrJYuk9W0b/nLvol66t8FZExIAf/WdkT2NNAWOYxljVs++oHnyHBCxIlaHrzSiw==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.901.0", - "@smithy/protocol-http": "^5.3.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/types": "3.936.0", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -1628,12 +1864,13 @@ } }, "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-logger": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.901.0.tgz", - "integrity": "sha512-UoHebjE7el/tfRo8/CQTj91oNUm+5Heus5/a4ECdmWaSCHCS/hXTsU3PTTHAY67oAQR8wBLFPfp3mMvXjB+L2A==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.936.0.tgz", + "integrity": "sha512-aPSJ12d3a3Ea5nyEnLbijCaaYJT2QjQ9iW+zGh5QcZYXmOGWbKVyPSxmVOboZQG+c1M8t6d2O7tqrwzIq8L8qw==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.901.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/types": "3.936.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -1641,14 +1878,15 @@ } }, "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.901.0.tgz", - "integrity": "sha512-Wd2t8qa/4OL0v/oDpCHHYkgsXJr8/ttCxrvCKAt0H1zZe2LlRhY9gpDVKqdertfHrHDj786fOvEQA28G1L75Dg==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.936.0.tgz", + "integrity": "sha512-l4aGbHpXM45YNgXggIux1HgsCVAvvBoqHPkqLnqMl9QVapfuSTjJHfDYDsx1Xxct6/m7qSMUzanBALhiaGO2fA==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.901.0", - "@aws/lambda-invoke-store": "^0.0.1", - "@smithy/protocol-http": "^5.3.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/types": "3.936.0", + "@aws/lambda-invoke-store": "^0.2.0", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -1656,16 +1894,17 @@ } }, "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.901.0.tgz", - "integrity": "sha512-Zby4F03fvD9xAgXGPywyk4bC1jCbnyubMEYChLYohD+x20ULQCf+AimF/Btn7YL+hBpzh1+RmqmvZcx+RgwgNQ==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.936.0.tgz", + "integrity": "sha512-YB40IPa7K3iaYX0lSnV9easDOLPLh+fJyUDF3BH8doX4i1AOSsYn86L4lVldmOaSX+DwiaqKHpvk4wPBdcIPWw==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@aws-sdk/util-endpoints": "3.901.0", - "@smithy/core": "^3.14.0", - "@smithy/protocol-http": "^5.3.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/core": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@aws-sdk/util-endpoints": "3.936.0", + "@smithy/core": "^3.18.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -1673,46 +1912,47 @@ } }, "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/nested-clients": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.901.0.tgz", - "integrity": "sha512-feAAAMsVwctk2Tms40ONybvpfJPLCmSdI+G+OTrNpizkGLNl6ik2Ng2RzxY6UqOfN8abqKP/DOUj1qYDRDG8ag==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.936.0.tgz", + "integrity": "sha512-eyj2tz1XmDSLSZQ5xnB7cLTVKkSJnYAEoNDSUNhzWPxrBDYeJzIbatecOKceKCU8NBf8gWWZCK/CSY0mDxMO0A==", + "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.901.0", - "@aws-sdk/middleware-host-header": "3.901.0", - "@aws-sdk/middleware-logger": "3.901.0", - "@aws-sdk/middleware-recursion-detection": "3.901.0", - "@aws-sdk/middleware-user-agent": "3.901.0", - "@aws-sdk/region-config-resolver": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@aws-sdk/util-endpoints": "3.901.0", - "@aws-sdk/util-user-agent-browser": "3.901.0", - "@aws-sdk/util-user-agent-node": "3.901.0", - "@smithy/config-resolver": "^4.3.0", - "@smithy/core": "^3.14.0", - "@smithy/fetch-http-handler": "^5.3.0", - "@smithy/hash-node": "^4.2.0", - "@smithy/invalid-dependency": "^4.2.0", - "@smithy/middleware-content-length": "^4.2.0", - "@smithy/middleware-endpoint": "^4.3.0", - "@smithy/middleware-retry": "^4.4.0", - "@smithy/middleware-serde": "^4.2.0", - "@smithy/middleware-stack": "^4.2.0", - "@smithy/node-config-provider": "^4.3.0", - "@smithy/node-http-handler": "^4.3.0", - "@smithy/protocol-http": "^5.3.0", - "@smithy/smithy-client": "^4.7.0", - "@smithy/types": "^4.6.0", - "@smithy/url-parser": "^4.2.0", - "@smithy/util-base64": "^4.2.0", + "@aws-sdk/core": "3.936.0", + "@aws-sdk/middleware-host-header": "3.936.0", + "@aws-sdk/middleware-logger": "3.936.0", + "@aws-sdk/middleware-recursion-detection": "3.936.0", + "@aws-sdk/middleware-user-agent": "3.936.0", + "@aws-sdk/region-config-resolver": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@aws-sdk/util-endpoints": "3.936.0", + "@aws-sdk/util-user-agent-browser": "3.936.0", + "@aws-sdk/util-user-agent-node": "3.936.0", + "@smithy/config-resolver": "^4.4.3", + "@smithy/core": "^3.18.5", + "@smithy/fetch-http-handler": "^5.3.6", + "@smithy/hash-node": "^4.2.5", + "@smithy/invalid-dependency": "^4.2.5", + "@smithy/middleware-content-length": "^4.2.5", + "@smithy/middleware-endpoint": "^4.3.12", + "@smithy/middleware-retry": "^4.4.12", + "@smithy/middleware-serde": "^4.2.6", + "@smithy/middleware-stack": "^4.2.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/node-http-handler": "^4.4.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/smithy-client": "^4.9.8", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", - "@smithy/util-body-length-node": "^4.2.0", - "@smithy/util-defaults-mode-browser": "^4.2.0", - "@smithy/util-defaults-mode-node": "^4.2.0", - "@smithy/util-endpoints": "^3.2.0", - "@smithy/util-middleware": "^4.2.0", - "@smithy/util-retry": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.11", + "@smithy/util-defaults-mode-node": "^4.2.14", + "@smithy/util-endpoints": "^3.2.5", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-retry": "^4.2.5", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, @@ -1721,32 +1961,31 @@ } }, "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.901.0.tgz", - "integrity": "sha512-7F0N888qVLHo4CSQOsnkZ4QAp8uHLKJ4v3u09Ly5k4AEStrSlFpckTPyUx6elwGL+fxGjNE2aakK8vEgzzCV0A==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.936.0.tgz", + "integrity": "sha512-wOKhzzWsshXGduxO4pqSiNyL9oUtk4BEvjWm9aaq6Hmfdoydq6v6t0rAGHWPjFwy9z2haovGRi3C8IxdMB4muw==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.901.0", - "@smithy/node-config-provider": "^4.3.0", - "@smithy/types": "^4.6.0", - "@smithy/util-config-provider": "^4.2.0", - "@smithy/util-middleware": "^4.2.0", + "@aws-sdk/types": "3.936.0", + "@smithy/config-resolver": "^4.4.3", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/token-providers": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.901.0.tgz", - "integrity": "sha512-pJEr1Ggbc/uVTDqp9IbNu9hdr0eQf3yZix3s4Nnyvmg4xmJSGAlbPC9LrNr5u3CDZoc8Z9CuLrvbP4MwYquNpQ==", + "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/util-endpoints": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.936.0.tgz", + "integrity": "sha512-0Zx3Ntdpu+z9Wlm7JKUBOzS9EunwKAb4KdGUQQxDqh5Lc3ta5uBoub+FgmVuzwnmBu9U1Os8UuwVTH0Lgu+P5w==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.901.0", - "@aws-sdk/nested-clients": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@smithy/property-provider": "^4.2.0", - "@smithy/shared-ini-file-loader": "^4.3.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/types": "3.936.0", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "@smithy/util-endpoints": "^3.2.5", "tslib": "^2.6.2" }, "engines": { @@ -1754,25 +1993,27 @@ } }, "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.901.0.tgz", - "integrity": "sha512-Ntb6V/WFI21Ed4PDgL/8NSfoZQQf9xzrwNgiwvnxgAl/KvAvRBgQtqj5gHsDX8Nj2YmJuVoHfH9BGjL9VQ4WNg==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.936.0.tgz", + "integrity": "sha512-eZ/XF6NxMtu+iCma58GRNRxSq4lHo6zHQLOZRIeL/ghqYJirqHdenMOwrzPettj60KWlv827RVebP9oNVrwZbw==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.901.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/types": "3.936.0", + "@smithy/types": "^4.9.0", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.901.0.tgz", - "integrity": "sha512-l59KQP5TY7vPVUfEURc7P5BJKuNg1RSsAKBQW7LHLECXjLqDUbo2SMLrexLBEoArSt6E8QOrIN0C8z/0Xk0jYw==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.936.0.tgz", + "integrity": "sha512-XOEc7PF9Op00pWV2AYCGDSu5iHgYjIO53Py2VUQTIvP7SRCaCsXmA33mjBvC2Ms6FhSyWNa4aK4naUGIz0hQcw==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-user-agent": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@smithy/node-config-provider": "^4.3.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/middleware-user-agent": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -1787,10 +2028,40 @@ } } }, + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/abort-controller": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz", + "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/node-http-handler": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.5.tgz", + "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/querystring-builder": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/@aws-sdk/client-s3/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -1802,6 +2073,7 @@ "version": "3.731.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.731.0.tgz", "integrity": "sha512-O4C/UYGgqMsBg21MMApFdgyh8BX568hQhbdoNFmRVTBoSnCZ3w+H4a1wBPX4Gyl0NX+ab6Xxo9rId8HiyPXJ0A==", + "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", @@ -1847,47 +2119,48 @@ } }, "node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.901.0.tgz", - "integrity": "sha512-b2BJ8WU7hIDkUsaNYK/VX/gTYV9ywN2SXddPcuHvvX8wxb9bfqBz1vNE+30oDh6/SLEjJt8gAVYQGlxpoAGa8g==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.936.0.tgz", + "integrity": "sha512-+yVLpCbA19NnD14FMUx1beLoYyZjoPu5IE9YjhBHN3DSYuF/nonDCwo/76j0oDe6LSQmZ0oJF3oMDAioFoYtDw==", + "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.901.0", - "@aws-sdk/credential-provider-node": "3.901.0", - "@aws-sdk/middleware-host-header": "3.901.0", - "@aws-sdk/middleware-logger": "3.901.0", - "@aws-sdk/middleware-recursion-detection": "3.901.0", - "@aws-sdk/middleware-user-agent": "3.901.0", - "@aws-sdk/region-config-resolver": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@aws-sdk/util-endpoints": "3.901.0", - "@aws-sdk/util-user-agent-browser": "3.901.0", - "@aws-sdk/util-user-agent-node": "3.901.0", - "@smithy/config-resolver": "^4.3.0", - "@smithy/core": "^3.14.0", - "@smithy/fetch-http-handler": "^5.3.0", - "@smithy/hash-node": "^4.2.0", - "@smithy/invalid-dependency": "^4.2.0", - "@smithy/middleware-content-length": "^4.2.0", - "@smithy/middleware-endpoint": "^4.3.0", - "@smithy/middleware-retry": "^4.4.0", - "@smithy/middleware-serde": "^4.2.0", - "@smithy/middleware-stack": "^4.2.0", - "@smithy/node-config-provider": "^4.3.0", - "@smithy/node-http-handler": "^4.3.0", - "@smithy/protocol-http": "^5.3.0", - "@smithy/smithy-client": "^4.7.0", - "@smithy/types": "^4.6.0", - "@smithy/url-parser": "^4.2.0", - "@smithy/util-base64": "^4.2.0", + "@aws-sdk/core": "3.936.0", + "@aws-sdk/credential-provider-node": "3.936.0", + "@aws-sdk/middleware-host-header": "3.936.0", + "@aws-sdk/middleware-logger": "3.936.0", + "@aws-sdk/middleware-recursion-detection": "3.936.0", + "@aws-sdk/middleware-user-agent": "3.936.0", + "@aws-sdk/region-config-resolver": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@aws-sdk/util-endpoints": "3.936.0", + "@aws-sdk/util-user-agent-browser": "3.936.0", + "@aws-sdk/util-user-agent-node": "3.936.0", + "@smithy/config-resolver": "^4.4.3", + "@smithy/core": "^3.18.5", + "@smithy/fetch-http-handler": "^5.3.6", + "@smithy/hash-node": "^4.2.5", + "@smithy/invalid-dependency": "^4.2.5", + "@smithy/middleware-content-length": "^4.2.5", + "@smithy/middleware-endpoint": "^4.3.12", + "@smithy/middleware-retry": "^4.4.12", + "@smithy/middleware-serde": "^4.2.6", + "@smithy/middleware-stack": "^4.2.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/node-http-handler": "^4.4.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/smithy-client": "^4.9.8", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", - "@smithy/util-body-length-node": "^4.2.0", - "@smithy/util-defaults-mode-browser": "^4.2.0", - "@smithy/util-defaults-mode-node": "^4.2.0", - "@smithy/util-endpoints": "^3.2.0", - "@smithy/util-middleware": "^4.2.0", - "@smithy/util-retry": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.11", + "@smithy/util-defaults-mode-node": "^4.2.14", + "@smithy/util-endpoints": "^3.2.5", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-retry": "^4.2.5", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, @@ -1896,46 +2169,47 @@ } }, "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/client-sso": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.901.0.tgz", - "integrity": "sha512-sGyDjjkJ7ppaE+bAKL/Q5IvVCxtoyBIzN+7+hWTS/mUxWJ9EOq9238IqmVIIK6sYNIzEf9yhobfMARasPYVTNg==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.936.0.tgz", + "integrity": "sha512-0G73S2cDqYwJVvqL08eakj79MZG2QRaB56Ul8/Ps9oQxllr7DMI1IQ/N3j3xjxgpq/U36pkoFZ8aK1n7Sbr3IQ==", + "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.901.0", - "@aws-sdk/middleware-host-header": "3.901.0", - "@aws-sdk/middleware-logger": "3.901.0", - "@aws-sdk/middleware-recursion-detection": "3.901.0", - "@aws-sdk/middleware-user-agent": "3.901.0", - "@aws-sdk/region-config-resolver": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@aws-sdk/util-endpoints": "3.901.0", - "@aws-sdk/util-user-agent-browser": "3.901.0", - "@aws-sdk/util-user-agent-node": "3.901.0", - "@smithy/config-resolver": "^4.3.0", - "@smithy/core": "^3.14.0", - "@smithy/fetch-http-handler": "^5.3.0", - "@smithy/hash-node": "^4.2.0", - "@smithy/invalid-dependency": "^4.2.0", - "@smithy/middleware-content-length": "^4.2.0", - "@smithy/middleware-endpoint": "^4.3.0", - "@smithy/middleware-retry": "^4.4.0", - "@smithy/middleware-serde": "^4.2.0", - "@smithy/middleware-stack": "^4.2.0", - "@smithy/node-config-provider": "^4.3.0", - "@smithy/node-http-handler": "^4.3.0", - "@smithy/protocol-http": "^5.3.0", - "@smithy/smithy-client": "^4.7.0", - "@smithy/types": "^4.6.0", - "@smithy/url-parser": "^4.2.0", - "@smithy/util-base64": "^4.2.0", + "@aws-sdk/core": "3.936.0", + "@aws-sdk/middleware-host-header": "3.936.0", + "@aws-sdk/middleware-logger": "3.936.0", + "@aws-sdk/middleware-recursion-detection": "3.936.0", + "@aws-sdk/middleware-user-agent": "3.936.0", + "@aws-sdk/region-config-resolver": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@aws-sdk/util-endpoints": "3.936.0", + "@aws-sdk/util-user-agent-browser": "3.936.0", + "@aws-sdk/util-user-agent-node": "3.936.0", + "@smithy/config-resolver": "^4.4.3", + "@smithy/core": "^3.18.5", + "@smithy/fetch-http-handler": "^5.3.6", + "@smithy/hash-node": "^4.2.5", + "@smithy/invalid-dependency": "^4.2.5", + "@smithy/middleware-content-length": "^4.2.5", + "@smithy/middleware-endpoint": "^4.3.12", + "@smithy/middleware-retry": "^4.4.12", + "@smithy/middleware-serde": "^4.2.6", + "@smithy/middleware-stack": "^4.2.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/node-http-handler": "^4.4.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/smithy-client": "^4.9.8", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", - "@smithy/util-body-length-node": "^4.2.0", - "@smithy/util-defaults-mode-browser": "^4.2.0", - "@smithy/util-defaults-mode-node": "^4.2.0", - "@smithy/util-endpoints": "^3.2.0", - "@smithy/util-middleware": "^4.2.0", - "@smithy/util-retry": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.11", + "@smithy/util-defaults-mode-node": "^4.2.14", + "@smithy/util-endpoints": "^3.2.5", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-retry": "^4.2.5", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, @@ -1944,21 +2218,22 @@ } }, "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/core": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.901.0.tgz", - "integrity": "sha512-brKAc3y64tdhyuEf+OPIUln86bRTqkLgb9xkd6kUdIeA5+qmp/N6amItQz+RN4k4O3kqkCPYnAd3LonTKluobw==", - "dependencies": { - "@aws-sdk/types": "3.901.0", - "@aws-sdk/xml-builder": "3.901.0", - "@smithy/core": "^3.14.0", - "@smithy/node-config-provider": "^4.3.0", - "@smithy/property-provider": "^4.2.0", - "@smithy/protocol-http": "^5.3.0", - "@smithy/signature-v4": "^5.3.0", - "@smithy/smithy-client": "^4.7.0", - "@smithy/types": "^4.6.0", - "@smithy/util-base64": "^4.2.0", - "@smithy/util-middleware": "^4.2.0", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.936.0.tgz", + "integrity": "sha512-eGJ2ySUMvgtOziHhDRDLCrj473RJoL4J1vPjVM3NrKC/fF3/LoHjkut8AAnKmrW6a2uTzNKubigw8dEnpmpERw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.936.0", + "@aws-sdk/xml-builder": "3.930.0", + "@smithy/core": "^3.18.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/signature-v4": "^5.3.5", + "@smithy/smithy-client": "^4.9.8", + "@smithy/types": "^4.9.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-middleware": "^4.2.5", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, @@ -1967,14 +2242,15 @@ } }, "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/credential-provider-env": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.901.0.tgz", - "integrity": "sha512-5hAdVl3tBuARh3zX5MLJ1P/d+Kr5kXtDU3xm1pxUEF4xt2XkEEpwiX5fbkNkz2rbh3BCt2gOHsAbh6b3M7n+DA==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.936.0.tgz", + "integrity": "sha512-dKajFuaugEA5i9gCKzOaVy9uTeZcApE+7Z5wdcZ6j40523fY1a56khDAUYkCfwqa7sHci4ccmxBkAo+fW1RChA==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@smithy/property-provider": "^4.2.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/core": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@smithy/property-provider": "^4.2.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -1982,19 +2258,20 @@ } }, "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/credential-provider-http": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.901.0.tgz", - "integrity": "sha512-Ggr7+0M6QZEsrqRkK7iyJLf4LkIAacAxHz9c4dm9hnDdU7vqrlJm6g73IxMJXWN1bIV7IxfpzB11DsRrB/oNjQ==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.936.0.tgz", + "integrity": "sha512-5FguODLXG1tWx/x8fBxH+GVrk7Hey2LbXV5h9SFzYCx/2h50URBm0+9hndg0Rd23+xzYe14F6SI9HA9c1sPnjg==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@smithy/fetch-http-handler": "^5.3.0", - "@smithy/node-http-handler": "^4.3.0", - "@smithy/property-provider": "^4.2.0", - "@smithy/protocol-http": "^5.3.0", - "@smithy/smithy-client": "^4.7.0", - "@smithy/types": "^4.6.0", - "@smithy/util-stream": "^4.4.0", + "@aws-sdk/core": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@smithy/fetch-http-handler": "^5.3.6", + "@smithy/node-http-handler": "^4.4.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/smithy-client": "^4.9.8", + "@smithy/types": "^4.9.0", + "@smithy/util-stream": "^4.5.6", "tslib": "^2.6.2" }, "engines": { @@ -2002,22 +2279,24 @@ } }, "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.901.0.tgz", - "integrity": "sha512-zxadcDS0hNJgv8n4hFYJNOXyfjaNE1vvqIiF/JzZSQpSSYXzCd+WxXef5bQh+W3giDtRUmkvP5JLbamEFjZKyw==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.936.0.tgz", + "integrity": "sha512-TbUv56ERQQujoHcLMcfL0Q6bVZfYF83gu/TjHkVkdSlHPOIKaG/mhE2XZSQzXv1cud6LlgeBbfzVAxJ+HPpffg==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.901.0", - "@aws-sdk/credential-provider-env": "3.901.0", - "@aws-sdk/credential-provider-http": "3.901.0", - "@aws-sdk/credential-provider-process": "3.901.0", - "@aws-sdk/credential-provider-sso": "3.901.0", - "@aws-sdk/credential-provider-web-identity": "3.901.0", - "@aws-sdk/nested-clients": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@smithy/credential-provider-imds": "^4.2.0", - "@smithy/property-provider": "^4.2.0", - "@smithy/shared-ini-file-loader": "^4.3.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/core": "3.936.0", + "@aws-sdk/credential-provider-env": "3.936.0", + "@aws-sdk/credential-provider-http": "3.936.0", + "@aws-sdk/credential-provider-login": "3.936.0", + "@aws-sdk/credential-provider-process": "3.936.0", + "@aws-sdk/credential-provider-sso": "3.936.0", + "@aws-sdk/credential-provider-web-identity": "3.936.0", + "@aws-sdk/nested-clients": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@smithy/credential-provider-imds": "^4.2.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -2025,21 +2304,22 @@ } }, "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.901.0.tgz", - "integrity": "sha512-dPuFzMF7L1s/lQyT3wDxqLe82PyTH+5o1jdfseTEln64LJMl0ZMWaKX/C1UFNDxaTd35Cgt1bDbjjAWHMiKSFQ==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.936.0.tgz", + "integrity": "sha512-rk/2PCtxX9xDsQW8p5Yjoca3StqmQcSfkmD7nQ61AqAHL1YgpSQWqHE+HjfGGiHDYKG7PvE33Ku2GyA7lEIJAw==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/credential-provider-env": "3.901.0", - "@aws-sdk/credential-provider-http": "3.901.0", - "@aws-sdk/credential-provider-ini": "3.901.0", - "@aws-sdk/credential-provider-process": "3.901.0", - "@aws-sdk/credential-provider-sso": "3.901.0", - "@aws-sdk/credential-provider-web-identity": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@smithy/credential-provider-imds": "^4.2.0", - "@smithy/property-provider": "^4.2.0", - "@smithy/shared-ini-file-loader": "^4.3.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/credential-provider-env": "3.936.0", + "@aws-sdk/credential-provider-http": "3.936.0", + "@aws-sdk/credential-provider-ini": "3.936.0", + "@aws-sdk/credential-provider-process": "3.936.0", + "@aws-sdk/credential-provider-sso": "3.936.0", + "@aws-sdk/credential-provider-web-identity": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@smithy/credential-provider-imds": "^4.2.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -2047,15 +2327,16 @@ } }, "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/credential-provider-process": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.901.0.tgz", - "integrity": "sha512-/IWgmgM3Cl1wTdJA5HqKMAojxLkYchh5kDuphApxKhupLu6Pu0JBOHU8A5GGeFvOycyaVwosod6zDduINZxe+A==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.936.0.tgz", + "integrity": "sha512-GpA4AcHb96KQK2PSPUyvChvrsEKiLhQ5NWjeef2IZ3Jc8JoosiedYqp6yhZR+S8cTysuvx56WyJIJc8y8OTrLA==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@smithy/property-provider": "^4.2.0", - "@smithy/shared-ini-file-loader": "^4.3.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/core": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -2063,17 +2344,18 @@ } }, "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.901.0.tgz", - "integrity": "sha512-SjmqZQHmqFSET7+6xcZgtH7yEyh5q53LN87GqwYlJZ6KJ5oNw11acUNEhUOL1xTSJEvaWqwTIkS2zqrzLcM9bw==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.936.0.tgz", + "integrity": "sha512-wHlEAJJvtnSyxTfNhN98JcU4taA1ED2JvuI2eePgawqBwS/Tzi0mhED1lvNIaWOkjfLd+nHALwszGrtJwEq4yQ==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/client-sso": "3.901.0", - "@aws-sdk/core": "3.901.0", - "@aws-sdk/token-providers": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@smithy/property-provider": "^4.2.0", - "@smithy/shared-ini-file-loader": "^4.3.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/client-sso": "3.936.0", + "@aws-sdk/core": "3.936.0", + "@aws-sdk/token-providers": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -2081,16 +2363,17 @@ } }, "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.901.0.tgz", - "integrity": "sha512-NYjy/6NLxH9m01+pfpB4ql8QgAorJcu8tw69kzHwUd/ql6wUDTbC7HcXqtKlIwWjzjgj2BKL7j6SyFapgCuafA==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.936.0.tgz", + "integrity": "sha512-v3qHAuoODkoRXsAF4RG+ZVO6q2P9yYBT4GMpMEfU9wXVNn7AIfwZgTwzSUfnjNiGva5BKleWVpRpJ9DeuLFbUg==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.901.0", - "@aws-sdk/nested-clients": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@smithy/property-provider": "^4.2.0", - "@smithy/shared-ini-file-loader": "^4.3.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/core": "3.936.0", + "@aws-sdk/nested-clients": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -2098,13 +2381,14 @@ } }, "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.901.0.tgz", - "integrity": "sha512-yWX7GvRmqBtbNnUW7qbre3GvZmyYwU0WHefpZzDTYDoNgatuYq6LgUIQ+z5C04/kCRoFkAFrHag8a3BXqFzq5A==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.936.0.tgz", + "integrity": "sha512-tAaObaAnsP1XnLGndfkGWFuzrJYuk9W0b/nLvol66t8FZExIAf/WdkT2NNAWOYxljVs++oHnyHBCxIlaHrzSiw==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.901.0", - "@smithy/protocol-http": "^5.3.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/types": "3.936.0", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -2112,12 +2396,13 @@ } }, "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/middleware-logger": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.901.0.tgz", - "integrity": "sha512-UoHebjE7el/tfRo8/CQTj91oNUm+5Heus5/a4ECdmWaSCHCS/hXTsU3PTTHAY67oAQR8wBLFPfp3mMvXjB+L2A==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.936.0.tgz", + "integrity": "sha512-aPSJ12d3a3Ea5nyEnLbijCaaYJT2QjQ9iW+zGh5QcZYXmOGWbKVyPSxmVOboZQG+c1M8t6d2O7tqrwzIq8L8qw==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.901.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/types": "3.936.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -2125,14 +2410,15 @@ } }, "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.901.0.tgz", - "integrity": "sha512-Wd2t8qa/4OL0v/oDpCHHYkgsXJr8/ttCxrvCKAt0H1zZe2LlRhY9gpDVKqdertfHrHDj786fOvEQA28G1L75Dg==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.936.0.tgz", + "integrity": "sha512-l4aGbHpXM45YNgXggIux1HgsCVAvvBoqHPkqLnqMl9QVapfuSTjJHfDYDsx1Xxct6/m7qSMUzanBALhiaGO2fA==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.901.0", - "@aws/lambda-invoke-store": "^0.0.1", - "@smithy/protocol-http": "^5.3.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/types": "3.936.0", + "@aws/lambda-invoke-store": "^0.2.0", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -2140,16 +2426,17 @@ } }, "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.901.0.tgz", - "integrity": "sha512-Zby4F03fvD9xAgXGPywyk4bC1jCbnyubMEYChLYohD+x20ULQCf+AimF/Btn7YL+hBpzh1+RmqmvZcx+RgwgNQ==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.936.0.tgz", + "integrity": "sha512-YB40IPa7K3iaYX0lSnV9easDOLPLh+fJyUDF3BH8doX4i1AOSsYn86L4lVldmOaSX+DwiaqKHpvk4wPBdcIPWw==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@aws-sdk/util-endpoints": "3.901.0", - "@smithy/core": "^3.14.0", - "@smithy/protocol-http": "^5.3.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/core": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@aws-sdk/util-endpoints": "3.936.0", + "@smithy/core": "^3.18.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -2157,46 +2444,47 @@ } }, "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/nested-clients": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.901.0.tgz", - "integrity": "sha512-feAAAMsVwctk2Tms40ONybvpfJPLCmSdI+G+OTrNpizkGLNl6ik2Ng2RzxY6UqOfN8abqKP/DOUj1qYDRDG8ag==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.936.0.tgz", + "integrity": "sha512-eyj2tz1XmDSLSZQ5xnB7cLTVKkSJnYAEoNDSUNhzWPxrBDYeJzIbatecOKceKCU8NBf8gWWZCK/CSY0mDxMO0A==", + "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.901.0", - "@aws-sdk/middleware-host-header": "3.901.0", - "@aws-sdk/middleware-logger": "3.901.0", - "@aws-sdk/middleware-recursion-detection": "3.901.0", - "@aws-sdk/middleware-user-agent": "3.901.0", - "@aws-sdk/region-config-resolver": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@aws-sdk/util-endpoints": "3.901.0", - "@aws-sdk/util-user-agent-browser": "3.901.0", - "@aws-sdk/util-user-agent-node": "3.901.0", - "@smithy/config-resolver": "^4.3.0", - "@smithy/core": "^3.14.0", - "@smithy/fetch-http-handler": "^5.3.0", - "@smithy/hash-node": "^4.2.0", - "@smithy/invalid-dependency": "^4.2.0", - "@smithy/middleware-content-length": "^4.2.0", - "@smithy/middleware-endpoint": "^4.3.0", - "@smithy/middleware-retry": "^4.4.0", - "@smithy/middleware-serde": "^4.2.0", - "@smithy/middleware-stack": "^4.2.0", - "@smithy/node-config-provider": "^4.3.0", - "@smithy/node-http-handler": "^4.3.0", - "@smithy/protocol-http": "^5.3.0", - "@smithy/smithy-client": "^4.7.0", - "@smithy/types": "^4.6.0", - "@smithy/url-parser": "^4.2.0", - "@smithy/util-base64": "^4.2.0", + "@aws-sdk/core": "3.936.0", + "@aws-sdk/middleware-host-header": "3.936.0", + "@aws-sdk/middleware-logger": "3.936.0", + "@aws-sdk/middleware-recursion-detection": "3.936.0", + "@aws-sdk/middleware-user-agent": "3.936.0", + "@aws-sdk/region-config-resolver": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@aws-sdk/util-endpoints": "3.936.0", + "@aws-sdk/util-user-agent-browser": "3.936.0", + "@aws-sdk/util-user-agent-node": "3.936.0", + "@smithy/config-resolver": "^4.4.3", + "@smithy/core": "^3.18.5", + "@smithy/fetch-http-handler": "^5.3.6", + "@smithy/hash-node": "^4.2.5", + "@smithy/invalid-dependency": "^4.2.5", + "@smithy/middleware-content-length": "^4.2.5", + "@smithy/middleware-endpoint": "^4.3.12", + "@smithy/middleware-retry": "^4.4.12", + "@smithy/middleware-serde": "^4.2.6", + "@smithy/middleware-stack": "^4.2.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/node-http-handler": "^4.4.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/smithy-client": "^4.9.8", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", - "@smithy/util-body-length-node": "^4.2.0", - "@smithy/util-defaults-mode-browser": "^4.2.0", - "@smithy/util-defaults-mode-node": "^4.2.0", - "@smithy/util-endpoints": "^3.2.0", - "@smithy/util-middleware": "^4.2.0", - "@smithy/util-retry": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.11", + "@smithy/util-defaults-mode-node": "^4.2.14", + "@smithy/util-endpoints": "^3.2.5", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-retry": "^4.2.5", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, @@ -2205,32 +2493,31 @@ } }, "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.901.0.tgz", - "integrity": "sha512-7F0N888qVLHo4CSQOsnkZ4QAp8uHLKJ4v3u09Ly5k4AEStrSlFpckTPyUx6elwGL+fxGjNE2aakK8vEgzzCV0A==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.936.0.tgz", + "integrity": "sha512-wOKhzzWsshXGduxO4pqSiNyL9oUtk4BEvjWm9aaq6Hmfdoydq6v6t0rAGHWPjFwy9z2haovGRi3C8IxdMB4muw==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.901.0", - "@smithy/node-config-provider": "^4.3.0", - "@smithy/types": "^4.6.0", - "@smithy/util-config-provider": "^4.2.0", - "@smithy/util-middleware": "^4.2.0", + "@aws-sdk/types": "3.936.0", + "@smithy/config-resolver": "^4.4.3", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/token-providers": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.901.0.tgz", - "integrity": "sha512-pJEr1Ggbc/uVTDqp9IbNu9hdr0eQf3yZix3s4Nnyvmg4xmJSGAlbPC9LrNr5u3CDZoc8Z9CuLrvbP4MwYquNpQ==", + "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/util-endpoints": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.936.0.tgz", + "integrity": "sha512-0Zx3Ntdpu+z9Wlm7JKUBOzS9EunwKAb4KdGUQQxDqh5Lc3ta5uBoub+FgmVuzwnmBu9U1Os8UuwVTH0Lgu+P5w==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.901.0", - "@aws-sdk/nested-clients": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@smithy/property-provider": "^4.2.0", - "@smithy/shared-ini-file-loader": "^4.3.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/types": "3.936.0", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "@smithy/util-endpoints": "^3.2.5", "tslib": "^2.6.2" }, "engines": { @@ -2238,25 +2525,27 @@ } }, "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.901.0.tgz", - "integrity": "sha512-Ntb6V/WFI21Ed4PDgL/8NSfoZQQf9xzrwNgiwvnxgAl/KvAvRBgQtqj5gHsDX8Nj2YmJuVoHfH9BGjL9VQ4WNg==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.936.0.tgz", + "integrity": "sha512-eZ/XF6NxMtu+iCma58GRNRxSq4lHo6zHQLOZRIeL/ghqYJirqHdenMOwrzPettj60KWlv827RVebP9oNVrwZbw==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.901.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/types": "3.936.0", + "@smithy/types": "^4.9.0", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.901.0.tgz", - "integrity": "sha512-l59KQP5TY7vPVUfEURc7P5BJKuNg1RSsAKBQW7LHLECXjLqDUbo2SMLrexLBEoArSt6E8QOrIN0C8z/0Xk0jYw==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.936.0.tgz", + "integrity": "sha512-XOEc7PF9Op00pWV2AYCGDSu5iHgYjIO53Py2VUQTIvP7SRCaCsXmA33mjBvC2Ms6FhSyWNa4aK4naUGIz0hQcw==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-user-agent": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@smithy/node-config-provider": "^4.3.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/middleware-user-agent": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -2271,10 +2560,40 @@ } } }, + "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/abort-controller": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz", + "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/node-http-handler": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.5.tgz", + "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/querystring-builder": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -2286,6 +2605,7 @@ "version": "3.731.0", "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz", "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==", + "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.0.0", "tslib": "^2.6.2" @@ -2294,14 +2614,41 @@ "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/client-sso/node_modules/@aws-sdk/util-endpoints": { - "version": "3.731.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.731.0.tgz", - "integrity": "sha512-riztxTAfncFS9yQWcBJffGgOgLoKSa63ph+rxWJxKl6BHAmWEvHICj1qDcVmnWfIcvJ5cClclY75l9qKaUH7rQ==", + "node_modules/@aws-sdk/client-sso/node_modules/@smithy/abort-controller": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz", + "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-sso/node_modules/@smithy/node-http-handler": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.5.tgz", + "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/querystring-builder": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-sso/node_modules/@smithy/types": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.731.0", - "@smithy/types": "^4.0.0", - "@smithy/util-endpoints": "^3.0.0", "tslib": "^2.6.2" }, "engines": { @@ -2312,6 +2659,7 @@ "version": "3.731.0", "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.731.0.tgz", "integrity": "sha512-ithBN1VWASkvAIlozJmenqDvNnFddr/SZXAs58+jCnBHgy3tXLHABZGVNCjetZkHRqNdXEO1kirnoxaFeXMeDA==", + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.731.0", "@smithy/core": "^3.0.0", @@ -2333,6 +2681,7 @@ "version": "3.731.0", "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz", "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==", + "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.0.0", "tslib": "^2.6.2" @@ -2342,15 +2691,16 @@ } }, "node_modules/@aws-sdk/credential-provider-cognito-identity": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.901.0.tgz", - "integrity": "sha512-irVFwiiEC+JRFQTZwI7264LOGXRjqdp3AvmqiEmmZS0+sJsEaF65prCs+nzw6J1WqQ6IZKClKKQsH7x8FfOPrQ==", + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.936.0.tgz", + "integrity": "sha512-+aSC59yiD4M5RcYp9Gx3iwX/n4hO3ZWA2Mxmkzmt9gYFBbJ9umx2LpBdrV64y57AtOvfGeo0h7PAXniIufagxw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/client-cognito-identity": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@smithy/property-provider": "^4.2.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/client-cognito-identity": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@smithy/property-provider": "^4.2.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -2358,10 +2708,11 @@ } }, "node_modules/@aws-sdk/credential-provider-cognito-identity/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -2373,6 +2724,7 @@ "version": "3.731.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.731.0.tgz", "integrity": "sha512-h0WWZg4QMLgFVyIvQrC43zpVqsUWg1mPM1clpogP43B8+wEhDEQ4qWRzvFs3dQ4cqx/FLyDUZZF4cqgd94z7kw==", + "license": "Apache-2.0", "dependencies": { "@aws-sdk/core": "3.731.0", "@aws-sdk/types": "3.731.0", @@ -2388,6 +2740,7 @@ "version": "3.731.0", "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz", "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==", + "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.0.0", "tslib": "^2.6.2" @@ -2400,6 +2753,7 @@ "version": "3.731.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.731.0.tgz", "integrity": "sha512-iRtrjtcYaWgbvtu2cvDhIsPWXZGvhy1Hgks4682MEBNTc9AUwlfvDrYz2EEnTtJJyrbOdEHVrYrzqD8qPyVLCg==", + "license": "Apache-2.0", "dependencies": { "@aws-sdk/core": "3.731.0", "@aws-sdk/types": "3.731.0", @@ -2420,6 +2774,7 @@ "version": "3.731.0", "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz", "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==", + "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.0.0", "tslib": "^2.6.2" @@ -2428,52 +2783,60 @@ "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.731.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.731.1.tgz", - "integrity": "sha512-0M0ejuqW8iHNcTH2ZXSY9m+I7Y06qVkj6k3vfQU9XaB//mTUCxxfGfqWAtgfr7Yi73egABTcPc0jyPdcvSW4Kw==", + "node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/abort-controller": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz", + "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.731.0", - "@aws-sdk/credential-provider-env": "3.731.0", - "@aws-sdk/credential-provider-http": "3.731.0", - "@aws-sdk/credential-provider-process": "3.731.0", - "@aws-sdk/credential-provider-sso": "3.731.1", - "@aws-sdk/credential-provider-web-identity": "3.731.1", - "@aws-sdk/nested-clients": "3.731.1", - "@aws-sdk/types": "3.731.0", - "@smithy/credential-provider-imds": "^4.0.0", - "@smithy/property-provider": "^4.0.0", - "@smithy/shared-ini-file-loader": "^4.0.0", - "@smithy/types": "^4.0.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/credential-provider-ini/node_modules/@aws-sdk/types": { - "version": "3.731.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz", - "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==", + "node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/node-http-handler": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.5.tgz", + "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==", + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.0.0", + "@smithy/abort-controller": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/querystring-builder": "^4.2.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/credential-provider-node": { + "node_modules/@aws-sdk/credential-provider-http/node_modules/@smithy/types": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-ini": { "version": "3.731.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.731.1.tgz", - "integrity": "sha512-5c0ZiagMTPmWilXNffeXJCLoCEz97jilHr3QJWwf2GaTay4tzN+Ld71rpdfEenzUR7fuxEWFfVlwQbFOzFNYHg==", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.731.1.tgz", + "integrity": "sha512-0M0ejuqW8iHNcTH2ZXSY9m+I7Y06qVkj6k3vfQU9XaB//mTUCxxfGfqWAtgfr7Yi73egABTcPc0jyPdcvSW4Kw==", + "license": "Apache-2.0", "dependencies": { + "@aws-sdk/core": "3.731.0", "@aws-sdk/credential-provider-env": "3.731.0", "@aws-sdk/credential-provider-http": "3.731.0", - "@aws-sdk/credential-provider-ini": "3.731.1", "@aws-sdk/credential-provider-process": "3.731.0", "@aws-sdk/credential-provider-sso": "3.731.1", "@aws-sdk/credential-provider-web-identity": "3.731.1", + "@aws-sdk/nested-clients": "3.731.1", "@aws-sdk/types": "3.731.0", "@smithy/credential-provider-imds": "^4.0.0", "@smithy/property-provider": "^4.0.0", @@ -2485,10 +2848,11 @@ "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/types": { + "node_modules/@aws-sdk/credential-provider-ini/node_modules/@aws-sdk/types": { "version": "3.731.0", "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz", "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==", + "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.0.0", "tslib": "^2.6.2" @@ -2497,164 +2861,154 @@ "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.731.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.731.0.tgz", - "integrity": "sha512-6yNMY6q3xHLbs2f2+C6GhvMrjTgtFBiPJJqKaPLsTIhlTRvh4sK8pGm3ITcma0jOxtPDIuoPfBAV8N8XVMBlZg==", - "dependencies": { - "@aws-sdk/core": "3.731.0", - "@aws-sdk/types": "3.731.0", - "@smithy/property-provider": "^4.0.0", - "@smithy/shared-ini-file-loader": "^4.0.0", - "@smithy/types": "^4.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-process/node_modules/@aws-sdk/types": { - "version": "3.731.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz", - "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==", + "node_modules/@aws-sdk/credential-provider-login": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.936.0.tgz", + "integrity": "sha512-8DVrdRqPyUU66gfV7VZNToh56ZuO5D6agWrkLQE/xbLJOm2RbeRgh6buz7CqV8ipRd6m+zCl9mM4F3osQLZn8Q==", + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.0.0", + "@aws-sdk/core": "3.936.0", + "@aws-sdk/nested-clients": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@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" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.731.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.731.1.tgz", - "integrity": "sha512-p1tp+rMUf5YNQLr8rVRmDgNtKGYLL0KCdq3K2hwwvFnx9MjReF1sA4lfm3xWsxBQM+j3QN9AvMQqBzDJ+NOSdw==", + "node_modules/@aws-sdk/credential-provider-login/node_modules/@aws-sdk/core": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.936.0.tgz", + "integrity": "sha512-eGJ2ySUMvgtOziHhDRDLCrj473RJoL4J1vPjVM3NrKC/fF3/LoHjkut8AAnKmrW6a2uTzNKubigw8dEnpmpERw==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/client-sso": "3.731.0", - "@aws-sdk/core": "3.731.0", - "@aws-sdk/token-providers": "3.731.1", - "@aws-sdk/types": "3.731.0", - "@smithy/property-provider": "^4.0.0", - "@smithy/shared-ini-file-loader": "^4.0.0", - "@smithy/types": "^4.0.0", + "@aws-sdk/types": "3.936.0", + "@aws-sdk/xml-builder": "3.930.0", + "@smithy/core": "^3.18.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/signature-v4": "^5.3.5", + "@smithy/smithy-client": "^4.9.8", + "@smithy/types": "^4.9.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/types": { - "version": "3.731.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz", - "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==", + "node_modules/@aws-sdk/credential-provider-login/node_modules/@aws-sdk/middleware-host-header": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.936.0.tgz", + "integrity": "sha512-tAaObaAnsP1XnLGndfkGWFuzrJYuk9W0b/nLvol66t8FZExIAf/WdkT2NNAWOYxljVs++oHnyHBCxIlaHrzSiw==", + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.0.0", + "@aws-sdk/types": "3.936.0", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.731.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.731.1.tgz", - "integrity": "sha512-+ynAvEGWDR5ZJFxgpwwzhvlQ3WQ7BleWXU6JwpIw3yFrD4eZEn85b8DZC1aEz7C9kb1HSV6B3gpqHqlyS6wj8g==", + "node_modules/@aws-sdk/credential-provider-login/node_modules/@aws-sdk/middleware-logger": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.936.0.tgz", + "integrity": "sha512-aPSJ12d3a3Ea5nyEnLbijCaaYJT2QjQ9iW+zGh5QcZYXmOGWbKVyPSxmVOboZQG+c1M8t6d2O7tqrwzIq8L8qw==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.731.0", - "@aws-sdk/nested-clients": "3.731.1", - "@aws-sdk/types": "3.731.0", - "@smithy/property-provider": "^4.0.0", - "@smithy/types": "^4.0.0", + "@aws-sdk/types": "3.936.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/credential-provider-web-identity/node_modules/@aws-sdk/types": { - "version": "3.731.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz", - "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==", + "node_modules/@aws-sdk/credential-provider-login/node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.936.0.tgz", + "integrity": "sha512-l4aGbHpXM45YNgXggIux1HgsCVAvvBoqHPkqLnqMl9QVapfuSTjJHfDYDsx1Xxct6/m7qSMUzanBALhiaGO2fA==", + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.0.0", + "@aws-sdk/types": "3.936.0", + "@aws/lambda-invoke-store": "^0.2.0", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/credential-providers": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.901.0.tgz", - "integrity": "sha512-jaJ+sVF9xuBwYiQznjrbDkw2W8/aQijGGdzroDL1mJfwyZA0hj3zfYUion+iWwjYhb0vS0bAyrIHtjtTfA2Qpw==", - "dev": true, + "node_modules/@aws-sdk/credential-provider-login/node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.936.0.tgz", + "integrity": "sha512-YB40IPa7K3iaYX0lSnV9easDOLPLh+fJyUDF3BH8doX4i1AOSsYn86L4lVldmOaSX+DwiaqKHpvk4wPBdcIPWw==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/client-cognito-identity": "3.901.0", - "@aws-sdk/core": "3.901.0", - "@aws-sdk/credential-provider-cognito-identity": "3.901.0", - "@aws-sdk/credential-provider-env": "3.901.0", - "@aws-sdk/credential-provider-http": "3.901.0", - "@aws-sdk/credential-provider-ini": "3.901.0", - "@aws-sdk/credential-provider-node": "3.901.0", - "@aws-sdk/credential-provider-process": "3.901.0", - "@aws-sdk/credential-provider-sso": "3.901.0", - "@aws-sdk/credential-provider-web-identity": "3.901.0", - "@aws-sdk/nested-clients": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@smithy/config-resolver": "^4.3.0", - "@smithy/core": "^3.14.0", - "@smithy/credential-provider-imds": "^4.2.0", - "@smithy/node-config-provider": "^4.3.0", - "@smithy/property-provider": "^4.2.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/core": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@aws-sdk/util-endpoints": "3.936.0", + "@smithy/core": "^3.18.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/client-sso": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.901.0.tgz", - "integrity": "sha512-sGyDjjkJ7ppaE+bAKL/Q5IvVCxtoyBIzN+7+hWTS/mUxWJ9EOq9238IqmVIIK6sYNIzEf9yhobfMARasPYVTNg==", - "dev": true, + "node_modules/@aws-sdk/credential-provider-login/node_modules/@aws-sdk/nested-clients": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.936.0.tgz", + "integrity": "sha512-eyj2tz1XmDSLSZQ5xnB7cLTVKkSJnYAEoNDSUNhzWPxrBDYeJzIbatecOKceKCU8NBf8gWWZCK/CSY0mDxMO0A==", + "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.901.0", - "@aws-sdk/middleware-host-header": "3.901.0", - "@aws-sdk/middleware-logger": "3.901.0", - "@aws-sdk/middleware-recursion-detection": "3.901.0", - "@aws-sdk/middleware-user-agent": "3.901.0", - "@aws-sdk/region-config-resolver": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@aws-sdk/util-endpoints": "3.901.0", - "@aws-sdk/util-user-agent-browser": "3.901.0", - "@aws-sdk/util-user-agent-node": "3.901.0", - "@smithy/config-resolver": "^4.3.0", - "@smithy/core": "^3.14.0", - "@smithy/fetch-http-handler": "^5.3.0", - "@smithy/hash-node": "^4.2.0", - "@smithy/invalid-dependency": "^4.2.0", - "@smithy/middleware-content-length": "^4.2.0", - "@smithy/middleware-endpoint": "^4.3.0", - "@smithy/middleware-retry": "^4.4.0", - "@smithy/middleware-serde": "^4.2.0", - "@smithy/middleware-stack": "^4.2.0", - "@smithy/node-config-provider": "^4.3.0", - "@smithy/node-http-handler": "^4.3.0", - "@smithy/protocol-http": "^5.3.0", - "@smithy/smithy-client": "^4.7.0", - "@smithy/types": "^4.6.0", - "@smithy/url-parser": "^4.2.0", - "@smithy/util-base64": "^4.2.0", + "@aws-sdk/core": "3.936.0", + "@aws-sdk/middleware-host-header": "3.936.0", + "@aws-sdk/middleware-logger": "3.936.0", + "@aws-sdk/middleware-recursion-detection": "3.936.0", + "@aws-sdk/middleware-user-agent": "3.936.0", + "@aws-sdk/region-config-resolver": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@aws-sdk/util-endpoints": "3.936.0", + "@aws-sdk/util-user-agent-browser": "3.936.0", + "@aws-sdk/util-user-agent-node": "3.936.0", + "@smithy/config-resolver": "^4.4.3", + "@smithy/core": "^3.18.5", + "@smithy/fetch-http-handler": "^5.3.6", + "@smithy/hash-node": "^4.2.5", + "@smithy/invalid-dependency": "^4.2.5", + "@smithy/middleware-content-length": "^4.2.5", + "@smithy/middleware-endpoint": "^4.3.12", + "@smithy/middleware-retry": "^4.4.12", + "@smithy/middleware-serde": "^4.2.6", + "@smithy/middleware-stack": "^4.2.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/node-http-handler": "^4.4.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/smithy-client": "^4.9.8", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", - "@smithy/util-body-length-node": "^4.2.0", - "@smithy/util-defaults-mode-browser": "^4.2.0", - "@smithy/util-defaults-mode-node": "^4.2.0", - "@smithy/util-endpoints": "^3.2.0", - "@smithy/util-middleware": "^4.2.0", - "@smithy/util-retry": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.11", + "@smithy/util-defaults-mode-node": "^4.2.14", + "@smithy/util-endpoints": "^3.2.5", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-retry": "^4.2.5", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, @@ -2662,793 +3016,883 @@ "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/core": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.901.0.tgz", - "integrity": "sha512-brKAc3y64tdhyuEf+OPIUln86bRTqkLgb9xkd6kUdIeA5+qmp/N6amItQz+RN4k4O3kqkCPYnAd3LonTKluobw==", - "dev": true, - "dependencies": { - "@aws-sdk/types": "3.901.0", - "@aws-sdk/xml-builder": "3.901.0", - "@smithy/core": "^3.14.0", - "@smithy/node-config-provider": "^4.3.0", - "@smithy/property-provider": "^4.2.0", - "@smithy/protocol-http": "^5.3.0", - "@smithy/signature-v4": "^5.3.0", - "@smithy/smithy-client": "^4.7.0", - "@smithy/types": "^4.6.0", - "@smithy/util-base64": "^4.2.0", - "@smithy/util-middleware": "^4.2.0", - "@smithy/util-utf8": "^4.2.0", + "node_modules/@aws-sdk/credential-provider-login/node_modules/@aws-sdk/region-config-resolver": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.936.0.tgz", + "integrity": "sha512-wOKhzzWsshXGduxO4pqSiNyL9oUtk4BEvjWm9aaq6Hmfdoydq6v6t0rAGHWPjFwy9z2haovGRi3C8IxdMB4muw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.936.0", + "@smithy/config-resolver": "^4.4.3", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/credential-provider-env": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.901.0.tgz", - "integrity": "sha512-5hAdVl3tBuARh3zX5MLJ1P/d+Kr5kXtDU3xm1pxUEF4xt2XkEEpwiX5fbkNkz2rbh3BCt2gOHsAbh6b3M7n+DA==", - "dev": true, + "node_modules/@aws-sdk/credential-provider-login/node_modules/@aws-sdk/util-endpoints": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.936.0.tgz", + "integrity": "sha512-0Zx3Ntdpu+z9Wlm7JKUBOzS9EunwKAb4KdGUQQxDqh5Lc3ta5uBoub+FgmVuzwnmBu9U1Os8UuwVTH0Lgu+P5w==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@smithy/property-provider": "^4.2.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/types": "3.936.0", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "@smithy/util-endpoints": "^3.2.5", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/credential-provider-http": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.901.0.tgz", - "integrity": "sha512-Ggr7+0M6QZEsrqRkK7iyJLf4LkIAacAxHz9c4dm9hnDdU7vqrlJm6g73IxMJXWN1bIV7IxfpzB11DsRrB/oNjQ==", - "dev": true, + "node_modules/@aws-sdk/credential-provider-login/node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.936.0.tgz", + "integrity": "sha512-eZ/XF6NxMtu+iCma58GRNRxSq4lHo6zHQLOZRIeL/ghqYJirqHdenMOwrzPettj60KWlv827RVebP9oNVrwZbw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.936.0", + "@smithy/types": "^4.9.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-sdk/credential-provider-login/node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.936.0.tgz", + "integrity": "sha512-XOEc7PF9Op00pWV2AYCGDSu5iHgYjIO53Py2VUQTIvP7SRCaCsXmA33mjBvC2Ms6FhSyWNa4aK4naUGIz0hQcw==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@smithy/fetch-http-handler": "^5.3.0", - "@smithy/node-http-handler": "^4.3.0", - "@smithy/property-provider": "^4.2.0", - "@smithy/protocol-http": "^5.3.0", - "@smithy/smithy-client": "^4.7.0", - "@smithy/types": "^4.6.0", - "@smithy/util-stream": "^4.4.0", + "@aws-sdk/middleware-user-agent": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } } }, - "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.901.0.tgz", - "integrity": "sha512-zxadcDS0hNJgv8n4hFYJNOXyfjaNE1vvqIiF/JzZSQpSSYXzCd+WxXef5bQh+W3giDtRUmkvP5JLbamEFjZKyw==", - "dev": true, + "node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/abort-controller": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz", + "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.901.0", - "@aws-sdk/credential-provider-env": "3.901.0", - "@aws-sdk/credential-provider-http": "3.901.0", - "@aws-sdk/credential-provider-process": "3.901.0", - "@aws-sdk/credential-provider-sso": "3.901.0", - "@aws-sdk/credential-provider-web-identity": "3.901.0", - "@aws-sdk/nested-clients": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@smithy/credential-provider-imds": "^4.2.0", - "@smithy/property-provider": "^4.2.0", - "@smithy/shared-ini-file-loader": "^4.3.0", - "@smithy/types": "^4.6.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.901.0.tgz", - "integrity": "sha512-dPuFzMF7L1s/lQyT3wDxqLe82PyTH+5o1jdfseTEln64LJMl0ZMWaKX/C1UFNDxaTd35Cgt1bDbjjAWHMiKSFQ==", - "dev": true, + "node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/node-http-handler": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.5.tgz", + "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/credential-provider-env": "3.901.0", - "@aws-sdk/credential-provider-http": "3.901.0", - "@aws-sdk/credential-provider-ini": "3.901.0", - "@aws-sdk/credential-provider-process": "3.901.0", - "@aws-sdk/credential-provider-sso": "3.901.0", - "@aws-sdk/credential-provider-web-identity": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@smithy/credential-provider-imds": "^4.2.0", - "@smithy/property-provider": "^4.2.0", - "@smithy/shared-ini-file-loader": "^4.3.0", - "@smithy/types": "^4.6.0", + "@smithy/abort-controller": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/querystring-builder": "^4.2.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/credential-provider-process": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.901.0.tgz", - "integrity": "sha512-/IWgmgM3Cl1wTdJA5HqKMAojxLkYchh5kDuphApxKhupLu6Pu0JBOHU8A5GGeFvOycyaVwosod6zDduINZxe+A==", - "dev": true, + "node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/types": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@smithy/property-provider": "^4.2.0", - "@smithy/shared-ini-file-loader": "^4.3.0", - "@smithy/types": "^4.6.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.901.0.tgz", - "integrity": "sha512-SjmqZQHmqFSET7+6xcZgtH7yEyh5q53LN87GqwYlJZ6KJ5oNw11acUNEhUOL1xTSJEvaWqwTIkS2zqrzLcM9bw==", - "dev": true, + "node_modules/@aws-sdk/credential-provider-node": { + "version": "3.731.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.731.1.tgz", + "integrity": "sha512-5c0ZiagMTPmWilXNffeXJCLoCEz97jilHr3QJWwf2GaTay4tzN+Ld71rpdfEenzUR7fuxEWFfVlwQbFOzFNYHg==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/client-sso": "3.901.0", - "@aws-sdk/core": "3.901.0", - "@aws-sdk/token-providers": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@smithy/property-provider": "^4.2.0", - "@smithy/shared-ini-file-loader": "^4.3.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/credential-provider-env": "3.731.0", + "@aws-sdk/credential-provider-http": "3.731.0", + "@aws-sdk/credential-provider-ini": "3.731.1", + "@aws-sdk/credential-provider-process": "3.731.0", + "@aws-sdk/credential-provider-sso": "3.731.1", + "@aws-sdk/credential-provider-web-identity": "3.731.1", + "@aws-sdk/types": "3.731.0", + "@smithy/credential-provider-imds": "^4.0.0", + "@smithy/property-provider": "^4.0.0", + "@smithy/shared-ini-file-loader": "^4.0.0", + "@smithy/types": "^4.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.901.0.tgz", - "integrity": "sha512-NYjy/6NLxH9m01+pfpB4ql8QgAorJcu8tw69kzHwUd/ql6wUDTbC7HcXqtKlIwWjzjgj2BKL7j6SyFapgCuafA==", - "dev": true, + "node_modules/@aws-sdk/credential-provider-node/node_modules/@aws-sdk/types": { + "version": "3.731.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz", + "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.901.0", - "@aws-sdk/nested-clients": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@smithy/property-provider": "^4.2.0", - "@smithy/shared-ini-file-loader": "^4.3.0", - "@smithy/types": "^4.6.0", + "@smithy/types": "^4.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.901.0.tgz", - "integrity": "sha512-yWX7GvRmqBtbNnUW7qbre3GvZmyYwU0WHefpZzDTYDoNgatuYq6LgUIQ+z5C04/kCRoFkAFrHag8a3BXqFzq5A==", - "dev": true, + "node_modules/@aws-sdk/credential-provider-process": { + "version": "3.731.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.731.0.tgz", + "integrity": "sha512-6yNMY6q3xHLbs2f2+C6GhvMrjTgtFBiPJJqKaPLsTIhlTRvh4sK8pGm3ITcma0jOxtPDIuoPfBAV8N8XVMBlZg==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.901.0", - "@smithy/protocol-http": "^5.3.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/core": "3.731.0", + "@aws-sdk/types": "3.731.0", + "@smithy/property-provider": "^4.0.0", + "@smithy/shared-ini-file-loader": "^4.0.0", + "@smithy/types": "^4.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/middleware-logger": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.901.0.tgz", - "integrity": "sha512-UoHebjE7el/tfRo8/CQTj91oNUm+5Heus5/a4ECdmWaSCHCS/hXTsU3PTTHAY67oAQR8wBLFPfp3mMvXjB+L2A==", - "dev": true, + "node_modules/@aws-sdk/credential-provider-process/node_modules/@aws-sdk/types": { + "version": "3.731.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz", + "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.901.0", - "@smithy/types": "^4.6.0", + "@smithy/types": "^4.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.901.0.tgz", - "integrity": "sha512-Wd2t8qa/4OL0v/oDpCHHYkgsXJr8/ttCxrvCKAt0H1zZe2LlRhY9gpDVKqdertfHrHDj786fOvEQA28G1L75Dg==", - "dev": true, + "node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.731.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.731.1.tgz", + "integrity": "sha512-p1tp+rMUf5YNQLr8rVRmDgNtKGYLL0KCdq3K2hwwvFnx9MjReF1sA4lfm3xWsxBQM+j3QN9AvMQqBzDJ+NOSdw==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.901.0", - "@aws/lambda-invoke-store": "^0.0.1", - "@smithy/protocol-http": "^5.3.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/client-sso": "3.731.0", + "@aws-sdk/core": "3.731.0", + "@aws-sdk/token-providers": "3.731.1", + "@aws-sdk/types": "3.731.0", + "@smithy/property-provider": "^4.0.0", + "@smithy/shared-ini-file-loader": "^4.0.0", + "@smithy/types": "^4.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.901.0.tgz", - "integrity": "sha512-Zby4F03fvD9xAgXGPywyk4bC1jCbnyubMEYChLYohD+x20ULQCf+AimF/Btn7YL+hBpzh1+RmqmvZcx+RgwgNQ==", - "dev": true, + "node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers": { + "version": "3.731.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.731.1.tgz", + "integrity": "sha512-t34GOPwBZsX7zGHjiTXmMHGY3kHM7fLiQ60Jqk0On9P0ASHTDE5U75RgCXboE3u+qEv9wyKyaqMNyMWj9qQlFg==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@aws-sdk/util-endpoints": "3.901.0", - "@smithy/core": "^3.14.0", - "@smithy/protocol-http": "^5.3.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/nested-clients": "3.731.1", + "@aws-sdk/types": "3.731.0", + "@smithy/property-provider": "^4.0.0", + "@smithy/shared-ini-file-loader": "^4.0.0", + "@smithy/types": "^4.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/nested-clients": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.901.0.tgz", - "integrity": "sha512-feAAAMsVwctk2Tms40ONybvpfJPLCmSdI+G+OTrNpizkGLNl6ik2Ng2RzxY6UqOfN8abqKP/DOUj1qYDRDG8ag==", - "dev": true, + "node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/types": { + "version": "3.731.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz", + "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==", + "license": "Apache-2.0", "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.901.0", - "@aws-sdk/middleware-host-header": "3.901.0", - "@aws-sdk/middleware-logger": "3.901.0", - "@aws-sdk/middleware-recursion-detection": "3.901.0", - "@aws-sdk/middleware-user-agent": "3.901.0", - "@aws-sdk/region-config-resolver": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@aws-sdk/util-endpoints": "3.901.0", - "@aws-sdk/util-user-agent-browser": "3.901.0", - "@aws-sdk/util-user-agent-node": "3.901.0", - "@smithy/config-resolver": "^4.3.0", - "@smithy/core": "^3.14.0", - "@smithy/fetch-http-handler": "^5.3.0", - "@smithy/hash-node": "^4.2.0", - "@smithy/invalid-dependency": "^4.2.0", - "@smithy/middleware-content-length": "^4.2.0", - "@smithy/middleware-endpoint": "^4.3.0", - "@smithy/middleware-retry": "^4.4.0", - "@smithy/middleware-serde": "^4.2.0", - "@smithy/middleware-stack": "^4.2.0", - "@smithy/node-config-provider": "^4.3.0", - "@smithy/node-http-handler": "^4.3.0", - "@smithy/protocol-http": "^5.3.0", - "@smithy/smithy-client": "^4.7.0", - "@smithy/types": "^4.6.0", - "@smithy/url-parser": "^4.2.0", - "@smithy/util-base64": "^4.2.0", - "@smithy/util-body-length-browser": "^4.2.0", - "@smithy/util-body-length-node": "^4.2.0", - "@smithy/util-defaults-mode-browser": "^4.2.0", - "@smithy/util-defaults-mode-node": "^4.2.0", - "@smithy/util-endpoints": "^3.2.0", - "@smithy/util-middleware": "^4.2.0", - "@smithy/util-retry": "^4.2.0", - "@smithy/util-utf8": "^4.2.0", + "@smithy/types": "^4.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.901.0.tgz", - "integrity": "sha512-7F0N888qVLHo4CSQOsnkZ4QAp8uHLKJ4v3u09Ly5k4AEStrSlFpckTPyUx6elwGL+fxGjNE2aakK8vEgzzCV0A==", - "dev": true, + "node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.731.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.731.1.tgz", + "integrity": "sha512-+ynAvEGWDR5ZJFxgpwwzhvlQ3WQ7BleWXU6JwpIw3yFrD4eZEn85b8DZC1aEz7C9kb1HSV6B3gpqHqlyS6wj8g==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.901.0", - "@smithy/node-config-provider": "^4.3.0", - "@smithy/types": "^4.6.0", - "@smithy/util-config-provider": "^4.2.0", - "@smithy/util-middleware": "^4.2.0", + "@aws-sdk/core": "3.731.0", + "@aws-sdk/nested-clients": "3.731.1", + "@aws-sdk/types": "3.731.0", + "@smithy/property-provider": "^4.0.0", + "@smithy/types": "^4.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/token-providers": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.901.0.tgz", - "integrity": "sha512-pJEr1Ggbc/uVTDqp9IbNu9hdr0eQf3yZix3s4Nnyvmg4xmJSGAlbPC9LrNr5u3CDZoc8Z9CuLrvbP4MwYquNpQ==", - "dev": true, + "node_modules/@aws-sdk/credential-provider-web-identity/node_modules/@aws-sdk/types": { + "version": "3.731.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz", + "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.901.0", - "@aws-sdk/nested-clients": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@smithy/property-provider": "^4.2.0", - "@smithy/shared-ini-file-loader": "^4.3.0", - "@smithy/types": "^4.6.0", + "@smithy/types": "^4.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.901.0.tgz", - "integrity": "sha512-Ntb6V/WFI21Ed4PDgL/8NSfoZQQf9xzrwNgiwvnxgAl/KvAvRBgQtqj5gHsDX8Nj2YmJuVoHfH9BGjL9VQ4WNg==", + "node_modules/@aws-sdk/credential-providers": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.936.0.tgz", + "integrity": "sha512-RWiX6wuReeEU7/P7apGwWMNO7nrai/CXmMMaho3+pJW7i6ImosgsjSe5tetdv1r4djOtM1b4J4WAbHPKJUahUg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.901.0", - "@smithy/types": "^4.6.0", - "bowser": "^2.11.0", + "@aws-sdk/client-cognito-identity": "3.936.0", + "@aws-sdk/core": "3.936.0", + "@aws-sdk/credential-provider-cognito-identity": "3.936.0", + "@aws-sdk/credential-provider-env": "3.936.0", + "@aws-sdk/credential-provider-http": "3.936.0", + "@aws-sdk/credential-provider-ini": "3.936.0", + "@aws-sdk/credential-provider-login": "3.936.0", + "@aws-sdk/credential-provider-node": "3.936.0", + "@aws-sdk/credential-provider-process": "3.936.0", + "@aws-sdk/credential-provider-sso": "3.936.0", + "@aws-sdk/credential-provider-web-identity": "3.936.0", + "@aws-sdk/nested-clients": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@smithy/config-resolver": "^4.4.3", + "@smithy/core": "^3.18.5", + "@smithy/credential-provider-imds": "^4.2.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.901.0.tgz", - "integrity": "sha512-l59KQP5TY7vPVUfEURc7P5BJKuNg1RSsAKBQW7LHLECXjLqDUbo2SMLrexLBEoArSt6E8QOrIN0C8z/0Xk0jYw==", + "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/client-sso": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.936.0.tgz", + "integrity": "sha512-0G73S2cDqYwJVvqL08eakj79MZG2QRaB56Ul8/Ps9oQxllr7DMI1IQ/N3j3xjxgpq/U36pkoFZ8aK1n7Sbr3IQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-user-agent": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@smithy/node-config-provider": "^4.3.0", - "@smithy/types": "^4.6.0", + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.936.0", + "@aws-sdk/middleware-host-header": "3.936.0", + "@aws-sdk/middleware-logger": "3.936.0", + "@aws-sdk/middleware-recursion-detection": "3.936.0", + "@aws-sdk/middleware-user-agent": "3.936.0", + "@aws-sdk/region-config-resolver": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@aws-sdk/util-endpoints": "3.936.0", + "@aws-sdk/util-user-agent-browser": "3.936.0", + "@aws-sdk/util-user-agent-node": "3.936.0", + "@smithy/config-resolver": "^4.4.3", + "@smithy/core": "^3.18.5", + "@smithy/fetch-http-handler": "^5.3.6", + "@smithy/hash-node": "^4.2.5", + "@smithy/invalid-dependency": "^4.2.5", + "@smithy/middleware-content-length": "^4.2.5", + "@smithy/middleware-endpoint": "^4.3.12", + "@smithy/middleware-retry": "^4.4.12", + "@smithy/middleware-serde": "^4.2.6", + "@smithy/middleware-stack": "^4.2.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/node-http-handler": "^4.4.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/smithy-client": "^4.9.8", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.11", + "@smithy/util-defaults-mode-node": "^4.2.14", + "@smithy/util-endpoints": "^3.2.5", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-retry": "^4.2.5", + "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" - }, - "peerDependencies": { - "aws-crt": ">=1.0.0" - }, - "peerDependenciesMeta": { - "aws-crt": { - "optional": true - } } }, - "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/core": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.936.0.tgz", + "integrity": "sha512-eGJ2ySUMvgtOziHhDRDLCrj473RJoL4J1vPjVM3NrKC/fF3/LoHjkut8AAnKmrW6a2uTzNKubigw8dEnpmpERw==", "dev": true, + "license": "Apache-2.0", "dependencies": { + "@aws-sdk/types": "3.936.0", + "@aws-sdk/xml-builder": "3.930.0", + "@smithy/core": "^3.18.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/signature-v4": "^5.3.5", + "@smithy/smithy-client": "^4.9.8", + "@smithy/types": "^4.9.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-bucket-endpoint": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.901.0.tgz", - "integrity": "sha512-mPF3N6eZlVs9G8aBSzvtoxR1RZqMo1aIwR+X8BAZSkhfj55fVF2no4IfPXfdFO3I66N+zEQ8nKoB0uTATWrogQ==", + "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/credential-provider-env": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.936.0.tgz", + "integrity": "sha512-dKajFuaugEA5i9gCKzOaVy9uTeZcApE+7Z5wdcZ6j40523fY1a56khDAUYkCfwqa7sHci4ccmxBkAo+fW1RChA==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.901.0", - "@aws-sdk/util-arn-parser": "3.893.0", - "@smithy/node-config-provider": "^4.3.0", - "@smithy/protocol-http": "^5.3.0", - "@smithy/types": "^4.6.0", - "@smithy/util-config-provider": "^4.2.0", + "@aws-sdk/core": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@smithy/property-provider": "^4.2.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-bucket-endpoint/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/credential-provider-http": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.936.0.tgz", + "integrity": "sha512-5FguODLXG1tWx/x8fBxH+GVrk7Hey2LbXV5h9SFzYCx/2h50URBm0+9hndg0Rd23+xzYe14F6SI9HA9c1sPnjg==", + "dev": true, + "license": "Apache-2.0", "dependencies": { + "@aws-sdk/core": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@smithy/fetch-http-handler": "^5.3.6", + "@smithy/node-http-handler": "^4.4.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/smithy-client": "^4.9.8", + "@smithy/types": "^4.9.0", + "@smithy/util-stream": "^4.5.6", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-expect-continue": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.901.0.tgz", - "integrity": "sha512-bwq9nj6MH38hlJwOY9QXIDwa6lI48UsaZpaXbdD71BljEIRlxDzfB4JaYb+ZNNK7RIAdzsP/K05mJty6KJAQHw==", + "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.936.0.tgz", + "integrity": "sha512-TbUv56ERQQujoHcLMcfL0Q6bVZfYF83gu/TjHkVkdSlHPOIKaG/mhE2XZSQzXv1cud6LlgeBbfzVAxJ+HPpffg==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.901.0", - "@smithy/protocol-http": "^5.3.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/core": "3.936.0", + "@aws-sdk/credential-provider-env": "3.936.0", + "@aws-sdk/credential-provider-http": "3.936.0", + "@aws-sdk/credential-provider-login": "3.936.0", + "@aws-sdk/credential-provider-process": "3.936.0", + "@aws-sdk/credential-provider-sso": "3.936.0", + "@aws-sdk/credential-provider-web-identity": "3.936.0", + "@aws-sdk/nested-clients": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@smithy/credential-provider-imds": "^4.2.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-expect-continue/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/credential-provider-node": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.936.0.tgz", + "integrity": "sha512-rk/2PCtxX9xDsQW8p5Yjoca3StqmQcSfkmD7nQ61AqAHL1YgpSQWqHE+HjfGGiHDYKG7PvE33Ku2GyA7lEIJAw==", + "dev": true, + "license": "Apache-2.0", "dependencies": { + "@aws-sdk/credential-provider-env": "3.936.0", + "@aws-sdk/credential-provider-http": "3.936.0", + "@aws-sdk/credential-provider-ini": "3.936.0", + "@aws-sdk/credential-provider-process": "3.936.0", + "@aws-sdk/credential-provider-sso": "3.936.0", + "@aws-sdk/credential-provider-web-identity": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@smithy/credential-provider-imds": "^4.2.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-flexible-checksums": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.901.0.tgz", - "integrity": "sha512-63lcKfggVUFyXhE4SsFXShCTCyh7ZHEqXLyYEL4DwX+VWtxutf9t9m3fF0TNUYDE8eEGWiRXhegj8l4FjuW+wA==", + "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/credential-provider-process": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.936.0.tgz", + "integrity": "sha512-GpA4AcHb96KQK2PSPUyvChvrsEKiLhQ5NWjeef2IZ3Jc8JoosiedYqp6yhZR+S8cTysuvx56WyJIJc8y8OTrLA==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-crypto/crc32": "5.2.0", - "@aws-crypto/crc32c": "5.2.0", - "@aws-crypto/util": "5.2.0", - "@aws-sdk/core": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@smithy/is-array-buffer": "^4.2.0", - "@smithy/node-config-provider": "^4.3.0", - "@smithy/protocol-http": "^5.3.0", - "@smithy/types": "^4.6.0", - "@smithy/util-middleware": "^4.2.0", - "@smithy/util-stream": "^4.4.0", - "@smithy/util-utf8": "^4.2.0", + "@aws-sdk/core": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@aws-sdk/core": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.901.0.tgz", - "integrity": "sha512-brKAc3y64tdhyuEf+OPIUln86bRTqkLgb9xkd6kUdIeA5+qmp/N6amItQz+RN4k4O3kqkCPYnAd3LonTKluobw==", - "dependencies": { - "@aws-sdk/types": "3.901.0", - "@aws-sdk/xml-builder": "3.901.0", - "@smithy/core": "^3.14.0", - "@smithy/node-config-provider": "^4.3.0", - "@smithy/property-provider": "^4.2.0", - "@smithy/protocol-http": "^5.3.0", - "@smithy/signature-v4": "^5.3.0", - "@smithy/smithy-client": "^4.7.0", - "@smithy/types": "^4.6.0", - "@smithy/util-base64": "^4.2.0", - "@smithy/util-middleware": "^4.2.0", - "@smithy/util-utf8": "^4.2.0", + "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.936.0.tgz", + "integrity": "sha512-wHlEAJJvtnSyxTfNhN98JcU4taA1ED2JvuI2eePgawqBwS/Tzi0mhED1lvNIaWOkjfLd+nHALwszGrtJwEq4yQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/client-sso": "3.936.0", + "@aws-sdk/core": "3.936.0", + "@aws-sdk/token-providers": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.936.0.tgz", + "integrity": "sha512-v3qHAuoODkoRXsAF4RG+ZVO6q2P9yYBT4GMpMEfU9wXVNn7AIfwZgTwzSUfnjNiGva5BKleWVpRpJ9DeuLFbUg==", + "dev": true, + "license": "Apache-2.0", "dependencies": { + "@aws-sdk/core": "3.936.0", + "@aws-sdk/nested-clients": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.731.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.731.0.tgz", - "integrity": "sha512-ndAJsm5uWPPJRZowLKpB1zuL17qWlWVtCJP4I/ynBkq1PU1DijDXBul2UZaG6Mpvsgms1NXo/h9noHuK7T3v8w==", + "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/middleware-host-header": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.936.0.tgz", + "integrity": "sha512-tAaObaAnsP1XnLGndfkGWFuzrJYuk9W0b/nLvol66t8FZExIAf/WdkT2NNAWOYxljVs++oHnyHBCxIlaHrzSiw==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.731.0", - "@smithy/protocol-http": "^5.0.0", - "@smithy/types": "^4.0.0", + "@aws-sdk/types": "3.936.0", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-host-header/node_modules/@aws-sdk/types": { - "version": "3.731.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz", - "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==", + "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/middleware-logger": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.936.0.tgz", + "integrity": "sha512-aPSJ12d3a3Ea5nyEnLbijCaaYJT2QjQ9iW+zGh5QcZYXmOGWbKVyPSxmVOboZQG+c1M8t6d2O7tqrwzIq8L8qw==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.0.0", + "@aws-sdk/types": "3.936.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-location-constraint": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.901.0.tgz", - "integrity": "sha512-MuCS5R2ngNoYifkVt05CTULvYVWX0dvRT0/Md4jE3a0u0yMygYy31C1zorwfE/SUgAQXyLmUx8ATmPp9PppImQ==", + "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.936.0.tgz", + "integrity": "sha512-l4aGbHpXM45YNgXggIux1HgsCVAvvBoqHPkqLnqMl9QVapfuSTjJHfDYDsx1Xxct6/m7qSMUzanBALhiaGO2fA==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.901.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/types": "3.936.0", + "@aws/lambda-invoke-store": "^0.2.0", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-location-constraint/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.936.0.tgz", + "integrity": "sha512-YB40IPa7K3iaYX0lSnV9easDOLPLh+fJyUDF3BH8doX4i1AOSsYn86L4lVldmOaSX+DwiaqKHpvk4wPBdcIPWw==", + "dev": true, + "license": "Apache-2.0", "dependencies": { + "@aws-sdk/core": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@aws-sdk/util-endpoints": "3.936.0", + "@smithy/core": "^3.18.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-logger": { - "version": "3.731.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.731.0.tgz", - "integrity": "sha512-IIZrOdjbY2vKzPJPrwE7FoFQCIPEL6UqURi8LEaiVyCag4p2fvaTN5pgKuQtGC2+iYd/HHcGT4qn2bAqF5Jmmw==", + "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/nested-clients": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.936.0.tgz", + "integrity": "sha512-eyj2tz1XmDSLSZQ5xnB7cLTVKkSJnYAEoNDSUNhzWPxrBDYeJzIbatecOKceKCU8NBf8gWWZCK/CSY0mDxMO0A==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.731.0", - "@smithy/types": "^4.0.0", + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.936.0", + "@aws-sdk/middleware-host-header": "3.936.0", + "@aws-sdk/middleware-logger": "3.936.0", + "@aws-sdk/middleware-recursion-detection": "3.936.0", + "@aws-sdk/middleware-user-agent": "3.936.0", + "@aws-sdk/region-config-resolver": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@aws-sdk/util-endpoints": "3.936.0", + "@aws-sdk/util-user-agent-browser": "3.936.0", + "@aws-sdk/util-user-agent-node": "3.936.0", + "@smithy/config-resolver": "^4.4.3", + "@smithy/core": "^3.18.5", + "@smithy/fetch-http-handler": "^5.3.6", + "@smithy/hash-node": "^4.2.5", + "@smithy/invalid-dependency": "^4.2.5", + "@smithy/middleware-content-length": "^4.2.5", + "@smithy/middleware-endpoint": "^4.3.12", + "@smithy/middleware-retry": "^4.4.12", + "@smithy/middleware-serde": "^4.2.6", + "@smithy/middleware-stack": "^4.2.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/node-http-handler": "^4.4.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/smithy-client": "^4.9.8", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.11", + "@smithy/util-defaults-mode-node": "^4.2.14", + "@smithy/util-endpoints": "^3.2.5", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-retry": "^4.2.5", + "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-logger/node_modules/@aws-sdk/types": { - "version": "3.731.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz", - "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==", + "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/region-config-resolver": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.936.0.tgz", + "integrity": "sha512-wOKhzzWsshXGduxO4pqSiNyL9oUtk4BEvjWm9aaq6Hmfdoydq6v6t0rAGHWPjFwy9z2haovGRi3C8IxdMB4muw==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.0.0", + "@aws-sdk/types": "3.936.0", + "@smithy/config-resolver": "^4.4.3", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.731.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.731.0.tgz", - "integrity": "sha512-y6FLASB1iKWuR5tUipMyo77bt0lEl3OnCrrd2xw/H24avq1HhJjjPR0HHhJE6QKJzF/FYXeV88tcyPSMe32VDw==", + "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/util-endpoints": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.936.0.tgz", + "integrity": "sha512-0Zx3Ntdpu+z9Wlm7JKUBOzS9EunwKAb4KdGUQQxDqh5Lc3ta5uBoub+FgmVuzwnmBu9U1Os8UuwVTH0Lgu+P5w==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.731.0", - "@smithy/protocol-http": "^5.0.0", - "@smithy/types": "^4.0.0", + "@aws-sdk/types": "3.936.0", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "@smithy/util-endpoints": "^3.2.5", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-recursion-detection/node_modules/@aws-sdk/types": { - "version": "3.731.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz", - "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==", + "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.936.0.tgz", + "integrity": "sha512-eZ/XF6NxMtu+iCma58GRNRxSq4lHo6zHQLOZRIeL/ghqYJirqHdenMOwrzPettj60KWlv827RVebP9oNVrwZbw==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.0.0", + "@aws-sdk/types": "3.936.0", + "@smithy/types": "^4.9.0", + "bowser": "^2.11.0", "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.901.0.tgz", - "integrity": "sha512-prgjVC3fDT2VIlmQPiw/cLee8r4frTam9GILRUVQyDdNtshNwV3MiaSCLzzQJjKJlLgnBLNUHJCSmvUVtg+3iA==", + "node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.936.0.tgz", + "integrity": "sha512-XOEc7PF9Op00pWV2AYCGDSu5iHgYjIO53Py2VUQTIvP7SRCaCsXmA33mjBvC2Ms6FhSyWNa4aK4naUGIz0hQcw==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@aws-sdk/util-arn-parser": "3.893.0", - "@smithy/core": "^3.14.0", - "@smithy/node-config-provider": "^4.3.0", - "@smithy/protocol-http": "^5.3.0", - "@smithy/signature-v4": "^5.3.0", - "@smithy/smithy-client": "^4.7.0", - "@smithy/types": "^4.6.0", - "@smithy/util-config-provider": "^4.2.0", - "@smithy/util-middleware": "^4.2.0", - "@smithy/util-stream": "^4.4.0", - "@smithy/util-utf8": "^4.2.0", + "@aws-sdk/middleware-user-agent": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } } }, - "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@aws-sdk/core": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.901.0.tgz", - "integrity": "sha512-brKAc3y64tdhyuEf+OPIUln86bRTqkLgb9xkd6kUdIeA5+qmp/N6amItQz+RN4k4O3kqkCPYnAd3LonTKluobw==", - "dependencies": { - "@aws-sdk/types": "3.901.0", - "@aws-sdk/xml-builder": "3.901.0", - "@smithy/core": "^3.14.0", - "@smithy/node-config-provider": "^4.3.0", - "@smithy/property-provider": "^4.2.0", - "@smithy/protocol-http": "^5.3.0", - "@smithy/signature-v4": "^5.3.0", - "@smithy/smithy-client": "^4.7.0", - "@smithy/types": "^4.6.0", - "@smithy/util-base64": "^4.2.0", - "@smithy/util-middleware": "^4.2.0", - "@smithy/util-utf8": "^4.2.0", + "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/abort-controller": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz", + "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/node-http-handler": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.5.tgz", + "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==", + "dev": true, + "license": "Apache-2.0", "dependencies": { + "@smithy/abort-controller": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/querystring-builder": "^4.2.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-ssec": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.901.0.tgz", - "integrity": "sha512-YiLLJmA3RvjL38mFLuu8fhTTGWtp2qT24VqpucgfoyziYcTgIQkJJmKi90Xp6R6/3VcArqilyRgM1+x8i/em+Q==", + "node_modules/@aws-sdk/credential-providers/node_modules/@smithy/types": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.901.0", - "@smithy/types": "^4.6.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-ssec/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "node_modules/@aws-sdk/middleware-bucket-endpoint": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.936.0.tgz", + "integrity": "sha512-XLSVVfAorUxZh6dzF+HTOp4R1B5EQcdpGcPliWr0KUj2jukgjZEcqbBmjyMF/p9bmyQsONX80iURF1HLAlW0qg==", + "license": "Apache-2.0", "dependencies": { + "@aws-sdk/types": "3.936.0", + "@aws-sdk/util-arn-parser": "3.893.0", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "@smithy/util-config-provider": "^4.2.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.731.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.731.0.tgz", - "integrity": "sha512-Ngr2Gz0aec/uduoKaO3srN52SYkEHndYtFzkK/gDUyQwQzi4ha2eIisxPiuHEX6RvXT31V9ouqn/YtVkt0R76A==", + "node_modules/@aws-sdk/middleware-bucket-endpoint/node_modules/@smithy/types": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.731.0", - "@aws-sdk/types": "3.731.0", - "@aws-sdk/util-endpoints": "3.731.0", - "@smithy/core": "^3.0.0", - "@smithy/protocol-http": "^5.0.0", - "@smithy/types": "^4.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-user-agent/node_modules/@aws-sdk/types": { - "version": "3.731.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz", - "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==", + "node_modules/@aws-sdk/middleware-expect-continue": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.936.0.tgz", + "integrity": "sha512-Eb4ELAC23bEQLJmUMYnPWcjD3FZIsmz2svDiXEcxRkQU9r7NRID7pM7C5NPH94wOfiCk0b2Y8rVyFXW0lGQwbA==", + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.0.0", + "@aws-sdk/types": "3.936.0", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-user-agent/node_modules/@aws-sdk/util-endpoints": { - "version": "3.731.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.731.0.tgz", - "integrity": "sha512-riztxTAfncFS9yQWcBJffGgOgLoKSa63ph+rxWJxKl6BHAmWEvHICj1qDcVmnWfIcvJ5cClclY75l9qKaUH7rQ==", + "node_modules/@aws-sdk/middleware-expect-continue/node_modules/@smithy/types": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.731.0", - "@smithy/types": "^4.0.0", - "@smithy/util-endpoints": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/nested-clients": { - "version": "3.731.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.731.1.tgz", - "integrity": "sha512-/L8iVrulnXZl+kgmTn+oxRxNnhcSIbf+r12C06vGUq60w0YMidLvxJZN7vt8H9SnCAGCHqud2MS7ExCEvhc0gA==", + "node_modules/@aws-sdk/middleware-flexible-checksums": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.936.0.tgz", + "integrity": "sha512-l3GG6CrSQtMCM6fWY7foV3JQv0WJWT+3G6PSP3Ceb/KEE/5Lz5PrYFXTBf+bVoYL1b0bGjGajcgAXpstBmtHtQ==", + "license": "Apache-2.0", "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.731.0", - "@aws-sdk/middleware-host-header": "3.731.0", - "@aws-sdk/middleware-logger": "3.731.0", - "@aws-sdk/middleware-recursion-detection": "3.731.0", - "@aws-sdk/middleware-user-agent": "3.731.0", - "@aws-sdk/region-config-resolver": "3.731.0", - "@aws-sdk/types": "3.731.0", - "@aws-sdk/util-endpoints": "3.731.0", - "@aws-sdk/util-user-agent-browser": "3.731.0", - "@aws-sdk/util-user-agent-node": "3.731.0", - "@smithy/config-resolver": "^4.0.0", - "@smithy/core": "^3.0.0", - "@smithy/fetch-http-handler": "^5.0.0", - "@smithy/hash-node": "^4.0.0", - "@smithy/invalid-dependency": "^4.0.0", - "@smithy/middleware-content-length": "^4.0.0", - "@smithy/middleware-endpoint": "^4.0.0", - "@smithy/middleware-retry": "^4.0.0", - "@smithy/middleware-serde": "^4.0.0", - "@smithy/middleware-stack": "^4.0.0", - "@smithy/node-config-provider": "^4.0.0", - "@smithy/node-http-handler": "^4.0.0", - "@smithy/protocol-http": "^5.0.0", - "@smithy/smithy-client": "^4.0.0", - "@smithy/types": "^4.0.0", - "@smithy/url-parser": "^4.0.0", - "@smithy/util-base64": "^4.0.0", - "@smithy/util-body-length-browser": "^4.0.0", - "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.0", - "@smithy/util-defaults-mode-node": "^4.0.0", - "@smithy/util-endpoints": "^3.0.0", - "@smithy/util-middleware": "^4.0.0", - "@smithy/util-retry": "^4.0.0", - "@smithy/util-utf8": "^4.0.0", + "@aws-crypto/crc32": "5.2.0", + "@aws-crypto/crc32c": "5.2.0", + "@aws-crypto/util": "5.2.0", + "@aws-sdk/core": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@smithy/is-array-buffer": "^4.2.0", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-stream": "^4.5.6", + "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/types": { - "version": "3.731.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz", - "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==", + "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@aws-sdk/core": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.936.0.tgz", + "integrity": "sha512-eGJ2ySUMvgtOziHhDRDLCrj473RJoL4J1vPjVM3NrKC/fF3/LoHjkut8AAnKmrW6a2uTzNKubigw8dEnpmpERw==", + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.0.0", + "@aws-sdk/types": "3.936.0", + "@aws-sdk/xml-builder": "3.930.0", + "@smithy/core": "^3.18.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/signature-v4": "^5.3.5", + "@smithy/smithy-client": "^4.9.8", + "@smithy/types": "^4.9.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/util-endpoints": { - "version": "3.731.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.731.0.tgz", - "integrity": "sha512-riztxTAfncFS9yQWcBJffGgOgLoKSa63ph+rxWJxKl6BHAmWEvHICj1qDcVmnWfIcvJ5cClclY75l9qKaUH7rQ==", + "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@smithy/types": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.731.0", - "@smithy/types": "^4.0.0", - "@smithy/util-endpoints": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/region-config-resolver": { + "node_modules/@aws-sdk/middleware-host-header": { "version": "3.731.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.731.0.tgz", - "integrity": "sha512-XlDpRNkDVHF59f07JmkuAidEv//m3hT6/JL85h0l3+zrpaRWhf8n8lVUyAPNq35ZujK8AcorYM+93u7hdWsliQ==", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.731.0.tgz", + "integrity": "sha512-ndAJsm5uWPPJRZowLKpB1zuL17qWlWVtCJP4I/ynBkq1PU1DijDXBul2UZaG6Mpvsgms1NXo/h9noHuK7T3v8w==", + "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.731.0", - "@smithy/node-config-provider": "^4.0.0", + "@smithy/protocol-http": "^5.0.0", "@smithy/types": "^4.0.0", - "@smithy/util-config-provider": "^4.0.0", - "@smithy/util-middleware": "^4.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/region-config-resolver/node_modules/@aws-sdk/types": { + "node_modules/@aws-sdk/middleware-host-header/node_modules/@aws-sdk/types": { "version": "3.731.0", "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz", "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==", + "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.0.0", "tslib": "^2.6.2" @@ -3457,26 +3901,25 @@ "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/signature-v4-multi-region": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.901.0.tgz", - "integrity": "sha512-2IWxbll/pRucp1WQkHi2W5E2SVPGBvk4Is923H7gpNksbVFws18ItjMM8ZpGm44cJEoy1zR5gjhLFklatpuoOw==", + "node_modules/@aws-sdk/middleware-location-constraint": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.936.0.tgz", + "integrity": "sha512-SCMPenDtQMd9o5da9JzkHz838w3327iqXk3cbNnXWqnNRx6unyW8FL0DZ84gIY12kAyVHz5WEqlWuekc15ehfw==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-sdk-s3": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@smithy/protocol-http": "^5.3.0", - "@smithy/signature-v4": "^5.3.0", - "@smithy/types": "^4.6.0", + "@aws-sdk/types": "3.936.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/signature-v4-multi-region/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "node_modules/@aws-sdk/middleware-location-constraint/node_modules/@smithy/types": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -3484,15 +3927,13 @@ "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/token-providers": { - "version": "3.731.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.731.1.tgz", - "integrity": "sha512-t34GOPwBZsX7zGHjiTXmMHGY3kHM7fLiQ60Jqk0On9P0ASHTDE5U75RgCXboE3u+qEv9wyKyaqMNyMWj9qQlFg==", + "node_modules/@aws-sdk/middleware-logger": { + "version": "3.731.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.731.0.tgz", + "integrity": "sha512-IIZrOdjbY2vKzPJPrwE7FoFQCIPEL6UqURi8LEaiVyCag4p2fvaTN5pgKuQtGC2+iYd/HHcGT4qn2bAqF5Jmmw==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/nested-clients": "3.731.1", "@aws-sdk/types": "3.731.0", - "@smithy/property-provider": "^4.0.0", - "@smithy/shared-ini-file-loader": "^4.0.0", "@smithy/types": "^4.0.0", "tslib": "^2.6.2" }, @@ -3500,10 +3941,11 @@ "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types": { + "node_modules/@aws-sdk/middleware-logger/node_modules/@aws-sdk/types": { "version": "3.731.0", "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz", "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==", + "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.0.0", "tslib": "^2.6.2" @@ -3512,59 +3954,88 @@ "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/types": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.901.0.tgz", - "integrity": "sha512-FfEM25hLEs4LoXsLXQ/q6X6L4JmKkKkbVFpKD4mwfVHtRVQG6QxJiCPcrkcPISquiy6esbwK2eh64TWbiD60cg==", + "node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.731.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.731.0.tgz", + "integrity": "sha512-y6FLASB1iKWuR5tUipMyo77bt0lEl3OnCrrd2xw/H24avq1HhJjjPR0HHhJE6QKJzF/FYXeV88tcyPSMe32VDw==", + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.6.0", + "@aws-sdk/types": "3.731.0", + "@smithy/protocol-http": "^5.0.0", + "@smithy/types": "^4.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/types/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "node_modules/@aws-sdk/middleware-recursion-detection/node_modules/@aws-sdk/types": { + "version": "3.731.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz", + "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==", + "license": "Apache-2.0", "dependencies": { + "@smithy/types": "^4.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/util-arn-parser": { - "version": "3.893.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.893.0.tgz", - "integrity": "sha512-u8H4f2Zsi19DGnwj5FSZzDMhytYF/bCh37vAtBsn3cNDL3YG578X5oc+wSX54pM3tOxS+NY7tvOAo52SW7koUA==", + "node_modules/@aws-sdk/middleware-sdk-s3": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.936.0.tgz", + "integrity": "sha512-UQs/pVq4cOygsnKON0pOdSKIWkfgY0dzq4h+fR+xHi/Ng3XzxPJhWeAE6tDsKrcyQc1X8UdSbS70XkfGYr5hng==", + "license": "Apache-2.0", "dependencies": { + "@aws-sdk/core": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@aws-sdk/util-arn-parser": "3.893.0", + "@smithy/core": "^3.18.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/signature-v4": "^5.3.5", + "@smithy/smithy-client": "^4.9.8", + "@smithy/types": "^4.9.0", + "@smithy/util-config-provider": "^4.2.0", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-stream": "^4.5.6", + "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/util-endpoints": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.901.0.tgz", - "integrity": "sha512-5nZP3hGA8FHEtKvEQf4Aww5QZOkjLW1Z+NixSd+0XKfHvA39Ah5sZboScjLx0C9kti/K3OGW1RCx5K9Zc3bZqg==", + "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@aws-sdk/core": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.936.0.tgz", + "integrity": "sha512-eGJ2ySUMvgtOziHhDRDLCrj473RJoL4J1vPjVM3NrKC/fF3/LoHjkut8AAnKmrW6a2uTzNKubigw8dEnpmpERw==", + "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "3.901.0", - "@smithy/types": "^4.6.0", - "@smithy/url-parser": "^4.2.0", - "@smithy/util-endpoints": "^3.2.0", + "@aws-sdk/types": "3.936.0", + "@aws-sdk/xml-builder": "3.930.0", + "@smithy/core": "^3.18.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/signature-v4": "^5.3.5", + "@smithy/smithy-client": "^4.9.8", + "@smithy/types": "^4.9.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/util-endpoints/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/types": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -3572,65 +4043,55 @@ "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/util-locate-window": { - "version": "3.893.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.893.0.tgz", - "integrity": "sha512-T89pFfgat6c8nMmpI8eKjBcDcgJq36+m9oiXbcUzeU55MP9ZuGgBomGjGnHaEyF36jenW9gmg3NfZDm0AO2XPg==", + "node_modules/@aws-sdk/middleware-ssec": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.936.0.tgz", + "integrity": "sha512-/GLC9lZdVp05ozRik5KsuODR/N7j+W+2TbfdFL3iS+7un+gnP6hC8RDOZd6WhpZp7drXQ9guKiTAxkZQwzS8DA==", + "license": "Apache-2.0", "dependencies": { + "@aws-sdk/types": "3.936.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/util-retry": { - "version": "3.374.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-retry/-/util-retry-3.374.0.tgz", - "integrity": "sha512-0p/trhYU+Ys8j3vMnWCvAkSOL6JRMooV9dVlQ+o7EHbQs9kDtnyucMUHU09ahHSIPTA/n/013hv7bzIt3MyKQg==", - "deprecated": "This package has moved to @smithy/util-retry", - "dependencies": { - "@smithy/util-retry": "^1.0.3", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">= 14.0.0" - } - }, - "node_modules/@aws-sdk/util-retry/node_modules/@smithy/service-error-classification": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-1.1.0.tgz", - "integrity": "sha512-OCTEeJ1igatd5kFrS2VDlYbainNNpf7Lj1siFOxnRWqYOP9oNvC5HOJBd3t+Z8MbrmehBtuDJ2QqeBsfeiNkww==", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/util-retry/node_modules/@smithy/util-retry": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-1.1.0.tgz", - "integrity": "sha512-ygQW5HBqYXpR3ua09UciS0sL7UGJzGiktrKkOuEJwARoUuzz40yaEGU6xd9Gs7KBmAaFC8gMfnghHtwZ2nyBCQ==", + "node_modules/@aws-sdk/middleware-ssec/node_modules/@smithy/types": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { - "@smithy/service-error-classification": "^1.1.0", - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">= 14.0.0" + "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/util-user-agent-browser": { + "node_modules/@aws-sdk/middleware-user-agent": { "version": "3.731.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.731.0.tgz", - "integrity": "sha512-EnYXxTkCNCjTTBjW/pelRPv4Thsi9jepoB6qQjPMA9/ixrZ71BhhQecz9kgqzZLR9BPCwb6hgJ/Yd702jqJ4aQ==", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.731.0.tgz", + "integrity": "sha512-Ngr2Gz0aec/uduoKaO3srN52SYkEHndYtFzkK/gDUyQwQzi4ha2eIisxPiuHEX6RvXT31V9ouqn/YtVkt0R76A==", + "license": "Apache-2.0", "dependencies": { + "@aws-sdk/core": "3.731.0", "@aws-sdk/types": "3.731.0", + "@aws-sdk/util-endpoints": "3.731.0", + "@smithy/core": "^3.0.0", + "@smithy/protocol-http": "^5.0.0", "@smithy/types": "^4.0.0", - "bowser": "^2.11.0", "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/util-user-agent-browser/node_modules/@aws-sdk/types": { + "node_modules/@aws-sdk/middleware-user-agent/node_modules/@aws-sdk/types": { "version": "3.731.0", "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz", "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==", + "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.0.0", "tslib": "^2.6.2" @@ -3639,33 +4100,60 @@ "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.731.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.731.0.tgz", - "integrity": "sha512-Rze78Ym5Bx7aWMvmZE2iL3JPo2INNCC5N9rLVx98Gg1G0ZaxclVRUvJrh1AojNlOFxU+otkxAe7FA3Foy2iLLQ==", + "node_modules/@aws-sdk/nested-clients": { + "version": "3.731.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.731.1.tgz", + "integrity": "sha512-/L8iVrulnXZl+kgmTn+oxRxNnhcSIbf+r12C06vGUq60w0YMidLvxJZN7vt8H9SnCAGCHqud2MS7ExCEvhc0gA==", + "license": "Apache-2.0", "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.731.0", + "@aws-sdk/middleware-host-header": "3.731.0", + "@aws-sdk/middleware-logger": "3.731.0", + "@aws-sdk/middleware-recursion-detection": "3.731.0", "@aws-sdk/middleware-user-agent": "3.731.0", + "@aws-sdk/region-config-resolver": "3.731.0", "@aws-sdk/types": "3.731.0", + "@aws-sdk/util-endpoints": "3.731.0", + "@aws-sdk/util-user-agent-browser": "3.731.0", + "@aws-sdk/util-user-agent-node": "3.731.0", + "@smithy/config-resolver": "^4.0.0", + "@smithy/core": "^3.0.0", + "@smithy/fetch-http-handler": "^5.0.0", + "@smithy/hash-node": "^4.0.0", + "@smithy/invalid-dependency": "^4.0.0", + "@smithy/middleware-content-length": "^4.0.0", + "@smithy/middleware-endpoint": "^4.0.0", + "@smithy/middleware-retry": "^4.0.0", + "@smithy/middleware-serde": "^4.0.0", + "@smithy/middleware-stack": "^4.0.0", "@smithy/node-config-provider": "^4.0.0", + "@smithy/node-http-handler": "^4.0.0", + "@smithy/protocol-http": "^5.0.0", + "@smithy/smithy-client": "^4.0.0", "@smithy/types": "^4.0.0", + "@smithy/url-parser": "^4.0.0", + "@smithy/util-base64": "^4.0.0", + "@smithy/util-body-length-browser": "^4.0.0", + "@smithy/util-body-length-node": "^4.0.0", + "@smithy/util-defaults-mode-browser": "^4.0.0", + "@smithy/util-defaults-mode-node": "^4.0.0", + "@smithy/util-endpoints": "^3.0.0", + "@smithy/util-middleware": "^4.0.0", + "@smithy/util-retry": "^4.0.0", + "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" - }, - "peerDependencies": { - "aws-crt": ">=1.0.0" - }, - "peerDependenciesMeta": { - "aws-crt": { - "optional": true - } } }, - "node_modules/@aws-sdk/util-user-agent-node/node_modules/@aws-sdk/types": { + "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/types": { "version": "3.731.0", "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz", "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==", + "license": "Apache-2.0", "dependencies": { "@smithy/types": "^4.0.0", "tslib": "^2.6.2" @@ -3674,3007 +4162,3748 @@ "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/xml-builder": { - "version": "3.901.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.901.0.tgz", - "integrity": "sha512-pxFCkuAP7Q94wMTNPAwi6hEtNrp/BdFf+HOrIEeFQsk4EoOmpKY3I6S+u6A9Wg295J80Kh74LqDWM22ux3z6Aw==", + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/abort-controller": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz", + "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==", + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.6.0", - "fast-xml-parser": "5.2.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/node-http-handler": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.5.tgz", + "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==", + "license": "Apache-2.0", "dependencies": { + "@smithy/abort-controller": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/querystring-builder": "^4.2.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser": { - "version": "5.2.5", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.2.5.tgz", - "integrity": "sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/types": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { - "strnum": "^2.1.0" + "tslib": "^2.6.2" }, - "bin": { - "fxparser": "src/cli/cli.js" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/xml-builder/node_modules/strnum": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.1.tgz", - "integrity": "sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ] - }, - "node_modules/@aws/chat-client": { - "resolved": "chat-client", - "link": true - }, - "node_modules/@aws/chat-client-ui-types": { - "version": "0.1.68", - "resolved": "https://registry.npmjs.org/@aws/chat-client-ui-types/-/chat-client-ui-types-0.1.68.tgz", - "integrity": "sha512-T4sYp0HajJOyUk6sNhcP6BCpFUEFeS2/S7AnrhSUT2Zi2z1cujMUEquk5K5rwMee7IJSY6Y3GVc/6zE+O9vQfg==", + "node_modules/@aws-sdk/region-config-resolver": { + "version": "3.731.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.731.0.tgz", + "integrity": "sha512-XlDpRNkDVHF59f07JmkuAidEv//m3hT6/JL85h0l3+zrpaRWhf8n8lVUyAPNq35ZujK8AcorYM+93u7hdWsliQ==", "license": "Apache-2.0", "dependencies": { - "@aws/language-server-runtimes-types": "^0.1.62" + "@aws-sdk/types": "3.731.0", + "@smithy/node-config-provider": "^4.0.0", + "@smithy/types": "^4.0.0", + "@smithy/util-config-provider": "^4.0.0", + "@smithy/util-middleware": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@aws/hello-world-lsp": { - "resolved": "server/hello-world-lsp", - "link": true - }, - "node_modules/@aws/hello-world-lsp-runtimes": { - "resolved": "app/hello-world-lsp-runtimes", - "link": true + "node_modules/@aws-sdk/region-config-resolver/node_modules/@aws-sdk/types": { + "version": "3.731.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz", + "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@aws/lambda-invoke-store": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.0.1.tgz", - "integrity": "sha512-ORHRQ2tmvnBXc8t/X9Z8IcSbBA4xTLKuN873FopzklHMeqBst7YG0d+AX97inkvDX+NChYtSr+qGfcqGFaI8Zw==", + "node_modules/@aws-sdk/signature-v4-multi-region": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.936.0.tgz", + "integrity": "sha512-8qS0GFUqkmwO7JZ0P8tdluBmt1UTfYUah8qJXGzNh9n1Pcb0AIeT117cCSiCUtwk+gDbJvd4hhRIhJCNr5wgjg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/middleware-sdk-s3": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@smithy/protocol-http": "^5.3.5", + "@smithy/signature-v4": "^5.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aws/language-server-runtimes": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@aws/language-server-runtimes/-/language-server-runtimes-0.3.6.tgz", - "integrity": "sha512-UYapohFIjEI93BfKQQlFiqOEq5wkG7Zm0jfcl2sMJwDYMtzNBtc31jDHr5cpeiQxSFpnALxqhPYp1PZU0vprwg==", + "node_modules/@aws-sdk/signature-v4-multi-region/node_modules/@smithy/types": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", "license": "Apache-2.0", "dependencies": { - "@aws/language-server-runtimes-types": "^0.1.62", - "@opentelemetry/api": "^1.9.0", - "@opentelemetry/api-logs": "^0.200.0", - "@opentelemetry/core": "^2.0.0", - "@opentelemetry/exporter-logs-otlp-http": "^0.200.0", - "@opentelemetry/exporter-metrics-otlp-http": "^0.200.0", - "@opentelemetry/resources": "^2.0.1", - "@opentelemetry/sdk-logs": "^0.200.0", - "@opentelemetry/sdk-metrics": "^2.0.1", - "@smithy/node-http-handler": "^4.0.4", - "ajv": "^8.17.1", - "hpagent": "^1.2.0", - "jose": "^5.9.6", - "mac-ca": "^3.1.1", - "registry-js": "^1.16.1", - "rxjs": "^7.8.2", - "vscode-languageserver": "^9.0.1", - "vscode-languageserver-protocol": "^3.17.5", - "vscode-uri": "^3.1.0", - "win-ca": "^3.5.1" + "tslib": "^2.6.2" }, "engines": { - "node": ">=24.0.0" + "node": ">=18.0.0" } }, - "node_modules/@aws/language-server-runtimes-types": { - "version": "0.1.62", - "resolved": "https://registry.npmjs.org/@aws/language-server-runtimes-types/-/language-server-runtimes-types-0.1.62.tgz", - "integrity": "sha512-d/RSCZZzniaNeME+iM47l9Xx66vFvlQqGyLaWA5vFyKU0FkhN8/6CjPV4C4lxh3s8H4qOGsHm1w0y7t+zTgu4g==", + "node_modules/@aws-sdk/token-providers": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.936.0.tgz", + "integrity": "sha512-vvw8+VXk0I+IsoxZw0mX9TMJawUJvEsg3EF7zcCSetwhNPAU8Xmlhv7E/sN/FgSmm7b7DsqKoW6rVtQiCs1PWQ==", "license": "Apache-2.0", "dependencies": { - "vscode-languageserver-textdocument": "^1.0.12", - "vscode-languageserver-types": "^3.17.5" + "@aws-sdk/core": "3.936.0", + "@aws-sdk/nested-clients": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@aws/lsp-antlr4": { - "resolved": "server/aws-lsp-antlr4", - "link": true + "node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/core": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.936.0.tgz", + "integrity": "sha512-eGJ2ySUMvgtOziHhDRDLCrj473RJoL4J1vPjVM3NrKC/fF3/LoHjkut8AAnKmrW6a2uTzNKubigw8dEnpmpERw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.936.0", + "@aws-sdk/xml-builder": "3.930.0", + "@smithy/core": "^3.18.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/signature-v4": "^5.3.5", + "@smithy/smithy-client": "^4.9.8", + "@smithy/types": "^4.9.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@aws/lsp-antlr4-runtimes": { - "resolved": "app/aws-lsp-antlr4-runtimes", - "link": true + "node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-host-header": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.936.0.tgz", + "integrity": "sha512-tAaObaAnsP1XnLGndfkGWFuzrJYuk9W0b/nLvol66t8FZExIAf/WdkT2NNAWOYxljVs++oHnyHBCxIlaHrzSiw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.936.0", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@aws/lsp-buildspec": { - "resolved": "server/aws-lsp-buildspec", - "link": true + "node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-logger": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.936.0.tgz", + "integrity": "sha512-aPSJ12d3a3Ea5nyEnLbijCaaYJT2QjQ9iW+zGh5QcZYXmOGWbKVyPSxmVOboZQG+c1M8t6d2O7tqrwzIq8L8qw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.936.0", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@aws/lsp-buildspec-runtimes": { - "resolved": "app/aws-lsp-buildspec-runtimes", - "link": true + "node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.936.0.tgz", + "integrity": "sha512-l4aGbHpXM45YNgXggIux1HgsCVAvvBoqHPkqLnqMl9QVapfuSTjJHfDYDsx1Xxct6/m7qSMUzanBALhiaGO2fA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.936.0", + "@aws/lambda-invoke-store": "^0.2.0", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@aws/lsp-cloudformation": { - "resolved": "server/aws-lsp-cloudformation", - "link": true + "node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.936.0.tgz", + "integrity": "sha512-YB40IPa7K3iaYX0lSnV9easDOLPLh+fJyUDF3BH8doX4i1AOSsYn86L4lVldmOaSX+DwiaqKHpvk4wPBdcIPWw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@aws-sdk/util-endpoints": "3.936.0", + "@smithy/core": "^3.18.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@aws/lsp-cloudformation-runtimes": { - "resolved": "app/aws-lsp-cloudformation-runtimes", - "link": true + "node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/nested-clients": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.936.0.tgz", + "integrity": "sha512-eyj2tz1XmDSLSZQ5xnB7cLTVKkSJnYAEoNDSUNhzWPxrBDYeJzIbatecOKceKCU8NBf8gWWZCK/CSY0mDxMO0A==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.936.0", + "@aws-sdk/middleware-host-header": "3.936.0", + "@aws-sdk/middleware-logger": "3.936.0", + "@aws-sdk/middleware-recursion-detection": "3.936.0", + "@aws-sdk/middleware-user-agent": "3.936.0", + "@aws-sdk/region-config-resolver": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@aws-sdk/util-endpoints": "3.936.0", + "@aws-sdk/util-user-agent-browser": "3.936.0", + "@aws-sdk/util-user-agent-node": "3.936.0", + "@smithy/config-resolver": "^4.4.3", + "@smithy/core": "^3.18.5", + "@smithy/fetch-http-handler": "^5.3.6", + "@smithy/hash-node": "^4.2.5", + "@smithy/invalid-dependency": "^4.2.5", + "@smithy/middleware-content-length": "^4.2.5", + "@smithy/middleware-endpoint": "^4.3.12", + "@smithy/middleware-retry": "^4.4.12", + "@smithy/middleware-serde": "^4.2.6", + "@smithy/middleware-stack": "^4.2.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/node-http-handler": "^4.4.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/smithy-client": "^4.9.8", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.11", + "@smithy/util-defaults-mode-node": "^4.2.14", + "@smithy/util-endpoints": "^3.2.5", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-retry": "^4.2.5", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@aws/lsp-codewhisperer": { - "resolved": "server/aws-lsp-codewhisperer", - "link": true + "node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/region-config-resolver": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.936.0.tgz", + "integrity": "sha512-wOKhzzWsshXGduxO4pqSiNyL9oUtk4BEvjWm9aaq6Hmfdoydq6v6t0rAGHWPjFwy9z2haovGRi3C8IxdMB4muw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.936.0", + "@smithy/config-resolver": "^4.4.3", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@aws/lsp-codewhisperer-runtimes": { - "resolved": "app/aws-lsp-codewhisperer-runtimes", - "link": true + "node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-endpoints": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.936.0.tgz", + "integrity": "sha512-0Zx3Ntdpu+z9Wlm7JKUBOzS9EunwKAb4KdGUQQxDqh5Lc3ta5uBoub+FgmVuzwnmBu9U1Os8UuwVTH0Lgu+P5w==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.936.0", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "@smithy/util-endpoints": "^3.2.5", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@aws/lsp-core": { - "resolved": "core/aws-lsp-core", - "link": true + "node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.936.0.tgz", + "integrity": "sha512-eZ/XF6NxMtu+iCma58GRNRxSq4lHo6zHQLOZRIeL/ghqYJirqHdenMOwrzPettj60KWlv827RVebP9oNVrwZbw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.936.0", + "@smithy/types": "^4.9.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + } }, - "node_modules/@aws/lsp-identity": { - "resolved": "server/aws-lsp-identity", - "link": true - }, - "node_modules/@aws/lsp-identity-runtimes": { - "resolved": "app/aws-lsp-identity-runtimes", - "link": true - }, - "node_modules/@aws/lsp-json": { - "resolved": "server/aws-lsp-json", - "link": true - }, - "node_modules/@aws/lsp-json-runtimes": { - "resolved": "app/aws-lsp-json-runtimes", - "link": true - }, - "node_modules/@aws/lsp-notification": { - "resolved": "server/aws-lsp-notification", - "link": true - }, - "node_modules/@aws/lsp-notification-runtimes": { - "resolved": "app/aws-lsp-notification-runtimes", - "link": true - }, - "node_modules/@aws/lsp-partiql": { - "resolved": "server/aws-lsp-partiql", - "link": true - }, - "node_modules/@aws/lsp-partiql-runtimes": { - "resolved": "app/aws-lsp-partiql-runtimes", - "link": true - }, - "node_modules/@aws/lsp-s3": { - "resolved": "server/aws-lsp-s3", - "link": true - }, - "node_modules/@aws/lsp-s3-runtimes": { - "resolved": "app/aws-lsp-s3-runtimes", - "link": true - }, - "node_modules/@aws/lsp-yaml": { - "resolved": "server/aws-lsp-yaml", - "link": true - }, - "node_modules/@aws/lsp-yaml-json-webworker": { - "resolved": "app/aws-lsp-yaml-json-webworker", - "link": true - }, - "node_modules/@aws/lsp-yaml-runtimes": { - "resolved": "app/aws-lsp-yaml-runtimes", - "link": true - }, - "node_modules/@aws/mynah-ui": { - "version": "4.38.0", - "resolved": "https://registry.npmjs.org/@aws/mynah-ui/-/mynah-ui-4.38.0.tgz", - "integrity": "sha512-c/+lyTfKm+6FB1GSxTqwLK0+YeQ4HJKaBPitAcH53hf+CaT9AUPz3ER/8FhmjExiZr4AWLfibEVQq9Of174PNw==", - "hasInstallScript": true, - "license": "Apache License 2.0", + "node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.936.0.tgz", + "integrity": "sha512-XOEc7PF9Op00pWV2AYCGDSu5iHgYjIO53Py2VUQTIvP7SRCaCsXmA33mjBvC2Ms6FhSyWNa4aK4naUGIz0hQcw==", + "license": "Apache-2.0", "dependencies": { - "escape-html": "^1.0.3", - "highlight.js": "^11.11.0", - "just-clone": "^6.2.0", - "marked": "^14.1.0", - "sanitize-html": "^2.12.1", - "unescape-html": "^1.1.0" + "@aws-sdk/middleware-user-agent": "3.936.0", + "@aws-sdk/types": "3.936.0", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" }, "peerDependencies": { - "escape-html": "^1.0.3", - "highlight.js": "^11.11.0", - "just-clone": "^6.2.0", - "marked": "^14.1.0", - "sanitize-html": "^2.12.1", - "unescape-html": "^1.1.0" + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } } }, - "node_modules/@aws/q-agentic-chat-server-integration-tests": { - "resolved": "integration-tests/q-agentic-chat-server", - "link": true - }, - "node_modules/@babel/code-frame": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", - "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", - "dev": true, + "node_modules/@aws-sdk/token-providers/node_modules/@smithy/abort-controller": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz", + "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/compat-data": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.4.tgz", - "integrity": "sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==", - "dev": true, + "node_modules/@aws-sdk/token-providers/node_modules/@smithy/node-http-handler": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.5.tgz", + "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/querystring-builder": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=6.9.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/core": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz", - "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==", - "dev": true, + "node_modules/@aws-sdk/token-providers/node_modules/@smithy/types": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.3", - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-module-transforms": "^7.28.3", - "@babel/helpers": "^7.28.4", - "@babel/parser": "^7.28.4", - "@babel/template": "^7.27.2", - "@babel/traverse": "^7.28.4", - "@babel/types": "^7.28.4", - "@jridgewell/remapping": "^2.3.5", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" + "node": ">=18.0.0" } }, - "node_modules/@babel/generator": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz", - "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==", - "dev": true, + "node_modules/@aws-sdk/types": { + "version": "3.936.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.936.0.tgz", + "integrity": "sha512-uz0/VlMd2pP5MepdrHizd+T+OKfyK4r3OA9JI+L/lPKg0YFQosdJNCKisr6o70E3dh8iMpFYxF1UN/4uZsyARg==", + "license": "Apache-2.0", "dependencies": { - "@babel/parser": "^7.28.3", - "@babel/types": "^7.28.2", - "@jridgewell/gen-mapping": "^0.3.12", - "@jridgewell/trace-mapping": "^0.3.28", - "jsesc": "^3.0.2" + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/generator/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "dev": true, + "node_modules/@aws-sdk/types/node_modules/@smithy/types": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", - "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", - "dev": true, + "node_modules/@aws-sdk/util-arn-parser": { + "version": "3.893.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.893.0.tgz", + "integrity": "sha512-u8H4f2Zsi19DGnwj5FSZzDMhytYF/bCh37vAtBsn3cNDL3YG578X5oc+wSX54pM3tOxS+NY7tvOAo52SW7koUA==", + "license": "Apache-2.0", "dependencies": { - "@babel/compat-data": "^7.27.2", - "@babel/helper-validator-option": "^7.27.1", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, + "node_modules/@aws-sdk/util-endpoints": { + "version": "3.731.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.731.0.tgz", + "integrity": "sha512-riztxTAfncFS9yQWcBJffGgOgLoKSa63ph+rxWJxKl6BHAmWEvHICj1qDcVmnWfIcvJ5cClclY75l9qKaUH7rQ==", + "license": "Apache-2.0", "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" + "@aws-sdk/types": "3.731.0", + "@smithy/types": "^4.0.0", + "@smithy/util-endpoints": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@babel/helper-globals": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", - "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", - "dev": true, + "node_modules/@aws-sdk/util-endpoints/node_modules/@aws-sdk/types": { + "version": "3.731.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz", + "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.0.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=6.9.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/helper-module-imports": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", - "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", - "dev": true, + "node_modules/@aws-sdk/util-locate-window": { + "version": "3.893.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.893.0.tgz", + "integrity": "sha512-T89pFfgat6c8nMmpI8eKjBcDcgJq36+m9oiXbcUzeU55MP9ZuGgBomGjGnHaEyF36jenW9gmg3NfZDm0AO2XPg==", + "license": "Apache-2.0", "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", - "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", - "dev": true, + "node_modules/@aws-sdk/util-retry": { + "version": "3.374.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-retry/-/util-retry-3.374.0.tgz", + "integrity": "sha512-0p/trhYU+Ys8j3vMnWCvAkSOL6JRMooV9dVlQ+o7EHbQs9kDtnyucMUHU09ahHSIPTA/n/013hv7bzIt3MyKQg==", + "deprecated": "This package has moved to @smithy/util-retry", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.28.3" + "@smithy/util-retry": "^1.0.3", + "tslib": "^2.5.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">= 14.0.0" } }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", - "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", - "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", - "dev": true, + "node_modules/@aws-sdk/util-retry/node_modules/@smithy/service-error-classification": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-1.1.0.tgz", + "integrity": "sha512-OCTEeJ1igatd5kFrS2VDlYbainNNpf7Lj1siFOxnRWqYOP9oNvC5HOJBd3t+Z8MbrmehBtuDJ2QqeBsfeiNkww==", + "license": "Apache-2.0", "engines": { - "node": ">=6.9.0" + "node": ">=14.0.0" } }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", - "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", - "dev": true, + "node_modules/@aws-sdk/util-retry/node_modules/@smithy/util-retry": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-1.1.0.tgz", + "integrity": "sha512-ygQW5HBqYXpR3ua09UciS0sL7UGJzGiktrKkOuEJwARoUuzz40yaEGU6xd9Gs7KBmAaFC8gMfnghHtwZ2nyBCQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/service-error-classification": "^1.1.0", + "tslib": "^2.5.0" + }, "engines": { - "node": ">=6.9.0" + "node": ">= 14.0.0" } }, - "node_modules/@babel/helper-validator-option": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", - "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", - "dev": true, - "engines": { - "node": ">=6.9.0" + "node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.731.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.731.0.tgz", + "integrity": "sha512-EnYXxTkCNCjTTBjW/pelRPv4Thsi9jepoB6qQjPMA9/ixrZ71BhhQecz9kgqzZLR9BPCwb6hgJ/Yd702jqJ4aQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.731.0", + "@smithy/types": "^4.0.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" } }, - "node_modules/@babel/helpers": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", - "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", - "dev": true, + "node_modules/@aws-sdk/util-user-agent-browser/node_modules/@aws-sdk/types": { + "version": "3.731.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz", + "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==", + "license": "Apache-2.0", "dependencies": { - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.4" + "@smithy/types": "^4.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/parser": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz", - "integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==", - "dev": true, + "node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.731.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.731.0.tgz", + "integrity": "sha512-Rze78Ym5Bx7aWMvmZE2iL3JPo2INNCC5N9rLVx98Gg1G0ZaxclVRUvJrh1AojNlOFxU+otkxAe7FA3Foy2iLLQ==", + "license": "Apache-2.0", "dependencies": { - "@babel/types": "^7.28.4" - }, - "bin": { - "parser": "bin/babel-parser.js" + "@aws-sdk/middleware-user-agent": "3.731.0", + "@aws-sdk/types": "3.731.0", + "@smithy/node-config-provider": "^4.0.0", + "@smithy/types": "^4.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "node": ">=18.0.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "aws-crt": ">=1.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } } }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, + "node_modules/@aws-sdk/util-user-agent-node/node_modules/@aws-sdk/types": { + "version": "3.731.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.731.0.tgz", + "integrity": "sha512-NrdkJg6oOUbXR2r9WvHP408CLyvST8cJfp1/jP9pemtjvjPoh6NukbCtiSFdOOb1eryP02CnqQWItfJC1p2Y/Q==", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@smithy/types": "^4.0.0", + "tslib": "^2.6.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, + "node_modules/@aws-sdk/xml-builder": { + "version": "3.930.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.930.0.tgz", + "integrity": "sha512-YIfkD17GocxdmlUVc3ia52QhcWuRIUJonbF8A2CYfcWNV3HzvAqpcPeC0bYUhkK+8e8YO1ARnLKZQE0TlwzorA==", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@smithy/types": "^4.9.0", + "fast-xml-parser": "5.2.5", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", - "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", - "dev": true, + "node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, + "node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser": { + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.2.5.tgz", + "integrity": "sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "strnum": "^2.1.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "bin": { + "fxparser": "src/cli/cli.js" } }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, + "node_modules/@aws-sdk/xml-builder/node_modules/strnum": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.1.tgz", + "integrity": "sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT" + }, + "node_modules/@aws/chat-client": { + "resolved": "chat-client", + "link": true + }, + "node_modules/@aws/chat-client-ui-types": { + "version": "0.1.68", + "resolved": "https://registry.npmjs.org/@aws/chat-client-ui-types/-/chat-client-ui-types-0.1.68.tgz", + "integrity": "sha512-T4sYp0HajJOyUk6sNhcP6BCpFUEFeS2/S7AnrhSUT2Zi2z1cujMUEquk5K5rwMee7IJSY6Y3GVc/6zE+O9vQfg==", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@aws/language-server-runtimes-types": "^0.1.62" } }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", - "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, + "node_modules/@aws/hello-world-lsp": { + "resolved": "server/hello-world-lsp", + "link": true + }, + "node_modules/@aws/hello-world-lsp-runtimes": { + "resolved": "app/hello-world-lsp-runtimes", + "link": true + }, + "node_modules/@aws/lambda-invoke-store": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.1.tgz", + "integrity": "sha512-sIyFcoPZkTtNu9xFeEoynMef3bPJIAbOfUh+ueYcfhVl6xm2VRtMcMclSxmZCMnHHd4hlYKJeq/aggmBEWynww==", + "license": "Apache-2.0", "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, + "node_modules/@aws/language-server-runtimes": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@aws/language-server-runtimes/-/language-server-runtimes-0.3.6.tgz", + "integrity": "sha512-UYapohFIjEI93BfKQQlFiqOEq5wkG7Zm0jfcl2sMJwDYMtzNBtc31jDHr5cpeiQxSFpnALxqhPYp1PZU0vprwg==", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@aws/language-server-runtimes-types": "^0.1.62", + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/api-logs": "^0.200.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/exporter-logs-otlp-http": "^0.200.0", + "@opentelemetry/exporter-metrics-otlp-http": "^0.200.0", + "@opentelemetry/resources": "^2.0.1", + "@opentelemetry/sdk-logs": "^0.200.0", + "@opentelemetry/sdk-metrics": "^2.0.1", + "@smithy/node-http-handler": "^4.0.4", + "ajv": "^8.17.1", + "hpagent": "^1.2.0", + "jose": "^5.9.6", + "mac-ca": "^3.1.1", + "registry-js": "^1.16.1", + "rxjs": "^7.8.2", + "vscode-languageserver": "^9.0.1", + "vscode-languageserver-protocol": "^3.17.5", + "vscode-uri": "^3.1.0", + "win-ca": "^3.5.1" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=24.0.0" } }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, + "node_modules/@aws/language-server-runtimes-types": { + "version": "0.1.62", + "resolved": "https://registry.npmjs.org/@aws/language-server-runtimes-types/-/language-server-runtimes-types-0.1.62.tgz", + "integrity": "sha512-d/RSCZZzniaNeME+iM47l9Xx66vFvlQqGyLaWA5vFyKU0FkhN8/6CjPV4C4lxh3s8H4qOGsHm1w0y7t+zTgu4g==", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "vscode-languageserver-textdocument": "^1.0.12", + "vscode-languageserver-types": "^3.17.5" + } + }, + "node_modules/@aws/language-server-runtimes/node_modules/@smithy/abort-controller": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz", + "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, + "node_modules/@aws/language-server-runtimes/node_modules/@smithy/node-http-handler": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.5.tgz", + "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@smithy/abort-controller": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/querystring-builder": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, + "node_modules/@aws/language-server-runtimes/node_modules/@smithy/types": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "tslib": "^2.6.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, + "node_modules/@aws/lsp-antlr4": { + "resolved": "server/aws-lsp-antlr4", + "link": true + }, + "node_modules/@aws/lsp-antlr4-runtimes": { + "resolved": "app/aws-lsp-antlr4-runtimes", + "link": true + }, + "node_modules/@aws/lsp-buildspec": { + "resolved": "server/aws-lsp-buildspec", + "link": true + }, + "node_modules/@aws/lsp-buildspec-runtimes": { + "resolved": "app/aws-lsp-buildspec-runtimes", + "link": true + }, + "node_modules/@aws/lsp-cloudformation": { + "resolved": "server/aws-lsp-cloudformation", + "link": true + }, + "node_modules/@aws/lsp-cloudformation-runtimes": { + "resolved": "app/aws-lsp-cloudformation-runtimes", + "link": true + }, + "node_modules/@aws/lsp-codewhisperer": { + "resolved": "server/aws-lsp-codewhisperer", + "link": true + }, + "node_modules/@aws/lsp-codewhisperer-runtimes": { + "resolved": "app/aws-lsp-codewhisperer-runtimes", + "link": true + }, + "node_modules/@aws/lsp-core": { + "resolved": "core/aws-lsp-core", + "link": true + }, + "node_modules/@aws/lsp-identity": { + "resolved": "server/aws-lsp-identity", + "link": true + }, + "node_modules/@aws/lsp-identity-runtimes": { + "resolved": "app/aws-lsp-identity-runtimes", + "link": true + }, + "node_modules/@aws/lsp-json": { + "resolved": "server/aws-lsp-json", + "link": true + }, + "node_modules/@aws/lsp-json-runtimes": { + "resolved": "app/aws-lsp-json-runtimes", + "link": true + }, + "node_modules/@aws/lsp-notification": { + "resolved": "server/aws-lsp-notification", + "link": true + }, + "node_modules/@aws/lsp-notification-runtimes": { + "resolved": "app/aws-lsp-notification-runtimes", + "link": true + }, + "node_modules/@aws/lsp-partiql": { + "resolved": "server/aws-lsp-partiql", + "link": true + }, + "node_modules/@aws/lsp-partiql-runtimes": { + "resolved": "app/aws-lsp-partiql-runtimes", + "link": true + }, + "node_modules/@aws/lsp-s3": { + "resolved": "server/aws-lsp-s3", + "link": true + }, + "node_modules/@aws/lsp-s3-runtimes": { + "resolved": "app/aws-lsp-s3-runtimes", + "link": true + }, + "node_modules/@aws/lsp-yaml": { + "resolved": "server/aws-lsp-yaml", + "link": true + }, + "node_modules/@aws/lsp-yaml-json-webworker": { + "resolved": "app/aws-lsp-yaml-json-webworker", + "link": true + }, + "node_modules/@aws/lsp-yaml-runtimes": { + "resolved": "app/aws-lsp-yaml-runtimes", + "link": true + }, + "node_modules/@aws/mynah-ui": { + "version": "4.38.0", + "resolved": "https://registry.npmjs.org/@aws/mynah-ui/-/mynah-ui-4.38.0.tgz", + "integrity": "sha512-c/+lyTfKm+6FB1GSxTqwLK0+YeQ4HJKaBPitAcH53hf+CaT9AUPz3ER/8FhmjExiZr4AWLfibEVQq9Of174PNw==", + "hasInstallScript": true, + "license": "Apache License 2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "escape-html": "^1.0.3", + "highlight.js": "^11.11.0", + "just-clone": "^6.2.0", + "marked": "^14.1.0", + "sanitize-html": "^2.12.1", + "unescape-html": "^1.1.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "escape-html": "^1.0.3", + "highlight.js": "^11.11.0", + "just-clone": "^6.2.0", + "marked": "^14.1.0", + "sanitize-html": "^2.12.1", + "unescape-html": "^1.1.0" } }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "node_modules/@aws/q-agentic-chat-server-integration-tests": { + "resolved": "integration-tests/q-agentic-chat-server", + "link": true + }, + "node_modules/@babel/code-frame": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "node_modules/@babel/compat-data": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz", + "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, + "license": "MIT", "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", - "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", + "node_modules/@babel/core": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", + "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "dev": true, + "license": "MIT", + "peer": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.5", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helpers": "^7.28.4", + "@babel/parser": "^7.28.5", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz", - "integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==", + "node_modules/@babel/generator": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", + "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/parser": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/template": { + "node_modules/@babel/helper-compilation-targets": { "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", - "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/parser": "^7.27.2", - "@babel/types": "^7.27.1" + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/traverse": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz", - "integrity": "sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==", + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.3", - "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.28.4", - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.4", - "debug": "^4.3.1" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/types": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz", - "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==", + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", + "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1" + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.28.3" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@bcoe/v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz", - "integrity": "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==", + "node_modules/@babel/helper-plugin-utils": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=18" + "node": ">=6.9.0" } }, - "node_modules/@commitlint/cli": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-19.8.1.tgz", - "integrity": "sha512-LXUdNIkspyxrlV6VDHWBmCZRtkEVRpBKxi2Gtw3J54cGWhLCTouVD/Q6ZSaSvd2YaDObWK8mDjrz3TIKtaQMAA==", + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", "dev": true, - "dependencies": { - "@commitlint/format": "^19.8.1", - "@commitlint/lint": "^19.8.1", - "@commitlint/load": "^19.8.1", - "@commitlint/read": "^19.8.1", - "@commitlint/types": "^19.8.1", - "tinyexec": "^1.0.0", - "yargs": "^17.0.0" - }, - "bin": { - "commitlint": "cli.js" - }, + "license": "MIT", "engines": { - "node": ">=v18" + "node": ">=6.9.0" } }, - "node_modules/@commitlint/config-conventional": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-19.8.1.tgz", - "integrity": "sha512-/AZHJL6F6B/G959CsMAzrPKKZjeEiAVifRyEwXxcT6qtqbPwGw+iQxmNS+Bu+i09OCtdNRW6pNpBvgPrtMr9EQ==", + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", "dev": true, - "dependencies": { - "@commitlint/types": "^19.8.1", - "conventional-changelog-conventionalcommits": "^7.0.2" - }, + "license": "MIT", "engines": { - "node": ">=v18" + "node": ">=6.9.0" } }, - "node_modules/@commitlint/config-conventional/node_modules/conventional-changelog-conventionalcommits": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-7.0.2.tgz", - "integrity": "sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==", + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", "dev": true, - "dependencies": { - "compare-func": "^2.0.0" - }, + "license": "MIT", "engines": { - "node": ">=16" + "node": ">=6.9.0" } }, - "node_modules/@commitlint/config-validator": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-19.8.1.tgz", - "integrity": "sha512-0jvJ4u+eqGPBIzzSdqKNX1rvdbSU1lPNYlfQQRIFnBgLy26BtC0cFnr7c/AyuzExMxWsMOte6MkTi9I3SQ3iGQ==", + "node_modules/@babel/helpers": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", + "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", "dev": true, + "license": "MIT", "dependencies": { - "@commitlint/types": "^19.8.1", - "ajv": "^8.11.0" + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.4" }, "engines": { - "node": ">=v18" + "node": ">=6.9.0" } }, - "node_modules/@commitlint/ensure": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-19.8.1.tgz", - "integrity": "sha512-mXDnlJdvDzSObafjYrOSvZBwkD01cqB4gbnnFuVyNpGUM5ijwU/r/6uqUmBXAAOKRfyEjpkGVZxaDsCVnHAgyw==", + "node_modules/@babel/parser": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", + "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", "dev": true, + "license": "MIT", "dependencies": { - "@commitlint/types": "^19.8.1", - "lodash.camelcase": "^4.3.0", - "lodash.kebabcase": "^4.1.1", - "lodash.snakecase": "^4.1.1", - "lodash.startcase": "^4.4.0", - "lodash.upperfirst": "^4.3.1" + "@babel/types": "^7.28.5" + }, + "bin": { + "parser": "bin/babel-parser.js" }, "engines": { - "node": ">=v18" + "node": ">=6.0.0" } }, - "node_modules/@commitlint/execute-rule": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-19.8.1.tgz", - "integrity": "sha512-YfJyIqIKWI64Mgvn/sE7FXvVMQER/Cd+s3hZke6cI1xgNT/f6ZAz5heND0QtffH+KbcqAwXDEE1/5niYayYaQA==", + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, - "engines": { - "node": ">=v18" + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@commitlint/format": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-19.8.1.tgz", - "integrity": "sha512-kSJj34Rp10ItP+Eh9oCItiuN/HwGQMXBnIRk69jdOwEW9llW9FlyqcWYbHPSGofmjsqeoxa38UaEA5tsbm2JWw==", + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", "dev": true, + "license": "MIT", "dependencies": { - "@commitlint/types": "^19.8.1", - "chalk": "^5.3.0" + "@babel/helper-plugin-utils": "^7.8.0" }, - "engines": { - "node": ">=v18" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@commitlint/is-ignored": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-19.8.1.tgz", - "integrity": "sha512-AceOhEhekBUQ5dzrVhDDsbMaY5LqtN8s1mqSnT2Kz1ERvVZkNihrs3Sfk1Je/rxRNbXYFzKZSHaPsEJJDJV8dg==", + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, + "license": "MIT", "dependencies": { - "@commitlint/types": "^19.8.1", - "semver": "^7.6.0" + "@babel/helper-plugin-utils": "^7.12.13" }, - "engines": { - "node": ">=v18" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@commitlint/lint": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-19.8.1.tgz", - "integrity": "sha512-52PFbsl+1EvMuokZXLRlOsdcLHf10isTPlWwoY1FQIidTsTvjKXVXYb7AvtpWkDzRO2ZsqIgPK7bI98x8LRUEw==", + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, + "license": "MIT", "dependencies": { - "@commitlint/is-ignored": "^19.8.1", - "@commitlint/parse": "^19.8.1", - "@commitlint/rules": "^19.8.1", - "@commitlint/types": "^19.8.1" + "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { - "node": ">=v18" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@commitlint/load": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-19.8.1.tgz", - "integrity": "sha512-9V99EKG3u7z+FEoe4ikgq7YGRCSukAcvmKQuTtUyiYPnOd9a2/H9Ak1J9nJA1HChRQp9OA/sIKPugGS+FK/k1A==", + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", + "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", "dev": true, + "license": "MIT", "dependencies": { - "@commitlint/config-validator": "^19.8.1", - "@commitlint/execute-rule": "^19.8.1", - "@commitlint/resolve-extends": "^19.8.1", - "@commitlint/types": "^19.8.1", - "chalk": "^5.3.0", - "cosmiconfig": "^9.0.0", - "cosmiconfig-typescript-loader": "^6.1.0", - "lodash.isplainobject": "^4.0.6", - "lodash.merge": "^4.6.2", - "lodash.uniq": "^4.5.0" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { - "node": ">=v18" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@commitlint/message": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-19.8.1.tgz", - "integrity": "sha512-+PMLQvjRXiU+Ae0Wc+p99EoGEutzSXFVwQfa3jRNUZLNW5odZAyseb92OSBTKCu+9gGZiJASt76Cj3dLTtcTdg==", + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, - "engines": { - "node": ">=v18" + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@commitlint/parse": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-19.8.1.tgz", - "integrity": "sha512-mmAHYcMBmAgJDKWdkjIGq50X4yB0pSGpxyOODwYmoexxxiUCy5JJT99t1+PEMK7KtsCtzuWYIAXYAiKR+k+/Jw==", + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, + "license": "MIT", "dependencies": { - "@commitlint/types": "^19.8.1", - "conventional-changelog-angular": "^7.0.0", - "conventional-commits-parser": "^5.0.0" + "@babel/helper-plugin-utils": "^7.8.0" }, - "engines": { - "node": ">=v18" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@commitlint/read": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-19.8.1.tgz", - "integrity": "sha512-03Jbjb1MqluaVXKHKRuGhcKWtSgh3Jizqy2lJCRbRrnWpcM06MYm8th59Xcns8EqBYvo0Xqb+2DoZFlga97uXQ==", + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", + "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", "dev": true, + "license": "MIT", "dependencies": { - "@commitlint/top-level": "^19.8.1", - "@commitlint/types": "^19.8.1", - "git-raw-commits": "^4.0.0", - "minimist": "^1.2.8", - "tinyexec": "^1.0.0" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { - "node": ">=v18" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@commitlint/resolve-extends": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-19.8.1.tgz", - "integrity": "sha512-GM0mAhFk49I+T/5UCYns5ayGStkTt4XFFrjjf0L4S26xoMTSkdCf9ZRO8en1kuopC4isDFuEm7ZOm/WRVeElVg==", + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, + "license": "MIT", "dependencies": { - "@commitlint/config-validator": "^19.8.1", - "@commitlint/types": "^19.8.1", - "global-directory": "^4.0.1", - "import-meta-resolve": "^4.0.0", - "lodash.mergewith": "^4.6.2", - "resolve-from": "^5.0.0" + "@babel/helper-plugin-utils": "^7.10.4" }, - "engines": { - "node": ">=v18" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@commitlint/rules": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-19.8.1.tgz", - "integrity": "sha512-Hnlhd9DyvGiGwjfjfToMi1dsnw1EXKGJNLTcsuGORHz6SS9swRgkBsou33MQ2n51/boIDrbsg4tIBbRpEWK2kw==", + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, + "license": "MIT", "dependencies": { - "@commitlint/ensure": "^19.8.1", - "@commitlint/message": "^19.8.1", - "@commitlint/to-lines": "^19.8.1", - "@commitlint/types": "^19.8.1" + "@babel/helper-plugin-utils": "^7.8.0" }, - "engines": { - "node": ">=v18" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@commitlint/to-lines": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-19.8.1.tgz", - "integrity": "sha512-98Mm5inzbWTKuZQr2aW4SReY6WUukdWXuZhrqf1QdKPZBCCsXuG87c+iP0bwtD6DBnmVVQjgp4whoHRVixyPBg==", + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, - "engines": { - "node": ">=v18" + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@commitlint/top-level": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-19.8.1.tgz", - "integrity": "sha512-Ph8IN1IOHPSDhURCSXBz44+CIu+60duFwRsg6HqaISFHQHbmBtxVw4ZrFNIYUzEP7WwrNPxa2/5qJ//NK1FGcw==", + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, + "license": "MIT", "dependencies": { - "find-up": "^7.0.0" + "@babel/helper-plugin-utils": "^7.8.0" }, - "engines": { - "node": ">=v18" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@commitlint/types": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-19.8.1.tgz", - "integrity": "sha512-/yCrWGCoA1SVKOks25EGadP9Pnj0oAIHGpl2wH2M2Y46dPM2ueb8wyCVOD7O3WCTkaJ0IkKvzhl1JY7+uCT2Dw==", + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, + "license": "MIT", "dependencies": { - "@types/conventional-commits-parser": "^5.0.0", - "chalk": "^5.3.0" + "@babel/helper-plugin-utils": "^7.8.0" }, - "engines": { - "node": ">=v18" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" + "@babel/helper-plugin-utils": "^7.8.0" }, - "engines": { - "node": ">=12" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@csstools/color-helpers": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz", - "integrity": "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==", + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, "engines": { - "node": ">=18" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@csstools/css-calc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz", - "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==", + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, "engines": { - "node": ">=18" + "node": ">=6.9.0" }, "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@csstools/css-color-parser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz", - "integrity": "sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==", + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", + "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], + "license": "MIT", "dependencies": { - "@csstools/color-helpers": "^5.1.0", - "@csstools/css-calc": "^2.1.4" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { - "node": ">=18" + "node": ">=6.9.0" }, "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@csstools/css-parser-algorithms": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", - "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==", + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz", + "integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, "engines": { - "node": ">=18" + "node": ">=6.9.0" }, "peerDependencies": { - "@csstools/css-tokenizer": "^3.0.4" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@csstools/css-tokenizer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", - "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==", + "node_modules/@babel/template": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - ], + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" + }, "engines": { - "node": ">=18" + "node": ">=6.9.0" } }, - "node_modules/@discoveryjs/json-ext": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz", - "integrity": "sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==", + "node_modules/@babel/traverse": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz", + "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==", "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.5", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.5", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.5", + "debug": "^4.3.1" + }, "engines": { - "node": ">=14.17.0" + "node": ">=6.9.0" } }, - "node_modules/@emnapi/core": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.5.0.tgz", - "integrity": "sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg==", + "node_modules/@babel/types": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", + "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", "dev": true, - "optional": true, + "license": "MIT", "dependencies": { - "@emnapi/wasi-threads": "1.1.0", - "tslib": "^2.4.0" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@emnapi/runtime": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.5.0.tgz", - "integrity": "sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==", + "node_modules/@bcoe/v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz", + "integrity": "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==", "dev": true, - "optional": true, - "dependencies": { - "tslib": "^2.4.0" + "license": "MIT", + "engines": { + "node": ">=18" } }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", - "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", + "node_modules/@commitlint/cli": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-19.8.1.tgz", + "integrity": "sha512-LXUdNIkspyxrlV6VDHWBmCZRtkEVRpBKxi2Gtw3J54cGWhLCTouVD/Q6ZSaSvd2YaDObWK8mDjrz3TIKtaQMAA==", "dev": true, - "optional": true, + "license": "MIT", "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.10.tgz", - "integrity": "sha512-0NFWnA+7l41irNuaSVlLfgNT12caWJVLzp5eAVhZ0z1qpxbockccEt3s+149rE64VUI3Ml2zt8Nv5JVc4QXTsw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "aix" - ], + "@commitlint/format": "^19.8.1", + "@commitlint/lint": "^19.8.1", + "@commitlint/load": "^19.8.1", + "@commitlint/read": "^19.8.1", + "@commitlint/types": "^19.8.1", + "tinyexec": "^1.0.0", + "yargs": "^17.0.0" + }, + "bin": { + "commitlint": "cli.js" + }, "engines": { - "node": ">=18" + "node": ">=v18" } }, - "node_modules/@esbuild/android-arm": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.10.tgz", - "integrity": "sha512-dQAxF1dW1C3zpeCDc5KqIYuZ1tgAdRXNoZP7vkBIRtKZPYe2xVr/d3SkirklCHudW1B45tGiUlz2pUWDfbDD4w==", - "cpu": [ - "arm" - ], + "node_modules/@commitlint/config-conventional": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-19.8.1.tgz", + "integrity": "sha512-/AZHJL6F6B/G959CsMAzrPKKZjeEiAVifRyEwXxcT6qtqbPwGw+iQxmNS+Bu+i09OCtdNRW6pNpBvgPrtMr9EQ==", "dev": true, - "optional": true, - "os": [ - "android" - ], + "license": "MIT", + "dependencies": { + "@commitlint/types": "^19.8.1", + "conventional-changelog-conventionalcommits": "^7.0.2" + }, "engines": { - "node": ">=18" + "node": ">=v18" } }, - "node_modules/@esbuild/android-arm64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.10.tgz", - "integrity": "sha512-LSQa7eDahypv/VO6WKohZGPSJDq5OVOo3UoFR1E4t4Gj1W7zEQMUhI+lo81H+DtB+kP+tDgBp+M4oNCwp6kffg==", - "cpu": [ - "arm64" - ], + "node_modules/@commitlint/config-conventional/node_modules/conventional-changelog-conventionalcommits": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-7.0.2.tgz", + "integrity": "sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==", "dev": true, - "optional": true, - "os": [ - "android" - ], + "license": "ISC", + "dependencies": { + "compare-func": "^2.0.0" + }, "engines": { - "node": ">=18" + "node": ">=16" } }, - "node_modules/@esbuild/android-x64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.10.tgz", - "integrity": "sha512-MiC9CWdPrfhibcXwr39p9ha1x0lZJ9KaVfvzA0Wxwz9ETX4v5CHfF09bx935nHlhi+MxhA63dKRRQLiVgSUtEg==", - "cpu": [ - "x64" - ], + "node_modules/@commitlint/config-validator": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-19.8.1.tgz", + "integrity": "sha512-0jvJ4u+eqGPBIzzSdqKNX1rvdbSU1lPNYlfQQRIFnBgLy26BtC0cFnr7c/AyuzExMxWsMOte6MkTi9I3SQ3iGQ==", "dev": true, - "optional": true, - "os": [ - "android" - ], + "license": "MIT", + "dependencies": { + "@commitlint/types": "^19.8.1", + "ajv": "^8.11.0" + }, "engines": { - "node": ">=18" + "node": ">=v18" } }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.10.tgz", - "integrity": "sha512-JC74bdXcQEpW9KkV326WpZZjLguSZ3DfS8wrrvPMHgQOIEIG/sPXEN/V8IssoJhbefLRcRqw6RQH2NnpdprtMA==", - "cpu": [ - "arm64" - ], + "node_modules/@commitlint/ensure": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-19.8.1.tgz", + "integrity": "sha512-mXDnlJdvDzSObafjYrOSvZBwkD01cqB4gbnnFuVyNpGUM5ijwU/r/6uqUmBXAAOKRfyEjpkGVZxaDsCVnHAgyw==", "dev": true, - "optional": true, - "os": [ - "darwin" - ], + "license": "MIT", + "dependencies": { + "@commitlint/types": "^19.8.1", + "lodash.camelcase": "^4.3.0", + "lodash.kebabcase": "^4.1.1", + "lodash.snakecase": "^4.1.1", + "lodash.startcase": "^4.4.0", + "lodash.upperfirst": "^4.3.1" + }, "engines": { - "node": ">=18" + "node": ">=v18" } }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.10.tgz", - "integrity": "sha512-tguWg1olF6DGqzws97pKZ8G2L7Ig1vjDmGTwcTuYHbuU6TTjJe5FXbgs5C1BBzHbJ2bo1m3WkQDbWO2PvamRcg==", - "cpu": [ - "x64" - ], + "node_modules/@commitlint/execute-rule": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-19.8.1.tgz", + "integrity": "sha512-YfJyIqIKWI64Mgvn/sE7FXvVMQER/Cd+s3hZke6cI1xgNT/f6ZAz5heND0QtffH+KbcqAwXDEE1/5niYayYaQA==", "dev": true, - "optional": true, - "os": [ - "darwin" - ], + "license": "MIT", "engines": { - "node": ">=18" + "node": ">=v18" } }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.10.tgz", - "integrity": "sha512-3ZioSQSg1HT2N05YxeJWYR+Libe3bREVSdWhEEgExWaDtyFbbXWb49QgPvFH8u03vUPX10JhJPcz7s9t9+boWg==", - "cpu": [ - "arm64" - ], + "node_modules/@commitlint/format": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-19.8.1.tgz", + "integrity": "sha512-kSJj34Rp10ItP+Eh9oCItiuN/HwGQMXBnIRk69jdOwEW9llW9FlyqcWYbHPSGofmjsqeoxa38UaEA5tsbm2JWw==", "dev": true, - "optional": true, - "os": [ - "freebsd" - ], + "license": "MIT", + "dependencies": { + "@commitlint/types": "^19.8.1", + "chalk": "^5.3.0" + }, "engines": { - "node": ">=18" + "node": ">=v18" } }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.10.tgz", - "integrity": "sha512-LLgJfHJk014Aa4anGDbh8bmI5Lk+QidDmGzuC2D+vP7mv/GeSN+H39zOf7pN5N8p059FcOfs2bVlrRr4SK9WxA==", - "cpu": [ - "x64" - ], + "node_modules/@commitlint/is-ignored": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-19.8.1.tgz", + "integrity": "sha512-AceOhEhekBUQ5dzrVhDDsbMaY5LqtN8s1mqSnT2Kz1ERvVZkNihrs3Sfk1Je/rxRNbXYFzKZSHaPsEJJDJV8dg==", "dev": true, - "optional": true, - "os": [ - "freebsd" - ], + "license": "MIT", + "dependencies": { + "@commitlint/types": "^19.8.1", + "semver": "^7.6.0" + }, "engines": { - "node": ">=18" + "node": ">=v18" } }, - "node_modules/@esbuild/linux-arm": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.10.tgz", - "integrity": "sha512-oR31GtBTFYCqEBALI9r6WxoU/ZofZl962pouZRTEYECvNF/dtXKku8YXcJkhgK/beU+zedXfIzHijSRapJY3vg==", - "cpu": [ - "arm" - ], + "node_modules/@commitlint/is-ignored/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, "engines": { - "node": ">=18" + "node": ">=10" } }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.10.tgz", - "integrity": "sha512-5luJWN6YKBsawd5f9i4+c+geYiVEw20FVW5x0v1kEMWNq8UctFjDiMATBxLvmmHA4bf7F6hTRaJgtghFr9iziQ==", - "cpu": [ - "arm64" - ], + "node_modules/@commitlint/lint": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-19.8.1.tgz", + "integrity": "sha512-52PFbsl+1EvMuokZXLRlOsdcLHf10isTPlWwoY1FQIidTsTvjKXVXYb7AvtpWkDzRO2ZsqIgPK7bI98x8LRUEw==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "license": "MIT", + "dependencies": { + "@commitlint/is-ignored": "^19.8.1", + "@commitlint/parse": "^19.8.1", + "@commitlint/rules": "^19.8.1", + "@commitlint/types": "^19.8.1" + }, "engines": { - "node": ">=18" + "node": ">=v18" } }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.10.tgz", - "integrity": "sha512-NrSCx2Kim3EnnWgS4Txn0QGt0Xipoumb6z6sUtl5bOEZIVKhzfyp/Lyw4C1DIYvzeW/5mWYPBFJU3a/8Yr75DQ==", - "cpu": [ - "ia32" - ], + "node_modules/@commitlint/load": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-19.8.1.tgz", + "integrity": "sha512-9V99EKG3u7z+FEoe4ikgq7YGRCSukAcvmKQuTtUyiYPnOd9a2/H9Ak1J9nJA1HChRQp9OA/sIKPugGS+FK/k1A==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "license": "MIT", + "dependencies": { + "@commitlint/config-validator": "^19.8.1", + "@commitlint/execute-rule": "^19.8.1", + "@commitlint/resolve-extends": "^19.8.1", + "@commitlint/types": "^19.8.1", + "chalk": "^5.3.0", + "cosmiconfig": "^9.0.0", + "cosmiconfig-typescript-loader": "^6.1.0", + "lodash.isplainobject": "^4.0.6", + "lodash.merge": "^4.6.2", + "lodash.uniq": "^4.5.0" + }, "engines": { - "node": ">=18" + "node": ">=v18" } }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.10.tgz", - "integrity": "sha512-xoSphrd4AZda8+rUDDfD9J6FUMjrkTz8itpTITM4/xgerAZZcFW7Dv+sun7333IfKxGG8gAq+3NbfEMJfiY+Eg==", - "cpu": [ - "loong64" - ], + "node_modules/@commitlint/message": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-19.8.1.tgz", + "integrity": "sha512-+PMLQvjRXiU+Ae0Wc+p99EoGEutzSXFVwQfa3jRNUZLNW5odZAyseb92OSBTKCu+9gGZiJASt76Cj3dLTtcTdg==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "license": "MIT", "engines": { - "node": ">=18" + "node": ">=v18" } }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.10.tgz", - "integrity": "sha512-ab6eiuCwoMmYDyTnyptoKkVS3k8fy/1Uvq7Dj5czXI6DF2GqD2ToInBI0SHOp5/X1BdZ26RKc5+qjQNGRBelRA==", - "cpu": [ - "mips64el" - ], + "node_modules/@commitlint/parse": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-19.8.1.tgz", + "integrity": "sha512-mmAHYcMBmAgJDKWdkjIGq50X4yB0pSGpxyOODwYmoexxxiUCy5JJT99t1+PEMK7KtsCtzuWYIAXYAiKR+k+/Jw==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "license": "MIT", + "dependencies": { + "@commitlint/types": "^19.8.1", + "conventional-changelog-angular": "^7.0.0", + "conventional-commits-parser": "^5.0.0" + }, "engines": { - "node": ">=18" + "node": ">=v18" } }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.10.tgz", - "integrity": "sha512-NLinzzOgZQsGpsTkEbdJTCanwA5/wozN9dSgEl12haXJBzMTpssebuXR42bthOF3z7zXFWH1AmvWunUCkBE4EA==", - "cpu": [ - "ppc64" - ], + "node_modules/@commitlint/read": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-19.8.1.tgz", + "integrity": "sha512-03Jbjb1MqluaVXKHKRuGhcKWtSgh3Jizqy2lJCRbRrnWpcM06MYm8th59Xcns8EqBYvo0Xqb+2DoZFlga97uXQ==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "license": "MIT", + "dependencies": { + "@commitlint/top-level": "^19.8.1", + "@commitlint/types": "^19.8.1", + "git-raw-commits": "^4.0.0", + "minimist": "^1.2.8", + "tinyexec": "^1.0.0" + }, "engines": { - "node": ">=18" + "node": ">=v18" } }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.10.tgz", - "integrity": "sha512-FE557XdZDrtX8NMIeA8LBJX3dC2M8VGXwfrQWU7LB5SLOajfJIxmSdyL/gU1m64Zs9CBKvm4UAuBp5aJ8OgnrA==", - "cpu": [ - "riscv64" - ], + "node_modules/@commitlint/resolve-extends": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-19.8.1.tgz", + "integrity": "sha512-GM0mAhFk49I+T/5UCYns5ayGStkTt4XFFrjjf0L4S26xoMTSkdCf9ZRO8en1kuopC4isDFuEm7ZOm/WRVeElVg==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "license": "MIT", + "dependencies": { + "@commitlint/config-validator": "^19.8.1", + "@commitlint/types": "^19.8.1", + "global-directory": "^4.0.1", + "import-meta-resolve": "^4.0.0", + "lodash.mergewith": "^4.6.2", + "resolve-from": "^5.0.0" + }, "engines": { - "node": ">=18" + "node": ">=v18" } }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.10.tgz", - "integrity": "sha512-3BBSbgzuB9ajLoVZk0mGu+EHlBwkusRmeNYdqmznmMc9zGASFjSsxgkNsqmXugpPk00gJ0JNKh/97nxmjctdew==", - "cpu": [ - "s390x" - ], + "node_modules/@commitlint/rules": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-19.8.1.tgz", + "integrity": "sha512-Hnlhd9DyvGiGwjfjfToMi1dsnw1EXKGJNLTcsuGORHz6SS9swRgkBsou33MQ2n51/boIDrbsg4tIBbRpEWK2kw==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "license": "MIT", + "dependencies": { + "@commitlint/ensure": "^19.8.1", + "@commitlint/message": "^19.8.1", + "@commitlint/to-lines": "^19.8.1", + "@commitlint/types": "^19.8.1" + }, "engines": { - "node": ">=18" + "node": ">=v18" } }, - "node_modules/@esbuild/linux-x64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.10.tgz", - "integrity": "sha512-QSX81KhFoZGwenVyPoberggdW1nrQZSvfVDAIUXr3WqLRZGZqWk/P4T8p2SP+de2Sr5HPcvjhcJzEiulKgnxtA==", - "cpu": [ - "x64" - ], + "node_modules/@commitlint/to-lines": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-19.8.1.tgz", + "integrity": "sha512-98Mm5inzbWTKuZQr2aW4SReY6WUukdWXuZhrqf1QdKPZBCCsXuG87c+iP0bwtD6DBnmVVQjgp4whoHRVixyPBg==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "license": "MIT", "engines": { - "node": ">=18" + "node": ">=v18" } }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.10.tgz", - "integrity": "sha512-AKQM3gfYfSW8XRk8DdMCzaLUFB15dTrZfnX8WXQoOUpUBQ+NaAFCP1kPS/ykbbGYz7rxn0WS48/81l9hFl3u4A==", - "cpu": [ - "arm64" - ], + "node_modules/@commitlint/top-level": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-19.8.1.tgz", + "integrity": "sha512-Ph8IN1IOHPSDhURCSXBz44+CIu+60duFwRsg6HqaISFHQHbmBtxVw4ZrFNIYUzEP7WwrNPxa2/5qJ//NK1FGcw==", "dev": true, - "optional": true, - "os": [ - "netbsd" - ], + "license": "MIT", + "dependencies": { + "find-up": "^7.0.0" + }, "engines": { - "node": ">=18" + "node": ">=v18" } }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.10.tgz", - "integrity": "sha512-7RTytDPGU6fek/hWuN9qQpeGPBZFfB4zZgcz2VK2Z5VpdUxEI8JKYsg3JfO0n/Z1E/6l05n0unDCNc4HnhQGig==", - "cpu": [ - "x64" - ], + "node_modules/@commitlint/types": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-19.8.1.tgz", + "integrity": "sha512-/yCrWGCoA1SVKOks25EGadP9Pnj0oAIHGpl2wH2M2Y46dPM2ueb8wyCVOD7O3WCTkaJ0IkKvzhl1JY7+uCT2Dw==", "dev": true, - "optional": true, - "os": [ - "netbsd" - ], + "license": "MIT", + "dependencies": { + "@types/conventional-commits-parser": "^5.0.0", + "chalk": "^5.3.0" + }, "engines": { - "node": ">=18" + "node": ">=v18" } }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.10.tgz", - "integrity": "sha512-5Se0VM9Wtq797YFn+dLimf2Zx6McttsH2olUBsDml+lm0GOCRVebRWUvDtkY4BWYv/3NgzS8b/UM3jQNh5hYyw==", - "cpu": [ - "arm64" - ], + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dev": true, - "optional": true, - "os": [ - "openbsd" - ], + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, "engines": { - "node": ">=18" + "node": ">=12" } }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.10.tgz", - "integrity": "sha512-XkA4frq1TLj4bEMB+2HnI0+4RnjbuGZfet2gs/LNs5Hc7D89ZQBHQ0gL2ND6Lzu1+QVkjp3x1gIcPKzRNP8bXw==", - "cpu": [ - "x64" - ], + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" } }, - "node_modules/@esbuild/openharmony-arm64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.10.tgz", - "integrity": "sha512-AVTSBhTX8Y/Fz6OmIVBip9tJzZEUcY8WLh7I59+upa5/GPhh2/aM6bvOMQySspnCCHvFi79kMtdJS1w0DXAeag==", - "cpu": [ - "arm64" - ], + "node_modules/@csstools/color-helpers": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz", + "integrity": "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==", "dev": true, - "optional": true, - "os": [ - "openharmony" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } ], + "license": "MIT-0", "engines": { "node": ">=18" } }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.10.tgz", - "integrity": "sha512-fswk3XT0Uf2pGJmOpDB7yknqhVkJQkAQOcW/ccVOtfx05LkbWOaRAtn5SaqXypeKQra1QaEa841PgrSL9ubSPQ==", - "cpu": [ - "x64" - ], + "node_modules/@csstools/css-calc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz", + "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==", "dev": true, - "optional": true, - "os": [ - "sunos" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } ], + "license": "MIT", "engines": { "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.10.tgz", - "integrity": "sha512-ah+9b59KDTSfpaCg6VdJoOQvKjI33nTaQr4UluQwW7aEwZQsbMCfTmfEO4VyewOxx4RaDT/xCy9ra2GPWmO7Kw==", - "cpu": [ - "arm64" - ], + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/css-color-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz", + "integrity": "sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==", "dev": true, - "optional": true, - "os": [ - "win32" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } ], + "license": "MIT", + "dependencies": { + "@csstools/color-helpers": "^5.1.0", + "@csstools/css-calc": "^2.1.4" + }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" } }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.10.tgz", - "integrity": "sha512-QHPDbKkrGO8/cz9LKVnJU22HOi4pxZnZhhA2HYHez5Pz4JeffhDjf85E57Oyco163GnzNCVkZK0b/n4Y0UHcSw==", - "cpu": [ - "ia32" - ], + "node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", + "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==", "dev": true, - "optional": true, - "os": [ - "win32" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } ], + "license": "MIT", + "peer": true, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.4" } }, - "node_modules/@esbuild/win32-x64": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.10.tgz", - "integrity": "sha512-9KpxSVFCu0iK1owoez6aC/s/EdUQLDN3adTxGCqxMVhrPDj6bt5dbrHDXUuq+Bs2vATFBBrQS5vdQ/Ed2P+nbw==", - "cpu": [ - "x64" - ], + "node_modules/@csstools/css-tokenizer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", + "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==", "dev": true, - "optional": true, - "os": [ - "win32" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } ], + "license": "MIT", + "peer": true, "engines": { "node": ">=18" } }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", - "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", + "node_modules/@discoveryjs/json-ext": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz", + "integrity": "sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==", "dev": true, - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, + "license": "MIT", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + "node": ">=14.17.0" } }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "node_modules/@emnapi/core": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.7.1.tgz", + "integrity": "sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==", "dev": true, - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.1.0", + "tslib": "^2.4.0" } }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "node_modules/@emnapi/runtime": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.7.1.tgz", + "integrity": "sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==", "dev": true, + "license": "MIT", + "optional": true, "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "tslib": "^2.4.0" } }, - "node_modules/@eslint/eslintrc/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/@emnapi/wasi-threads": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", + "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", "dev": true, + "license": "MIT", + "optional": true, "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "tslib": "^2.4.0" } }, - "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", + "cpu": [ + "ppc64" + ], "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@eslint/eslintrc/node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "node_modules/@esbuild/android-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", + "cpu": [ + "arm" + ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">= 4" + "node": ">=18" } }, - "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/@esbuild/android-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "*" + "node": ">=18" } }, - "node_modules/@eslint/js": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", - "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "node_modules/@esbuild/android-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", + "cpu": [ + "x64" + ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=18" } }, - "node_modules/@gerhobbelt/gitignore-parser": { - "version": "0.2.0-9", - "resolved": "https://registry.npmjs.org/@gerhobbelt/gitignore-parser/-/gitignore-parser-0.2.0-9.tgz", - "integrity": "sha512-leOyCx+xnmioBSPqdkFBi1drkdM+Nm5+MfgffRcdkcVVUjFuAlxqEJ7jkYeXyHLvL9/l7ejPGooE1TPAo7qmmA==", + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=10" + "node": ">=18" } }, - "node_modules/@hapi/bourne": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-2.1.0.tgz", - "integrity": "sha512-i1BpaNDVLJdRBEKeJWkVO6tYX6DMFBuwMhSuWqLsY4ufeTKGVuV5rBsUhxPayXqnnWHgXUAmWK16H/ykO5Wj4Q==", - "dev": true - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", - "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", - "deprecated": "Use @eslint/config-array instead", + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=10.10.0" + "node": ">=18" } }, - "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": "*" + "node": ">=18" } }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "node_modules/@esbuild/linux-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", + "cpu": [ + "arm" + ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "node": ">=18" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "deprecated": "Use @eslint/object-schema instead", - "dev": true - }, - "node_modules/@inquirer/ansi": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.0.tgz", - "integrity": "sha512-JWaTfCxI1eTmJ1BIv86vUfjVatOdxwD0DAVKYevY8SazeUUZtW+tNbsdejVO1GYE0GXJW1N1ahmiC3TFd+7wZA==", + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", + "cpu": [ + "arm64" + ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { "node": ">=18" } }, - "node_modules/@inquirer/checkbox": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.2.4.tgz", - "integrity": "sha512-2n9Vgf4HSciFq8ttKXk+qy+GsyTXPV1An6QAwe/8bkbbqvG4VW1I/ZY1pNu2rf+h9bdzMLPbRSfcNxkHBy/Ydw==", + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", + "cpu": [ + "ia32" + ], "dev": true, - "dependencies": { - "@inquirer/ansi": "^1.0.0", - "@inquirer/core": "^10.2.2", - "@inquirer/figures": "^1.0.13", - "@inquirer/type": "^3.0.8", - "yoctocolors-cjs": "^2.1.2" - }, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } } }, - "node_modules/@inquirer/confirm": { - "version": "5.1.18", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.18.tgz", - "integrity": "sha512-MilmWOzHa3Ks11tzvuAmFoAd/wRuaP3SwlT1IZhyMke31FKLxPiuDWcGXhU+PKveNOpAc4axzAgrgxuIJJRmLw==", + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", + "cpu": [ + "loong64" + ], "dev": true, - "dependencies": { - "@inquirer/core": "^10.2.2", - "@inquirer/type": "^3.0.8" - }, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } } }, - "node_modules/@inquirer/core": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.2.2.tgz", - "integrity": "sha512-yXq/4QUnk4sHMtmbd7irwiepjB8jXU0kkFRL4nr/aDBA2mDz13cMakEWdDwX3eSCTkk03kwcndD1zfRAIlELxA==", + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", + "cpu": [ + "mips64el" + ], "dev": true, - "dependencies": { - "@inquirer/ansi": "^1.0.0", - "@inquirer/figures": "^1.0.13", - "@inquirer/type": "^3.0.8", - "cli-width": "^4.1.0", - "mute-stream": "^2.0.0", - "signal-exit": "^4.1.0", - "wrap-ansi": "^6.2.0", - "yoctocolors-cjs": "^2.1.2" - }, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } } }, - "node_modules/@inquirer/core/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", + "cpu": [ + "ppc64" + ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/@inquirer/core/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", + "cpu": [ + "riscv64" + ], "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/@inquirer/core/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", + "cpu": [ + "s390x" + ], "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/@inquirer/editor": { - "version": "4.2.20", - "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.20.tgz", - "integrity": "sha512-7omh5y5bK672Q+Brk4HBbnHNowOZwrb/78IFXdrEB9PfdxL3GudQyDk8O9vQ188wj3xrEebS2M9n18BjJoI83g==", + "node_modules/@esbuild/linux-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@inquirer/core": "^10.2.2", - "@inquirer/external-editor": "^1.0.2", - "@inquirer/type": "^3.0.8" - }, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } } }, - "node_modules/@inquirer/expand": { - "version": "4.0.20", - "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.20.tgz", - "integrity": "sha512-Dt9S+6qUg94fEvgn54F2Syf0Z3U8xmnBI9ATq2f5h9xt09fs2IJXSCIXyyVHwvggKWFXEY/7jATRo2K6Dkn6Ow==", + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@inquirer/core": "^10.2.2", - "@inquirer/type": "^3.0.8", - "yoctocolors-cjs": "^2.1.2" - }, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], "engines": { "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } } }, - "node_modules/@inquirer/external-editor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.2.tgz", - "integrity": "sha512-yy9cOoBnx58TlsPrIxauKIFQTiyH+0MK4e97y4sV9ERbI+zDxw7i2hxHLCIEGIE/8PPvDxGhgzIOTSOWcs6/MQ==", + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "chardet": "^2.1.0", - "iconv-lite": "^0.7.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/external-editor/node_modules/iconv-lite": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz", - "integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], "engines": { - "node": ">=0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "node": ">=18" } }, - "node_modules/@inquirer/figures": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.13.tgz", - "integrity": "sha512-lGPVU3yO9ZNqA7vTYz26jny41lE7yoQansmqdMLBEfqaGsmdg7V3W9mK9Pvb5IL4EVZ9GnSDGMO/cJXud5dMaw==", + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", + "cpu": [ + "arm64" + ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], "engines": { "node": ">=18" } }, - "node_modules/@inquirer/input": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.2.4.tgz", - "integrity": "sha512-cwSGpLBMwpwcZZsc6s1gThm0J+it/KIJ+1qFL2euLmSKUMGumJ5TcbMgxEjMjNHRGadouIYbiIgruKoDZk7klw==", + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@inquirer/core": "^10.2.2", - "@inquirer/type": "^3.0.8" - }, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], "engines": { "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } } }, - "node_modules/@inquirer/number": { - "version": "3.0.20", - "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.20.tgz", - "integrity": "sha512-bbooay64VD1Z6uMfNehED2A2YOPHSJnQLs9/4WNiV/EK+vXczf/R988itL2XLDGTgmhMF2KkiWZo+iEZmc4jqg==", + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@inquirer/core": "^10.2.2", - "@inquirer/type": "^3.0.8" - }, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], "engines": { "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } } }, - "node_modules/@inquirer/password": { - "version": "4.0.20", - "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.20.tgz", - "integrity": "sha512-nxSaPV2cPvvoOmRygQR+h0B+Av73B01cqYLcr7NXcGXhbmsYfUb8fDdw2Us1bI2YsX+VvY7I7upgFYsyf8+Nug==", + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@inquirer/ansi": "^1.0.0", - "@inquirer/core": "^10.2.2", - "@inquirer/type": "^3.0.8" - }, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], "engines": { "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } } }, - "node_modules/@inquirer/prompts": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.8.6.tgz", - "integrity": "sha512-68JhkiojicX9SBUD8FE/pSKbOKtwoyaVj1kwqLfvjlVXZvOy3iaSWX4dCLsZyYx/5Ur07Fq+yuDNOen+5ce6ig==", + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@inquirer/checkbox": "^4.2.4", - "@inquirer/confirm": "^5.1.18", - "@inquirer/editor": "^4.2.20", - "@inquirer/expand": "^4.0.20", - "@inquirer/input": "^4.2.4", - "@inquirer/number": "^3.0.20", - "@inquirer/password": "^4.0.20", - "@inquirer/rawlist": "^4.1.8", - "@inquirer/search": "^3.1.3", - "@inquirer/select": "^4.3.4" - }, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } } }, - "node_modules/@inquirer/rawlist": { - "version": "4.1.8", - "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.8.tgz", - "integrity": "sha512-CQ2VkIASbgI2PxdzlkeeieLRmniaUU1Aoi5ggEdm6BIyqopE9GuDXdDOj9XiwOqK5qm72oI2i6J+Gnjaa26ejg==", + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", + "cpu": [ + "ia32" + ], "dev": true, - "dependencies": { - "@inquirer/core": "^10.2.2", - "@inquirer/type": "^3.0.8", - "yoctocolors-cjs": "^2.1.2" - }, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } } }, - "node_modules/@inquirer/search": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.1.3.tgz", - "integrity": "sha512-D5T6ioybJJH0IiSUK/JXcoRrrm8sXwzrVMjibuPs+AgxmogKslaafy1oxFiorNI4s3ElSkeQZbhYQgLqiL8h6Q==", + "node_modules/@esbuild/win32-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@inquirer/core": "^10.2.2", - "@inquirer/figures": "^1.0.13", - "@inquirer/type": "^3.0.8", - "yoctocolors-cjs": "^2.1.2" - }, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } } }, - "node_modules/@inquirer/select": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.3.4.tgz", - "integrity": "sha512-Qp20nySRmfbuJBBsgPU7E/cL62Hf250vMZRzYDcBHty2zdD1kKCnoDFWRr0WO2ZzaXp3R7a4esaVGJUx0E6zvA==", + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", + "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", "dev": true, + "license": "MIT", "dependencies": { - "@inquirer/ansi": "^1.0.0", - "@inquirer/core": "^10.2.2", - "@inquirer/figures": "^1.0.13", - "@inquirer/type": "^3.0.8", - "yoctocolors-cjs": "^2.1.2" + "eslint-visitor-keys": "^3.4.3" }, "engines": { - "node": ">=18" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "peerDependencies": { - "@types/node": ">=18" + "funding": { + "url": "https://opencollective.com/eslint" }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@inquirer/type": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.8.tgz", - "integrity": "sha512-lg9Whz8onIHRthWaN1Q9EGLa/0LFJjyM8mEUbL1eTi6yMGvBf8gvyDLtxSXztQsxMvhxxNpJYrwa1YHdq+w4Jw==", + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", "dev": true, + "license": "MIT", "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "license": "MIT", "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": ">=12" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "engines": { - "node": ">=12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "url": "https://opencollective.com/eslint" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "engines": { - "node": ">=12" + "node_modules/@eslint/eslintrc/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" - }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, + "node_modules/@eslint/eslintrc/node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">= 4" } }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, + "license": "MIT" + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=8" + "node": "*" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "node_modules/@eslint/js": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, + "node_modules/@gerhobbelt/gitignore-parser": { + "version": "0.2.0-9", + "resolved": "https://registry.npmjs.org/@gerhobbelt/gitignore-parser/-/gitignore-parser-0.2.0-9.tgz", + "integrity": "sha512-leOyCx+xnmioBSPqdkFBi1drkdM+Nm5+MfgffRcdkcVVUjFuAlxqEJ7jkYeXyHLvL9/l7ejPGooE1TPAo7qmmA==", + "license": "Apache License, Version 2.0", "engines": { - "node": ">=6" + "node": ">=10" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/@hapi/bourne": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-2.1.0.tgz", + "integrity": "sha512-i1BpaNDVLJdRBEKeJWkVO6tYX6DMFBuwMhSuWqLsY4ufeTKGVuV5rBsUhxPayXqnnWHgXUAmWK16H/ykO5Wj4Q==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", "dev": true, + "license": "Apache-2.0", "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" }, "engines": { - "node": ">=8" + "node": ">=10.10.0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, + "license": "MIT", "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { - "p-locate": "^4.1.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=8" + "node": "*" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, + "license": "Apache-2.0", "engines": { - "node": ">=6" + "node": ">=12.22" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } + "license": "BSD-3-Clause" }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "node_modules/@inquirer/ansi": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.2.tgz", + "integrity": "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "node_modules/@inquirer/checkbox": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.3.2.tgz", + "integrity": "sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==", "dev": true, + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, "engines": { - "node": ">=8" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@jest/console": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", - "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "node_modules/@inquirer/confirm": { + "version": "5.1.21", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.21.tgz", + "integrity": "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0" + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@jest/console/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@inquirer/core": { + "version": "10.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", + "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@inquirer/ansi": "^1.0.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "cli-width": "^4.1.0", + "mute-stream": "^2.0.0", + "signal-exit": "^4.1.0", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.3" }, "engines": { - "node": ">=10" + "node": ">=18" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@jest/core": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", - "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", - "dev": true, - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/reporters": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.7.0", - "jest-config": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-resolve-dependencies": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "jest-watcher": "^29.7.0", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/core/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@inquirer/core/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@jest/diff-sequences": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz", - "integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==", + "node_modules/@inquirer/core/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } + "license": "MIT" }, - "node_modules/@jest/environment": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", - "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "node_modules/@inquirer/core/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/@jest/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "node_modules/@inquirer/core/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, + "license": "MIT", "dependencies": { - "expect": "^29.7.0", - "jest-snapshot": "^29.7.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "node_modules/@inquirer/editor": { + "version": "4.2.23", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.23.tgz", + "integrity": "sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==", "dev": true, + "license": "MIT", "dependencies": { - "jest-get-type": "^29.6.3" + "@inquirer/core": "^10.3.2", + "@inquirer/external-editor": "^1.0.3", + "@inquirer/type": "^3.0.10" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@jest/fake-timers": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", - "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "node_modules/@inquirer/expand": { + "version": "4.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.23.tgz", + "integrity": "sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/get-type": { - "version": "30.1.0", - "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz", - "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==", - "dev": true, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@jest/globals": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", - "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "node_modules/@inquirer/external-editor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.3.tgz", + "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/types": "^29.6.3", - "jest-mock": "^29.7.0" + "chardet": "^2.1.1", + "iconv-lite": "^0.7.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@jest/pattern": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", - "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", + "node_modules/@inquirer/external-editor/node_modules/iconv-lite": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz", + "integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==", "dev": true, + "license": "MIT", "dependencies": { - "@types/node": "*", - "jest-regex-util": "30.0.1" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/@jest/pattern/node_modules/jest-regex-util": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", - "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "node_modules/@inquirer/figures": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.15.tgz", + "integrity": "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==", "dev": true, + "license": "MIT", "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=18" } }, - "node_modules/@jest/reporters": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", - "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "node_modules/@inquirer/input": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.3.1.tgz", + "integrity": "sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==", "dev": true, + "license": "MIT", "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" }, "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + "@types/node": ">=18" }, "peerDependenciesMeta": { - "node-notifier": { + "@types/node": { "optional": true } } }, - "node_modules/@jest/reporters/node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "node_modules/@jest/reporters/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@jest/reporters/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@inquirer/number": { + "version": "3.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.23.tgz", + "integrity": "sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" }, "engines": { - "node": ">=10" + "node": ">=18" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@jest/reporters/node_modules/jest-worker": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "node_modules/@inquirer/password": { + "version": "4.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.23.tgz", + "integrity": "sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==", "dev": true, + "license": "MIT", "dependencies": { - "@types/node": "*", - "jest-util": "^29.7.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@jest/reporters/node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "node_modules/@inquirer/prompts": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.10.1.tgz", + "integrity": "sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@inquirer/checkbox": "^4.3.2", + "@inquirer/confirm": "^5.1.21", + "@inquirer/editor": "^4.2.23", + "@inquirer/expand": "^4.0.23", + "@inquirer/input": "^4.3.1", + "@inquirer/number": "^3.0.23", + "@inquirer/password": "^4.0.23", + "@inquirer/rawlist": "^4.1.11", + "@inquirer/search": "^3.2.2", + "@inquirer/select": "^4.4.2" }, "engines": { - "node": ">=10" + "node": ">=18" }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "node_modules/@inquirer/rawlist": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.11.tgz", + "integrity": "sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==", "dev": true, + "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.27.8" + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@jest/source-map": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", - "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "node_modules/@inquirer/search": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.2.2.tgz", + "integrity": "sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.18", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@jest/source-map/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "node_modules/@inquirer/select": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.4.2.tgz", + "integrity": "sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@jest/test-result": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", - "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "node_modules/@inquirer/type": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", + "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "license": "ISC", "dependencies": { - "@jest/console": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=12" } }, - "node_modules/@jest/test-sequencer": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", - "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", - "dev": true, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "license": "MIT", "dependencies": { - "@jest/test-result": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "slash": "^3.0.0" + "ansi-regex": "^6.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/@jest/transform": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, + "license": "ISC", "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/@jest/transform/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "sprintf-js": "~1.0.2" } }, - "node_modules/@jest/transform/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=8" } }, - "node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", "dev": true, + "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@jest/types/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "p-locate": "^4.1.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "devOptional": true, - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/gen-mapping/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "devOptional": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "node": ">=8" } }, - "node_modules/@jridgewell/remapping": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", - "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@jridgewell/remapping/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "devOptional": true, + "node_modules/@istanbuljs/load-nyc-config/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=6.0.0" + "node": ">=8" } }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", - "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", - "devOptional": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/@jridgewell/source-map/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "devOptional": true, + "node_modules/@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "devOptional": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "node_modules/@jest/console/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@jsonjoy.com/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=10.0" + "node": ">=8" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@jsonjoy.com/buffers": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.2.0.tgz", - "integrity": "sha512-6RX+W5a+ZUY/c/7J5s5jK9UinLfJo5oWKh84fb4X0yK2q4WXEWUWZWuEMjvCb1YNUQhEAhUfr5scEGOH7jC4YQ==", + "node_modules/@jest/console/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=10.0" + "node": ">=10" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@jsonjoy.com/codegen": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz", - "integrity": "sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==", - "engines": { - "node": ">=10.0" + "node_modules/@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { - "tslib": "2" + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/@jsonjoy.com/json-pack": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.16.0.tgz", - "integrity": "sha512-L4/W6WRI7pXYJbPGqzYH1zJfckE/0ZP8ttNg/EPLwC+P23wSZYRmz2DNydAu2a8uc20bPlxsvWcYvDYoBJ5BYQ==", + "node_modules/@jest/core/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", "dependencies": { - "@jsonjoy.com/base64": "^1.1.2", - "@jsonjoy.com/buffers": "^1.2.0", - "@jsonjoy.com/codegen": "^1.0.0", - "@jsonjoy.com/json-pointer": "^1.0.2", - "@jsonjoy.com/util": "^1.9.0", - "hyperdyperid": "^1.2.0", - "thingies": "^2.5.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=10.0" + "node": ">=8" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@jsonjoy.com/json-pointer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-1.0.2.tgz", - "integrity": "sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==", + "node_modules/@jest/core/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", "dependencies": { - "@jsonjoy.com/codegen": "^1.0.0", - "@jsonjoy.com/util": "^1.9.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=10.0" + "node": ">=10" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@jsonjoy.com/util": { + "node_modules/@jest/diff-sequences": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz", + "integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/get-type": { + "version": "30.1.0", + "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz", + "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/pattern": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", + "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-regex-util": "30.0.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/pattern/node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/reporters/node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jest/reporters/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/reporters/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@jest/reporters/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/reporters/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@jest/reporters/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/transform/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@jsonjoy.com/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/buffers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.2.1.tgz", + "integrity": "sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/codegen": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz", + "integrity": "sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pack": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.21.0.tgz", + "integrity": "sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/base64": "^1.1.2", + "@jsonjoy.com/buffers": "^1.2.0", + "@jsonjoy.com/codegen": "^1.0.0", + "@jsonjoy.com/json-pointer": "^1.0.2", + "@jsonjoy.com/util": "^1.9.0", + "hyperdyperid": "^1.2.0", + "thingies": "^2.5.0", + "tree-dump": "^1.1.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pointer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-1.0.2.tgz", + "integrity": "sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==", + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/codegen": "^1.0.0", + "@jsonjoy.com/util": "^1.9.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/util": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.9.0.tgz", "integrity": "sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==", + "license": "Apache-2.0", "dependencies": { "@jsonjoy.com/buffers": "^1.0.0", "@jsonjoy.com/codegen": "^1.0.0" @@ -6693,14 +7922,17 @@ "node_modules/@leichtgewicht/ip-codec": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", - "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==" + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", + "license": "MIT" }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.19.1.tgz", - "integrity": "sha512-3Y2h3MZKjec1eAqSTBclATlX+AbC6n1LgfVzRMJLt3v6w0RCYgwLrjbxPDbhsYHt6Wdqc/aCceNJYgj448ELQQ==", + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.22.0.tgz", + "integrity": "sha512-VUpl106XVTCpDmTBil2ehgJZjhyLY2QZikzF8NvTXtLRF1CvO5iEE2UNZdVIUer35vFOwMKYeUGbjJtvPWan3g==", + "license": "MIT", "dependencies": { - "ajv": "^6.12.6", + "ajv": "^8.17.1", + "ajv-formats": "^3.0.1", "content-type": "^1.0.5", "cors": "^2.8.5", "cross-spawn": "^7.0.5", @@ -6715,33 +7947,22 @@ }, "engines": { "node": ">=18" - } - }, - "node_modules/@modelcontextprotocol/sdk/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "peerDependencies": { + "@cfworker/json-schema": "^4.1.1" + }, + "peerDependenciesMeta": { + "@cfworker/json-schema": { + "optional": true + } } }, - "node_modules/@modelcontextprotocol/sdk/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, "node_modules/@napi-rs/wasm-runtime": { "version": "0.2.12", "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "@emnapi/core": "^1.4.3", @@ -6754,6 +7975,7 @@ "resolved": "https://registry.npmjs.org/@node-rs/crc32/-/crc32-1.10.6.tgz", "integrity": "sha512-+llXfqt+UzgoDzT9of5vPQPGqTAVCohU74I9zIBkNo5TH6s2P31DFJOGsJQKN207f0GHnYv5pV3wh3BCY/un/A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 10" }, @@ -6786,6 +8008,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -6802,6 +8025,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -6818,6 +8042,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -6834,6 +8059,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -6850,6 +8076,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -6866,6 +8093,7 @@ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -6882,6 +8110,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -6898,6 +8127,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -6914,6 +8144,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -6930,6 +8161,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -6946,6 +8178,7 @@ "wasm32" ], "dev": true, + "license": "MIT", "optional": true, "dependencies": { "@napi-rs/wasm-runtime": "^0.2.5" @@ -6962,6 +8195,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -6978,6 +8212,7 @@ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -6994,6 +8229,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -7006,6 +8242,7 @@ "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -7018,6 +8255,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", "engines": { "node": ">= 8" } @@ -7026,6 +8264,7 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -7038,6 +8277,7 @@ "version": "1.15.10", "resolved": "https://registry.npmjs.org/@oozcitak/dom/-/dom-1.15.10.tgz", "integrity": "sha512-0JT29/LaxVgRcGKvHmSrUTEvZ8BXvZhGl2LASRUgHqDTC1M5g1pLmVv56IYNyt3bG2CUjDkc67wnyZC14pbQrQ==", + "license": "MIT", "dependencies": { "@oozcitak/infra": "1.0.8", "@oozcitak/url": "1.0.4", @@ -7051,6 +8291,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/@oozcitak/infra/-/infra-1.0.8.tgz", "integrity": "sha512-JRAUc9VR6IGHOL7OGF+yrvs0LO8SlqGnPAMqyzOuFZPSZSXI7Xf2O9+awQPSMXgIWGtgUf/dA6Hs6X6ySEaWTg==", + "license": "MIT", "dependencies": { "@oozcitak/util": "8.3.8" }, @@ -7062,6 +8303,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/@oozcitak/url/-/url-1.0.4.tgz", "integrity": "sha512-kDcD8y+y3FCSOvnBI6HJgl00viO/nGbQoCINmQ0h98OhnGITrWR3bOGfwYCthgcrV8AnTJz8MzslTQbC3SOAmw==", + "license": "MIT", "dependencies": { "@oozcitak/infra": "1.0.8", "@oozcitak/util": "8.3.8" @@ -7074,6 +8316,7 @@ "version": "8.3.8", "resolved": "https://registry.npmjs.org/@oozcitak/util/-/util-8.3.8.tgz", "integrity": "sha512-T8TbSnGsxo6TDBJx/Sgv/BlVJL3tshxZP7Aq5R1mSnM5OcHY2dQaxLMu2+E8u3gN0MLOzdjurqN4ZRVuzQycOQ==", + "license": "MIT", "engines": { "node": ">=8.0" } @@ -7082,6 +8325,8 @@ "version": "1.9.0", "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", + "license": "Apache-2.0", + "peer": true, "engines": { "node": ">=8.0.0" } @@ -7090,6 +8335,7 @@ "version": "0.200.0", "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.200.0.tgz", "integrity": "sha512-IKJBQxh91qJ+3ssRly5hYEJ8NDHu9oY/B1PXVSCWf7zytmYO9RNLB0Ox9XQ/fJ8m6gY6Q6NtBWlmXfaXt5Uc4Q==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/api": "^1.3.0" }, @@ -7098,9 +8344,10 @@ } }, "node_modules/@opentelemetry/core": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.1.0.tgz", - "integrity": "sha512-RMEtHsxJs/GiHHxYT58IY57UXAQTuUnZVco6ymDEqTNlJKTimM4qPUPVe8InNFyBjhHBEAx4k3Q8LtNayBsbUQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.2.0.tgz", + "integrity": "sha512-FuabnnUm8LflnieVxs6eP7Z383hgQU4W1e3KJS6aOG3RxWxcHyBxH8fDMHNgu/gFx/M2jvTOW/4/PHhLz6bjWw==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/semantic-conventions": "^1.29.0" }, @@ -7115,6 +8362,7 @@ "version": "0.200.0", "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-http/-/exporter-logs-otlp-http-0.200.0.tgz", "integrity": "sha512-KfWw49htbGGp9s8N4KI8EQ9XuqKJ0VG+yVYVYFiCYSjEV32qpQ5qZ9UZBzOZ6xRb+E16SXOSCT3RkqBVSABZ+g==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/api-logs": "0.200.0", "@opentelemetry/core": "2.0.0", @@ -7133,6 +8381,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.0.0.tgz", "integrity": "sha512-SLX36allrcnVaPYG3R78F/UZZsBsvbc7lMCLx37LyH5MJ1KAAZ2E3mW9OAD3zGz0G8q/BtoS5VUrjzDydhD6LQ==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/semantic-conventions": "^1.29.0" }, @@ -7147,6 +8396,7 @@ "version": "0.200.0", "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-http/-/exporter-metrics-otlp-http-0.200.0.tgz", "integrity": "sha512-5BiR6i8yHc9+qW7F6LqkuUnIzVNA7lt0qRxIKcKT+gq3eGUPHZ3DY29sfxI3tkvnwMgtnHDMNze5DdxW39HsAw==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "2.0.0", "@opentelemetry/otlp-exporter-base": "0.200.0", @@ -7165,6 +8415,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.0.0.tgz", "integrity": "sha512-SLX36allrcnVaPYG3R78F/UZZsBsvbc7lMCLx37LyH5MJ1KAAZ2E3mW9OAD3zGz0G8q/BtoS5VUrjzDydhD6LQ==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/semantic-conventions": "^1.29.0" }, @@ -7179,6 +8430,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.0.0.tgz", "integrity": "sha512-rnZr6dML2z4IARI4zPGQV4arDikF/9OXZQzrC01dLmn0CZxU5U5OLd/m1T7YkGRj5UitjeoCtg/zorlgMQcdTg==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "2.0.0", "@opentelemetry/semantic-conventions": "^1.29.0" @@ -7194,6 +8446,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-2.0.0.tgz", "integrity": "sha512-Bvy8QDjO05umd0+j+gDeWcTaVa1/R2lDj/eOvjzpm8VQj1K1vVZJuyjThpV5/lSHyYW2JaHF2IQ7Z8twJFAhjA==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "2.0.0", "@opentelemetry/resources": "2.0.0" @@ -7209,6 +8462,7 @@ "version": "0.200.0", "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.200.0.tgz", "integrity": "sha512-IxJgA3FD7q4V6gGq4bnmQM5nTIyMDkoGFGrBrrDjB6onEiq1pafma55V+bHvGYLWvcqbBbRfezr1GED88lacEQ==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "2.0.0", "@opentelemetry/otlp-transformer": "0.200.0" @@ -7224,6 +8478,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.0.0.tgz", "integrity": "sha512-SLX36allrcnVaPYG3R78F/UZZsBsvbc7lMCLx37LyH5MJ1KAAZ2E3mW9OAD3zGz0G8q/BtoS5VUrjzDydhD6LQ==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/semantic-conventions": "^1.29.0" }, @@ -7238,6 +8493,7 @@ "version": "0.200.0", "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.200.0.tgz", "integrity": "sha512-+9YDZbYybOnv7sWzebWOeK6gKyt2XE7iarSyBFkwwnP559pEevKOUD8NyDHhRjCSp13ybh9iVXlMfcj/DwF/yw==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/api-logs": "0.200.0", "@opentelemetry/core": "2.0.0", @@ -7258,6 +8514,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.0.0.tgz", "integrity": "sha512-SLX36allrcnVaPYG3R78F/UZZsBsvbc7lMCLx37LyH5MJ1KAAZ2E3mW9OAD3zGz0G8q/BtoS5VUrjzDydhD6LQ==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/semantic-conventions": "^1.29.0" }, @@ -7272,6 +8529,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.0.0.tgz", "integrity": "sha512-rnZr6dML2z4IARI4zPGQV4arDikF/9OXZQzrC01dLmn0CZxU5U5OLd/m1T7YkGRj5UitjeoCtg/zorlgMQcdTg==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "2.0.0", "@opentelemetry/semantic-conventions": "^1.29.0" @@ -7287,6 +8545,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-2.0.0.tgz", "integrity": "sha512-Bvy8QDjO05umd0+j+gDeWcTaVa1/R2lDj/eOvjzpm8VQj1K1vVZJuyjThpV5/lSHyYW2JaHF2IQ7Z8twJFAhjA==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "2.0.0", "@opentelemetry/resources": "2.0.0" @@ -7299,11 +8558,12 @@ } }, "node_modules/@opentelemetry/resources": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.1.0.tgz", - "integrity": "sha512-1CJjf3LCvoefUOgegxi8h6r4B/wLSzInyhGP2UmIBYNlo4Qk5CZ73e1eEyWmfXvFtm1ybkmfb2DqWvspsYLrWw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz", + "integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==", + "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "2.1.0", + "@opentelemetry/core": "2.2.0", "@opentelemetry/semantic-conventions": "^1.29.0" }, "engines": { @@ -7317,6 +8577,7 @@ "version": "0.200.0", "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.200.0.tgz", "integrity": "sha512-VZG870063NLfObmQQNtCVcdXXLzI3vOjjrRENmU37HYiPFa0ZXpXVDsTD02Nh3AT3xYJzQaWKl2X2lQ2l7TWJA==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/api-logs": "0.200.0", "@opentelemetry/core": "2.0.0", @@ -7333,6 +8594,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.0.0.tgz", "integrity": "sha512-SLX36allrcnVaPYG3R78F/UZZsBsvbc7lMCLx37LyH5MJ1KAAZ2E3mW9OAD3zGz0G8q/BtoS5VUrjzDydhD6LQ==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/semantic-conventions": "^1.29.0" }, @@ -7347,6 +8609,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.0.0.tgz", "integrity": "sha512-rnZr6dML2z4IARI4zPGQV4arDikF/9OXZQzrC01dLmn0CZxU5U5OLd/m1T7YkGRj5UitjeoCtg/zorlgMQcdTg==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "2.0.0", "@opentelemetry/semantic-conventions": "^1.29.0" @@ -7359,12 +8622,13 @@ } }, "node_modules/@opentelemetry/sdk-metrics": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-2.1.0.tgz", - "integrity": "sha512-J9QX459mzqHLL9Y6FZ4wQPRZG4TOpMCyPOh6mkr/humxE1W2S3Bvf4i75yiMW9uyed2Kf5rxmLhTm/UK8vNkAw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-2.2.0.tgz", + "integrity": "sha512-G5KYP6+VJMZzpGipQw7Giif48h6SGQ2PFKEYCybeXJsOCB4fp8azqMAAzE5lnnHK3ZVwYQrgmFbsUJO/zOnwGw==", + "license": "Apache-2.0", "dependencies": { - "@opentelemetry/core": "2.1.0", - "@opentelemetry/resources": "2.1.0" + "@opentelemetry/core": "2.2.0", + "@opentelemetry/resources": "2.2.0" }, "engines": { "node": "^18.19.0 || >=20.6.0" @@ -7377,6 +8641,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.0.0.tgz", "integrity": "sha512-qQnYdX+ZCkonM7tA5iU4fSRsVxbFGml8jbxOgipRGMFHKaXKHQ30js03rTobYjKjIfnOsZSbHKWF0/0v0OQGfw==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "2.0.0", "@opentelemetry/resources": "2.0.0", @@ -7393,6 +8658,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.0.0.tgz", "integrity": "sha512-SLX36allrcnVaPYG3R78F/UZZsBsvbc7lMCLx37LyH5MJ1KAAZ2E3mW9OAD3zGz0G8q/BtoS5VUrjzDydhD6LQ==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/semantic-conventions": "^1.29.0" }, @@ -7407,6 +8673,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.0.0.tgz", "integrity": "sha512-rnZr6dML2z4IARI4zPGQV4arDikF/9OXZQzrC01dLmn0CZxU5U5OLd/m1T7YkGRj5UitjeoCtg/zorlgMQcdTg==", + "license": "Apache-2.0", "dependencies": { "@opentelemetry/core": "2.0.0", "@opentelemetry/semantic-conventions": "^1.29.0" @@ -7419,9 +8686,10 @@ } }, "node_modules/@opentelemetry/semantic-conventions": { - "version": "1.37.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.37.0.tgz", - "integrity": "sha512-JD6DerIKdJGmRp4jQyX5FlrQjA4tjOw1cvfsPAZXfOOEErMUHjPcPSICS+6WnM0nB0efSFARh0KAZss+bvExOA==", + "version": "1.38.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.38.0.tgz", + "integrity": "sha512-kocjix+/sSggfJhwXqClZ3i9Y/MI0fp7b+g7kCRm6psy2dsf8uApTRclwG18h8Avm7C9+fnt+O36PspJ/OzoWg==", + "license": "Apache-2.0", "engines": { "node": ">=14" } @@ -7430,6 +8698,7 @@ "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "license": "MIT", "optional": true, "engines": { "node": ">=14" @@ -7440,6 +8709,7 @@ "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, @@ -7462,6 +8732,7 @@ "url": "https://github.com/webgptorg/promptbook/blob/main/README.md#%EF%B8%8F-contributing" } ], + "license": "CC-BY-4.0", "dependencies": { "spacetrim": "0.11.59" } @@ -7469,27 +8740,32 @@ "node_modules/@protobufjs/aspromise": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", + "license": "BSD-3-Clause" }, "node_modules/@protobufjs/base64": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "license": "BSD-3-Clause" }, "node_modules/@protobufjs/codegen": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "license": "BSD-3-Clause" }, "node_modules/@protobufjs/eventemitter": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", + "license": "BSD-3-Clause" }, "node_modules/@protobufjs/fetch": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "license": "BSD-3-Clause", "dependencies": { "@protobufjs/aspromise": "^1.1.1", "@protobufjs/inquire": "^1.1.0" @@ -7498,40 +8774,46 @@ "node_modules/@protobufjs/float": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", + "license": "BSD-3-Clause" }, "node_modules/@protobufjs/inquire": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", + "license": "BSD-3-Clause" }, "node_modules/@protobufjs/path": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", + "license": "BSD-3-Clause" }, "node_modules/@protobufjs/pool": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", + "license": "BSD-3-Clause" }, "node_modules/@protobufjs/utf8": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", + "license": "BSD-3-Clause" }, "node_modules/@puppeteer/browsers": { - "version": "2.10.10", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.10.10.tgz", - "integrity": "sha512-3ZG500+ZeLql8rE0hjfhkycJjDj0pI/btEh3L9IkWUYcOrgP0xCNRq3HbtbqOPbvDhFaAWD88pDFtlLv8ns8gA==", + "version": "2.10.13", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.10.13.tgz", + "integrity": "sha512-a9Ruw3j3qlnB5a/zHRTkruppynxqaeE4H9WNj5eYGRWqw0ZauZ23f4W2ARf3hghF5doozyD+CRtt7XSYuYRI/Q==", "dev": true, + "license": "Apache-2.0", "dependencies": { "debug": "^4.4.3", "extract-zip": "^2.0.1", "progress": "^2.0.3", "proxy-agent": "^6.5.0", - "semver": "^7.7.2", - "tar-fs": "^3.1.0", + "semver": "^7.7.3", + "tar-fs": "^3.1.1", "yargs": "^17.7.2" }, "bin": { @@ -7541,11 +8823,25 @@ "node": ">=18" } }, + "node_modules/@puppeteer/browsers/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@puppeteer/browsers/node_modules/tar-fs": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.1.tgz", "integrity": "sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg==", "dev": true, + "license": "MIT", "dependencies": { "pump": "^3.0.0", "tar-stream": "^3.1.5" @@ -7555,39 +8851,32 @@ "bare-path": "^3.0.0" } }, - "node_modules/@puppeteer/browsers/node_modules/tar-stream": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", - "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", - "dev": true, - "dependencies": { - "b4a": "^1.6.4", - "fast-fifo": "^1.2.0", - "streamx": "^2.15.0" - } - }, "node_modules/@rtsao/scc": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@sec-ant/readable-stream": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@sinclair/typebox": { "version": "0.27.8", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@sindresorhus/is": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -7600,6 +8889,7 @@ "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -7612,6 +8902,7 @@ "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "type-detect": "4.0.8" } @@ -7621,6 +8912,7 @@ "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -7630,6 +8922,7 @@ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^3.0.0" } @@ -7639,6 +8932,7 @@ "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.3.tgz", "integrity": "sha512-hw6HbX+GyVZzmaYNh82Ecj1vdGZrqVIn/keDTg63IgAwiQPO+xCz99uG6Woqgb4tM0mUiFENKZ4cqd7IX94AXQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^3.0.1", "type-detect": "^4.1.0" @@ -7648,35 +8942,39 @@ "version": "0.7.3", "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.3.tgz", "integrity": "sha512-DE427ROAphMQzU4ENbliGYrBSYPXF+TtLg9S8vzeA+OF4ZKzoDdzfL8sxuMUGS/lgRhM6j1URSk9ghf7Xo1tyA==", - "dev": true + "dev": true, + "license": "(Unlicense OR Apache-2.0)" }, "node_modules/@smithy/abort-controller": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.0.tgz", - "integrity": "sha512-PLUYa+SUKOEZtXFURBu/CNxlsxfaFGxSBPcStL13KpVeVWIfdezWyDqkz7iDLmwnxojXD0s5KzuB5HGHvt4Aeg==", + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-3.1.9.tgz", + "integrity": "sha512-yiW0WI30zj8ZKoSYNx90no7ugVn3khlyH/z5W8qtKBtVE6awRALbhSG+2SAHA1r6bO/6M9utxYKVZ3PCJ1rWxw==", + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.6.0", + "@smithy/types": "^3.7.2", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/abort-controller/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz", + "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/chunked-blob-reader": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-5.2.0.tgz", "integrity": "sha512-WmU0TnhEAJLWvfSeMxBNe5xtbselEO8+4wG0NtZeL8oR21WgH1xiO37El+/Y+H/Ie4SCwBy3MxYWmOYaGgZueA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -7685,11 +8983,12 @@ } }, "node_modules/@smithy/chunked-blob-reader-native": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.2.0.tgz", - "integrity": "sha512-HNbGWdyTfSM1nfrZKQjYTvD8k086+M8s1EYkBUdGC++lhxegUp2HgNf5RIt6oOGVvsC26hBCW/11tv8KbwLn/Q==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.2.1.tgz", + "integrity": "sha512-lX9Ay+6LisTfpLid2zZtIhSEjHMZoAR5hHCR4H7tBz/Zkfr5ea8RcQ7Tk4mi0P76p4cN+Btz16Ffno7YHpKXnQ==", + "license": "Apache-2.0", "dependencies": { - "@smithy/util-base64": "^4.2.0", + "@smithy/util-base64": "^4.3.0", "tslib": "^2.6.2" }, "engines": { @@ -7697,14 +8996,16 @@ } }, "node_modules/@smithy/config-resolver": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.3.0.tgz", - "integrity": "sha512-9oH+n8AVNiLPK/iK/agOsoWfrKZ3FGP3502tkksd6SRsKMYiu7AFX0YXo6YBADdsAj7C+G/aLKdsafIJHxuCkQ==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.3.tgz", + "integrity": "sha512-ezHLe1tKLUxDJo2LHtDuEDyWXolw8WGOR92qb4bQdWq/zKenO5BvctZGrVJBK08zjezSk7bmbKFOXIVyChvDLw==", + "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.3.0", - "@smithy/types": "^4.6.0", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/types": "^4.9.0", "@smithy/util-config-provider": "^4.2.0", - "@smithy/util-middleware": "^4.2.0", + "@smithy/util-endpoints": "^3.2.5", + "@smithy/util-middleware": "^4.2.5", "tslib": "^2.6.2" }, "engines": { @@ -7712,9 +9013,10 @@ } }, "node_modules/@smithy/config-resolver/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -7723,17 +9025,18 @@ } }, "node_modules/@smithy/core": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.14.0.tgz", - "integrity": "sha512-XJ4z5FxvY/t0Dibms/+gLJrI5niRoY0BCmE02fwmPcRYFPI4KI876xaE79YGWIKnEslMbuQPsIEsoU/DXa0DoA==", - "dependencies": { - "@smithy/middleware-serde": "^4.2.0", - "@smithy/protocol-http": "^5.3.0", - "@smithy/types": "^4.6.0", - "@smithy/util-base64": "^4.2.0", + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.18.5.tgz", + "integrity": "sha512-6gnIz3h+PEPQGDj8MnRSjDvKBah042jEoPgjFGJ4iJLBE78L4lY/n98x14XyPF4u3lN179Ub/ZKFY5za9GeLQw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/middleware-serde": "^4.2.6", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", - "@smithy/util-middleware": "^4.2.0", - "@smithy/util-stream": "^4.4.0", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-stream": "^4.5.6", "@smithy/util-utf8": "^4.2.0", "@smithy/uuid": "^1.1.0", "tslib": "^2.6.2" @@ -7743,9 +9046,10 @@ } }, "node_modules/@smithy/core/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -7754,14 +9058,15 @@ } }, "node_modules/@smithy/credential-provider-imds": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.0.tgz", - "integrity": "sha512-SOhFVvFH4D5HJZytb0bLKxCrSnwcqPiNlrw+S4ZXjMnsC+o9JcUQzbZOEQcA8yv9wJFNhfsUiIUKiEnYL68Big==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.5.tgz", + "integrity": "sha512-BZwotjoZWn9+36nimwm/OLIcVe+KYRwzMjfhd4QT7QxPm9WY0HiOV8t/Wlh+HVUif0SBVV7ksq8//hPaBC/okQ==", + "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.3.0", - "@smithy/property-provider": "^4.2.0", - "@smithy/types": "^4.6.0", - "@smithy/url-parser": "^4.2.0", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", "tslib": "^2.6.2" }, "engines": { @@ -7769,9 +9074,10 @@ } }, "node_modules/@smithy/credential-provider-imds/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -7780,12 +9086,13 @@ } }, "node_modules/@smithy/eventstream-codec": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.2.0.tgz", - "integrity": "sha512-XE7CtKfyxYiNZ5vz7OvyTf1osrdbJfmUy+rbh+NLQmZumMGvY0mT0Cq1qKSfhrvLtRYzMsOBuRpi10dyI0EBPg==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.2.5.tgz", + "integrity": "sha512-Ogt4Zi9hEbIP17oQMd68qYOHUzmH47UkK7q7Gl55iIm9oKt27MUGrC5JfpMroeHjdkOliOA4Qt3NQ1xMq/nrlA==", + "license": "Apache-2.0", "dependencies": { "@aws-crypto/crc32": "5.2.0", - "@smithy/types": "^4.6.0", + "@smithy/types": "^4.9.0", "@smithy/util-hex-encoding": "^4.2.0", "tslib": "^2.6.2" }, @@ -7794,9 +9101,10 @@ } }, "node_modules/@smithy/eventstream-codec/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -7805,12 +9113,13 @@ } }, "node_modules/@smithy/eventstream-serde-browser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.0.tgz", - "integrity": "sha512-U53p7fcrk27k8irLhOwUu+UYnBqsXNLKl1XevOpsxK3y1Lndk8R7CSiZV6FN3fYFuTPuJy5pP6qa/bjDzEkRvA==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.5.tgz", + "integrity": "sha512-HohfmCQZjppVnKX2PnXlf47CW3j92Ki6T/vkAT2DhBR47e89pen3s4fIa7otGTtrVxmj7q+IhH0RnC5kpR8wtw==", + "license": "Apache-2.0", "dependencies": { - "@smithy/eventstream-serde-universal": "^4.2.0", - "@smithy/types": "^4.6.0", + "@smithy/eventstream-serde-universal": "^4.2.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -7818,9 +9127,10 @@ } }, "node_modules/@smithy/eventstream-serde-browser/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -7829,11 +9139,12 @@ } }, "node_modules/@smithy/eventstream-serde-config-resolver": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.0.tgz", - "integrity": "sha512-uwx54t8W2Yo9Jr3nVF5cNnkAAnMCJ8Wrm+wDlQY6rY/IrEgZS3OqagtCu/9ceIcZFQ1zVW/zbN9dxb5esuojfA==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.5.tgz", + "integrity": "sha512-ibjQjM7wEXtECiT6my1xfiMH9IcEczMOS6xiCQXoUIYSj5b1CpBbJ3VYbdwDy8Vcg5JHN7eFpOCGk8nyZAltNQ==", + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.6.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -7841,9 +9152,10 @@ } }, "node_modules/@smithy/eventstream-serde-config-resolver/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -7852,12 +9164,13 @@ } }, "node_modules/@smithy/eventstream-serde-node": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.0.tgz", - "integrity": "sha512-yjM2L6QGmWgJjVu/IgYd6hMzwm/tf4VFX0lm8/SvGbGBwc+aFl3hOzvO/e9IJ2XI+22Tx1Zg3vRpFRs04SWFcg==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.5.tgz", + "integrity": "sha512-+elOuaYx6F2H6x1/5BQP5ugv12nfJl66GhxON8+dWVUEDJ9jah/A0tayVdkLRP0AeSac0inYkDz5qBFKfVp2Gg==", + "license": "Apache-2.0", "dependencies": { - "@smithy/eventstream-serde-universal": "^4.2.0", - "@smithy/types": "^4.6.0", + "@smithy/eventstream-serde-universal": "^4.2.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -7865,9 +9178,10 @@ } }, "node_modules/@smithy/eventstream-serde-node/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -7876,12 +9190,13 @@ } }, "node_modules/@smithy/eventstream-serde-universal": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.0.tgz", - "integrity": "sha512-C3jxz6GeRzNyGKhU7oV656ZbuHY93mrfkT12rmjDdZch142ykjn8do+VOkeRNjSGKw01p4g+hdalPYPhmMwk1g==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.5.tgz", + "integrity": "sha512-G9WSqbST45bmIFaeNuP/EnC19Rhp54CcVdX9PDL1zyEB514WsDVXhlyihKlGXnRycmHNmVv88Bvvt4EYxWef/Q==", + "license": "Apache-2.0", "dependencies": { - "@smithy/eventstream-codec": "^4.2.0", - "@smithy/types": "^4.6.0", + "@smithy/eventstream-codec": "^4.2.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -7889,9 +9204,10 @@ } }, "node_modules/@smithy/eventstream-serde-universal/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -7900,14 +9216,15 @@ } }, "node_modules/@smithy/fetch-http-handler": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.0.tgz", - "integrity": "sha512-BG3KSmsx9A//KyIfw+sqNmWFr1YBUr+TwpxFT7yPqAk0yyDh7oSNgzfNH7pS6OC099EGx2ltOULvumCFe8bcgw==", + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.6.tgz", + "integrity": "sha512-3+RG3EA6BBJ/ofZUeTFJA7mHfSYrZtQIrDP9dI8Lf7X6Jbos2jptuLrAAteDiFVrmbEmLSuRG/bUKzfAXk7dhg==", + "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.3.0", - "@smithy/querystring-builder": "^4.2.0", - "@smithy/types": "^4.6.0", - "@smithy/util-base64": "^4.2.0", + "@smithy/protocol-http": "^5.3.5", + "@smithy/querystring-builder": "^4.2.5", + "@smithy/types": "^4.9.0", + "@smithy/util-base64": "^4.3.0", "tslib": "^2.6.2" }, "engines": { @@ -7915,9 +9232,10 @@ } }, "node_modules/@smithy/fetch-http-handler/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -7926,13 +9244,14 @@ } }, "node_modules/@smithy/hash-blob-browser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.2.0.tgz", - "integrity": "sha512-MWmrRTPqVKpN8NmxmJPTeQuhewTt8Chf+waB38LXHZoA02+BeWYVQ9ViAwHjug8m7lQb1UWuGqp3JoGDOWvvuA==", + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.2.6.tgz", + "integrity": "sha512-8P//tA8DVPk+3XURk2rwcKgYwFvwGwmJH/wJqQiSKwXZtf/LiZK+hbUZmPj/9KzM+OVSwe4o85KTp5x9DUZTjw==", + "license": "Apache-2.0", "dependencies": { "@smithy/chunked-blob-reader": "^5.2.0", - "@smithy/chunked-blob-reader-native": "^4.2.0", - "@smithy/types": "^4.6.0", + "@smithy/chunked-blob-reader-native": "^4.2.1", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -7940,9 +9259,10 @@ } }, "node_modules/@smithy/hash-blob-browser/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -7951,11 +9271,12 @@ } }, "node_modules/@smithy/hash-node": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.0.tgz", - "integrity": "sha512-ugv93gOhZGysTctZh9qdgng8B+xO0cj+zN0qAZ+Sgh7qTQGPOJbMdIuyP89KNfUyfAqFSNh5tMvC+h2uCpmTtA==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.5.tgz", + "integrity": "sha512-DpYX914YOfA3UDT9CN1BM787PcHfWRBB43fFGCYrZFUH0Jv+5t8yYl+Pd5PW4+QzoGEDvn5d5QIO4j2HyYZQSA==", + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.6.0", + "@smithy/types": "^4.9.0", "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" @@ -7965,9 +9286,10 @@ } }, "node_modules/@smithy/hash-node/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -7976,11 +9298,12 @@ } }, "node_modules/@smithy/hash-stream-node": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.2.0.tgz", - "integrity": "sha512-8dELAuGv+UEjtzrpMeNBZc1sJhO8GxFVV/Yh21wE35oX4lOE697+lsMHBoUIFAUuYkTMIeu0EuJSEsH7/8Y+UQ==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.2.5.tgz", + "integrity": "sha512-6+do24VnEyvWcGdHXomlpd0m8bfZePpUKBy7m311n+JuRwug8J4dCanJdTymx//8mi0nlkflZBvJe+dEO/O12Q==", + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.6.0", + "@smithy/types": "^4.9.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, @@ -7989,9 +9312,10 @@ } }, "node_modules/@smithy/hash-stream-node/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -8000,11 +9324,12 @@ } }, "node_modules/@smithy/invalid-dependency": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.0.tgz", - "integrity": "sha512-ZmK5X5fUPAbtvRcUPtk28aqIClVhbfcmfoS4M7UQBTnDdrNxhsrxYVv0ZEl5NaPSyExsPWqL4GsPlRvtlwg+2A==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.5.tgz", + "integrity": "sha512-2L2erASEro1WC5nV+plwIMxrTXpvpfzl4e+Nre6vBVRR2HKeGGcvpJyyL3/PpiSg+cJG2KpTmZmq934Olb6e5A==", + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.6.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -8012,9 +9337,10 @@ } }, "node_modules/@smithy/invalid-dependency/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -8026,6 +9352,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.0.tgz", "integrity": "sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -8034,11 +9361,12 @@ } }, "node_modules/@smithy/md5-js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.2.0.tgz", - "integrity": "sha512-LFEPniXGKRQArFmDQ3MgArXlClFJMsXDteuQQY8WG1/zzv6gVSo96+qpkuu1oJp4MZsKrwchY0cuAoPKzEbaNA==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.2.5.tgz", + "integrity": "sha512-Bt6jpSTMWfjCtC0s79gZ/WZ1w90grfmopVOWqkI2ovhjpD5Q2XRXuecIPB9689L2+cCySMbaXDhBPU56FKNDNg==", + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.6.0", + "@smithy/types": "^4.9.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, @@ -8047,9 +9375,10 @@ } }, "node_modules/@smithy/md5-js/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -8058,12 +9387,13 @@ } }, "node_modules/@smithy/middleware-content-length": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.0.tgz", - "integrity": "sha512-6ZAnwrXFecrA4kIDOcz6aLBhU5ih2is2NdcZtobBDSdSHtE9a+MThB5uqyK4XXesdOCvOcbCm2IGB95birTSOQ==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.5.tgz", + "integrity": "sha512-Y/RabVa5vbl5FuHYV2vUCwvh/dqzrEY/K2yWPSqvhFUwIY0atLqO4TienjBXakoy4zrKAMCZwg+YEqmH7jaN7A==", + "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.3.0", - "@smithy/types": "^4.6.0", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -8071,9 +9401,10 @@ } }, "node_modules/@smithy/middleware-content-length/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -8082,17 +9413,18 @@ } }, "node_modules/@smithy/middleware-endpoint": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.3.0.tgz", - "integrity": "sha512-jFVjuQeV8TkxaRlcCNg0GFVgg98tscsmIrIwRFeC74TIUyLE3jmY9xgc1WXrPQYRjQNK3aRoaIk6fhFRGOIoGw==", + "version": "4.3.12", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.3.12.tgz", + "integrity": "sha512-9pAX/H+VQPzNbouhDhkW723igBMLgrI8OtX+++M7iKJgg/zY/Ig3i1e6seCcx22FWhE6Q/S61BRdi2wXBORT+A==", + "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.14.0", - "@smithy/middleware-serde": "^4.2.0", - "@smithy/node-config-provider": "^4.3.0", - "@smithy/shared-ini-file-loader": "^4.3.0", - "@smithy/types": "^4.6.0", - "@smithy/url-parser": "^4.2.0", - "@smithy/util-middleware": "^4.2.0", + "@smithy/core": "^3.18.5", + "@smithy/middleware-serde": "^4.2.6", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", + "@smithy/url-parser": "^4.2.5", + "@smithy/util-middleware": "^4.2.5", "tslib": "^2.6.2" }, "engines": { @@ -8100,9 +9432,10 @@ } }, "node_modules/@smithy/middleware-endpoint/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -8111,17 +9444,18 @@ } }, "node_modules/@smithy/middleware-retry": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.0.tgz", - "integrity": "sha512-yaVBR0vQnOnzex45zZ8ZrPzUnX73eUC8kVFaAAbn04+6V7lPtxn56vZEBBAhgS/eqD6Zm86o6sJs6FuQVoX5qg==", - "dependencies": { - "@smithy/node-config-provider": "^4.3.0", - "@smithy/protocol-http": "^5.3.0", - "@smithy/service-error-classification": "^4.2.0", - "@smithy/smithy-client": "^4.7.0", - "@smithy/types": "^4.6.0", - "@smithy/util-middleware": "^4.2.0", - "@smithy/util-retry": "^4.2.0", + "version": "4.4.12", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.12.tgz", + "integrity": "sha512-S4kWNKFowYd0lID7/DBqWHOQxmxlsf0jBaos9chQZUWTVOjSW1Ogyh8/ib5tM+agFDJ/TCxuCTvrnlc+9cIBcQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/service-error-classification": "^4.2.5", + "@smithy/smithy-client": "^4.9.8", + "@smithy/types": "^4.9.0", + "@smithy/util-middleware": "^4.2.5", + "@smithy/util-retry": "^4.2.5", "@smithy/uuid": "^1.1.0", "tslib": "^2.6.2" }, @@ -8130,9 +9464,10 @@ } }, "node_modules/@smithy/middleware-retry/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -8141,12 +9476,13 @@ } }, "node_modules/@smithy/middleware-serde": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.0.tgz", - "integrity": "sha512-rpTQ7D65/EAbC6VydXlxjvbifTf4IH+sADKg6JmAvhkflJO2NvDeyU9qsWUNBelJiQFcXKejUHWRSdmpJmEmiw==", + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.6.tgz", + "integrity": "sha512-VkLoE/z7e2g8pirwisLz8XJWedUSY8my/qrp81VmAdyrhi94T+riBfwP+AOEEFR9rFTSonC/5D2eWNmFabHyGQ==", + "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.3.0", - "@smithy/types": "^4.6.0", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -8154,9 +9490,10 @@ } }, "node_modules/@smithy/middleware-serde/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -8165,11 +9502,12 @@ } }, "node_modules/@smithy/middleware-stack": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.0.tgz", - "integrity": "sha512-G5CJ//eqRd9OARrQu9MK1H8fNm2sMtqFh6j8/rPozhEL+Dokpvi1Og+aCixTuwDAGZUkJPk6hJT5jchbk/WCyg==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.5.tgz", + "integrity": "sha512-bYrutc+neOyWxtZdbB2USbQttZN0mXaOyYLIsaTbJhFsfpXyGWUxJpEuO1rJ8IIJm2qH4+xJT0mxUSsEDTYwdQ==", + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.6.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -8177,73 +9515,118 @@ } }, "node_modules/@smithy/middleware-stack/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/node-config-provider": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.5.tgz", + "integrity": "sha512-UTurh1C4qkVCtqggI36DGbLB2Kv8UlcFdMXDcWMbqVY2uRg0XmT9Pb4Vj6oSQ34eizO1fvR0RnFV4Axw4IrrAg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.2.5", + "@smithy/shared-ini-file-loader": "^4.4.0", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/node-config-provider/node_modules/@smithy/types": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/node-http-handler": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.3.3.tgz", + "integrity": "sha512-BrpZOaZ4RCbcJ2igiSNG16S+kgAc65l/2hmxWdmhyoGWHTLlzQzr06PXavJp9OBlPEG/sHlqdxjWmjzV66+BSQ==", + "license": "Apache-2.0", "dependencies": { + "@smithy/abort-controller": "^3.1.9", + "@smithy/protocol-http": "^4.1.8", + "@smithy/querystring-builder": "^3.0.11", + "@smithy/types": "^3.7.2", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/node-config-provider": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.0.tgz", - "integrity": "sha512-5QgHNuWdT9j9GwMPPJCKxy2KDxZ3E5l4M3/5TatSZrqYVoEiqQrDfAq8I6KWZw7RZOHtVtCzEPdYz7rHZixwcA==", + "node_modules/@smithy/node-http-handler/node_modules/@smithy/protocol-http": { + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.8.tgz", + "integrity": "sha512-hmgIAVyxw1LySOwkgMIUN0kjN8TG9Nc85LJeEmEE/cNEe2rkHDUWhnJf2gxcSRFLWsyqWsrZGw40ROjUogg+Iw==", + "license": "Apache-2.0", "dependencies": { - "@smithy/property-provider": "^4.2.0", - "@smithy/shared-ini-file-loader": "^4.3.0", - "@smithy/types": "^4.6.0", + "@smithy/types": "^3.7.2", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/node-config-provider/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "node_modules/@smithy/node-http-handler/node_modules/@smithy/querystring-builder": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.11.tgz", + "integrity": "sha512-u+5HV/9uJaeLj5XTb6+IEF/dokWWkEqJ0XiaRRogyREmKGUgZnNecLucADLdauWFKUNbQfulHFEZEdjwEBjXRg==", + "license": "Apache-2.0", "dependencies": { + "@smithy/types": "^3.7.2", + "@smithy/util-uri-escape": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/node-http-handler": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.3.0.tgz", - "integrity": "sha512-RHZ/uWCmSNZ8cneoWEVsVwMZBKy/8123hEpm57vgGXA3Irf/Ja4v9TVshHK2ML5/IqzAZn0WhINHOP9xl+Qy6Q==", + "node_modules/@smithy/node-http-handler/node_modules/@smithy/types": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz", + "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==", + "license": "Apache-2.0", "dependencies": { - "@smithy/abort-controller": "^4.2.0", - "@smithy/protocol-http": "^5.3.0", - "@smithy/querystring-builder": "^4.2.0", - "@smithy/types": "^4.6.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/node-http-handler/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "node_modules/@smithy/node-http-handler/node_modules/@smithy/util-uri-escape": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz", + "integrity": "sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/property-provider": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.0.tgz", - "integrity": "sha512-rV6wFre0BU6n/tx2Ztn5LdvEdNZ2FasQbPQmDOPfV9QQyDmsCkOAB0osQjotRCQg+nSKFmINhyda0D3AnjSBJw==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.5.tgz", + "integrity": "sha512-8iLN1XSE1rl4MuxvQ+5OSk/Zb5El7NJZ1td6Tn+8dQQHIjp59Lwl6bd0+nzw6SKm2wSSriH2v/I9LPzUic7EOg==", + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.6.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -8251,9 +9634,10 @@ } }, "node_modules/@smithy/property-provider/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -8262,11 +9646,12 @@ } }, "node_modules/@smithy/protocol-http": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.0.tgz", - "integrity": "sha512-6POSYlmDnsLKb7r1D3SVm7RaYW6H1vcNcTWGWrF7s9+2noNYvUsm7E4tz5ZQ9HXPmKn6Hb67pBDRIjrT4w/d7Q==", + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.5.tgz", + "integrity": "sha512-RlaL+sA0LNMp03bf7XPbFmT5gN+w3besXSWMkA8rcmxLSVfiEXElQi4O2IWwPfxzcHkxqrwBFMbngB8yx/RvaQ==", + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.6.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -8274,9 +9659,10 @@ } }, "node_modules/@smithy/protocol-http/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -8285,11 +9671,12 @@ } }, "node_modules/@smithy/querystring-builder": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.0.tgz", - "integrity": "sha512-Q4oFD0ZmI8yJkiPPeGUITZj++4HHYCW3pYBYfIobUCkYpI6mbkzmG1MAQQ3lJYYWj3iNqfzOenUZu+jqdPQ16A==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.5.tgz", + "integrity": "sha512-y98otMI1saoajeik2kLfGyRp11e5U/iJYH/wLCh3aTV/XutbGT9nziKGkgCaMD1ghK7p6htHMm6b6scl9JRUWg==", + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.6.0", + "@smithy/types": "^4.9.0", "@smithy/util-uri-escape": "^4.2.0", "tslib": "^2.6.2" }, @@ -8298,9 +9685,10 @@ } }, "node_modules/@smithy/querystring-builder/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -8309,11 +9697,12 @@ } }, "node_modules/@smithy/querystring-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.0.tgz", - "integrity": "sha512-BjATSNNyvVbQxOOlKse0b0pSezTWGMvA87SvoFoFlkRsKXVsN3bEtjCxvsNXJXfnAzlWFPaT9DmhWy1vn0sNEA==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.5.tgz", + "integrity": "sha512-031WCTdPYgiQRYNPXznHXof2YM0GwL6SeaSyTH/P72M1Vz73TvCNH2Nq8Iu2IEPq9QP2yx0/nrw5YmSeAi/AjQ==", + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.6.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -8321,9 +9710,10 @@ } }, "node_modules/@smithy/querystring-parser/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -8332,20 +9722,22 @@ } }, "node_modules/@smithy/service-error-classification": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.0.tgz", - "integrity": "sha512-Ylv1ttUeKatpR0wEOMnHf1hXMktPUMObDClSWl2TpCVT4DwtJhCeighLzSLbgH3jr5pBNM0LDXT5yYxUvZ9WpA==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.5.tgz", + "integrity": "sha512-8fEvK+WPE3wUAcDvqDQG1Vk3ANLR8Px979te96m84CbKAjBVf25rPYSzb4xU4hlTyho7VhOGnh5i62D/JVF0JQ==", + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.6.0" + "@smithy/types": "^4.9.0" }, "engines": { "node": ">=18.0.0" } }, "node_modules/@smithy/service-error-classification/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -8354,11 +9746,12 @@ } }, "node_modules/@smithy/shared-ini-file-loader": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.3.0.tgz", - "integrity": "sha512-VCUPPtNs+rKWlqqntX0CbVvWyjhmX30JCtzO+s5dlzzxrvSfRh5SY0yxnkirvc1c80vdKQttahL71a9EsdolSQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.0.tgz", + "integrity": "sha512-5WmZ5+kJgJDjwXXIzr1vDTG+RhF9wzSODQBfkrQ2VVkYALKGvZX1lgVSxEkgicSAFnFhPj5rudJV0zoinqS0bA==", + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.6.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -8366,9 +9759,10 @@ } }, "node_modules/@smithy/shared-ini-file-loader/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -8377,15 +9771,16 @@ } }, "node_modules/@smithy/signature-v4": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.0.tgz", - "integrity": "sha512-MKNyhXEs99xAZaFhm88h+3/V+tCRDQ+PrDzRqL0xdDpq4gjxcMmf5rBA3YXgqZqMZ/XwemZEurCBQMfxZOWq/g==", + "version": "5.3.5", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.5.tgz", + "integrity": "sha512-xSUfMu1FT7ccfSXkoLl/QRQBi2rOvi3tiBZU2Tdy3I6cgvZ6SEi9QNey+lqps/sJRnogIS+lq+B1gxxbra2a/w==", + "license": "Apache-2.0", "dependencies": { "@smithy/is-array-buffer": "^4.2.0", - "@smithy/protocol-http": "^5.3.0", - "@smithy/types": "^4.6.0", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", "@smithy/util-hex-encoding": "^4.2.0", - "@smithy/util-middleware": "^4.2.0", + "@smithy/util-middleware": "^4.2.5", "@smithy/util-uri-escape": "^4.2.0", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" @@ -8395,9 +9790,10 @@ } }, "node_modules/@smithy/signature-v4/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -8406,16 +9802,17 @@ } }, "node_modules/@smithy/smithy-client": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.7.0.tgz", - "integrity": "sha512-3BDx/aCCPf+kkinYf5QQhdQ9UAGihgOVqI3QO5xQfSaIWvUE4KYLtiGRWsNe1SR7ijXC0QEPqofVp5Sb0zC8xQ==", + "version": "4.9.8", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.9.8.tgz", + "integrity": "sha512-8xgq3LgKDEFoIrLWBho/oYKyWByw9/corz7vuh1upv7ZBm0ZMjGYBhbn6v643WoIqA9UTcx5A5htEp/YatUwMA==", + "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.14.0", - "@smithy/middleware-endpoint": "^4.3.0", - "@smithy/middleware-stack": "^4.2.0", - "@smithy/protocol-http": "^5.3.0", - "@smithy/types": "^4.6.0", - "@smithy/util-stream": "^4.4.0", + "@smithy/core": "^3.18.5", + "@smithy/middleware-endpoint": "^4.3.12", + "@smithy/middleware-stack": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/types": "^4.9.0", + "@smithy/util-stream": "^4.5.6", "tslib": "^2.6.2" }, "engines": { @@ -8423,9 +9820,10 @@ } }, "node_modules/@smithy/smithy-client/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -8437,6 +9835,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.2.0.tgz", "integrity": "sha512-7eMk09zQKCO+E/ivsjQv+fDlOupcFUCSC/L2YUPgwhvowVGWbPQHjEFcmjt7QQ4ra5lyowS92SV53Zc6XD4+fg==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -8445,12 +9844,13 @@ } }, "node_modules/@smithy/url-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.0.tgz", - "integrity": "sha512-AlBmD6Idav2ugmoAL6UtR6ItS7jU5h5RNqLMZC7QrLCoITA9NzIN3nx9GWi8g4z1pfWh2r9r96SX/jHiNwPJ9A==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.5.tgz", + "integrity": "sha512-VaxMGsilqFnK1CeBX+LXnSuaMx4sTL/6znSZh2829txWieazdVxr54HmiyTsIbpOTLcf5nYpq9lpzmwRdxj6rQ==", + "license": "Apache-2.0", "dependencies": { - "@smithy/querystring-parser": "^4.2.0", - "@smithy/types": "^4.6.0", + "@smithy/querystring-parser": "^4.2.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -8458,9 +9858,10 @@ } }, "node_modules/@smithy/url-parser/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -8469,9 +9870,10 @@ } }, "node_modules/@smithy/util-base64": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.2.0.tgz", - "integrity": "sha512-+erInz8WDv5KPe7xCsJCp+1WCjSbah9gWcmUXc9NqmhyPx59tf7jqFz+za1tRG1Y5KM1Cy1rWCcGypylFp4mvA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.0.tgz", + "integrity": "sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ==", + "license": "Apache-2.0", "dependencies": { "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-utf8": "^4.2.0", @@ -8485,6 +9887,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.0.tgz", "integrity": "sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -8493,9 +9896,10 @@ } }, "node_modules/@smithy/util-body-length-node": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.0.tgz", - "integrity": "sha512-U8q1WsSZFjXijlD7a4wsDQOvOwV+72iHSfq1q7VD+V75xP/pdtm0WIGuaFJ3gcADDOKj2MIBn4+zisi140HEnQ==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.1.tgz", + "integrity": "sha512-h53dz/pISVrVrfxV1iqXlx5pRg3V2YWFcSQyPyXZRrZoZj4R4DeWRDo1a7dd3CPTcFi3kE+98tuNyD2axyZReA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -8507,6 +9911,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.0.tgz", "integrity": "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==", + "license": "Apache-2.0", "dependencies": { "@smithy/is-array-buffer": "^4.2.0", "tslib": "^2.6.2" @@ -8519,6 +9924,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.0.tgz", "integrity": "sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -8527,14 +9933,14 @@ } }, "node_modules/@smithy/util-defaults-mode-browser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.2.0.tgz", - "integrity": "sha512-qzHp7ZDk1Ba4LDwQVCNp90xPGqSu7kmL7y5toBpccuhi3AH7dcVBIT/pUxYcInK4jOy6FikrcTGq5wxcka8UaQ==", + "version": "4.3.11", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.11.tgz", + "integrity": "sha512-yHv+r6wSQXEXTPVCIQTNmXVWs7ekBTpMVErjqZoWkYN75HIFN5y9+/+sYOejfAuvxWGvgzgxbTHa/oz61YTbKw==", + "license": "Apache-2.0", "dependencies": { - "@smithy/property-provider": "^4.2.0", - "@smithy/smithy-client": "^4.7.0", - "@smithy/types": "^4.6.0", - "bowser": "^2.11.0", + "@smithy/property-provider": "^4.2.5", + "@smithy/smithy-client": "^4.9.8", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -8542,9 +9948,10 @@ } }, "node_modules/@smithy/util-defaults-mode-browser/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -8553,16 +9960,17 @@ } }, "node_modules/@smithy/util-defaults-mode-node": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.0.tgz", - "integrity": "sha512-FxUHS3WXgx3bTWR6yQHNHHkQHZm/XKIi/CchTnKvBulN6obWpcbzJ6lDToXn+Wp0QlVKd7uYAz2/CTw1j7m+Kg==", + "version": "4.2.14", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.14.tgz", + "integrity": "sha512-ljZN3iRvaJUgulfvobIuG97q1iUuCMrvXAlkZ4msY+ZuVHQHDIqn7FKZCEj+bx8omz6kF5yQXms/xhzjIO5XiA==", + "license": "Apache-2.0", "dependencies": { - "@smithy/config-resolver": "^4.3.0", - "@smithy/credential-provider-imds": "^4.2.0", - "@smithy/node-config-provider": "^4.3.0", - "@smithy/property-provider": "^4.2.0", - "@smithy/smithy-client": "^4.7.0", - "@smithy/types": "^4.6.0", + "@smithy/config-resolver": "^4.4.3", + "@smithy/credential-provider-imds": "^4.2.5", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/property-provider": "^4.2.5", + "@smithy/smithy-client": "^4.9.8", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -8570,9 +9978,10 @@ } }, "node_modules/@smithy/util-defaults-mode-node/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -8581,12 +9990,13 @@ } }, "node_modules/@smithy/util-endpoints": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.2.0.tgz", - "integrity": "sha512-TXeCn22D56vvWr/5xPqALc9oO+LN+QpFjrSM7peG/ckqEPoI3zaKZFp+bFwfmiHhn5MGWPaLCqDOJPPIixk9Wg==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.2.5.tgz", + "integrity": "sha512-3O63AAWu2cSNQZp+ayl9I3NapW1p1rR5mlVHcF6hAB1dPZUQFfRPYtplWX/3xrzWthPGj5FqB12taJJCfH6s8A==", + "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.3.0", - "@smithy/types": "^4.6.0", + "@smithy/node-config-provider": "^4.3.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -8594,9 +10004,10 @@ } }, "node_modules/@smithy/util-endpoints/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -8608,6 +10019,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.0.tgz", "integrity": "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -8616,11 +10028,12 @@ } }, "node_modules/@smithy/util-middleware": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.0.tgz", - "integrity": "sha512-u9OOfDa43MjagtJZ8AapJcmimP+K2Z7szXn8xbty4aza+7P1wjFmy2ewjSbhEiYQoW1unTlOAIV165weYAaowA==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.5.tgz", + "integrity": "sha512-6Y3+rvBF7+PZOc40ybeZMcGln6xJGVeY60E7jy9Mv5iKpMJpHgRE6dKy9ScsVxvfAYuEX4Q9a65DQX90KaQ3bA==", + "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.6.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -8628,9 +10041,10 @@ } }, "node_modules/@smithy/util-middleware/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -8639,12 +10053,13 @@ } }, "node_modules/@smithy/util-retry": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.0.tgz", - "integrity": "sha512-BWSiuGbwRnEE2SFfaAZEX0TqaxtvtSYPM/J73PFVm+A29Fg1HTPiYFb8TmX1DXp4hgcdyJcNQmprfd5foeORsg==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.5.tgz", + "integrity": "sha512-GBj3+EZBbN4NAqJ/7pAhsXdfzdlznOh8PydUijy6FpNIMnHPSMO2/rP4HKu+UFeikJxShERk528oy7GT79YiJg==", + "license": "Apache-2.0", "dependencies": { - "@smithy/service-error-classification": "^4.2.0", - "@smithy/types": "^4.6.0", + "@smithy/service-error-classification": "^4.2.5", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -8652,9 +10067,10 @@ } }, "node_modules/@smithy/util-retry/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -8663,14 +10079,15 @@ } }, "node_modules/@smithy/util-stream": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.4.0.tgz", - "integrity": "sha512-vtO7ktbixEcrVzMRmpQDnw/Ehr9UWjBvSJ9fyAbadKkC4w5Cm/4lMO8cHz8Ysb8uflvQUNRcuux/oNHKPXkffg==", + "version": "4.5.6", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.6.tgz", + "integrity": "sha512-qWw/UM59TiaFrPevefOZ8CNBKbYEP6wBAIlLqxn3VAIo9rgnTNc4ASbVrqDmhuwI87usnjhdQrxodzAGFFzbRQ==", + "license": "Apache-2.0", "dependencies": { - "@smithy/fetch-http-handler": "^5.3.0", - "@smithy/node-http-handler": "^4.3.0", - "@smithy/types": "^4.6.0", - "@smithy/util-base64": "^4.2.0", + "@smithy/fetch-http-handler": "^5.3.6", + "@smithy/node-http-handler": "^4.4.5", + "@smithy/types": "^4.9.0", + "@smithy/util-base64": "^4.3.0", "@smithy/util-buffer-from": "^4.2.0", "@smithy/util-hex-encoding": "^4.2.0", "@smithy/util-utf8": "^4.2.0", @@ -8680,10 +10097,40 @@ "node": ">=18.0.0" } }, + "node_modules/@smithy/util-stream/node_modules/@smithy/abort-controller": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz", + "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-stream/node_modules/@smithy/node-http-handler": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.5.tgz", + "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/querystring-builder": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/@smithy/util-stream/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -8695,6 +10142,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.0.tgz", "integrity": "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -8706,6 +10154,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.0.tgz", "integrity": "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==", + "license": "Apache-2.0", "dependencies": { "@smithy/util-buffer-from": "^4.2.0", "tslib": "^2.6.2" @@ -8715,12 +10164,26 @@ } }, "node_modules/@smithy/util-waiter": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.2.0.tgz", - "integrity": "sha512-0Z+nxUU4/4T+SL8BCNN4ztKdQjToNvUYmkF1kXO5T7Yz3Gafzh0HeIG6mrkN8Fz3gn9hSyxuAT+6h4vM+iQSBQ==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.2.5.tgz", + "integrity": "sha512-Dbun99A3InifQdIrsXZ+QLcC0PGBPAdrl4cj1mTgJvyc9N2zf7QSxg8TBkzsCmGJdE3TLbO9ycwpY0EkWahQ/g==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-waiter/node_modules/@smithy/abort-controller": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.5.tgz", + "integrity": "sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==", + "license": "Apache-2.0", "dependencies": { - "@smithy/abort-controller": "^4.2.0", - "@smithy/types": "^4.6.0", + "@smithy/types": "^4.9.0", "tslib": "^2.6.2" }, "engines": { @@ -8728,9 +10191,10 @@ } }, "node_modules/@smithy/util-waiter/node_modules/@smithy/types": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.6.0.tgz", - "integrity": "sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -8742,6 +10206,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/@smithy/uuid/-/uuid-1.1.0.tgz", "integrity": "sha512-4aUIteuyxtBUhVdiQqcDhKFitwfd9hqoSDYY2KRXiWtgoWJ9Bmise+KfEPDiVHWeJepvF8xJO9/9+WDIciMFFw==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -8753,6 +10218,7 @@ "version": "4.0.6", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "license": "MIT", "dependencies": { "defer-to-connect": "^2.0.0" }, @@ -8764,37 +10230,43 @@ "version": "0.23.0", "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@tsconfig/node10": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", - "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", - "dev": true + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz", + "integrity": "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==", + "dev": true, + "license": "MIT" }, "node_modules/@tsconfig/node12": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@tsconfig/node14": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@tsconfig/node16": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@tybys/wasm-util": { "version": "0.10.1", "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "tslib": "^2.4.0" @@ -8805,15 +10277,17 @@ "resolved": "https://registry.npmjs.org/@types/adm-zip/-/adm-zip-0.5.7.tgz", "integrity": "sha512-DNEs/QvmyRLurdQPChqq0Md4zGvPwHerAJYWk9l2jCbD1VPpnzRJorOdiq4zsw09NFbYnhfsoEhWtxIzXpn2yw==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/archiver": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@types/archiver/-/archiver-6.0.3.tgz", - "integrity": "sha512-a6wUll6k3zX6qs5KlxIggs1P1JcYJaTCx2gnlr+f0S1yd2DoaEwoIK10HmBaLnZwWneBz+JBm0dwcZu0zECBcQ==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@types/archiver/-/archiver-6.0.4.tgz", + "integrity": "sha512-ULdQpARQ3sz9WH4nb98mJDYA0ft2A8C4f4fovvUcFwINa1cgGjY36JCAYuP5YypRq4mco1lJp1/7jEMS2oR0Hg==", "dev": true, + "license": "MIT", "dependencies": { "@types/readdir-glob": "*" } @@ -8823,6 +10297,7 @@ "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7", @@ -8836,6 +10311,7 @@ "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.0.0" } @@ -8845,6 +10321,7 @@ "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", "dev": true, + "license": "MIT", "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" @@ -8855,6 +10332,7 @@ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.28.2" } @@ -8863,6 +10341,7 @@ "version": "1.19.6", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", + "license": "MIT", "dependencies": { "@types/connect": "*", "@types/node": "*" @@ -8872,6 +10351,7 @@ "version": "3.5.13", "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -8880,6 +10360,7 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "license": "MIT", "dependencies": { "@types/http-cache-semantics": "*", "@types/keyv": "^3.1.4", @@ -8891,13 +10372,15 @@ "version": "4.3.20", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.20.tgz", "integrity": "sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/chai-as-promised": { "version": "7.1.8", "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.8.tgz", "integrity": "sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw==", "dev": true, + "license": "MIT", "dependencies": { "@types/chai": "*" } @@ -8906,6 +10389,7 @@ "version": "3.4.38", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -8914,16 +10398,18 @@ "version": "1.5.4", "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "license": "MIT", "dependencies": { "@types/express-serve-static-core": "*", "@types/node": "*" } }, "node_modules/@types/conventional-commits-parser": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@types/conventional-commits-parser/-/conventional-commits-parser-5.0.1.tgz", - "integrity": "sha512-7uz5EHdzz2TqoMfV7ee61Egf5y6NkcO4FB/1iCCQnbeiI1F3xzv3vK5dBCXUCLQgGYS+mUeigK1iKQzvED+QnQ==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@types/conventional-commits-parser/-/conventional-commits-parser-5.0.2.tgz", + "integrity": "sha512-BgT2szDXnVypgpNxOK8aL5SGjUdaQbC++WZNjF1Qge3Og2+zhHj+RWhmehLhYyvQwqAmvezruVfOf8+3m74W+g==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -8933,6 +10419,7 @@ "resolved": "https://registry.npmjs.org/@types/cross-spawn/-/cross-spawn-6.0.6.tgz", "integrity": "sha512-fXRhhUkG4H3TQk5dBhQ7m/JDdSNHKwR2BBia62lhwEIq9xGiQKLxd6LymNhn47SjXhsUEPmxi+PKw2OkW4LLjA==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -8941,25 +10428,29 @@ "version": "7.0.2", "resolved": "https://registry.npmjs.org/@types/diff/-/diff-7.0.2.tgz", "integrity": "sha512-JSWRMozjFKsGlEjiiKajUjIJVKuKdE3oVy2DNtK+fUo8q82nhFZ2CPQwicAIkXrofahDXrWJ7mjelvZphMS98Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/encoding-japanese": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@types/encoding-japanese/-/encoding-japanese-2.2.1.tgz", "integrity": "sha512-6jjepuTusvySxMLP7W6usamlbgf0F4sIDvm7EzYePjLHY7zWUv4yz2PLUnu0vuNVtXOTLu2cRdFcDg40J5Owsw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/escape-html": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/@types/escape-html/-/escape-html-1.0.4.tgz", "integrity": "sha512-qZ72SFTgUAZ5a7Tj6kf2SHLetiH5S6f8G5frB2SPQ3EyF02kxdyBFf4Tz4banE3xCgGnKgWLt//a6VuYHKYJTg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/eslint": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", "devOptional": true, + "license": "MIT", "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -8970,6 +10461,7 @@ "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", "devOptional": true, + "license": "MIT", "dependencies": { "@types/eslint": "*", "@types/estree": "*" @@ -8979,23 +10471,26 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "devOptional": true + "devOptional": true, + "license": "MIT" }, "node_modules/@types/express": { - "version": "4.17.23", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.23.tgz", - "integrity": "sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ==", + "version": "4.17.25", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz", + "integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==", + "license": "MIT", "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", "@types/qs": "*", - "@types/serve-static": "*" + "@types/serve-static": "^1" } }, "node_modules/@types/express-serve-static-core": { "version": "4.19.7", "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.7.tgz", "integrity": "sha512-FvPtiIf1LfhzsaIXhv/PHan/2FeQBbtBDtfX2QfvPxdUelMDEckK08SM6nqo1MIZY3RUlfA+HV8+hFUSio78qg==", + "license": "MIT", "dependencies": { "@types/node": "*", "@types/qs": "*", @@ -9008,6 +10503,7 @@ "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -9016,22 +10512,26 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/http-cache-semantics": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", - "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==" + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", + "license": "MIT" }, "node_modules/@types/http-errors": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", - "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==" + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", + "license": "MIT" }, "node_modules/@types/http-proxy": { - "version": "1.17.16", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.16.tgz", - "integrity": "sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==", + "version": "1.17.17", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.17.tgz", + "integrity": "sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==", + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -9041,6 +10541,7 @@ "resolved": "https://registry.npmjs.org/@types/ignore-walk/-/ignore-walk-4.0.3.tgz", "integrity": "sha512-6V7wDsk0nz8LtRC7qeC0GfXadFLT4FdCtVbXhxoIGRdkn2kLr20iMLupRGiBhlZ79WWWqaObIdR3nkXfUrBPdQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -9049,13 +10550,15 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/istanbul-lib-report": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", "dev": true, + "license": "MIT", "dependencies": { "@types/istanbul-lib-coverage": "*" } @@ -9065,6 +10568,7 @@ "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/istanbul-lib-report": "*" } @@ -9074,6 +10578,7 @@ "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", "dev": true, + "license": "MIT", "dependencies": { "expect": "^29.0.0", "pretty-format": "^29.0.0" @@ -9084,6 +10589,7 @@ "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-21.1.7.tgz", "integrity": "sha512-yOriVnggzrnQ3a9OKOCxaVuSug3w3/SbOj5i7VwXWZEyUNl3bLF9V3MfxGbZKuwqJOQyRfqXyROBB1CoZLFWzA==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", "@types/tough-cookie": "*", @@ -9093,18 +10599,21 @@ "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "license": "MIT" }, "node_modules/@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/keyv": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -9119,32 +10628,38 @@ "version": "1.5.14", "resolved": "https://registry.npmjs.org/@types/lokijs/-/lokijs-1.5.14.tgz", "integrity": "sha512-4Fic47BX3Qxr8pd12KT6/T1XWU8dOlJBIp1jGoMbaDbiEvdv50rAii+B3z1b/J2pvMywcVP+DBPGP5/lgLOKGA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/mime": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", - "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "license": "MIT" }, "node_modules/@types/mocha": { "version": "10.0.10", "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz", "integrity": "sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/mock-fs": { "version": "4.13.4", "resolved": "https://registry.npmjs.org/@types/mock-fs/-/mock-fs-4.13.4.tgz", "integrity": "sha512-mXmM0o6lULPI8z3XNnQCpL0BGxPwx1Ul1wXYEPBGl4efShyxW2Rln0JOPEWGyZaYZMM6OVXM/15zUuFMY52ljg==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/node": { - "version": "22.18.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.8.tgz", - "integrity": "sha512-pAZSHMiagDR7cARo/cch1f3rXy0AEXwsVsVH09FcyeJVAzCnGgmYis7P3JidtTUjyadhTeSo8TgRPswstghDaw==", + "version": "22.19.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.1.tgz", + "integrity": "sha512-LCCV0HdSZZZb34qifBsyWlUmok6W7ouER+oQIGBScS8EsZsQbrtFTUrDX4hOl+CS6p7cnNC4td+qrSVGSCTUfQ==", + "license": "MIT", + "peer": true, "dependencies": { "undici-types": "~6.21.0" } @@ -9153,6 +10668,7 @@ "version": "1.3.14", "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.14.tgz", "integrity": "sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==", + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -9161,23 +10677,27 @@ "version": "2.4.4", "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/qs": { "version": "6.14.0", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==" + "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", + "license": "MIT" }, "node_modules/@types/range-parser": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", - "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==" + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "license": "MIT" }, "node_modules/@types/readdir-glob": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/@types/readdir-glob/-/readdir-glob-1.1.5.tgz", "integrity": "sha512-raiuEPUYqXu+nvtY2Pe8s8FEmZ3x5yAH4VkLdihcPdalvsHltomrRC9BzuStrJ9yk06470hS0Crw0f1pXqD+Hg==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -9186,6 +10706,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -9193,12 +10714,14 @@ "node_modules/@types/retry": { "version": "0.12.2", "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", - "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==" + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", + "license": "MIT" }, "node_modules/@types/send": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.0.tgz", - "integrity": "sha512-zBF6vZJn1IaMpg3xUF25VK3gd3l8zwE0ZLRX7dsQyQi+jp4E8mMDJNGDYnYse+bQhYwWERTxVwHpi3dMOq7RKQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", + "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -9207,14 +10730,16 @@ "version": "1.9.4", "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", + "license": "MIT", "dependencies": { "@types/express": "*" } }, "node_modules/@types/serve-static": { - "version": "1.15.9", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.9.tgz", - "integrity": "sha512-dOTIuqpWLyl3BBXU3maNQsS4A3zuuoYRNIvYSxxhebPfXg2mzWQEPne/nlJ37yOse6uGgR386uTpdsx4D0QZWA==", + "version": "1.15.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz", + "integrity": "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==", + "license": "MIT", "dependencies": { "@types/http-errors": "*", "@types/node": "*", @@ -9222,9 +10747,10 @@ } }, "node_modules/@types/serve-static/node_modules/@types/send": { - "version": "0.17.5", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.5.tgz", - "integrity": "sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==", + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz", + "integrity": "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==", + "license": "MIT", "dependencies": { "@types/mime": "^1", "@types/node": "*" @@ -9235,6 +10761,7 @@ "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-17.0.4.tgz", "integrity": "sha512-RHnIrhfPO3+tJT0s7cFaXGZvsL4bbR3/k7z3P312qMS4JaS2Tk+KiwiLx1S0rQ56ERj00u1/BtdyVd0FY+Pdew==", "dev": true, + "license": "MIT", "dependencies": { "@types/sinonjs__fake-timers": "*" } @@ -9244,21 +10771,24 @@ "resolved": "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-3.2.12.tgz", "integrity": "sha512-9y0Gflk3b0+NhQZ/oxGtaAJDvRywCa5sIyaVnounqLvmf93yBF4EgIRspePtkMs3Tr844nCclYMlcCNmLCvjuQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/chai": "*", "@types/sinon": "*" } }, "node_modules/@types/sinonjs__fake-timers": { - "version": "8.1.5", - "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz", - "integrity": "sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==", - "dev": true + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-15.0.1.tgz", + "integrity": "sha512-Ko2tjWJq8oozHzHV+reuvS5KYIRAokHnGbDwGh/J64LntgpbuylF74ipEL24HCyRjf9FOlBiBHWBR1RlVKsI1w==", + "dev": true, + "license": "MIT" }, "node_modules/@types/sockjs": { "version": "0.3.36", "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -9267,35 +10797,41 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/tough-cookie": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/uuid": { "version": "9.0.8", "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz", - "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==" + "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==", + "license": "MIT" }, "node_modules/@types/vscode": { - "version": "1.104.0", - "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.104.0.tgz", - "integrity": "sha512-0KwoU2rZ2ecsTGFxo4K1+f+AErRsYW0fsp6A0zufzGuhyczc2IoKqYqcwXidKXmy2u8YB2GsYsOtiI9Izx3Tig==", - "dev": true + "version": "1.106.1", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.106.1.tgz", + "integrity": "sha512-R/HV8u2h8CAddSbX8cjpdd7B8/GnE4UjgjpuGuHcbp1xV6yh4OeqU4L1pKjlwujCrSFS0MOpwJAIs/NexMB1fQ==", + "dev": true, + "license": "MIT" }, "node_modules/@types/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/@types/which/-/which-2.0.2.tgz", "integrity": "sha512-113D3mDkZDjo+EeUEHCFy0qniNc1ZpecGiAU7WSo7YDoSzolZIQKpYFHrPpjkB2nuyahcKfrmLXeQlh7gqJYdw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/ws": { "version": "8.18.1", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -9305,15 +10841,17 @@ "resolved": "https://registry.npmjs.org/@types/xml2js/-/xml2js-0.4.14.tgz", "integrity": "sha512-4YnrRemBShWRO2QjvUin8ESA41rH+9nQGLUGZV/1IDhi3SL9OhdpNC/MrulTWuptXKwhx/aDxE7toV0f/ypIXQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/yargs": { - "version": "17.0.33", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", - "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "version": "17.0.35", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", + "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", "dev": true, + "license": "MIT", "dependencies": { "@types/yargs-parser": "*" } @@ -9322,13 +10860,15 @@ "version": "21.0.3", "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/yauzl": { "version": "2.10.3", "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "@types/node": "*" @@ -9339,21 +10879,24 @@ "resolved": "https://registry.npmjs.org/@types/yauzl-promise/-/yauzl-promise-4.0.1.tgz", "integrity": "sha512-qYEC3rJwqiJpdQ9b+bPNeuSY0c3JUM8vIuDy08qfuVN7xHm3ZDsHn2kGphUIB0ruEXrPGNXZ64nMUcu4fDjViQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.46.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.46.0.tgz", - "integrity": "sha512-hA8gxBq4ukonVXPy0OKhiaUh/68D0E88GSmtC1iAEnGaieuDi38LhS7jdCHRLi6ErJBNDGCzvh5EnzdPwUc0DA==", + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.47.0.tgz", + "integrity": "sha512-fe0rz9WJQ5t2iaLfdbDc9T80GJy0AeO453q8C3YCilnGozvOyCG5t+EZtg7j7D88+c3FipfP/x+wzGnh1xp8ZA==", "dev": true, + "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.46.0", - "@typescript-eslint/type-utils": "8.46.0", - "@typescript-eslint/utils": "8.46.0", - "@typescript-eslint/visitor-keys": "8.46.0", + "@typescript-eslint/scope-manager": "8.47.0", + "@typescript-eslint/type-utils": "8.47.0", + "@typescript-eslint/utils": "8.47.0", + "@typescript-eslint/visitor-keys": "8.47.0", "graphemer": "^1.4.0", "ignore": "^7.0.0", "natural-compare": "^1.4.0", @@ -9367,21 +10910,23 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.46.0", + "@typescript-eslint/parser": "^8.47.0", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/parser": { - "version": "8.46.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.46.0.tgz", - "integrity": "sha512-n1H6IcDhmmUEG7TNVSspGmiHHutt7iVKtZwRppD7e04wha5MrkV1h3pti9xQLcCMt6YWsncpoT0HMjkH1FNwWQ==", + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.47.0.tgz", + "integrity": "sha512-lJi3PfxVmo0AkEY93ecfN+r8SofEqZNGByvHAI3GBLrvt1Cw6H5k1IM02nSzu0RfUafr2EvFSw0wAsZgubNplQ==", "dev": true, + "license": "MIT", + "peer": true, "dependencies": { - "@typescript-eslint/scope-manager": "8.46.0", - "@typescript-eslint/types": "8.46.0", - "@typescript-eslint/typescript-estree": "8.46.0", - "@typescript-eslint/visitor-keys": "8.46.0", + "@typescript-eslint/scope-manager": "8.47.0", + "@typescript-eslint/types": "8.47.0", + "@typescript-eslint/typescript-estree": "8.47.0", + "@typescript-eslint/visitor-keys": "8.47.0", "debug": "^4.3.4" }, "engines": { @@ -9397,13 +10942,14 @@ } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.46.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.46.0.tgz", - "integrity": "sha512-OEhec0mH+U5Je2NZOeK1AbVCdm0ChyapAyTeXVIYTPXDJ3F07+cu87PPXcGoYqZ7M9YJVvFnfpGg1UmCIqM+QQ==", + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.47.0.tgz", + "integrity": "sha512-2X4BX8hUeB5JcA1TQJ7GjcgulXQ+5UkNb0DL8gHsHUHdFoiCTJoYLTpib3LtSDPZsRET5ygN4qqIWrHyYIKERA==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.46.0", - "@typescript-eslint/types": "^8.46.0", + "@typescript-eslint/tsconfig-utils": "^8.47.0", + "@typescript-eslint/types": "^8.47.0", "debug": "^4.3.4" }, "engines": { @@ -9418,13 +10964,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.46.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.46.0.tgz", - "integrity": "sha512-lWETPa9XGcBes4jqAMYD9fW0j4n6hrPtTJwWDmtqgFO/4HF4jmdH/Q6wggTw5qIT5TXjKzbt7GsZUBnWoO3dqw==", + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.47.0.tgz", + "integrity": "sha512-a0TTJk4HXMkfpFkL9/WaGTNuv7JWfFTQFJd6zS9dVAjKsojmv9HT55xzbEpnZoY+VUb+YXLMp+ihMLz/UlZfDg==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.46.0", - "@typescript-eslint/visitor-keys": "8.46.0" + "@typescript-eslint/types": "8.47.0", + "@typescript-eslint/visitor-keys": "8.47.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -9435,10 +10982,11 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.46.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.46.0.tgz", - "integrity": "sha512-WrYXKGAHY836/N7zoK/kzi6p8tXFhasHh8ocFL9VZSAkvH956gfeRfcnhs3xzRy8qQ/dq3q44v1jvQieMFg2cw==", + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.47.0.tgz", + "integrity": "sha512-ybUAvjy4ZCL11uryalkKxuT3w3sXJAuWhOoGS3T/Wu+iUu1tGJmk5ytSY8gbdACNARmcYEB0COksD2j6hfGK2g==", "dev": true, + "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -9451,14 +10999,15 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.46.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.46.0.tgz", - "integrity": "sha512-hy+lvYV1lZpVs2jRaEYvgCblZxUoJiPyCemwbQZ+NGulWkQRy0HRPYAoef/CNSzaLt+MLvMptZsHXHlkEilaeg==", + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.47.0.tgz", + "integrity": "sha512-QC9RiCmZ2HmIdCEvhd1aJELBlD93ErziOXXlHEZyuBo3tBiAZieya0HLIxp+DoDWlsQqDawyKuNEhORyku+P8A==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.46.0", - "@typescript-eslint/typescript-estree": "8.46.0", - "@typescript-eslint/utils": "8.46.0", + "@typescript-eslint/types": "8.47.0", + "@typescript-eslint/typescript-estree": "8.47.0", + "@typescript-eslint/utils": "8.47.0", "debug": "^4.3.4", "ts-api-utils": "^2.1.0" }, @@ -9475,10 +11024,11 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.46.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.46.0.tgz", - "integrity": "sha512-bHGGJyVjSE4dJJIO5yyEWt/cHyNwga/zXGJbJJ8TiO01aVREK6gCTu3L+5wrkb1FbDkQ+TKjMNe9R/QQQP9+rA==", + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.47.0.tgz", + "integrity": "sha512-nHAE6bMKsizhA2uuYZbEbmp5z2UpffNrPEqiKIeN7VsV6UY/roxanWfoRrf6x/k9+Obf+GQdkm0nPU+vnMXo9A==", "dev": true, + "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -9488,15 +11038,16 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.46.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.46.0.tgz", - "integrity": "sha512-ekDCUfVpAKWJbRfm8T1YRrCot1KFxZn21oV76v5Fj4tr7ELyk84OS+ouvYdcDAwZL89WpEkEj2DKQ+qg//+ucg==", + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.47.0.tgz", + "integrity": "sha512-k6ti9UepJf5NpzCjH31hQNLHQWupTRPhZ+KFF8WtTuTpy7uHPfeg2NM7cP27aCGajoEplxJDFVCEm9TGPYyiVg==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.46.0", - "@typescript-eslint/tsconfig-utils": "8.46.0", - "@typescript-eslint/types": "8.46.0", - "@typescript-eslint/visitor-keys": "8.46.0", + "@typescript-eslint/project-service": "8.47.0", + "@typescript-eslint/tsconfig-utils": "8.47.0", + "@typescript-eslint/types": "8.47.0", + "@typescript-eslint/visitor-keys": "8.47.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -9515,16 +11066,30 @@ "typescript": ">=4.8.4 <6.0.0" } }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@typescript-eslint/utils": { - "version": "8.46.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.46.0.tgz", - "integrity": "sha512-nD6yGWPj1xiOm4Gk0k6hLSZz2XkNXhuYmyIrOWcHoPuAhjT9i5bAG+xbWPgFeNR8HPHHtpNKdYUXJl/D3x7f5g==", + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.47.0.tgz", + "integrity": "sha512-g7XrNf25iL4TJOiPqatNuaChyqt49a/onq5YsJ9+hXeugK+41LVg7AxikMfM02PC6jbNtZLCJj6AUcQXJS/jGQ==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.46.0", - "@typescript-eslint/types": "8.46.0", - "@typescript-eslint/typescript-estree": "8.46.0" + "@typescript-eslint/scope-manager": "8.47.0", + "@typescript-eslint/types": "8.47.0", + "@typescript-eslint/typescript-estree": "8.47.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -9539,12 +11104,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.46.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.0.tgz", - "integrity": "sha512-FrvMpAK+hTbFy7vH5j1+tMYHMSKLE6RzluFJlkFNKD0p9YsUT75JlBSmr5so3QRzvMwU5/bIEdeNrxm8du8l3Q==", + "version": "8.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.47.0.tgz", + "integrity": "sha512-SIV3/6eftCy1bNzCQoPmbWsRLujS8t5iDIZ4spZOBHqrM+yfX2ogg8Tt3PDTAVKw3sSCiUgg30uOAvK2r9zGjQ==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.46.0", + "@typescript-eslint/types": "8.47.0", "eslint-visitor-keys": "^4.2.1" }, "engines": { @@ -9560,6 +11126,7 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -9571,13 +11138,15 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/@vitest/pretty-format": { "version": "2.1.9", "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.9.tgz", "integrity": "sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==", "dev": true, + "license": "MIT", "dependencies": { "tinyrainbow": "^1.2.0" }, @@ -9590,6 +11159,7 @@ "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.1.9.tgz", "integrity": "sha512-oBO82rEjsxLNJincVhLhaxxZdEtV0EFHMK5Kmx5sJ6H9L183dHECjiefOAdnqpIgT5eZwT04PoggUnW88vOBNQ==", "dev": true, + "license": "MIT", "dependencies": { "@vitest/pretty-format": "2.1.9", "magic-string": "^0.30.12", @@ -9600,18 +11170,19 @@ } }, "node_modules/@wdio/cli": { - "version": "9.20.0", - "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-9.20.0.tgz", - "integrity": "sha512-dGkZFp09aIyoN6HlJah7zJApG/FzN0O/HaTfTkWrOM5GBli9th/9VIfbsT3vx4I9mBdETiYPmgfl4LqDP2p0VQ==", + "version": "9.20.1", + "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-9.20.1.tgz", + "integrity": "sha512-aeU6iV79GVdUkuHfuqbx4RkaJWY1amsQbiawr8VXhFTmBhPKQdzqQEVs/G+FG2zh2ILTXZ8+spv9irWMQmpGBA==", "dev": true, + "license": "MIT", "dependencies": { "@vitest/snapshot": "^2.1.1", - "@wdio/config": "9.20.0", + "@wdio/config": "9.20.1", "@wdio/globals": "9.17.0", "@wdio/logger": "9.18.0", "@wdio/protocols": "9.16.2", "@wdio/types": "9.20.0", - "@wdio/utils": "9.20.0", + "@wdio/utils": "9.20.1", "async-exit-hook": "^2.0.1", "chalk": "^5.4.1", "chokidar": "^4.0.0", @@ -9623,7 +11194,7 @@ "lodash.union": "^4.6.0", "read-pkg-up": "^10.0.0", "tsx": "^4.7.2", - "webdriverio": "9.20.0", + "webdriverio": "9.20.1", "yargs": "^17.7.2" }, "bin": { @@ -9638,6 +11209,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^7.1.0", "path-exists": "^5.0.0" @@ -9654,6 +11226,7 @@ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^10.0.1" }, @@ -9666,6 +11239,7 @@ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", "dev": true, + "license": "MIT", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -9675,15 +11249,24 @@ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, + "node_modules/@wdio/cli/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, "node_modules/@wdio/cli/node_modules/normalize-package-data": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^7.0.0", "semver": "^7.3.5", @@ -9698,6 +11281,7 @@ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.1.tgz", "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.21.4", "error-ex": "^1.3.2", @@ -9717,6 +11301,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=14.16" }, @@ -9729,6 +11314,7 @@ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-8.1.0.tgz", "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/normalize-package-data": "^2.4.1", "normalize-package-data": "^6.0.0", @@ -9747,6 +11333,7 @@ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-10.1.0.tgz", "integrity": "sha512-aNtBq4jR8NawpKJQldrQcSW9y/d+KWH4v24HWkHljOZ7H0av+YTGANBzRh9A5pw7v/bLVsLVPpOhJ7gHNVy8lA==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^6.3.0", "read-pkg": "^8.1.0", @@ -9759,11 +11346,25 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@wdio/cli/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@wdio/cli/node_modules/type-fest": { "version": "4.41.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=16" }, @@ -9772,48 +11373,29 @@ } }, "node_modules/@wdio/config": { - "version": "9.20.0", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-9.20.0.tgz", - "integrity": "sha512-ggwd3EMsVj/LTcbYw2h+hma+/7fQ1cTXMuy9B5WTkLjDlOtbLjsqs9QLt4BLIo1cdsxvAw/UVpRVUuYy7rTmtQ==", + "version": "9.20.1", + "resolved": "https://registry.npmjs.org/@wdio/config/-/config-9.20.1.tgz", + "integrity": "sha512-npl2J+rjCDJPjVySgWpciOyhWddn6s7n5sepKXLR7x1ADQHl5zUFv1dHD3jx4OQ9l6lrGQSPaofuz+7e9mu+vg==", "dev": true, + "license": "MIT", "dependencies": { "@wdio/logger": "9.18.0", "@wdio/types": "9.20.0", - "@wdio/utils": "9.20.0", + "@wdio/utils": "9.20.1", "deepmerge-ts": "^7.0.3", "glob": "^10.2.2", - "import-meta-resolve": "^4.0.0", - "jiti": "^2.5.1" + "import-meta-resolve": "^4.0.0" }, "engines": { "node": ">=18.20.0" } }, - "node_modules/@wdio/config/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@wdio/dot-reporter": { "version": "9.20.0", "resolved": "https://registry.npmjs.org/@wdio/dot-reporter/-/dot-reporter-9.20.0.tgz", "integrity": "sha512-lRhihDQ56dApJcKOIEkVHThl8t2e5h7f3FW3JVmMLcGgbbkkLgXqVWPpbEGJcLld3wL4CipAPojVE/YEWp80hw==", "dev": true, + "license": "MIT", "dependencies": { "@wdio/reporter": "9.20.0", "@wdio/types": "9.20.0", @@ -9828,6 +11410,8 @@ "resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-9.17.0.tgz", "integrity": "sha512-i38o7wlipLllNrk2hzdDfAmk6nrqm3lR2MtAgWgtHbwznZAKkB84KpkNFfmUXw5Kg3iP1zKlSjwZpKqenuLc+Q==", "dev": true, + "license": "MIT", + "peer": true, "engines": { "node": ">=18.20.0" }, @@ -9845,15 +11429,16 @@ } }, "node_modules/@wdio/local-runner": { - "version": "9.20.0", - "resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-9.20.0.tgz", - "integrity": "sha512-Q2zuSlWVf/GEuzV1c5xGHSH8Y/l9GXZQBZgXeNLp9unVMP4dqQToHgadMihW+8owdva7LVMjoGa2dxcdE6m8HQ==", + "version": "9.20.1", + "resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-9.20.1.tgz", + "integrity": "sha512-O4zMa3SKcS+3jnMT1C/IqRl6Owl5c2e4aFpz6nRPFRdcs6Cwr+d7OXw8XGdfDtgSIEcpcDws+B53De9YDZmPzA==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "^20.1.0", "@wdio/logger": "9.18.0", "@wdio/repl": "9.16.2", - "@wdio/runner": "9.20.0", + "@wdio/runner": "9.20.1", "@wdio/types": "9.20.0", "@wdio/xvfb": "9.20.0", "exit-hook": "^4.0.0", @@ -9866,10 +11451,11 @@ } }, "node_modules/@wdio/local-runner/node_modules/@types/node": { - "version": "20.19.19", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.19.tgz", - "integrity": "sha512-pb1Uqj5WJP7wrcbLU7Ru4QtA0+3kAXrkutGiD26wUKzSMgNNaPARTUDQmElUXp64kh3cWdou3Q0C7qwwxqSFmg==", + "version": "20.19.25", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.25.tgz", + "integrity": "sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==", "dev": true, + "license": "MIT", "dependencies": { "undici-types": "~6.21.0" } @@ -9879,6 +11465,8 @@ "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.18.0.tgz", "integrity": "sha512-HdzDrRs+ywAqbXGKqe1i/bLtCv47plz4TvsHFH3j729OooT5VH38ctFn5aLXgECmiAKDkmH/A6kOq2Zh5DIxww==", "dev": true, + "license": "MIT", + "peer": true, "dependencies": { "chalk": "^5.1.2", "loglevel": "^1.6.0", @@ -9895,6 +11483,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -9907,6 +11496,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -9918,16 +11508,17 @@ } }, "node_modules/@wdio/mocha-framework": { - "version": "9.20.0", - "resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-9.20.0.tgz", - "integrity": "sha512-kqLaGJ2okdNyOjBsTJcmZ9fvl2nrcdbgaXHk9V1znhAzuHiTEPicaIRPG5T0Itb/vOKb72rp0BdisuJ/PBfs7g==", + "version": "9.20.1", + "resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-9.20.1.tgz", + "integrity": "sha512-QGZlJhycCLdiQlGyP33zl5c9m01NvjfRTH4yyTmSXDLFrukzl8qFDDBFkjhQylnTGlsa+htcDTog4taM/4LISg==", "dev": true, + "license": "MIT", "dependencies": { "@types/mocha": "^10.0.6", "@types/node": "^20.11.28", "@wdio/logger": "9.18.0", "@wdio/types": "9.20.0", - "@wdio/utils": "9.20.0", + "@wdio/utils": "9.20.1", "mocha": "^10.3.0" }, "engines": { @@ -9935,19 +11526,37 @@ } }, "node_modules/@wdio/mocha-framework/node_modules/@types/node": { - "version": "20.19.19", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.19.tgz", - "integrity": "sha512-pb1Uqj5WJP7wrcbLU7Ru4QtA0+3kAXrkutGiD26wUKzSMgNNaPARTUDQmElUXp64kh3cWdou3Q0C7qwwxqSFmg==", + "version": "20.19.25", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.25.tgz", + "integrity": "sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==", "dev": true, + "license": "MIT", "dependencies": { "undici-types": "~6.21.0" } }, + "node_modules/@wdio/mocha-framework/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/@wdio/mocha-framework/node_modules/chokidar": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, + "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -9972,6 +11581,7 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -9983,15 +11593,24 @@ "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } }, + "node_modules/@wdio/mocha-framework/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, "node_modules/@wdio/mocha-framework/node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -10009,6 +11628,7 @@ "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -10028,6 +11648,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -10035,20 +11656,12 @@ "node": ">= 6" } }, - "node_modules/@wdio/mocha-framework/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/@wdio/mocha-framework/node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, @@ -10064,6 +11677,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -10076,6 +11690,7 @@ "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", "dev": true, + "license": "MIT", "dependencies": { "ansi-colors": "^4.1.3", "browser-stdout": "^1.3.1", @@ -10106,26 +11721,12 @@ "node": ">= 14.0.0" } }, - "node_modules/@wdio/mocha-framework/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@wdio/mocha-framework/node_modules/p-locate": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -10141,15 +11742,30 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, + "node_modules/@wdio/mocha-framework/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/@wdio/mocha-framework/node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, + "license": "MIT", "dependencies": { "picomatch": "^2.2.1" }, @@ -10162,6 +11778,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -10176,6 +11793,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -10190,13 +11808,33 @@ "version": "6.5.1", "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", - "dev": true + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@wdio/mocha-framework/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } }, "node_modules/@wdio/mocha-framework/node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, + "license": "MIT", "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -10215,33 +11853,24 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } }, - "node_modules/@wdio/mocha-framework/node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@wdio/protocols": { "version": "9.16.2", "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-9.16.2.tgz", "integrity": "sha512-h3k97/lzmyw5MowqceAuY3HX/wGJojXHkiPXA3WlhGPCaa2h4+GovV2nJtRvknCKsE7UHA1xB5SWeI8MzloBew==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@wdio/repl": { "version": "9.16.2", "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-9.16.2.tgz", "integrity": "sha512-FLTF0VL6+o5BSTCO7yLSXocm3kUnu31zYwzdsz4n9s5YWt83sCtzGZlZpt7TaTzb3jVUfxuHNQDTb8UMkCu0lQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "^20.1.0" }, @@ -10250,10 +11879,11 @@ } }, "node_modules/@wdio/repl/node_modules/@types/node": { - "version": "20.19.19", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.19.tgz", - "integrity": "sha512-pb1Uqj5WJP7wrcbLU7Ru4QtA0+3kAXrkutGiD26wUKzSMgNNaPARTUDQmElUXp64kh3cWdou3Q0C7qwwxqSFmg==", + "version": "20.19.25", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.25.tgz", + "integrity": "sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==", "dev": true, + "license": "MIT", "dependencies": { "undici-types": "~6.21.0" } @@ -10263,6 +11893,7 @@ "resolved": "https://registry.npmjs.org/@wdio/reporter/-/reporter-9.20.0.tgz", "integrity": "sha512-HjKJzm8o0MCcnwGVGprzaCAyau0OB8mWHwH1ZI/ka+z1nmVBr2tsr7H53SdHsGIhAg/XuZObobqdzeVF63ApeA==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "^20.1.0", "@wdio/logger": "9.18.0", @@ -10275,10 +11906,11 @@ } }, "node_modules/@wdio/reporter/node_modules/@types/node": { - "version": "20.19.19", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.19.tgz", - "integrity": "sha512-pb1Uqj5WJP7wrcbLU7Ru4QtA0+3kAXrkutGiD26wUKzSMgNNaPARTUDQmElUXp64kh3cWdou3Q0C7qwwxqSFmg==", + "version": "20.19.25", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.25.tgz", + "integrity": "sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==", "dev": true, + "license": "MIT", "dependencies": { "undici-types": "~6.21.0" } @@ -10288,26 +11920,28 @@ "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.2.tgz", "integrity": "sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } }, "node_modules/@wdio/runner": { - "version": "9.20.0", - "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-9.20.0.tgz", - "integrity": "sha512-z6CFANs5F02ww5mDTF1WUc1DA2mqJiCPKGr+xNXhpd3YH+537aFSsjww/S5SO4gFlAwf0cQiQZTKWUY3uJUGJQ==", + "version": "9.20.1", + "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-9.20.1.tgz", + "integrity": "sha512-aoB1ytsWuN8YH2SCpY4dyD1VZHSKRub4xDo0gZ2r7fh3qup4zJCPrCNV0Dq1CcUvsq3TgGlySbfazPjSpm1g3g==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "^20.11.28", - "@wdio/config": "9.20.0", + "@wdio/config": "9.20.1", "@wdio/dot-reporter": "9.20.0", "@wdio/globals": "9.17.0", "@wdio/logger": "9.18.0", "@wdio/types": "9.20.0", - "@wdio/utils": "9.20.0", + "@wdio/utils": "9.20.1", "deepmerge-ts": "^7.0.3", - "webdriver": "9.20.0", - "webdriverio": "9.20.0" + "webdriver": "9.20.1", + "webdriverio": "9.20.1" }, "engines": { "node": ">=18.20.0" @@ -10326,10 +11960,11 @@ } }, "node_modules/@wdio/runner/node_modules/@types/node": { - "version": "20.19.19", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.19.tgz", - "integrity": "sha512-pb1Uqj5WJP7wrcbLU7Ru4QtA0+3kAXrkutGiD26wUKzSMgNNaPARTUDQmElUXp64kh3cWdou3Q0C7qwwxqSFmg==", + "version": "20.19.25", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.25.tgz", + "integrity": "sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==", "dev": true, + "license": "MIT", "dependencies": { "undici-types": "~6.21.0" } @@ -10339,6 +11974,7 @@ "resolved": "https://registry.npmjs.org/@wdio/spec-reporter/-/spec-reporter-9.20.0.tgz", "integrity": "sha512-YHj3kF86RoOVVR+k3eb+e/Fki6Mq1FIrJQ380Cz5SSWbIc9gL8HXG3ydReldY6/80KLFOuHn9ZHvDHrCIXRjiw==", "dev": true, + "license": "MIT", "dependencies": { "@wdio/reporter": "9.20.0", "@wdio/types": "9.20.0", @@ -10355,6 +11991,7 @@ "resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.20.0.tgz", "integrity": "sha512-zMmAtse2UMCSOW76mvK3OejauAdcFGuKopNRH7crI0gwKTZtvV89yXWRziz9cVXpFgfmJCjf9edxKFWdhuF5yw==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "^20.1.0" }, @@ -10363,19 +12000,21 @@ } }, "node_modules/@wdio/types/node_modules/@types/node": { - "version": "20.19.19", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.19.tgz", - "integrity": "sha512-pb1Uqj5WJP7wrcbLU7Ru4QtA0+3kAXrkutGiD26wUKzSMgNNaPARTUDQmElUXp64kh3cWdou3Q0C7qwwxqSFmg==", + "version": "20.19.25", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.25.tgz", + "integrity": "sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==", "dev": true, + "license": "MIT", "dependencies": { "undici-types": "~6.21.0" } }, "node_modules/@wdio/utils": { - "version": "9.20.0", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-9.20.0.tgz", - "integrity": "sha512-T1ze005kncUTocYImSBQc/FAVcOwP/vOU4MDJFgzz/RTcps600qcKX98sVdWM5/ukXCVkjOufWteDHIbX5/tEA==", + "version": "9.20.1", + "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-9.20.1.tgz", + "integrity": "sha512-C/Gsy5NAatsGUF1eT9Ks/ErR52/X4YI7MSm7BtwNOw8v2Ko+SiCA5qXts61J0A7QYwOn4gfXfBZZnzSAng6G/w==", "dev": true, + "license": "MIT", "dependencies": { "@puppeteer/browsers": "^2.2.0", "@wdio/logger": "9.18.0", @@ -10401,6 +12040,7 @@ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.1.tgz", "integrity": "sha512-G7Cqgaelq68XHJNGlZ7lrNQyhZGsFqpwtGFexqUv4IQdjKoSYF7ipZ9UuTJZUSQXFj/XaoBLuEVIVqr8EJngEQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -10413,6 +12053,7 @@ "resolved": "https://registry.npmjs.org/@wdio/xvfb/-/xvfb-9.20.0.tgz", "integrity": "sha512-shllZH9CsLiZqTXkqBTJrwi6k/ajBE7/78fQgvafMUIQU1Hpb2RdsmydKfPFZ5NDoA+LNm67PD2cPkvkXy4pSw==", "dev": true, + "license": "MIT", "dependencies": { "@wdio/logger": "9.18.0" }, @@ -10425,6 +12066,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", "devOptional": true, + "license": "MIT", "dependencies": { "@webassemblyjs/helper-numbers": "1.13.2", "@webassemblyjs/helper-wasm-bytecode": "1.13.2" @@ -10434,25 +12076,29 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", - "devOptional": true + "devOptional": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", - "devOptional": true + "devOptional": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", - "devOptional": true + "devOptional": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", "devOptional": true, + "license": "MIT", "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.13.2", "@webassemblyjs/helper-api-error": "1.13.2", @@ -10463,13 +12109,15 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", - "devOptional": true + "devOptional": true, + "license": "MIT" }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", "devOptional": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-buffer": "1.14.1", @@ -10482,6 +12130,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", "devOptional": true, + "license": "MIT", "dependencies": { "@xtuc/ieee754": "^1.2.0" } @@ -10491,6 +12140,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", "devOptional": true, + "license": "Apache-2.0", "dependencies": { "@xtuc/long": "4.2.2" } @@ -10499,13 +12149,15 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", - "devOptional": true + "devOptional": true, + "license": "MIT" }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", "devOptional": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-buffer": "1.14.1", @@ -10522,6 +12174,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", "devOptional": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-wasm-bytecode": "1.13.2", @@ -10535,6 +12188,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", "devOptional": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-buffer": "1.14.1", @@ -10547,6 +12201,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", "devOptional": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-api-error": "1.13.2", @@ -10561,6 +12216,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", "devOptional": true, + "license": "MIT", "dependencies": { "@webassemblyjs/ast": "1.14.1", "@xtuc/long": "4.2.2" @@ -10571,6 +12227,7 @@ "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-3.0.1.tgz", "integrity": "sha512-u8d0pJ5YFgneF/GuvEiDA61Tf1VDomHHYMjv/wc9XzYj7nopltpG96nXN5dJRstxZhcNpV1g+nT6CydO7pHbjA==", "dev": true, + "license": "MIT", "engines": { "node": ">=18.12.0" }, @@ -10584,6 +12241,7 @@ "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-3.0.1.tgz", "integrity": "sha512-coEmDzc2u/ffMvuW9aCjoRzNSPDl/XLuhPdlFRpT9tZHmJ/039az33CE7uH+8s0uL1j5ZNtfdv0HkfaKRBGJsQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18.12.0" }, @@ -10597,6 +12255,7 @@ "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-3.0.1.tgz", "integrity": "sha512-sbgw03xQaCLiT6gcY/6u3qBDn01CWw/nbaXl3gTdTFuJJ75Gffv3E3DBpgvY2fkkrdS1fpjaXNOmJlnbtKauKg==", "dev": true, + "license": "MIT", "engines": { "node": ">=18.12.0" }, @@ -10614,19 +12273,22 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "devOptional": true + "devOptional": true, + "license": "BSD-3-Clause" }, "node_modules/@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "devOptional": true + "devOptional": true, + "license": "Apache-2.0" }, "node_modules/@zip.js/zip.js": { - "version": "2.8.7", - "resolved": "https://registry.npmjs.org/@zip.js/zip.js/-/zip.js-2.8.7.tgz", - "integrity": "sha512-8daf29EMM3gUpH/vSBSCYo2bY/wbamgRPxPpE2b+cDnbOLBHAcZikWad79R4Guemth/qtipzEHrZMq1lFXxWIA==", + "version": "2.8.11", + "resolved": "https://registry.npmjs.org/@zip.js/zip.js/-/zip.js-2.8.11.tgz", + "integrity": "sha512-0fztsk/0ryJ+2PPr9EyXS5/Co7OK8q3zY/xOoozEWaUsL5x+C0cyZ4YyMuUffOO2Dx/rAdq4JMPqW0VUtm+vzA==", "dev": true, + "license": "BSD-3-Clause", "engines": { "bun": ">=0.7.0", "deno": ">=1.0.0", @@ -10637,12 +12299,14 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/abort-controller": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "license": "MIT", "dependencies": { "event-target-shim": "^5.0.0" }, @@ -10654,6 +12318,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "license": "MIT", "dependencies": { "mime-types": "^3.0.0", "negotiator": "^1.0.0" @@ -10662,22 +12327,13 @@ "node": ">= 0.6" } }, - "node_modules/accepts/node_modules/mime-types": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", - "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", - "dependencies": { - "mime-db": "^1.54.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/acorn": { "version": "8.15.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "devOptional": true, + "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -10690,6 +12346,7 @@ "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", "devOptional": true, + "license": "MIT", "engines": { "node": ">=10.13.0" }, @@ -10702,6 +12359,7 @@ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, + "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } @@ -10711,6 +12369,7 @@ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", "dev": true, + "license": "MIT", "dependencies": { "acorn": "^8.11.0" }, @@ -10722,6 +12381,7 @@ "version": "0.5.16", "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.16.tgz", "integrity": "sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==", + "license": "MIT", "engines": { "node": ">=12.0" } @@ -10730,6 +12390,7 @@ "version": "7.1.4", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "license": "MIT", "engines": { "node": ">= 14" } @@ -10738,6 +12399,8 @@ "version": "8.17.1", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "license": "MIT", + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -10750,9 +12413,10 @@ } }, "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "license": "MIT", "dependencies": { "ajv": "^8.0.0" }, @@ -10769,6 +12433,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3" }, @@ -10781,6 +12446,7 @@ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -10790,6 +12456,7 @@ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.21.3" }, @@ -10805,6 +12472,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -10819,6 +12487,7 @@ "engines": [ "node >= 0.8.0" ], + "license": "Apache-2.0", "bin": { "ansi-html": "bin/ansi-html" } @@ -10827,19 +12496,19 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" @@ -10849,6 +12518,7 @@ "version": "3.4.4", "resolved": "https://registry.npmjs.org/antlr4-c3/-/antlr4-c3-3.4.4.tgz", "integrity": "sha512-ixp1i17ypbRzZnffdarIfCVEXJwPydtDt61SHMGkc+UCD7rrbfvHESTMTgx8jFhUgKAgcHyt9060kQ8nU3vlxA==", + "license": "MIT", "dependencies": { "antlr4ng": "3.0.16" } @@ -10856,7 +12526,8 @@ "node_modules/antlr4ng": { "version": "3.0.16", "resolved": "https://registry.npmjs.org/antlr4ng/-/antlr4ng-3.0.16.tgz", - "integrity": "sha512-DQuJkC7kX3xunfF4K2KsWTSvoxxslv+FQp/WHQZTJSsH2Ec3QfFmrxC3Nky2ok9yglXn6nHM4zUaVDxcN5f6kA==" + "integrity": "sha512-DQuJkC7kX3xunfF4K2KsWTSvoxxslv+FQp/WHQZTJSsH2Ec3QfFmrxC3Nky2ok9yglXn6nHM4zUaVDxcN5f6kA==", + "license": "BSD-3-Clause" }, "node_modules/antlr4ng-cli": { "version": "2.0.0", @@ -10864,6 +12535,7 @@ "integrity": "sha512-oAt5OSSYhRQn1PgahtpAP4Vp3BApCoCqlzX7Q8ZUWWls4hX59ryYuu0t7Hwrnfk796OxP/vgIJaqxdltd/oEvQ==", "deprecated": "This package is deprecated and will no longer be updated. Please use the new antlr-ng package instead: https://github.com/mike-lischke/antlr-ng", "dev": true, + "license": "BSD-3-Clause", "bin": { "antlr4ng": "index.js" } @@ -10872,6 +12544,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -10880,15 +12553,29 @@ "node": ">= 8" } }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/aproba": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "license": "ISC" }, "node_modules/archiver": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/archiver/-/archiver-7.0.1.tgz", "integrity": "sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==", + "license": "MIT", "dependencies": { "archiver-utils": "^5.0.2", "async": "^3.2.4", @@ -10906,6 +12593,7 @@ "version": "5.0.2", "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-5.0.2.tgz", "integrity": "sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==", + "license": "MIT", "dependencies": { "glob": "^10.0.0", "graceful-fs": "^4.2.0", @@ -10919,197 +12607,73 @@ "node": ">= 14" } }, - "node_modules/archiver-utils/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/archiver-utils/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/archiver-utils/node_modules/readable-stream": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", - "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/archiver-utils/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/archiver-utils/node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/archiver/node_modules/async": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", - "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==" - }, - "node_modules/archiver/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/archiver/node_modules/readable-stream": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", - "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "node_modules/are-we-there-yet": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "deprecated": "This package is no longer supported.", + "license": "ISC", "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" } }, - "node_modules/archiver/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "node_modules/are-we-there-yet/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" }, - "node_modules/archiver/node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "node_modules/are-we-there-yet/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", "dependencies": { - "safe-buffer": "~5.2.0" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "node_modules/archiver/node_modules/tar-stream": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", - "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", - "dependencies": { - "b4a": "^1.6.4", - "fast-fifo": "^1.2.0", - "streamx": "^2.15.0" - } + "node_modules/are-we-there-yet/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" }, - "node_modules/are-we-there-yet": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", - "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", - "deprecated": "This package is no longer supported.", + "node_modules/are-we-there-yet/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" + "safe-buffer": "~5.1.0" } }, "node_modules/arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "dev": true, + "license": "Python-2.0" }, "node_modules/args": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/args/-/args-5.0.3.tgz", "integrity": "sha512-h6k/zfFgusnv3i5TU08KQkVKuCPBtL/PWQbWkHUxvJrZ2nAyeaUupneemcrgn1xmqxPQsPIzwkUhOpoqPDRZuA==", "dev": true, + "license": "MIT", "dependencies": { "camelcase": "5.0.0", "chalk": "2.4.2", @@ -11125,6 +12689,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -11137,6 +12702,7 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -11146,6 +12712,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -11160,6 +12727,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "1.1.3" } @@ -11168,13 +12736,15 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/args/node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.0" } @@ -11184,6 +12754,7 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -11193,6 +12764,7 @@ "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", "integrity": "sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -11202,6 +12774,7 @@ "resolved": "https://registry.npmjs.org/mri/-/mri-1.1.4.tgz", "integrity": "sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -11211,6 +12784,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -11223,6 +12797,7 @@ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">= 0.4" } @@ -11232,6 +12807,7 @@ "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "is-array-buffer": "^3.0.5" @@ -11248,6 +12824,7 @@ "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", "integrity": "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -11255,19 +12832,22 @@ "node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "license": "MIT" }, "node_modules/array-ify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/array-includes": { "version": "3.1.9", "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.4", @@ -11290,6 +12870,7 @@ "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.4", @@ -11311,6 +12892,7 @@ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", @@ -11329,6 +12911,7 @@ "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", @@ -11347,6 +12930,7 @@ "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", "dev": true, + "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.1", "call-bind": "^1.0.8", @@ -11367,12 +12951,14 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/asn1.js": { "version": "4.10.1", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "license": "MIT", "dependencies": { "bn.js": "^4.0.0", "inherits": "^2.0.1", @@ -11382,13 +12968,15 @@ "node_modules/asn1.js/node_modules/bn.js": { "version": "4.12.2", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", - "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==" + "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", + "license": "MIT" }, "node_modules/assert": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "is-nan": "^1.3.2", @@ -11402,6 +12990,7 @@ "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "dev": true, + "license": "MIT", "engines": { "node": "*" } @@ -11411,6 +13000,7 @@ "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.0.1" }, @@ -11419,15 +13009,17 @@ } }, "node_modules/async": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "integrity": "sha512-l6ToIJIotphWahxxHyzK9bnLR6kM4jJIIgLShZeqLY7iboHoGkdgFl7W2/Ivi4SkMJYGKqW8vSuk0uKUj6qsSw==" + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "license": "MIT" }, "node_modules/async-exit-hook": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz", "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -11437,6 +13029,7 @@ "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -11445,6 +13038,7 @@ "version": "0.5.0", "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.5.0.tgz", "integrity": "sha512-1A94B18jkJ3DYq284ohPxoXbfTA5HsQ7/Mf4DEhcyLx3Bz27Rh59iScbB6EPiP+B+joue6YCxcMXSbFC1tZKwA==", + "license": "MIT", "dependencies": { "tslib": "^2.4.0" } @@ -11452,13 +13046,15 @@ "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" }, "node_modules/atomic-sleep": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.0.0" } @@ -11467,6 +13063,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "license": "MIT", "dependencies": { "possible-typed-array-names": "^1.0.0" }, @@ -11482,9 +13079,10 @@ "link": true }, "node_modules/axios": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.12.2.tgz", - "integrity": "sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.2.tgz", + "integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==", + "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.4", @@ -11495,6 +13093,7 @@ "version": "1.7.3", "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.7.3.tgz", "integrity": "sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==", + "license": "Apache-2.0", "peerDependencies": { "react-native-b4a": "*" }, @@ -11509,6 +13108,7 @@ "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", "dev": true, + "license": "MIT", "dependencies": { "@jest/transform": "^29.7.0", "@types/babel__core": "^7.1.14", @@ -11525,11 +13125,28 @@ "@babel/core": "^7.8.0" } }, + "node_modules/babel-jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/babel-jest/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -11546,6 +13163,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@istanbuljs/load-nyc-config": "^1.0.0", @@ -11562,16 +13180,40 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, + "node_modules/babel-plugin-istanbul/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.12.3", "@babel/parser": "^7.14.7", @@ -11588,6 +13230,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -11595,20 +13238,12 @@ "node": "*" } }, - "node_modules/babel-plugin-istanbul/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/babel-plugin-istanbul/node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, + "license": "ISC", "dependencies": { "@istanbuljs/schema": "^0.1.2", "glob": "^7.1.4", @@ -11623,6 +13258,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/template": "^7.3.3", "@babel/types": "^7.3.3", @@ -11638,6 +13274,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-transform-import-meta/-/babel-plugin-transform-import-meta-2.3.3.tgz", "integrity": "sha512-bbh30qz1m6ZU1ybJoNOhA2zaDvmeXMnGNBMVMDOJ1Fni4+wMBoy/j7MTRVmqAUCIcy54/rEnr9VEBsfcgbpm3Q==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@babel/template": "^7.25.9", "tslib": "^2.8.1" @@ -11651,6 +13288,7 @@ "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-bigint": "^7.8.3", @@ -11677,6 +13315,7 @@ "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", "dev": true, + "license": "MIT", "dependencies": { "babel-plugin-jest-hoist": "^29.6.3", "babel-preset-current-node-syntax": "^1.0.0" @@ -11691,18 +13330,29 @@ "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" }, "node_modules/bare-events": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.7.0.tgz", - "integrity": "sha512-b3N5eTW1g7vXkw+0CXh/HazGTcO5KYuu/RCNaJbDMPI6LHDi+7qe8EmxKUVe1sUbY2KZOVZFyj62x0OEz9qyAA==" + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz", + "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==", + "license": "Apache-2.0", + "peerDependencies": { + "bare-abort-controller": "*" + }, + "peerDependenciesMeta": { + "bare-abort-controller": { + "optional": true + } + } }, "node_modules/bare-fs": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.4.5.tgz", - "integrity": "sha512-TCtu93KGLu6/aiGWzMr12TmSRS6nKdfhAnzTQRbXoSWxkbb9eRd53jQ51jG7g1gYjjtto3hbBrrhzg6djcgiKg==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.5.1.tgz", + "integrity": "sha512-zGUCsm3yv/ePt2PHNbVxjjn0nNB1MkIaR4wOCxJ2ig5pCf5cCVAYJXVhQg/3OhhJV6DB1ts7Hv0oUaElc2TPQg==", "dev": true, + "license": "Apache-2.0", "optional": true, "dependencies": { "bare-events": "^2.5.4", @@ -11728,6 +13378,7 @@ "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.2.tgz", "integrity": "sha512-T+V1+1srU2qYNBmJCXZkUY5vQ0B4FSlL3QDROnKQYOqeiQR8UbjNHlPa+TIbM4cuidiN9GaTaOZgSEgsvPbh5A==", "dev": true, + "license": "Apache-2.0", "optional": true, "engines": { "bare": ">=1.14.0" @@ -11738,6 +13389,7 @@ "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz", "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", "dev": true, + "license": "Apache-2.0", "optional": true, "dependencies": { "bare-os": "^3.0.1" @@ -11748,6 +13400,7 @@ "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.7.0.tgz", "integrity": "sha512-oyXQNicV1y8nc2aKffH+BUHFRXmx6VrPzlnaEvMhram0nPBrKcEdcyBg5r08D0i8VxngHFAiVyn1QKXpSG0B8A==", "dev": true, + "license": "Apache-2.0", "optional": true, "dependencies": { "streamx": "^2.21.0" @@ -11766,10 +13419,11 @@ } }, "node_modules/bare-url": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.2.2.tgz", - "integrity": "sha512-g+ueNGKkrjMazDG3elZO1pNs3HY5+mMmOet1jtKyhOaCnkLzitxf26z7hoAEkDNgdNmnc1KIlt/dw6Po6xZMpA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.3.2.tgz", + "integrity": "sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw==", "dev": true, + "license": "Apache-2.0", "optional": true, "dependencies": { "bare-path": "^3.0.0" @@ -11792,13 +13446,15 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.8.13", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.13.tgz", - "integrity": "sha512-7s16KR8io8nIBWQyCYhmFhd+ebIzb9VKTzki+wOJXHTxTnV6+mFGH3+Jwn1zoKaY9/H9T/0BcKCZnzXljPnpSQ==", + "version": "2.8.30", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.30.tgz", + "integrity": "sha512-aTUKW4ptQhS64+v2d6IkPzymEzzhw+G0bA1g3uBRV3+ntkH+svttKseW5IOR4Ed6NUVKqnY7qT3dKvzQ7io4AA==", "devOptional": true, + "license": "Apache-2.0", "bin": { "baseline-browser-mapping": "dist/cli.js" } @@ -11808,6 +13464,7 @@ "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" } @@ -11815,13 +13472,15 @@ "node_modules/batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==" + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "license": "MIT" }, "node_modules/big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "dev": true, + "license": "MIT", "engines": { "node": "*" } @@ -11830,6 +13489,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "license": "MIT", "engines": { "node": ">=8" }, @@ -11841,16 +13501,42 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "license": "MIT", "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", "readable-stream": "^3.4.0" } }, + "node_modules/bl/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "node_modules/bl/node_modules/readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -11864,17 +13550,20 @@ "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/bn.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.2.tgz", - "integrity": "sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==" + "integrity": "sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==", + "license": "MIT" }, "node_modules/body-parser": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", + "license": "MIT", "dependencies": { "bytes": "^3.1.2", "content-type": "^1.0.5", @@ -11894,6 +13583,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz", "integrity": "sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==", + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", "multicast-dns": "^7.2.5" @@ -11903,13 +13593,15 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/bower": { "version": "1.8.14", "resolved": "https://registry.npmjs.org/bower/-/bower-1.8.14.tgz", "integrity": "sha512-8Rq058FD91q9Nwthyhw0la9fzpBz0iwZTrt51LWl+w+PnJgZk9J+5wp3nibsJcIUPglMYXr4NRBaR+TUj0OkBQ==", "dev": true, + "license": "MIT", "bin": { "bower": "bin/bower" }, @@ -11922,6 +13614,7 @@ "resolved": "https://registry.npmjs.org/bower-json/-/bower-json-0.8.4.tgz", "integrity": "sha512-mMKghvq9ivbuzSsY5nrOLnDtZIJMUCpysqbGaGW3mj88JAcuSi8ZAzIt34vNZjohy0aR9VXLwgPTZGnBX2Vpjg==", "dev": true, + "license": "MIT", "dependencies": { "deep-extend": "^0.5.1", "ends-with": "^0.2.0", @@ -11939,6 +13632,7 @@ "resolved": "https://registry.npmjs.org/bower-license/-/bower-license-0.4.4.tgz", "integrity": "sha512-zkDh1GlJkXNFNdlw/JVjihbYsLw5aJhnZnEMMSXLuFKxhJaz+SGFJDOfhBiPZxrASsQCEohuU9EPYdUj1X3GwA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "bower-json": "~0.4.0", "npm-license": "~0.3.3", @@ -11970,6 +13664,7 @@ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.2.11.tgz", "integrity": "sha512-t2N+4ihO7YgydJOUI47I6GdXpONJ+jUZmYeTNiifALaEduiCja1mKcq3tuSp0RhA9mMfxdMN3YskpwB7puMAtw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.4" } @@ -11980,6 +13675,7 @@ "integrity": "sha512-hcj/NTUWv+C3MbqrVb9F+aH6lvTwEHJdx2foBxlrVq5h6zE8Bfu4pv4CAAqbDcZrw/9Ak5lsRXlY9Ao8/F0Tuw==", "deprecated": "please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js", "dev": true, + "license": "BSD", "engines": { "node": ">=0.4.0" } @@ -11988,7 +13684,8 @@ "version": "0.0.3", "resolved": "https://registry.npmjs.org/intersect/-/intersect-0.0.3.tgz", "integrity": "sha512-Bp/mSG9dsq/eOMk2Q7DyjKxY62TTU2RvNvycjXHhi5TjrA72H+I3c5+1nAOAqtENcrQvCb5NDlsoPWJ4Bh01SA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/bower-license/node_modules/treeify": { "version": "1.0.1", @@ -12002,12 +13699,14 @@ "node_modules/bowser": { "version": "2.12.1", "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.12.1.tgz", - "integrity": "sha512-z4rE2Gxh7tvshQ4hluIT7XcFrgLIQaw9X3A+kTTRdovCz5PMukm/0QC/BKSYPj3omF5Qfypn9O/c5kgpmvYUCw==" + "integrity": "sha512-z4rE2Gxh7tvshQ4hluIT7XcFrgLIQaw9X3A+kTTRdovCz5PMukm/0QC/BKSYPj3omF5Qfypn9O/c5kgpmvYUCw==", + "license": "MIT" }, "node_modules/brace-expansion": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -12016,6 +13715,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", "dependencies": { "fill-range": "^7.1.1" }, @@ -12026,18 +13726,21 @@ "node_modules/brorand": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "license": "MIT" }, "node_modules/browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/browserify-aes": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "license": "MIT", "dependencies": { "buffer-xor": "^1.0.3", "cipher-base": "^1.0.0", @@ -12051,6 +13754,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "license": "MIT", "dependencies": { "browserify-aes": "^1.0.4", "browserify-des": "^1.0.0", @@ -12061,6 +13765,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "license": "MIT", "dependencies": { "cipher-base": "^1.0.1", "des.js": "^1.0.0", @@ -12072,6 +13777,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.1.tgz", "integrity": "sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ==", + "license": "MIT", "dependencies": { "bn.js": "^5.2.1", "randombytes": "^2.1.0", @@ -12081,29 +13787,11 @@ "node": ">= 0.10" } }, - "node_modules/browserify-rsa/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/browserify-sign": { "version": "4.2.5", "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.5.tgz", "integrity": "sha512-C2AUdAJg6rlM2W5QMp2Q4KGQMVBwR1lIimTsUnutJ8bMpW5B52pGpR2gEnNBNwijumDo5FojQ0L9JrXA8m4YEw==", + "license": "ISC", "dependencies": { "bn.js": "^5.2.2", "browserify-rsa": "^4.1.1", @@ -12119,29 +13807,52 @@ "node": ">= 0.10" } }, - "node_modules/browserify-sign/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "node_modules/browserify-sign/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/browserify-sign/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/browserify-sign/node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/browserify-sign/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/browserify-sign/node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" }, "node_modules/browserslist": { - "version": "4.26.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.26.3.tgz", - "integrity": "sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==", + "version": "4.28.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.0.tgz", + "integrity": "sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==", "devOptional": true, "funding": [ { @@ -12157,12 +13868,14 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", + "peer": true, "dependencies": { - "baseline-browser-mapping": "^2.8.9", - "caniuse-lite": "^1.0.30001746", - "electron-to-chromium": "^1.5.227", - "node-releases": "^2.0.21", - "update-browserslist-db": "^1.1.3" + "baseline-browser-mapping": "^2.8.25", + "caniuse-lite": "^1.0.30001754", + "electron-to-chromium": "^1.5.249", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.1.4" }, "bin": { "browserslist": "cli.js" @@ -12176,6 +13889,7 @@ "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", "dev": true, + "license": "MIT", "dependencies": { "fast-json-stable-stringify": "2.x" }, @@ -12188,14 +13902,15 @@ "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "node-int64": "^0.4.0" } }, "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "funding": [ { "type": "github", @@ -12210,15 +13925,17 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "base64-js": "^1.3.1", - "ieee754": "^1.1.13" + "ieee754": "^1.2.1" } }, "node_modules/buffer-crc32": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==", + "license": "MIT", "engines": { "node": ">=8.0.0" } @@ -12227,22 +13944,26 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "devOptional": true + "devOptional": true, + "license": "MIT" }, "node_modules/buffer-xor": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "license": "MIT" }, "node_modules/builtin-status-codes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==" + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", + "license": "MIT" }, "node_modules/bundle-name": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "license": "MIT", "dependencies": { "run-applescript": "^7.0.0" }, @@ -12257,6 +13978,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -12266,6 +13988,7 @@ "resolved": "https://registry.npmjs.org/c8/-/c8-10.1.3.tgz", "integrity": "sha512-LvcyrOAaOnrrlMpW22n690PUvxiq4Uf9WMhQwNJ9vgagkL/ph1+D4uvjvDA5XCbykrc0sx+ay6pVi9YZ1GnhyA==", "dev": true, + "license": "ISC", "dependencies": { "@bcoe/v8-coverage": "^1.0.1", "@istanbuljs/schema": "^0.1.3", @@ -12299,6 +14022,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -12312,26 +14036,12 @@ }, "node_modules/c8/node_modules/locate-path": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/c8/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, + "license": "MIT", "dependencies": { - "yocto-queue": "^0.1.0" + "p-locate": "^5.0.0" }, "engines": { "node": ">=10" @@ -12345,6 +14055,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -12360,26 +14071,16 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/c8/node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/cacheable-lookup": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "license": "MIT", "engines": { "node": ">=10.6.0" } @@ -12388,6 +14089,7 @@ "version": "7.0.4", "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + "license": "MIT", "dependencies": { "clone-response": "^1.0.2", "get-stream": "^5.1.0", @@ -12401,24 +14103,11 @@ "node": ">=8" } }, - "node_modules/cacheable-request/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/call-bind": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", @@ -12436,6 +14125,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" @@ -12448,6 +14138,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", "get-intrinsic": "^1.3.0" @@ -12464,6 +14155,7 @@ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -12473,24 +14165,26 @@ "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", "dev": true, + "license": "MIT", "dependencies": { "pascal-case": "^3.1.2", "tslib": "^2.0.3" } }, "node_modules/camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, "node_modules/caniuse-lite": { - "version": "1.0.30001748", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001748.tgz", - "integrity": "sha512-5P5UgAr0+aBmNiplks08JLw+AW/XG/SurlgZLgB1dDLfAw7EfRGxIwzPHxdSCGY/BTKDqIVyJL87cCN6s0ZR0w==", + "version": "1.0.30001756", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001756.tgz", + "integrity": "sha512-4HnCNKbMLkLdhJz3TToeVWHSnfJvPaq6vu/eRP0Ahub/07n484XHhBF5AJoSGHdVrS8tKFauUQz8Bp9P7LVx7A==", "devOptional": true, "funding": [ { @@ -12505,13 +14199,16 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/chai": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", "dev": true, + "license": "MIT", + "peer": true, "dependencies": { "assertion-error": "^1.1.0", "check-error": "^1.0.3", @@ -12530,6 +14227,7 @@ "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.2.tgz", "integrity": "sha512-aBDHZxRzYnUYuIAIPBH2s511DjlKPzXNlXSGFC8CwmroWQLfrW0LtE1nK3MAwwNhJPa9raEjNCmRoFpG0Hurdw==", "dev": true, + "license": "WTFPL", "dependencies": { "check-error": "^1.0.2" }, @@ -12542,6 +14240,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", "dev": true, + "license": "MIT", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -12554,21 +14253,24 @@ "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" } }, "node_modules/chardet": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.0.tgz", - "integrity": "sha512-bNFETTG/pM5ryzQ9Ad0lJOTa6HWD/YsScAR3EnCPZRPlQh77JocYktSHOUHelyhm8IARL+o4c4F1bP5KVOjiRA==", - "dev": true + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", + "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", + "dev": true, + "license": "MIT" }, "node_modules/check-error": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", "dev": true, + "license": "MIT", "dependencies": { "get-func-name": "^2.0.2" }, @@ -12581,6 +14283,7 @@ "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.1.2.tgz", "integrity": "sha512-IkxPpb5rS/d1IiLbHMgfPuS0FgiWTtFIm/Nj+2woXDLTZ7fOT2eqzgYbdMlLweqlHbsZjxEChoVK+7iph7jyQg==", "dev": true, + "license": "MIT", "dependencies": { "cheerio-select": "^2.1.0", "dom-serializer": "^2.0.0", @@ -12606,6 +14309,7 @@ "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", "css-select": "^5.1.0", @@ -12623,6 +14327,7 @@ "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.1.0", @@ -12639,6 +14344,7 @@ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "dev": true, + "license": "MIT", "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.2", @@ -12653,6 +14359,7 @@ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "domelementtype": "^2.3.0" }, @@ -12668,6 +14375,7 @@ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", @@ -12682,6 +14390,7 @@ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "dev": true, + "license": "MIT", "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.2", @@ -12696,6 +14405,7 @@ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "domelementtype": "^2.3.0" }, @@ -12711,6 +14421,7 @@ "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", @@ -12732,6 +14443,7 @@ "url": "https://github.com/sponsors/fb55" } ], + "license": "MIT", "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", @@ -12744,6 +14456,7 @@ "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.12" }, @@ -12756,6 +14469,7 @@ "resolved": "https://registry.npmjs.org/undici/-/undici-7.16.0.tgz", "integrity": "sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g==", "dev": true, + "license": "MIT", "engines": { "node": ">=20.18.1" } @@ -12764,6 +14478,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "license": "MIT", "dependencies": { "readdirp": "^4.0.1" }, @@ -12777,13 +14492,15 @@ "node_modules/chownr": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "license": "ISC" }, "node_modules/chrome-trace-event": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", "devOptional": true, + "license": "MIT", "engines": { "node": ">=6.0" } @@ -12799,6 +14516,7 @@ "url": "https://github.com/sponsors/sibiraj-s" } ], + "license": "MIT", "engines": { "node": ">=8" } @@ -12807,6 +14525,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.7.tgz", "integrity": "sha512-Mz9QMT5fJe7bKI7MH31UilT5cEK5EHHRCccw/YRFsRY47AuNgaV6HY3rscp0/I4Q+tTW/5zoqpSeRRI54TkDWA==", + "license": "MIT", "dependencies": { "inherits": "^2.0.4", "safe-buffer": "^5.2.1", @@ -12816,35 +14535,18 @@ "node": ">= 0.10" } }, - "node_modules/cipher-base/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/cjs-module-lexer": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/clean": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/clean/-/clean-4.0.2.tgz", "integrity": "sha512-2LGVh4dNtI16L4UzqDHO6Hbl74YjG1vWvEUU78dgLO4kuyqJZFMNMPBx+EGtYKTFb14e24p+gWXgkabqxc1EUw==", + "license": "MIT", "dependencies": { "async": "^0.9.0", "minimist": "^1.1.0", @@ -12857,6 +14559,7 @@ "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", "dev": true, + "license": "MIT", "dependencies": { "source-map": "~0.6.0" }, @@ -12864,11 +14567,18 @@ "node": ">= 10.0" } }, + "node_modules/clean/node_modules/async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha512-l6ToIJIotphWahxxHyzK9bnLR6kM4jJIIgLShZeqLY7iboHoGkdgFl7W2/Ivi4SkMJYGKqW8vSuk0uKUj6qsSw==", + "license": "MIT" + }, "node_modules/cli-width": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", "dev": true, + "license": "ISC", "engines": { "node": ">= 12" } @@ -12878,6 +14588,7 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -12887,20 +14598,35 @@ "node": ">=12" } }, - "node_modules/cliui/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/cliui/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, "node_modules/cliui/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -12910,11 +14636,30 @@ "node": ">=8" } }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/clone": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=0.8" @@ -12925,6 +14670,7 @@ "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, + "license": "MIT", "dependencies": { "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", @@ -12934,22 +14680,11 @@ "node": ">=6" } }, - "node_modules/clone-deep/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/clone-response": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "license": "MIT", "dependencies": { "mimic-response": "^1.0.0" }, @@ -12957,19 +14692,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/clone-response/node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "engines": { - "node": ">=4" - } - }, "node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true, + "license": "MIT", "engines": { "iojs": ">= 1.0.0", "node": ">= 0.12.0" @@ -12979,20 +14707,23 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/collect-v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", - "dev": true + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", + "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", + "dev": true, + "license": "MIT" }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -13003,17 +14734,20 @@ "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" }, "node_modules/colorette": { "version": "2.0.20", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "license": "MIT" }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", "dependencies": { "delayed-stream": "~1.0.0" }, @@ -13025,13 +14759,15 @@ "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "devOptional": true + "devOptional": true, + "license": "MIT" }, "node_modules/compare-func": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", "dev": true, + "license": "MIT", "dependencies": { "array-ify": "^1.0.0", "dot-prop": "^5.1.0" @@ -13041,6 +14777,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-6.0.2.tgz", "integrity": "sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==", + "license": "MIT", "dependencies": { "crc-32": "^1.2.0", "crc32-stream": "^6.0.0", @@ -13052,75 +14789,11 @@ "node": ">= 14" } }, - "node_modules/compress-commons/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/compress-commons/node_modules/readable-stream": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", - "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/compress-commons/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/compress-commons/node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, "node_modules/compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "license": "MIT", "dependencies": { "mime-db": ">= 1.43.0 < 2" }, @@ -13132,6 +14805,7 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", + "license": "MIT", "dependencies": { "bytes": "3.1.2", "compressible": "~2.0.18", @@ -13149,51 +14823,37 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", "dependencies": { "ms": "2.0.0" } }, - "node_modules/compression/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/compression/node_modules/negotiator": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", - "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/compression/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/compression/node_modules/negotiator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" }, "node_modules/connect-history-api-fallback": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "license": "MIT", "engines": { "node": ">=0.8" } @@ -13201,42 +14861,27 @@ "node_modules/console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "license": "ISC" }, "node_modules/content-disposition": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", - "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", - "dependencies": { - "safe-buffer": "5.2.1" - }, + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz", + "integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==", + "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/content-disposition/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/content-type": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -13246,6 +14891,7 @@ "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz", "integrity": "sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==", "dev": true, + "license": "ISC", "dependencies": { "compare-func": "^2.0.0" }, @@ -13258,6 +14904,7 @@ "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-8.0.0.tgz", "integrity": "sha512-eOvlTO6OcySPyyyk8pKz2dP4jjElYunj9hn9/s0OB+gapTO8zwS9UQWrZ1pmF2hFs3vw1xhonOLGcGjy/zgsuA==", "dev": true, + "license": "ISC", "dependencies": { "compare-func": "^2.0.0" }, @@ -13270,6 +14917,7 @@ "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", "integrity": "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==", "dev": true, + "license": "MIT", "dependencies": { "is-text-path": "^2.0.0", "JSONStream": "^1.3.5", @@ -13287,12 +14935,14 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/cookie": { "version": "0.7.2", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -13301,6 +14951,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "license": "MIT", "engines": { "node": ">=6.6.0" } @@ -13309,6 +14960,7 @@ "version": "2.4.1", "resolved": "https://registry.npmjs.org/copyfiles/-/copyfiles-2.4.1.tgz", "integrity": "sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==", + "license": "MIT", "dependencies": { "glob": "^7.0.5", "minimatch": "^3.0.3", @@ -13323,10 +14975,26 @@ "copyup": "copyfiles" } }, + "node_modules/copyfiles/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/copyfiles/node_modules/brace-expansion": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -13336,24 +15004,45 @@ "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^7.0.0" } }, - "node_modules/copyfiles/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/copyfiles/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/copyfiles/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, "engines": { - "node": ">=8" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/copyfiles/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -13361,21 +15050,11 @@ "node": "*" } }, - "node_modules/copyfiles/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/copyfiles/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -13385,10 +15064,28 @@ "node": ">=8" } }, + "node_modules/copyfiles/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/copyfiles/node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "license": "MIT", "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -13406,6 +15103,7 @@ "version": "20.2.9", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "license": "ISC", "engines": { "node": ">=10" } @@ -13413,12 +15111,14 @@ "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" }, "node_modules/cors": { "version": "2.8.5", "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "license": "MIT", "dependencies": { "object-assign": "^4", "vary": "^1" @@ -13432,6 +15132,8 @@ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", "dev": true, + "license": "MIT", + "peer": true, "dependencies": { "env-paths": "^2.2.1", "import-fresh": "^3.3.0", @@ -13454,12 +15156,13 @@ } }, "node_modules/cosmiconfig-typescript-loader": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-6.1.0.tgz", - "integrity": "sha512-tJ1w35ZRUiM5FeTzT7DtYWAFFv37ZLqSRkGi2oeCK1gPhvaWjkAtfXvLmvE1pRfxxp9aQo6ba/Pvg1dKj05D4g==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-6.2.0.tgz", + "integrity": "sha512-GEN39v7TgdxgIoNcdkRE3uiAzQt3UXLyHbRHD6YoL048XAeOomyxaP+Hh/+2C6C2wYjxJ2onhJcsQp+L4YEkVQ==", "dev": true, + "license": "MIT", "dependencies": { - "jiti": "^2.4.1" + "jiti": "^2.6.1" }, "engines": { "node": ">=v18" @@ -13474,6 +15177,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "license": "Apache-2.0", "bin": { "crc32": "bin/crc32.njs" }, @@ -13485,6 +15189,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-6.0.0.tgz", "integrity": "sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==", + "license": "MIT", "dependencies": { "crc-32": "^1.2.0", "readable-stream": "^4.0.0" @@ -13493,75 +15198,11 @@ "node": ">= 14" } }, - "node_modules/crc32-stream/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/crc32-stream/node_modules/readable-stream": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", - "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/crc32-stream/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/crc32-stream/node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, "node_modules/create-ecdh": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "license": "MIT", "dependencies": { "bn.js": "^4.1.0", "elliptic": "^6.5.3" @@ -13570,12 +15211,14 @@ "node_modules/create-ecdh/node_modules/bn.js": { "version": "4.12.2", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", - "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==" + "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", + "license": "MIT" }, "node_modules/create-hash": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "license": "MIT", "dependencies": { "cipher-base": "^1.0.1", "inherits": "^2.0.1", @@ -13588,6 +15231,7 @@ "version": "1.1.7", "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "license": "MIT", "dependencies": { "cipher-base": "^1.0.3", "create-hash": "^1.1.0", @@ -13602,6 +15246,7 @@ "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "chalk": "^4.0.0", @@ -13618,11 +15263,28 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/create-jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/create-jest/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -13638,13 +15300,15 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/create-wdio": { "version": "9.18.2", "resolved": "https://registry.npmjs.org/create-wdio/-/create-wdio-9.18.2.tgz", "integrity": "sha512-atf81YJfyTNAJXsNu3qhpqF4OO43tHGTpr88duAc1Hk4a0uXJAPUYLnYxshOuMnfmeAxlWD+NqGU7orRiXEuJg==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^5.3.0", "commander": "^14.0.0", @@ -13668,25 +15332,71 @@ } }, "node_modules/create-wdio/node_modules/commander": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.1.tgz", - "integrity": "sha512-2JkV3gUZUVrbNA+1sjBOYLsMZ5cEEl8GTFP2a4AVz5hvasAMCQ1D2l2le/cX+pV4N6ZU17zjUahLpIXRrnWL8A==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.2.tgz", + "integrity": "sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=20" } }, + "node_modules/create-wdio/node_modules/execa": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.0.tgz", + "integrity": "sha512-jpWzZ1ZhwUmeWRhS7Qv3mhpOhLfwI+uAX4e5fOcXqwMR7EcJ0pj2kV1CVzHVMX/LphnKWD3LObjZCoJ71lKpHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/merge-streams": "^4.0.0", + "cross-spawn": "^7.0.6", + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^8.0.1", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^6.0.0", + "pretty-ms": "^9.2.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.1.1" + }, + "engines": { + "node": "^18.19.0 || >=20.5.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, "node_modules/create-wdio/node_modules/find-up": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/create-wdio/node_modules/get-stream": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", + "dev": true, + "license": "MIT", "dependencies": { - "locate-path": "^7.1.0", - "path-exists": "^5.0.0" + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -13697,6 +15407,7 @@ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-8.1.0.tgz", "integrity": "sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^10.0.1" }, @@ -13704,11 +15415,48 @@ "node": "^18.17.0 || >=20.5.0" } }, + "node_modules/create-wdio/node_modules/human-signals": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz", + "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/create-wdio/node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/create-wdio/node_modules/is-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/create-wdio/node_modules/json-parse-even-better-errors": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", "dev": true, + "license": "MIT", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -13718,15 +15466,24 @@ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, + "node_modules/create-wdio/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, "node_modules/create-wdio/node_modules/normalize-package-data": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-7.0.1.tgz", "integrity": "sha512-linxNAT6M0ebEYZOx2tO6vBEFsVgnPpv+AVjk0wJHfaUIbq31Jm3T6vvZaarnOeWDh8ShnwXuaAyM7WT3RzErA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^8.0.0", "semver": "^7.3.5", @@ -13736,11 +15493,29 @@ "node": "^18.17.0 || >=20.5.0" } }, + "node_modules/create-wdio/node_modules/npm-run-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", + "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0", + "unicorn-magic": "^0.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/create-wdio/node_modules/parse-json": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.1.tgz", "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.21.4", "error-ex": "^1.3.2", @@ -13760,6 +15535,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=14.16" }, @@ -13767,11 +15543,25 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/create-wdio/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/create-wdio/node_modules/read-pkg": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-8.1.0.tgz", "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/normalize-package-data": "^2.4.1", "normalize-package-data": "^6.0.0", @@ -13790,6 +15580,7 @@ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-10.1.0.tgz", "integrity": "sha512-aNtBq4jR8NawpKJQldrQcSW9y/d+KWH4v24HWkHljOZ7H0av+YTGANBzRh9A5pw7v/bLVsLVPpOhJ7gHNVy8lA==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^6.3.0", "read-pkg": "^8.1.0", @@ -13807,6 +15598,7 @@ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^10.0.1" }, @@ -13819,6 +15611,7 @@ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^7.0.0", "semver": "^7.3.5", @@ -13828,11 +15621,38 @@ "node": "^16.14.0 || >=18.0.0" } }, + "node_modules/create-wdio/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/create-wdio/node_modules/strip-final-newline": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", + "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/create-wdio/node_modules/type-fest": { "version": "4.41.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=16" }, @@ -13840,10 +15660,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/create-wdio/node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/cross-env": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "license": "MIT", "dependencies": { "cross-spawn": "^7.0.1" }, @@ -13861,6 +15695,7 @@ "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -13874,6 +15709,7 @@ "version": "3.12.1", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.1.tgz", "integrity": "sha512-r4ESw/IlusD17lgQi1O20Fa3qNnsckR126TdUuBgAu7GBYSIPvdNyONd3Zrxh0xCwA4+6w/TDArBPsMvhur+KQ==", + "license": "MIT", "dependencies": { "browserify-cipher": "^1.0.1", "browserify-sign": "^4.2.3", @@ -13900,6 +15736,7 @@ "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.0.1", @@ -13915,7 +15752,8 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/css-shorthand-properties/-/css-shorthand-properties-1.1.2.tgz", "integrity": "sha512-C2AugXIpRGQTxaCW0N7n5jD/p5irUmCrwl03TrnMFBHDbdq44CFWR2zO7rK9xPN4Eo3pUxC4vQzQgbIpzrD1PQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/css-value": { "version": "0.0.1", @@ -13928,6 +15766,7 @@ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">= 6" }, @@ -13940,6 +15779,7 @@ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.6.0.tgz", "integrity": "sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==", "dev": true, + "license": "MIT", "dependencies": { "@asamuzakjp/css-color": "^3.2.0", "rrweb-cssom": "^0.8.0" @@ -13952,13 +15792,15 @@ "version": "0.8.0", "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/dargs": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/dargs/-/dargs-8.1.0.tgz", "integrity": "sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -13971,6 +15813,7 @@ "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 12" } @@ -13980,6 +15823,7 @@ "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", "dev": true, + "license": "MIT", "dependencies": { "whatwg-mimetype": "^4.0.0", "whatwg-url": "^14.0.0" @@ -13993,6 +15837,7 @@ "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", @@ -14010,6 +15855,7 @@ "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", @@ -14027,6 +15873,7 @@ "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -14044,6 +15891,7 @@ "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", "dev": true, + "license": "MIT", "engines": { "node": "*" } @@ -14052,6 +15900,7 @@ "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", "dependencies": { "ms": "^2.1.3" }, @@ -14070,34 +15919,56 @@ "integrity": "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==", "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dev": true, + "license": "MIT", "engines": { "node": "*" } }, "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/decimal.js": { "version": "10.6.0", "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/decompress-response": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", - "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "license": "MIT", "dependencies": { - "mimic-response": "^2.0.0" + "mimic-response": "^3.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/dedent": { @@ -14105,6 +15976,7 @@ "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.0.tgz", "integrity": "sha512-HGFtf8yhuhGhqO07SV79tRp+br4MnbdjeVxotpn1QBl30pcLLCQjX5b2295ll0fv8RKDKsmWYrl05usHM9CewQ==", "dev": true, + "license": "MIT", "peerDependencies": { "babel-plugin-macros": "^3.1.0" }, @@ -14119,6 +15991,7 @@ "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", "dev": true, + "license": "MIT", "dependencies": { "type-detect": "^4.0.0" }, @@ -14131,6 +16004,7 @@ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==", "dev": true, + "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -14140,12 +16014,14 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/deepmerge": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -14155,14 +16031,16 @@ "resolved": "https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-7.1.5.tgz", "integrity": "sha512-HOJkrhaYsweh+W+e74Yn7YStZOilkoPb6fycpwNLKzSPtruFs48nYis0zy5yJz1+ktUhHxoRDJ27RQAWLIJVJw==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=16.0.0" } }, "node_modules/default-browser": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", - "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.4.0.tgz", + "integrity": "sha512-XDuvSq38Hr1MdN47EDvYtx3U0MTqpCEn+F6ft8z2vYDzMrvQhVp0ui9oQdqW3MvK3vqUETglt1tVGgjLuJ5izg==", + "license": "MIT", "dependencies": { "bundle-name": "^4.1.0", "default-browser-id": "^5.0.0" @@ -14175,9 +16053,10 @@ } }, "node_modules/default-browser-id": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", - "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", + "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", + "license": "MIT", "engines": { "node": ">=18" }, @@ -14190,6 +16069,7 @@ "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "clone": "^1.0.2" @@ -14202,6 +16082,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "license": "MIT", "engines": { "node": ">=10" } @@ -14210,6 +16091,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -14226,6 +16108,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -14238,6 +16121,7 @@ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, + "license": "MIT", "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", @@ -14255,6 +16139,7 @@ "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", "dev": true, + "license": "MIT", "dependencies": { "ast-types": "^0.13.4", "escodegen": "^2.1.0", @@ -14268,6 +16153,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", "engines": { "node": ">=0.4.0" } @@ -14275,12 +16161,14 @@ "node_modules/delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "license": "MIT" }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -14289,6 +16177,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", + "license": "MIT", "dependencies": { "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0" @@ -14298,6 +16187,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", "engines": { "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" @@ -14307,6 +16197,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "license": "Apache-2.0", "bin": { "detect-libc": "bin/detect-libc.js" }, @@ -14319,6 +16210,7 @@ "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -14326,23 +16218,25 @@ "node_modules/detect-node": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "license": "MIT" }, "node_modules/dezalgo": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", "dev": true, + "license": "ISC", "dependencies": { "asap": "^2.0.0", "wrappy": "1" } }, "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz", + "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } @@ -14352,6 +16246,7 @@ "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true, + "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } @@ -14360,6 +16255,7 @@ "version": "5.0.3", "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "license": "MIT", "dependencies": { "bn.js": "^4.1.0", "miller-rabin": "^4.0.0", @@ -14369,12 +16265,14 @@ "node_modules/diffie-hellman/node_modules/bn.js": { "version": "4.12.2", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", - "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==" + "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", + "license": "MIT" }, "node_modules/dns-packet": { "version": "5.6.1", "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "license": "MIT", "dependencies": { "@leichtgewicht/ip-codec": "^2.0.1" }, @@ -14387,6 +16285,7 @@ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -14399,6 +16298,7 @@ "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", "dev": true, + "license": "MIT", "dependencies": { "utila": "~0.4" } @@ -14408,6 +16308,7 @@ "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", "dev": true, + "license": "MIT", "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.2.0", @@ -14422,6 +16323,7 @@ "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", "dev": true, + "license": "BSD-2-Clause", "funding": { "url": "https://github.com/fb55/entities?sponsor=1" } @@ -14435,13 +16337,15 @@ "type": "github", "url": "https://github.com/sponsors/fb55" } - ] + ], + "license": "BSD-2-Clause" }, "node_modules/domhandler": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "domelementtype": "^2.2.0" }, @@ -14457,6 +16361,7 @@ "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "dom-serializer": "^1.0.1", "domelementtype": "^2.2.0", @@ -14471,6 +16376,7 @@ "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", "dev": true, + "license": "MIT", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -14481,6 +16387,7 @@ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", "dev": true, + "license": "MIT", "dependencies": { "is-obj": "^2.0.0" }, @@ -14493,6 +16400,7 @@ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.3.tgz", "integrity": "sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=12" }, @@ -14504,6 +16412,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", @@ -14518,6 +16427,7 @@ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz", "integrity": "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==", "dev": true, + "license": "MIT", "dependencies": { "end-of-stream": "^1.4.1", "inherits": "^2.0.3", @@ -14530,6 +16440,7 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -14542,13 +16453,15 @@ "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" }, "node_modules/easy-table": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.2.0.tgz", "integrity": "sha512-OFzVOv03YpvtcWGe5AayU5G2hgybsg3iqA6drU8UaoZyB9jLGMTrz9+asnLp/E+6qPh88yEI1gvyZFZ41dmgww==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -14561,6 +16474,7 @@ "resolved": "https://registry.npmjs.org/edge-paths/-/edge-paths-3.0.5.tgz", "integrity": "sha512-sB7vSrDnFa4ezWQk9nZ/n0FdpdUuC6R1EOrlU3DL+bovcNFK28rqu2emmAUjujYEJTWIgQGqgVVWUZXMnc8iWg==", "dev": true, + "license": "MIT", "dependencies": { "@types/which": "^2.0.1", "which": "^2.0.2" @@ -14578,6 +16492,7 @@ "integrity": "sha512-UvFqd/IR81iPyWMcxXbUNi+xKWR7JjfoHjfuwjqsj9UHQKn80RpQmS0jf+U25IPi+gKVPcpOSKm0XkqgGMq4zQ==", "dev": true, "hasInstallScript": true, + "license": "MIT", "dependencies": { "@wdio/logger": "^9.1.3", "@zip.js/zip.js": "^2.7.53", @@ -14601,6 +16516,7 @@ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.1.tgz", "integrity": "sha512-G7Cqgaelq68XHJNGlZ7lrNQyhZGsFqpwtGFexqUv4IQdjKoSYF7ipZ9UuTJZUSQXFj/XaoBLuEVIVqr8EJngEQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -14609,9 +16525,9 @@ } }, "node_modules/edgedriver/node_modules/fast-xml-parser": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.3.0.tgz", - "integrity": "sha512-gkWGshjYcQCF+6qtlrqBqELqNqnt4CxruY6UVAWWnqb3DQ6qaNFEIKqzYep1XzHLM/QtrHVCxyPOtTk4LTQ7Aw==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.3.2.tgz", + "integrity": "sha512-n8v8b6p4Z1sMgqRmqLJm3awW4NX7NkaKPfb3uJIBTSH7Pdvufi3PQ3/lJLQrvxcMYl7JI2jnDO90siPEpD8JBA==", "dev": true, "funding": [ { @@ -14619,6 +16535,7 @@ "url": "https://github.com/sponsors/NaturalIntelligence" } ], + "license": "MIT", "dependencies": { "strnum": "^2.1.0" }, @@ -14631,6 +16548,7 @@ "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", "dev": true, + "license": "ISC", "engines": { "node": ">=16" } @@ -14645,13 +16563,15 @@ "type": "github", "url": "https://github.com/sponsors/NaturalIntelligence" } - ] + ], + "license": "MIT" }, "node_modules/edgedriver/node_modules/which": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^3.1.1" }, @@ -14665,13 +16585,15 @@ "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" }, "node_modules/ejs": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "jake": "^10.8.5" }, @@ -14683,15 +16605,17 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.232", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.232.tgz", - "integrity": "sha512-ENirSe7wf8WzyPCibqKUG1Cg43cPaxH4wRR7AJsX7MCABCHBIOFqvaYODSLKUuZdraxUTHRE/0A2Aq8BYKEHOg==", - "devOptional": true + "version": "1.5.259", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.259.tgz", + "integrity": "sha512-I+oLXgpEJzD6Cwuwt1gYjxsDmu/S/Kd41mmLA3O+/uH2pFRO/DvOjUyGozL8j3KeLV6WyZ7ssPwELMsXCcsJAQ==", + "devOptional": true, + "license": "ISC" }, "node_modules/elliptic": { "version": "6.6.1", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", + "license": "MIT", "dependencies": { "bn.js": "^4.11.9", "brorand": "^1.1.0", @@ -14705,13 +16629,15 @@ "node_modules/elliptic/node_modules/bn.js": { "version": "4.12.2", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", - "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==" + "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", + "license": "MIT" }, "node_modules/emittery": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -14720,15 +16646,17 @@ } }, "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" }, "node_modules/emojis-list": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -14737,6 +16665,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -14745,6 +16674,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/encoding-japanese/-/encoding-japanese-2.2.0.tgz", "integrity": "sha512-EuJWwlHPZ1LbADuKTClvHtwbaFn4rOD+dRAbWysqEOXRc2Uui0hJInNJrsdH0c+OhJA4nrCBdSkW4DD5YxAo6A==", + "license": "MIT", "engines": { "node": ">=8.10.0" } @@ -14754,6 +16684,7 @@ "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz", "integrity": "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==", "dev": true, + "license": "MIT", "dependencies": { "iconv-lite": "^0.6.3", "whatwg-encoding": "^3.1.1" @@ -14766,6 +16697,7 @@ "version": "1.4.5", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "license": "MIT", "dependencies": { "once": "^1.4.0" } @@ -14784,6 +16716,7 @@ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz", "integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==", "devOptional": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -14796,6 +16729,7 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", "engines": { "node": ">=0.12" }, @@ -14808,15 +16742,17 @@ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/envinfo": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.17.0.tgz", - "integrity": "sha512-GpfViocsFM7viwClFgxK26OtjMlKN67GCR5v6ASFkotxtpBWd9d+vNy+AH7F2E1TUkMDZ8P/dDPZX71/NG8xnQ==", + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.20.0.tgz", + "integrity": "sha512-+zUomDcLXsVkQ37vUqWBvQwLaLlj8eZPSi61llaEFAVBY5mhcXdaSw1pSJVl4yTYD5g/gEfpNl28YYk4IPvrrg==", "dev": true, + "license": "MIT", "bin": { "envinfo": "dist/cli.js" }, @@ -14829,6 +16765,7 @@ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", "dev": true, + "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } @@ -14838,6 +16775,7 @@ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", "dev": true, + "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.2", "arraybuffer.prototype.slice": "^1.0.4", @@ -14905,6 +16843,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -14913,6 +16852,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -14921,12 +16861,14 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", - "devOptional": true + "devOptional": true, + "license": "MIT" }, "node_modules/es-object-atoms": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", "dependencies": { "es-errors": "^1.3.0" }, @@ -14938,6 +16880,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", @@ -14953,6 +16896,7 @@ "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", "dev": true, + "license": "MIT", "dependencies": { "hasown": "^2.0.2" }, @@ -14965,6 +16909,7 @@ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", "dev": true, + "license": "MIT", "dependencies": { "is-callable": "^1.2.7", "is-date-object": "^1.0.5", @@ -14978,11 +16923,12 @@ } }, "node_modules/esbuild": { - "version": "0.25.10", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.10.tgz", - "integrity": "sha512-9RiGKvCwaqxO2owP61uQ4BgNborAQskMR6QusfWzQqv7AZOg5oGehdY2pRJMTKuwxd1IDBP4rSbI5lHzU7SMsQ==", + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -14990,38 +16936,39 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.10", - "@esbuild/android-arm": "0.25.10", - "@esbuild/android-arm64": "0.25.10", - "@esbuild/android-x64": "0.25.10", - "@esbuild/darwin-arm64": "0.25.10", - "@esbuild/darwin-x64": "0.25.10", - "@esbuild/freebsd-arm64": "0.25.10", - "@esbuild/freebsd-x64": "0.25.10", - "@esbuild/linux-arm": "0.25.10", - "@esbuild/linux-arm64": "0.25.10", - "@esbuild/linux-ia32": "0.25.10", - "@esbuild/linux-loong64": "0.25.10", - "@esbuild/linux-mips64el": "0.25.10", - "@esbuild/linux-ppc64": "0.25.10", - "@esbuild/linux-riscv64": "0.25.10", - "@esbuild/linux-s390x": "0.25.10", - "@esbuild/linux-x64": "0.25.10", - "@esbuild/netbsd-arm64": "0.25.10", - "@esbuild/netbsd-x64": "0.25.10", - "@esbuild/openbsd-arm64": "0.25.10", - "@esbuild/openbsd-x64": "0.25.10", - "@esbuild/openharmony-arm64": "0.25.10", - "@esbuild/sunos-x64": "0.25.10", - "@esbuild/win32-arm64": "0.25.10", - "@esbuild/win32-ia32": "0.25.10", - "@esbuild/win32-x64": "0.25.10" + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" } }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", "engines": { "node": ">=6" } @@ -15029,12 +16976,14 @@ "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" }, "node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -15047,6 +16996,7 @@ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esprima": "^4.0.1", "estraverse": "^5.2.0", @@ -15069,6 +17019,8 @@ "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, + "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -15124,6 +17076,7 @@ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^3.2.7", "is-core-module": "^2.13.0", @@ -15135,6 +17088,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } @@ -15144,6 +17098,7 @@ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^3.2.7" }, @@ -15161,6 +17116,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } @@ -15170,6 +17126,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", "dev": true, + "license": "MIT", "dependencies": { "@rtsao/scc": "^1.1.0", "array-includes": "^3.1.9", @@ -15203,6 +17160,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -15213,6 +17171,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } @@ -15222,6 +17181,7 @@ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -15229,11 +17189,25 @@ "node": ">=0.10.0" } }, + "node_modules/eslint-plugin-import/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, "node_modules/eslint-plugin-import/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -15241,20 +17215,35 @@ "node": "*" } }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/eslint-plugin-import/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, - "bin": { - "semver": "bin/semver.js" + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-import/node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" } }, "node_modules/eslint-plugin-unused-imports": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-4.2.0.tgz", - "integrity": "sha512-hLbJ2/wnjKq4kGA9AUaExVFIbNzyxYdVo49QZmKCnhk5pc9wcYRbfgLHvWJ8tnsdcseGhoUAddm9gn/lt+d74w==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-4.3.0.tgz", + "integrity": "sha512-ZFBmXMGBYfHttdRtOG9nFFpmUvMtbHSjsKrS20vdWdbfiVYsO3yA2SGYy9i9XmZJDfMGBflZGBCm70SEnFQtOA==", "dev": true, + "license": "MIT", "peerDependencies": { "@typescript-eslint/eslint-plugin": "^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0", "eslint": "^9.0.0 || ^8.0.0" @@ -15270,6 +17259,7 @@ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -15286,6 +17276,7 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -15298,6 +17289,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -15309,11 +17301,28 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/eslint/node_modules/brace-expansion": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -15324,6 +17333,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -15340,6 +17350,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -15356,6 +17367,7 @@ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -15364,13 +17376,15 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/eslint/node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, @@ -15386,6 +17400,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -15393,26 +17408,12 @@ "node": "*" } }, - "node_modules/eslint/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/eslint/node_modules/p-locate": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -15428,27 +17429,17 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/eslint/node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/espree": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", @@ -15465,6 +17456,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -15478,6 +17470,7 @@ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, @@ -15490,6 +17483,7 @@ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "devOptional": true, + "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -15502,6 +17496,7 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "devOptional": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -15511,6 +17506,7 @@ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } @@ -15519,6 +17515,7 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -15527,6 +17524,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "license": "MIT", "engines": { "node": ">=6" } @@ -15534,12 +17532,14 @@ "node_modules/eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "license": "MIT" }, "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "license": "MIT", "engines": { "node": ">=0.8.x" } @@ -15548,6 +17548,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz", "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==", + "license": "Apache-2.0", "dependencies": { "bare-events": "^2.7.0" } @@ -15556,6 +17557,7 @@ "version": "3.0.7", "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz", "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==", + "license": "MIT", "dependencies": { "eventsource-parser": "^3.0.1" }, @@ -15567,6 +17569,7 @@ "version": "3.0.6", "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.6.tgz", "integrity": "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==", + "license": "MIT", "engines": { "node": ">=18.0.0" } @@ -15575,60 +17578,55 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "license": "MIT", "dependencies": { "md5.js": "^1.3.4", "safe-buffer": "^5.1.1" } }, "node_modules/execa": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.0.tgz", - "integrity": "sha512-jpWzZ1ZhwUmeWRhS7Qv3mhpOhLfwI+uAX4e5fOcXqwMR7EcJ0pj2kV1CVzHVMX/LphnKWD3LObjZCoJ71lKpHw==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, + "license": "MIT", "dependencies": { - "@sindresorhus/merge-streams": "^4.0.0", - "cross-spawn": "^7.0.6", - "figures": "^6.1.0", - "get-stream": "^9.0.0", - "human-signals": "^8.0.1", - "is-plain-obj": "^4.1.0", - "is-stream": "^4.0.1", - "npm-run-path": "^6.0.0", - "pretty-ms": "^9.2.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^4.0.0", - "yoctocolors": "^2.1.1" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" }, "engines": { - "node": "^18.19.0 || >=20.5.0" + "node": ">=10" }, "funding": { "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/execa/node_modules/is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "node_modules/execa/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/execa/node_modules/is-stream": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", - "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", + "node_modules/execa/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "license": "ISC" }, "node_modules/exit": { "version": "0.1.2", @@ -15644,6 +17642,7 @@ "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-4.0.0.tgz", "integrity": "sha512-Fqs7ChZm72y40wKjOFXBKg7nJZvQJmewP5/7LtePDdnah/+FH9Hp5sgMujSCMPXlxOAW2//1jrW9pnsY7o20vQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -15655,6 +17654,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "license": "(MIT OR WTFPL)", "engines": { "node": ">=6" } @@ -15664,6 +17664,7 @@ "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", "dev": true, + "license": "MIT", "dependencies": { "@jest/expect-utils": "^29.7.0", "jest-get-type": "^29.6.3", @@ -15680,6 +17681,8 @@ "resolved": "https://registry.npmjs.org/expect-webdriverio/-/expect-webdriverio-5.4.3.tgz", "integrity": "sha512-/XxRRR90gNSuNf++w1jOQjhC5LE9Ixf/iAQctVb/miEI3dwzPZTuG27/omoh5REfSLDoPXofM84vAH/ULtz35g==", "dev": true, + "license": "MIT", + "peer": true, "dependencies": { "@vitest/snapshot": "^3.2.4", "deep-eql": "^5.0.2", @@ -15711,6 +17714,7 @@ "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.2.0.tgz", "integrity": "sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==", "dev": true, + "license": "MIT", "dependencies": { "@jest/get-type": "30.1.0" }, @@ -15723,6 +17727,7 @@ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", "dev": true, + "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.34.0" }, @@ -15735,6 +17740,7 @@ "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", "dev": true, + "license": "MIT", "dependencies": { "@jest/pattern": "30.0.1", "@jest/schemas": "30.0.5", @@ -15752,13 +17758,15 @@ "version": "0.34.41", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/expect-webdriverio/node_modules/@vitest/pretty-format": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz", "integrity": "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==", "dev": true, + "license": "MIT", "dependencies": { "tinyrainbow": "^2.0.0" }, @@ -15771,6 +17779,7 @@ "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz", "integrity": "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==", "dev": true, + "license": "MIT", "dependencies": { "@vitest/pretty-format": "3.2.4", "magic-string": "^0.30.17", @@ -15785,6 +17794,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -15796,6 +17806,22 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/expect-webdriverio/node_modules/chalk/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/expect-webdriverio/node_modules/ci-info": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", @@ -15807,6 +17833,7 @@ "url": "https://github.com/sponsors/sibiraj-s" } ], + "license": "MIT", "engines": { "node": ">=8" } @@ -15816,6 +17843,7 @@ "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -15825,6 +17853,7 @@ "resolved": "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz", "integrity": "sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==", "dev": true, + "license": "MIT", "dependencies": { "@jest/expect-utils": "30.2.0", "@jest/get-type": "30.1.0", @@ -15842,6 +17871,7 @@ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz", "integrity": "sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==", "dev": true, + "license": "MIT", "dependencies": { "@jest/diff-sequences": "30.0.1", "@jest/get-type": "30.1.0", @@ -15857,6 +17887,7 @@ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz", "integrity": "sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==", "dev": true, + "license": "MIT", "dependencies": { "@jest/get-type": "30.1.0", "chalk": "^4.1.2", @@ -15872,6 +17903,7 @@ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.27.1", "@jest/types": "30.2.0", @@ -15892,6 +17924,7 @@ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "30.2.0", "@types/node": "*", @@ -15906,6 +17939,7 @@ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "30.2.0", "@types/node": "*", @@ -15922,25 +17956,15 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "dev": true - }, - "node_modules/expect-webdriverio/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } + "license": "MIT" }, "node_modules/expect-webdriverio/node_modules/pretty-format": { "version": "30.2.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", "dev": true, + "license": "MIT", "dependencies": { "@jest/schemas": "30.0.5", "ansi-styles": "^5.2.0", @@ -15950,23 +17974,12 @@ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/expect-webdriverio/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/expect-webdriverio/node_modules/tinyrainbow": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.0.0" } @@ -15975,6 +17988,8 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", + "license": "MIT", + "peer": true, "dependencies": { "accepts": "^2.0.0", "body-parser": "^2.2.0", @@ -16016,6 +18031,7 @@ "version": "7.5.1", "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-7.5.1.tgz", "integrity": "sha512-7iN8iPMDzOMHPUYllBEsQdWVB6fPDMPqwjBaFrgr4Jgr/+okjvzAy+UHlYYL/Vs0OsOrMkwS6PJDkFlJwoxUnw==", + "license": "MIT", "engines": { "node": ">= 16" }, @@ -16026,22 +18042,12 @@ "express": ">= 4.11" } }, - "node_modules/express/node_modules/mime-types": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", - "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", - "dependencies": { - "mime-db": "^1.54.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/ext-list": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", "dev": true, + "license": "MIT", "dependencies": { "mime-db": "^1.28.0" }, @@ -16054,6 +18060,7 @@ "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "debug": "^4.1.1", "get-stream": "^5.1.0", @@ -16069,35 +18076,23 @@ "@types/yauzl": "^2.9.1" } }, - "node_modules/extract-zip/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" }, "node_modules/fast-fifo": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", - "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "license": "MIT" }, "node_modules/fast-glob": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -16113,6 +18108,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -16123,19 +18119,23 @@ "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-redact": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.5.0.tgz", "integrity": "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -16144,7 +18144,8 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-uri": { "version": "3.1.0", @@ -16159,7 +18160,8 @@ "type": "opencollective", "url": "https://opencollective.com/fastify" } - ] + ], + "license": "BSD-3-Clause" }, "node_modules/fast-xml-parser": { "version": "4.4.1", @@ -16175,6 +18177,7 @@ "url": "https://paypal.me/naturalintelligence" } ], + "license": "MIT", "dependencies": { "strnum": "^1.0.5" }, @@ -16186,6 +18189,7 @@ "version": "1.0.16", "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "license": "MIT", "engines": { "node": ">= 4.9.1" } @@ -16194,6 +18198,7 @@ "version": "1.19.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "license": "ISC", "dependencies": { "reusify": "^1.0.4" } @@ -16202,6 +18207,7 @@ "version": "0.11.4", "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "license": "Apache-2.0", "dependencies": { "websocket-driver": ">=0.5.1" }, @@ -16214,6 +18220,7 @@ "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "bser": "2.1.1" } @@ -16223,10 +18230,28 @@ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", "dev": true, + "license": "MIT", "dependencies": { "pend": "~1.2.0" } }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, "node_modules/fetch-blob": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", @@ -16242,6 +18267,7 @@ "url": "https://paypal.me/jimmywarting" } ], + "license": "MIT", "dependencies": { "node-domexception": "^1.0.0", "web-streams-polyfill": "^3.0.3" @@ -16255,6 +18281,7 @@ "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", "dev": true, + "license": "MIT", "dependencies": { "is-unicode-supported": "^2.0.0" }, @@ -16265,11 +18292,25 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/figures/node_modules/is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, + "license": "MIT", "dependencies": { "flat-cache": "^3.0.4" }, @@ -16282,6 +18323,7 @@ "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "dev": true, + "license": "Apache-2.0", "dependencies": { "minimatch": "^5.0.1" } @@ -16291,6 +18333,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -16302,6 +18345,7 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -16313,6 +18357,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", + "license": "MIT", "dependencies": { "debug": "^4.4.0", "encodeurl": "^2.0.0", @@ -16330,6 +18375,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz", "integrity": "sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^7.2.0", "path-exists": "^5.0.0", @@ -16347,6 +18393,7 @@ "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, + "license": "BSD-3-Clause", "bin": { "flat": "cli.js" } @@ -16356,6 +18403,7 @@ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, + "license": "MIT", "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.3", @@ -16369,7 +18417,8 @@ "version": "3.3.3", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/follow-redirects": { "version": "1.15.11", @@ -16381,6 +18430,7 @@ "url": "https://github.com/sponsors/RubenVerborgh" } ], + "license": "MIT", "engines": { "node": ">=4.0" }, @@ -16394,6 +18444,7 @@ "version": "0.3.5", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "license": "MIT", "dependencies": { "is-callable": "^1.2.7" }, @@ -16408,6 +18459,7 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "license": "ISC", "dependencies": { "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" @@ -16420,9 +18472,10 @@ } }, "node_modules/form-data": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", - "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -16434,11 +18487,33 @@ "node": ">= 6" } }, + "node_modules/form-data/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/form-data/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/formdata-polyfill": { "version": "4.0.10", "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", "dev": true, + "license": "MIT", "dependencies": { "fetch-blob": "^3.1.2" }, @@ -16450,6 +18525,7 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -16458,6 +18534,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -16465,13 +18542,15 @@ "node_modules/fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "license": "MIT" }, "node_modules/fs-jetpack": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/fs-jetpack/-/fs-jetpack-0.12.0.tgz", "integrity": "sha512-Xhuoorec62B9LwumWmlcPD9/pussEmpHa4Udyhuu2w0fLZ2sI8AJQ2ZDpkkMpcvDbybOiahZaCmGwAl7yPvbTg==", "dev": true, + "license": "MIT", "dependencies": { "minimatch": "^3.0.2", "mkdirp": "^0.5.1", @@ -16484,16 +18563,40 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, + "node_modules/fs-jetpack/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/fs-jetpack/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -16501,12 +18604,26 @@ "node": "*" } }, + "node_modules/fs-jetpack/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, "node_modules/fs-jetpack/node_modules/rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -16517,13 +18634,15 @@ "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -16536,6 +18655,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -16545,6 +18665,7 @@ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", @@ -16565,6 +18686,7 @@ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -16573,6 +18695,7 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-7.1.0.tgz", "integrity": "sha512-trLf4SzuuUxfusZADLINj+dE8clK1frKdmqiJNb1Es75fmI5oY6X2mxLVUciLLjxqw/xr72Dhy+lER6dGd02FQ==", + "license": "Apache-2.0", "engines": { "node": ">=10" } @@ -16582,6 +18705,7 @@ "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", "deprecated": "This package is no longer supported.", + "license": "ISC", "dependencies": { "aproba": "^1.0.3", "console-control-strings": "^1.0.0", @@ -16597,6 +18721,19 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gauge/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "license": "MIT", + "dependencies": { + "number-is-nan": "^1.0.0" + }, "engines": { "node": ">=0.10.0" } @@ -16604,12 +18741,28 @@ "node_modules/gauge/node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/gauge/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "license": "MIT", + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/gauge/node_modules/strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "license": "MIT", "dependencies": { "ansi-regex": "^2.0.0" }, @@ -16623,6 +18776,7 @@ "integrity": "sha512-vn7TtQ3b9VMJtVXsyWtQQl1fyBVFhQy7UvJF96kPuuJ0or5THH496AD3eUyaDD11+EqCxH9t6V+EP9soZQk4YQ==", "dev": true, "hasInstallScript": true, + "license": "MIT", "dependencies": { "@wdio/logger": "^9.1.3", "@zip.js/zip.js": "^2.7.53", @@ -16645,6 +18799,7 @@ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.1.tgz", "integrity": "sha512-G7Cqgaelq68XHJNGlZ7lrNQyhZGsFqpwtGFexqUv4IQdjKoSYF7ipZ9UuTJZUSQXFj/XaoBLuEVIVqr8EJngEQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -16657,6 +18812,7 @@ "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", "dev": true, + "license": "ISC", "engines": { "node": ">=16" } @@ -16666,6 +18822,7 @@ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.1.tgz", "integrity": "sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg==", "dev": true, + "license": "MIT", "dependencies": { "pump": "^3.0.0", "tar-stream": "^3.1.5" @@ -16675,22 +18832,12 @@ "bare-path": "^3.0.0" } }, - "node_modules/geckodriver/node_modules/tar-stream": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", - "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", - "dev": true, - "dependencies": { - "b4a": "^1.6.4", - "fast-fifo": "^1.2.0", - "streamx": "^2.15.0" - } - }, "node_modules/geckodriver/node_modules/which": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^3.1.1" }, @@ -16706,6 +18853,7 @@ "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -16715,6 +18863,7 @@ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -16723,6 +18872,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } @@ -16732,6 +18882,7 @@ "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true, + "license": "MIT", "engines": { "node": "*" } @@ -16740,6 +18891,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", @@ -16764,6 +18916,7 @@ "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.0.0" } @@ -16773,6 +18926,7 @@ "resolved": "https://registry.npmjs.org/get-port/-/get-port-7.1.0.tgz", "integrity": "sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw==", "dev": true, + "license": "MIT", "engines": { "node": ">=16" }, @@ -16784,6 +18938,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" @@ -16793,28 +18948,15 @@ } }, "node_modules/get-stream": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", - "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", - "dev": true, + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "license": "MIT", "dependencies": { - "@sec-ant/readable-stream": "^0.4.1", - "is-stream": "^4.0.1" - }, - "engines": { - "node": ">=18" + "pump": "^3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-stream/node_modules/is-stream": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", - "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", - "dev": true, "engines": { - "node": ">=18" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -16825,6 +18967,7 @@ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", @@ -16838,10 +18981,11 @@ } }, "node_modules/get-tsconfig": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.11.0.tgz", - "integrity": "sha512-sNsqf7XKQ38IawiVGPOoAlqZo1DMrO7TU+ZcZwi7yLl7/7S0JwmoBMKz/IkUPhSoXM0Ng3vT0yB1iCe5XavDeQ==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.0.tgz", + "integrity": "sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==", "dev": true, + "license": "MIT", "dependencies": { "resolve-pkg-maps": "^1.0.0" }, @@ -16854,6 +18998,7 @@ "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.5.tgz", "integrity": "sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==", "dev": true, + "license": "MIT", "dependencies": { "basic-ftp": "^5.0.2", "data-uri-to-buffer": "^6.0.2", @@ -16868,6 +19013,7 @@ "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 14" } @@ -16877,6 +19023,7 @@ "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-4.0.0.tgz", "integrity": "sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==", "dev": true, + "license": "MIT", "dependencies": { "dargs": "^8.0.0", "meow": "^12.0.1", @@ -16892,23 +19039,24 @@ "node_modules/github-from-package": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "license": "MIT" }, "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "license": "ISC", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, - "engines": { - "node": "*" + "bin": { + "glob": "dist/esm/bin.mjs" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -16919,6 +19067,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.3" }, @@ -16930,6 +19079,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/glob-to-regex.js/-/glob-to-regex.js-1.2.0.tgz", "integrity": "sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==", + "license": "Apache-2.0", "engines": { "node": ">=10.0" }, @@ -16945,33 +19095,15 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "devOptional": true - }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } + "devOptional": true, + "license": "BSD-2-Clause" }, "node_modules/global-directory": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz", "integrity": "sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==", "dev": true, + "license": "MIT", "dependencies": { "ini": "4.1.1" }, @@ -16987,6 +19119,7 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -17002,6 +19135,7 @@ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, + "license": "MIT", "dependencies": { "define-properties": "^1.2.1", "gopd": "^1.0.1" @@ -17017,6 +19151,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -17028,6 +19163,7 @@ "version": "11.8.6", "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + "license": "MIT", "dependencies": { "@sindresorhus/is": "^4.0.0", "@szmarczak/http-timer": "^4.0.5", @@ -17039,67 +19175,47 @@ "http2-wrapper": "^1.0.0-beta.5.2", "lowercase-keys": "^2.0.0", "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=10.19.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" - } - }, - "node_modules/got/node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" + "responselike": "^2.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/got/node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", "engines": { - "node": ">=10" + "node": ">=10.19.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sindresorhus/got?sponsor=1" } }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" }, "node_modules/grapheme-splitter": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/handle-thing": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "license": "MIT" }, "node_modules/handlebars": { "version": "4.7.8", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", "dev": true, + "license": "MIT", "dependencies": { "minimist": "^1.2.5", "neo-async": "^2.6.2", @@ -17121,6 +19237,7 @@ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", "integrity": "sha512-1YsTg1fk2/6JToQhtZkArMkurq8UoWU1Qe0aR3VUHjgij4nOylSWLWAtBXoZ4/dXOmugfLGm1c+QhuD0JyedFA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^0.2.0" }, @@ -17136,6 +19253,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", "integrity": "sha512-sGwIGMjhYdW26/IhwK2gkWWI8DRCVO6uj3hYgHT+zD+QL1pa37tM3ujhyfcJIYSbsxp7Gxhy7zrRW/1AHm4BmA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -17145,6 +19263,7 @@ "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -17156,6 +19275,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", "engines": { "node": ">=8" } @@ -17164,6 +19284,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0" }, @@ -17176,6 +19297,7 @@ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", "dev": true, + "license": "MIT", "dependencies": { "dunder-proto": "^1.0.0" }, @@ -17190,6 +19312,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -17201,6 +19324,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" }, @@ -17214,12 +19338,14 @@ "node_modules/has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "license": "ISC" }, "node_modules/hash-base": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.5.tgz", "integrity": "sha512-vXm0l45VbcHEVlTCzs8M+s0VeYsB2lnlAaThoLKGXr3bE/VWDOelNUnycUPEhKEaXARL2TEFjBOyUiM6+55KBg==", + "license": "MIT", "dependencies": { "inherits": "^2.0.4", "safe-buffer": "^5.2.1" @@ -17228,29 +19354,11 @@ "node": ">= 0.10" } }, - "node_modules/hash-base/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/hash.js": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "minimalistic-assert": "^1.0.1" @@ -17260,6 +19368,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -17272,6 +19381,7 @@ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true, + "license": "MIT", "bin": { "he": "bin/he" } @@ -17280,6 +19390,7 @@ "version": "11.11.1", "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.11.1.tgz", "integrity": "sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==", + "license": "BSD-3-Clause", "engines": { "node": ">=12.0.0" } @@ -17288,6 +19399,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "license": "MIT", "dependencies": { "hash.js": "^1.0.3", "minimalistic-assert": "^1.0.0", @@ -17298,12 +19410,14 @@ "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/hpack.js": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "license": "MIT", "dependencies": { "inherits": "^2.0.1", "obuf": "^1.0.0", @@ -17311,10 +19425,47 @@ "wbuf": "^1.1.0" } }, + "node_modules/hpack.js/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/hpagent": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/hpagent/-/hpagent-1.2.0.tgz", "integrity": "sha512-A91dYTeIB6NoXG+PxTQpCCDDnfHsW9kc06Lvpu1TEe9gnd6ZFeiBoRO9JvzEv6xK7EX97/dUE8g/vBMTqTS3CA==", + "license": "MIT", "engines": { "node": ">=14" } @@ -17324,6 +19475,7 @@ "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", "dev": true, + "license": "MIT", "dependencies": { "whatwg-encoding": "^3.1.1" }, @@ -17335,13 +19487,15 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/html-loader": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-5.1.0.tgz", "integrity": "sha512-Jb3xwDbsm0W3qlXrCZwcYqYGnYz55hb6aoKQTlzyZPXsPpi6tHXzAfqalecglMQgNvtEfxrCQPaKT90Irt5XDA==", "dev": true, + "license": "MIT", "dependencies": { "html-minifier-terser": "^7.2.0", "parse5": "^7.1.2" @@ -17362,6 +19516,7 @@ "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-7.2.0.tgz", "integrity": "sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA==", "dev": true, + "license": "MIT", "dependencies": { "camel-case": "^4.1.2", "clean-css": "~5.3.2", @@ -17383,15 +19538,17 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "dev": true, + "license": "MIT", "engines": { "node": ">=14" } }, "node_modules/html-webpack-plugin": { - "version": "5.6.4", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.4.tgz", - "integrity": "sha512-V/PZeWsqhfpE27nKeX9EO2sbR+D17A+tLf6qU+ht66jdUsN0QLKJN27Z+1+gHrVMKgndBahes0PU6rRihDgHTw==", + "version": "5.6.5", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.5.tgz", + "integrity": "sha512-4xynFbKNNk+WlzXeQQ+6YYsH2g7mpfPszQZUi3ovKlj+pDmngQ7vRXjrrmGROabmKwyQkcgcX5hqfOwHbFmK5g==", "dev": true, + "license": "MIT", "dependencies": { "@types/html-minifier-terser": "^6.0.0", "html-minifier-terser": "^6.0.2", @@ -17424,6 +19581,7 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true, + "license": "MIT", "engines": { "node": ">= 12" } @@ -17433,6 +19591,7 @@ "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", "dev": true, + "license": "MIT", "dependencies": { "camel-case": "^4.1.2", "clean-css": "^5.2.2", @@ -17453,7 +19612,8 @@ "version": "0.8.1", "resolved": "https://registry.npmjs.org/htmlfy/-/htmlfy-0.8.1.tgz", "integrity": "sha512-xWROBw9+MEGwxpotll0h672KCaLrKKiCYzsyN8ZgL9cQbVumFnyvsk2JqiB9ELAV1GLj1GG/jxZUjV9OZZi/yQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/htmlparser2": { "version": "6.1.0", @@ -17467,6 +19627,7 @@ "url": "https://github.com/sponsors/fb55" } ], + "license": "MIT", "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.0.0", @@ -17479,6 +19640,7 @@ "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", "dev": true, + "license": "BSD-2-Clause", "funding": { "url": "https://github.com/fb55/entities?sponsor=1" } @@ -17486,45 +19648,46 @@ "node_modules/http-cache-semantics": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", - "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==" + "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", + "license": "BSD-2-Clause" }, "node_modules/http-deceiver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==" + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "license": "MIT" }, "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" }, "engines": { "node": ">= 0.8" - } - }, - "node_modules/http-errors/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "engines": { - "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/http-parser-js": { "version": "0.5.10", "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz", - "integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==" + "integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==", + "license": "MIT" }, "node_modules/http-proxy": { "version": "1.18.1", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "license": "MIT", "dependencies": { "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", @@ -17539,6 +19702,7 @@ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" @@ -17551,6 +19715,7 @@ "version": "2.0.9", "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz", "integrity": "sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==", + "license": "MIT", "dependencies": { "@types/http-proxy": "^1.17.8", "http-proxy": "^1.18.1", @@ -17574,6 +19739,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -17585,6 +19751,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "license": "MIT", "dependencies": { "quick-lru": "^5.1.1", "resolve-alpn": "^1.0.0" @@ -17596,12 +19763,14 @@ "node_modules/https-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==" + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", + "license": "MIT" }, "node_modules/https-proxy-agent": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "license": "MIT", "dependencies": { "agent-base": "^7.1.2", "debug": "4" @@ -17611,12 +19780,13 @@ } }, "node_modules/human-signals": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz", - "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=18.18.0" + "node": ">=10.17.0" } }, "node_modules/husky": { @@ -17624,6 +19794,7 @@ "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz", "integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==", "dev": true, + "license": "MIT", "bin": { "husky": "bin.js" }, @@ -17638,6 +19809,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", + "license": "MIT", "engines": { "node": ">=10.18" } @@ -17646,6 +19818,7 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -17670,12 +19843,14 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "BSD-3-Clause" }, "node_modules/ignore": { "version": "7.0.5", "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "license": "MIT", "engines": { "node": ">= 4" } @@ -17684,6 +19859,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/image-size/-/image-size-2.0.2.tgz", "integrity": "sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w==", + "license": "MIT", "bin": { "image-size": "bin/image-size.js" }, @@ -17694,13 +19870,15 @@ "node_modules/immediate": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "license": "MIT" }, "node_modules/import-fresh": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, + "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -17717,6 +19895,7 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -17726,6 +19905,7 @@ "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", "dev": true, + "license": "MIT", "dependencies": { "pkg-dir": "^4.2.0", "resolve-cwd": "^3.0.0" @@ -17745,6 +19925,7 @@ "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz", "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -17755,6 +19936,7 @@ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.19" } @@ -17764,6 +19946,7 @@ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -17772,29 +19955,32 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" }, "node_modules/ini": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", "dev": true, + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/inquirer": { - "version": "12.9.6", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-12.9.6.tgz", - "integrity": "sha512-603xXOgyfxhuis4nfnWaZrMaotNT0Km9XwwBNWUKbIDqeCY89jGr2F9YPEMiNhU6XjIP4VoWISMBFfcc5NgrTw==", + "version": "12.11.1", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-12.11.1.tgz", + "integrity": "sha512-9VF7mrY+3OmsAfjH3yKz/pLbJ5z22E23hENKw3/LNSaA/sAt3v49bDRY+Ygct1xwuKT+U+cBfTzjCPySna69Qw==", "dev": true, + "license": "MIT", "dependencies": { - "@inquirer/ansi": "^1.0.0", - "@inquirer/core": "^10.2.2", - "@inquirer/prompts": "^7.8.6", - "@inquirer/type": "^3.0.8", + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/prompts": "^7.10.1", + "@inquirer/type": "^3.0.10", "mute-stream": "^2.0.0", - "run-async": "^4.0.5", + "run-async": "^4.0.6", "rxjs": "^7.8.2" }, "engines": { @@ -17814,6 +20000,7 @@ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "hasown": "^2.0.2", @@ -17828,6 +20015,7 @@ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.10" } @@ -17836,22 +20024,25 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/intersect/-/intersect-1.0.1.tgz", "integrity": "sha512-qsc720yevCO+4NydrJWgEWKccAQwTOvj2m73O/VBA6iUL2HGZJ9XqBiyraNrBXX/W1IAjdpXdRZk24sq8TzBRg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/invert-kv": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/ip-address": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.0.1.tgz", - "integrity": "sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", + "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 12" } @@ -17860,6 +20051,7 @@ "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", "engines": { "node": ">= 0.10" } @@ -17869,6 +20061,7 @@ "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "has-tostringtag": "^1.0.2" @@ -17885,6 +20078,7 @@ "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", @@ -17901,13 +20095,15 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-async-function": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", "dev": true, + "license": "MIT", "dependencies": { "async-function": "^1.0.0", "call-bound": "^1.0.3", @@ -17927,6 +20123,7 @@ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", "dev": true, + "license": "MIT", "dependencies": { "has-bigints": "^1.0.2" }, @@ -17941,6 +20138,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -17953,6 +20151,7 @@ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" @@ -17968,6 +20167,7 @@ "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -17980,6 +20180,7 @@ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dev": true, + "license": "MIT", "dependencies": { "hasown": "^2.0.2" }, @@ -17995,6 +20196,7 @@ "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "get-intrinsic": "^1.2.6", @@ -18012,6 +20214,7 @@ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "has-tostringtag": "^1.0.2" @@ -18027,6 +20230,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "license": "MIT", "bin": { "is-docker": "cli.js" }, @@ -18040,12 +20244,14 @@ "node_modules/is-electron": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/is-electron/-/is-electron-2.2.2.tgz", - "integrity": "sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg==" + "integrity": "sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg==", + "license": "MIT" }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -18055,6 +20261,7 @@ "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.3" }, @@ -18066,14 +20273,12 @@ } }, "node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", - "dependencies": { - "number-is-nan": "^1.0.0" - }, + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/is-generator-fn": { @@ -18081,6 +20286,7 @@ "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -18090,6 +20296,7 @@ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.4", "generator-function": "^2.0.0", @@ -18108,6 +20315,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -18119,6 +20327,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "license": "MIT", "dependencies": { "is-docker": "^3.0.0" }, @@ -18137,6 +20346,7 @@ "resolved": "https://registry.npmjs.org/is-it-type/-/is-it-type-5.1.3.tgz", "integrity": "sha512-AX2uU0HW+TxagTgQXOJY7+2fbFHemC7YFBwN1XqD8qQMKdtfbOC8OC3fUb4s5NU59a3662Dzwto8tWDdZYRXxg==", "dev": true, + "license": "MIT", "dependencies": { "globalthis": "^1.0.2" }, @@ -18149,6 +20359,7 @@ "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -18161,6 +20372,7 @@ "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.0", "define-properties": "^1.1.3" @@ -18177,6 +20389,7 @@ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -18188,6 +20401,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.0.tgz", "integrity": "sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw==", + "license": "MIT", "engines": { "node": ">=16" }, @@ -18199,6 +20413,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -18208,6 +20423,7 @@ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" @@ -18224,6 +20440,7 @@ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -18233,6 +20450,7 @@ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -18242,14 +20460,20 @@ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, "engines": { "node": ">=0.10.0" } @@ -18258,18 +20482,21 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-promise": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", - "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==" + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "license": "MIT" }, "node_modules/is-regex": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "gopd": "^1.2.0", @@ -18288,6 +20515,7 @@ "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -18300,6 +20528,7 @@ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.3" }, @@ -18314,6 +20543,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "license": "MIT", "engines": { "node": ">=8" }, @@ -18326,6 +20556,7 @@ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" @@ -18342,6 +20573,7 @@ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "has-symbols": "^1.1.0", @@ -18359,6 +20591,7 @@ "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz", "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==", "dev": true, + "license": "MIT", "dependencies": { "text-extensions": "^2.0.0" }, @@ -18370,6 +20603,7 @@ "version": "1.1.15", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "license": "MIT", "dependencies": { "which-typed-array": "^1.1.16" }, @@ -18381,12 +20615,13 @@ } }, "node_modules/is-unicode-supported": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", - "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=18" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -18396,13 +20631,15 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-weakmap": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -18415,6 +20652,7 @@ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.3" }, @@ -18430,6 +20668,7 @@ "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "get-intrinsic": "^1.2.6" @@ -18445,6 +20684,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "license": "MIT", "dependencies": { "is-inside-container": "^1.0.0" }, @@ -18471,23 +20711,27 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.2.tgz", "integrity": "sha512-+ykBpFL44/E8TlSBn0kDHZ1+IseXxUu/Om3bS2nqNscaeYWzxx54R9CewU6pLrsXLmEeTRZsGMTQIHfSUEEcUw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" }, "node_modules/isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -18497,6 +20741,7 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=8" } @@ -18506,6 +20751,7 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.23.9", "@babel/parser": "^7.23.9", @@ -18517,11 +20763,25 @@ "node": ">=10" } }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/istanbul-lib-report": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^4.0.0", @@ -18536,6 +20796,7 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "debug": "^4.1.1", "istanbul-lib-coverage": "^3.0.0", @@ -18550,6 +20811,7 @@ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" @@ -18562,6 +20824,7 @@ "version": "3.4.3", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -18577,6 +20840,7 @@ "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.4.tgz", "integrity": "sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "async": "^3.2.6", "filelist": "^1.0.4", @@ -18589,17 +20853,13 @@ "node": ">=10" } }, - "node_modules/jake/node_modules/async": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", - "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", - "dev": true - }, "node_modules/jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, + "license": "MIT", + "peer": true, "dependencies": { "@jest/core": "^29.7.0", "@jest/types": "^29.6.3", @@ -18626,6 +20886,7 @@ "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", "dev": true, + "license": "MIT", "dependencies": { "execa": "^5.0.0", "jest-util": "^29.7.0", @@ -18635,109 +20896,12 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-changed-files/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/jest-changed-files/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-changed-files/node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/jest-changed-files/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-changed-files/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-changed-files/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/jest-changed-files/node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/jest-changed-files/node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/jest-circus": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", "dev": true, + "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", "@jest/expect": "^29.7.0", @@ -18764,47 +20928,37 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-circus/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/jest-circus/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-circus/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "node_modules/jest-circus/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-circus/node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/jest-cli": { @@ -18812,6 +20966,7 @@ "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", "dev": true, + "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", "@jest/test-result": "^29.7.0", @@ -18840,11 +20995,28 @@ } } }, + "node_modules/jest-cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/jest-cli/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -18861,6 +21033,7 @@ "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", "@jest/test-sequencer": "^29.7.0", @@ -18901,11 +21074,39 @@ } } }, + "node_modules/jest-config/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/jest-config/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -18917,11 +21118,47 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/jest-config/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest-config/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/jest-diff": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.0.0", "diff-sequences": "^29.6.3", @@ -18932,11 +21169,28 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/jest-diff/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -18953,6 +21207,7 @@ "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", "dev": true, + "license": "MIT", "dependencies": { "detect-newline": "^3.0.0" }, @@ -18965,6 +21220,7 @@ "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "chalk": "^4.0.0", @@ -18973,7 +21229,23 @@ "pretty-format": "^29.7.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/jest-each/node_modules/chalk": { @@ -18981,6 +21253,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -18997,6 +21270,7 @@ "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", "dev": true, + "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", "@jest/fake-timers": "^29.7.0", @@ -19014,6 +21288,7 @@ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", "dev": true, + "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } @@ -19023,6 +21298,7 @@ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "@types/graceful-fs": "^4.1.3", @@ -19043,41 +21319,12 @@ "fsevents": "^2.3.2" } }, - "node_modules/jest-haste-map/node_modules/jest-worker": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", - "dev": true, - "dependencies": { - "@types/node": "*", - "jest-util": "^29.7.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-haste-map/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, "node_modules/jest-leak-detector": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", "dev": true, + "license": "MIT", "dependencies": { "jest-get-type": "^29.6.3", "pretty-format": "^29.7.0" @@ -19091,6 +21338,7 @@ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.0.0", "jest-diff": "^29.7.0", @@ -19101,11 +21349,28 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/jest-matcher-utils/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -19122,6 +21387,7 @@ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.12.13", "@jest/types": "^29.6.3", @@ -19137,11 +21403,28 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/jest-message-util/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -19158,6 +21441,7 @@ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", @@ -19172,6 +21456,7 @@ "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" }, @@ -19189,6 +21474,7 @@ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", "dev": true, + "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } @@ -19198,6 +21484,7 @@ "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.0.0", "graceful-fs": "^4.2.9", @@ -19218,6 +21505,7 @@ "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", "dev": true, + "license": "MIT", "dependencies": { "jest-regex-util": "^29.6.3", "jest-snapshot": "^29.7.0" @@ -19226,11 +21514,28 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-resolve/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/jest-resolve/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -19247,6 +21552,7 @@ "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", "dev": true, + "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", "@jest/environment": "^29.7.0", @@ -19274,87 +21580,37 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runner/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-runner/node_modules/jest-worker": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", - "dev": true, - "dependencies": { - "@types/node": "*", - "jest-util": "^29.7.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runner/node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "node_modules/jest-runner/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-runner/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "node_modules/jest-runner/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-runner/node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/jest-runner/node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/jest-runtime": { @@ -19362,6 +21618,7 @@ "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", "dev": true, + "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", "@jest/fake-timers": "^29.7.0", @@ -19390,11 +21647,39 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-runtime/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-runtime/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/jest-runtime/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -19406,13 +21691,39 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-runtime/node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "node_modules/jest-runtime/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, "engines": { - "node": ">=8" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest-runtime/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, "node_modules/jest-snapshot": { @@ -19420,6 +21731,7 @@ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", "@babel/generator": "^7.7.2", @@ -19446,11 +21758,28 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-snapshot/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/jest-snapshot/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -19462,11 +21791,25 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/jest-util": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", @@ -19479,11 +21822,28 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/jest-util/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -19495,11 +21855,25 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/jest-util/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/jest-validate": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "camelcase": "^6.2.0", @@ -19512,11 +21886,28 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-validate/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/jest-validate/node_modules/camelcase": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -19529,6 +21920,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -19545,6 +21937,7 @@ "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", "dev": true, + "license": "MIT", "dependencies": { "@jest/test-result": "^29.7.0", "@jest/types": "^29.6.3", @@ -19559,11 +21952,28 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-watcher/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/jest-watcher/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -19576,24 +21986,27 @@ } }, "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "devOptional": true, + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*", + "jest-util": "^29.7.0", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" }, "engines": { - "node": ">= 10.13.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "devOptional": true, + "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -19609,6 +22022,7 @@ "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", "dev": true, + "license": "MIT", "bin": { "jiti": "lib/jiti-cli.mjs" } @@ -19626,6 +22040,7 @@ "version": "5.10.0", "resolved": "https://registry.npmjs.org/jose/-/jose-5.10.0.tgz", "integrity": "sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/panva" } @@ -19635,6 +22050,7 @@ "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" } @@ -19642,19 +22058,22 @@ "node_modules/js-md5": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/js-md5/-/js-md5-0.8.3.tgz", - "integrity": "sha512-qR0HB5uP6wCuRMrWPTrkMaev7MJZwJuuw4fnwAzRgP4J4/F8RwtodOKpGp4XpqsLBFzzgqIO42efFAyz2Et6KQ==" + "integrity": "sha512-qR0HB5uP6wCuRMrWPTrkMaev7MJZwJuuw4fnwAzRgP4J4/F8RwtodOKpGp4XpqsLBFzzgqIO42efFAyz2Et6KQ==", + "license": "MIT" }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -19667,6 +22086,7 @@ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-24.1.3.tgz", "integrity": "sha512-MyL55p3Ut3cXbeBEG7Hcv0mVM8pp8PBNWxRqchZnSfAiES1v1mRnMeFfaHWIPULpwsYfvO+ZmMZz5tGCnjzDUQ==", "dev": true, + "license": "MIT", "dependencies": { "cssstyle": "^4.0.1", "data-urls": "^5.0.0", @@ -19707,6 +22127,7 @@ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, + "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, @@ -19717,36 +22138,42 @@ "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "license": "MIT" }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "devOptional": true + "devOptional": true, + "license": "MIT" }, "node_modules/json-rpc-2.0": { "version": "1.7.1", "resolved": "https://registry.npmjs.org/json-rpc-2.0/-/json-rpc-2.0-1.7.1.tgz", "integrity": "sha512-JqZjhjAanbpkXIzFE7u8mE/iFblawwlXtONaCvRqI+pyABVz7B4M1EUNpyVW+dZjqgQ2L5HFmZCmOCgUKm00hg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, + "license": "MIT", "bin": { "json5": "lib/cli.js" }, @@ -19757,7 +22184,8 @@ "node_modules/jsonc-parser": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", - "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==" + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "license": "MIT" }, "node_modules/jsonparse": { "version": "1.3.1", @@ -19766,13 +22194,15 @@ "dev": true, "engines": [ "node >= 0.2.0" - ] + ], + "license": "MIT" }, "node_modules/JSONStream": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", "dev": true, + "license": "(MIT OR Apache-2.0)", "dependencies": { "jsonparse": "^1.2.0", "through": ">=2.2.7 <3" @@ -19788,6 +22218,7 @@ "version": "3.10.1", "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "license": "(MIT OR GPL-3.0-or-later)", "dependencies": { "lie": "~3.3.0", "pako": "~1.0.2", @@ -19795,21 +22226,60 @@ "setimmediate": "^1.0.5" } }, + "node_modules/jszip/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/jszip/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/jszip/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/jszip/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/just-clone": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/just-clone/-/just-clone-6.2.0.tgz", - "integrity": "sha512-1IynUYEc/HAwxhi3WDpIpxJbZpMCvvrrmZVqvj9EhpvbH8lls7HhdhiByjL7DkAaWlLIzpC0Xc/VPvy/UxLNjA==" + "integrity": "sha512-1IynUYEc/HAwxhi3WDpIpxJbZpMCvvrrmZVqvj9EhpvbH8lls7HhdhiByjL7DkAaWlLIzpC0Xc/VPvy/UxLNjA==", + "license": "MIT" }, "node_modules/just-extend": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz", "integrity": "sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "license": "MIT", "dependencies": { "json-buffer": "3.0.1" } @@ -19819,6 +22289,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -19828,14 +22299,16 @@ "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/launch-editor": { - "version": "2.11.1", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.11.1.tgz", - "integrity": "sha512-SEET7oNfgSaB6Ym0jufAdCeo3meJVeCaaDyzRygy0xsp2BFKCprcfHljTq4QkzTLUxEKkFK6OK4811YM2oSrRg==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.12.0.tgz", + "integrity": "sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg==", + "license": "MIT", "dependencies": { "picocolors": "^1.1.1", "shell-quote": "^1.8.3" @@ -19845,6 +22318,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "license": "MIT", "dependencies": { "readable-stream": "^2.0.5" }, @@ -19852,11 +22326,48 @@ "node": ">= 0.6.3" } }, + "node_modules/lazystream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/lazystream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/lazystream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/lazystream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/lcid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", "dev": true, + "license": "MIT", "dependencies": { "invert-kv": "^1.0.0" }, @@ -19869,6 +22380,7 @@ "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -19878,6 +22390,7 @@ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -19891,6 +22404,7 @@ "resolved": "https://registry.npmjs.org/license-checker/-/license-checker-25.0.1.tgz", "integrity": "sha512-mET5AIwl7MR2IAKYYoVBBpV0OnkKQ1xGj2IMMeEFIs42QAkEVjRtFZGWmQ28WeU7MP779iAgOaOy93Mn44mn6g==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "chalk": "^2.4.1", "debug": "^3.1.0", @@ -19912,6 +22426,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -19924,6 +22439,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -19938,6 +22454,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "1.1.3" } @@ -19946,13 +22463,15 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/license-checker/node_modules/debug": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } @@ -19962,6 +22481,7 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.0" } @@ -19971,15 +22491,30 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, + "node_modules/license-checker/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, "node_modules/license-checker/node_modules/semver": { "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver" } @@ -19989,6 +22524,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -20000,6 +22536,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "license": "MIT", "dependencies": { "immediate": "~3.0.5" } @@ -20008,13 +22545,15 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/load-json-file": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.1.2", "parse-json": "^2.2.0", @@ -20031,6 +22570,7 @@ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", "dev": true, + "license": "MIT", "dependencies": { "error-ex": "^1.2.0" }, @@ -20043,6 +22583,7 @@ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", "dev": true, + "license": "MIT", "dependencies": { "is-utf8": "^0.2.0" }, @@ -20051,12 +22592,17 @@ } }, "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", + "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==", "devOptional": true, + "license": "MIT", "engines": { "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/loader-utils": { @@ -20064,6 +22610,7 @@ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, + "license": "MIT", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -20088,6 +22635,7 @@ "url": "https://github.com/hejny/locate-app/blob/main/README.md#%EF%B8%8F-contributing" } ], + "license": "Apache-2.0", "dependencies": { "@promptbook/utils": "0.69.5", "type-fest": "4.26.0", @@ -20099,6 +22647,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.26.0.tgz", "integrity": "sha512-OduNjVJsFbifKb57UqZ2EMP1i4u64Xwow3NYXUtBbD4vIwJdQd4+xl8YDou1dlm4DVrtwT/7Ky8z8WyCULVfxw==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=16" }, @@ -20111,6 +22660,7 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^6.0.0" }, @@ -20124,110 +22674,128 @@ "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" }, "node_modules/lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.flattendeep": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.get": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", "deprecated": "This package is deprecated. Use the optional chaining (?.) operator instead.", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.isplainobject": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.kebabcase": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.mergewith": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.pickby": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.pickby/-/lodash.pickby-4.6.0.tgz", "integrity": "sha512-AZV+GsS/6ckvPOVQPXSiFFacKvKB4kOQu6ynt9wz0F3LO4R9Ij4K1ddYsIytDpSgLz88JHd9P+oaLeej5/Sl7Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.snakecase": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.startcase": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz", "integrity": "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.union": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.upperfirst": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz", "integrity": "sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.zip": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.zip/-/lodash.zip-4.2.0.tgz", "integrity": "sha512-C7IOaBBK/0gMORRBd8OETNx3kmOkgIWIPvyDpZSCTwUrpYmgZwJkjZeOD8ww4xbOUOs4/attY+pciKvadNfFbg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -20239,11 +22807,28 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/log-symbols/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -20255,23 +22840,12 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/log-symbols/node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/loglevel": { "version": "1.9.2", "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.2.tgz", "integrity": "sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6.0" }, @@ -20284,23 +22858,27 @@ "version": "0.8.4", "resolved": "https://registry.npmjs.org/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.8.4.tgz", "integrity": "sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lokijs": { "version": "1.5.12", "resolved": "https://registry.npmjs.org/lokijs/-/lokijs-1.5.12.tgz", - "integrity": "sha512-Q5ALD6JiS6xAUWCwX3taQmgwxyveCtIIuL08+ml0nHwT3k0S/GIFJN+Hd38b1qYIMaE5X++iqsqWVksz7SYW+Q==" + "integrity": "sha512-Q5ALD6JiS6xAUWCwX3taQmgwxyveCtIIuL08+ml0nHwT3k0S/GIFJN+Hd38b1qYIMaE5X++iqsqWVksz7SYW+Q==", + "license": "MIT" }, "node_modules/long": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", - "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==" + "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", + "license": "Apache-2.0" }, "node_modules/loupe": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dev": true, + "license": "MIT", "dependencies": { "get-func-name": "^2.0.1" } @@ -20310,6 +22888,7 @@ "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.0.3" } @@ -20318,29 +22897,37 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } }, "node_modules/mac-ca": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/mac-ca/-/mac-ca-3.1.3.tgz", "integrity": "sha512-yAdth+3TAfAyYYxNlnIJxKJbNOVvn9ZiQ1C9XJAj8ThKBBd5hu581sFjld3wr4DSrHcQwn7rt+t6dLiB+vFEFQ==", + "license": "BSD-3-Clause", "dependencies": { "node-forge": "^1.3.1", "undici": "^6.16.1" } }, "node_modules/magic-string": { - "version": "0.30.19", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz", - "integrity": "sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==", + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } @@ -20349,6 +22936,7 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/make-array/-/make-array-0.1.2.tgz", "integrity": "sha512-bcFmxgZ+OTaMYJp/w6eifElKTcfum7Gi5H7vQ8KzAf9X6swdxkVuilCaG3ZjXr/qJsQT4JJ2Rq9SDYScWEdu9Q==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -20358,6 +22946,7 @@ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, + "license": "MIT", "dependencies": { "semver": "^7.5.3" }, @@ -20368,17 +22957,32 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/make-dir/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/makeerror": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "tmpl": "1.0.5" } @@ -20387,6 +22991,7 @@ "version": "14.1.4", "resolved": "https://registry.npmjs.org/marked/-/marked-14.1.4.tgz", "integrity": "sha512-vkVZ8ONmUdPnjCKc5uTRvmkRbx4EAi2OkTOXmfTDhZz3OFqMNBM1oTTWwTr4HY4uAEojhzPf+Fy8F1DWa3Sndg==", + "license": "MIT", "bin": { "marked": "bin/marked.js" }, @@ -20398,6 +23003,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -20406,6 +23012,7 @@ "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "license": "MIT", "dependencies": { "hash-base": "^3.0.0", "inherits": "^2.0.1", @@ -20416,14 +23023,16 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/memfs": { - "version": "4.49.0", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.49.0.tgz", - "integrity": "sha512-L9uC9vGuc4xFybbdOpRLoOAOq1YEBBsocCs5NVW32DfU+CZWWIn3OVF+lB8Gp4ttBVSMazwrTrjv8ussX/e3VQ==", + "version": "4.51.0", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.51.0.tgz", + "integrity": "sha512-4zngfkVM/GpIhC8YazOsM6E8hoB33NP0BCESPOA6z7qaL6umPJNqkO8CNYaLV2FB2MV6H1O3x2luHHOSqppv+A==", + "license": "Apache-2.0", "dependencies": { "@jsonjoy.com/json-pack": "^1.11.0", "@jsonjoy.com/util": "^1.9.0", @@ -20442,6 +23051,7 @@ "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", "dev": true, + "license": "MIT", "engines": { "node": ">=16.10" }, @@ -20453,6 +23063,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "license": "MIT", "engines": { "node": ">=18" }, @@ -20464,12 +23075,14 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "devOptional": true + "devOptional": true, + "license": "MIT" }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", "engines": { "node": ">= 8" } @@ -20478,6 +23091,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -20486,6 +23100,7 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" @@ -20494,10 +23109,23 @@ "node": ">=8.6" } }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/miller-rabin": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "license": "MIT", "dependencies": { "bn.js": "^4.0.0", "brorand": "^1.0.1" @@ -20509,12 +23137,14 @@ "node_modules/miller-rabin/node_modules/bn.js": { "version": "4.12.2", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", - "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==" + "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", + "license": "MIT" }, "node_modules/mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", "bin": { "mime": "cli.js" }, @@ -20526,27 +23156,25 @@ "version": "1.54.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "license": "MIT", "dependencies": { - "mime-db": "1.52.0" + "mime-db": "^1.54.0" }, "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/mimic-fn": { @@ -20554,35 +23182,37 @@ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/mimic-response": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", - "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "license": "MIT", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, "node_modules/minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "license": "ISC" }, "node_modules/minimalistic-crypto-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "license": "MIT" }, "node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -20597,6 +23227,7 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -20605,6 +23236,7 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } @@ -20613,38 +23245,42 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/mix2": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/mix2/-/mix2-1.0.5.tgz", "integrity": "sha512-ybWz7nY+WHBBIyliND5eYaJKzkoa+qXRYNTmVqAxSLlFtL/umT2iv+pmyTu1oU7WNkrirwheqR8d9EaKVz0e5g==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" - }, + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "license": "MIT", "bin": { "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/mkdirp-classic": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "license": "MIT" }, "node_modules/mocha": { - "version": "11.7.4", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.7.4.tgz", - "integrity": "sha512-1jYAaY8x0kAZ0XszLWu14pzsf4KV740Gld4HXkhNTXwcHx4AUEDkPzgEHg9CM5dVcW+zv036tjpsEbLraPJj4w==", + "version": "11.7.5", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.7.5.tgz", + "integrity": "sha512-mTT6RgopEYABzXWFx+GcJ+ZQ32kp4fMf0xvpZIIfSq9Z8lC/++MtcCnQ9t5FP2veYEP95FIYSvW+U9fV4xrlig==", "dev": true, + "license": "MIT", "dependencies": { "browser-stdout": "^1.3.1", "chokidar": "^4.0.1", @@ -20676,20 +23312,12 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/mocha/node_modules/diff": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz", - "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, "node_modules/mocha/node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -20701,31 +23329,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mocha/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/mocha/node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, @@ -20736,26 +23345,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mocha/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/mocha/node_modules/p-locate": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -20771,6 +23366,7 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -20780,6 +23376,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -20790,23 +23387,12 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/mocha/node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/mock-fs": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-5.5.0.tgz", "integrity": "sha512-d/P1M/RacgM3dB0sJ8rjeRNXxtapkPCUnMGmIN0ixJ16F/E4GUZCvWcSGfWGz8eaXYvn1s9baUwNjI4LOPEjiA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.0.0" } @@ -20816,6 +23402,7 @@ "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -20823,12 +23410,14 @@ "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" }, "node_modules/multicast-dns": { "version": "7.2.5", "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "license": "MIT", "dependencies": { "dns-packet": "^5.2.2", "thunky": "^1.0.2" @@ -20842,6 +23431,7 @@ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", "dev": true, + "license": "ISC", "engines": { "node": "^18.17.0 || >=20.5.0" } @@ -20856,6 +23446,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -20866,18 +23457,21 @@ "node_modules/napi-build-utils": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", - "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", + "license": "MIT" }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/negotiator": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -20886,13 +23480,15 @@ "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "devOptional": true + "devOptional": true, + "license": "MIT" }, "node_modules/netmask": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4.0" } @@ -20902,6 +23498,7 @@ "resolved": "https://registry.npmjs.org/nise/-/nise-6.1.1.tgz", "integrity": "sha512-aMSAzLVY7LyeM60gvBS423nBmIPP+Wy7St7hsb+8/fc1HmeoHJfLO8CKse4u3BtOZvQLJghYPI2i/1WZrEj5/g==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^3.0.1", "@sinonjs/fake-timers": "^13.0.1", @@ -20915,6 +23512,7 @@ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^3.0.1" } @@ -20924,6 +23522,7 @@ "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", "dev": true, + "license": "MIT", "dependencies": { "lower-case": "^2.0.2", "tslib": "^2.0.3" @@ -20933,6 +23532,7 @@ "version": "2.30.1", "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.30.1.tgz", "integrity": "sha512-/2D0wOQPgaUWzVSVgRMx+trKJRC2UG4SUc4oCJoXx9Uxjtp0Vy3/kt7zcbxHF8+Z/pK3UloLWzBISg72brfy1w==", + "license": "MIT", "dependencies": { "semver": "^5.4.1" } @@ -20941,6 +23541,7 @@ "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "license": "ISC", "bin": { "semver": "bin/semver" } @@ -20948,7 +23549,8 @@ "node_modules/node-addon-api": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==" + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "license": "MIT" }, "node_modules/node-domexception": { "version": "1.0.0", @@ -20966,6 +23568,7 @@ "url": "https://paypal.me/jimmywarting" } ], + "license": "MIT", "engines": { "node": ">=10.5.0" } @@ -20975,6 +23578,7 @@ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", "dev": true, + "license": "MIT", "dependencies": { "data-uri-to-buffer": "^4.0.0", "fetch-blob": "^3.1.4", @@ -20992,6 +23596,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "license": "(BSD-3-Clause OR GPL-2.0)", "engines": { "node": ">= 6.13.0" } @@ -21000,13 +23605,15 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/node-loader": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/node-loader/-/node-loader-2.1.0.tgz", "integrity": "sha512-OwjPkyh8+7jW8DMd/iq71uU1Sspufr/C2+c3t0p08J3CrM9ApZ4U53xuisNrDXOHyGi5OYHgtfmmh+aK9zJA6g==", "dev": true, + "license": "MIT", "dependencies": { "loader-utils": "^2.0.3" }, @@ -21022,15 +23629,17 @@ } }, "node_modules/node-releases": { - "version": "2.0.23", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.23.tgz", - "integrity": "sha512-cCmFDMSm26S6tQSDpBCg/NR8NENrVPhAJSf+XbxBG4rPFaaonlEoE9wHQmun+cls499TQGSb7ZyPBRlzgKfpeg==", - "devOptional": true + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", + "devOptional": true, + "license": "MIT" }, "node_modules/noms": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/noms/-/noms-0.0.0.tgz", "integrity": "sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow==", + "license": "ISC", "dependencies": { "inherits": "^2.0.1", "readable-stream": "~1.0.31" @@ -21039,12 +23648,14 @@ "node_modules/noms/node_modules/isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "license": "MIT" }, "node_modules/noms/node_modules/readable-stream": { "version": "1.0.34", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.1", @@ -21055,18 +23666,21 @@ "node_modules/noms/node_modules/string_decoder": { "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "license": "MIT" }, "node_modules/noop-logger": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", - "integrity": "sha512-6kM8CLXvuW5crTxsAtva2YLrRrDaiTIkIePWs9moLHqbFWT94WpNFjwS/5dfLfECg5i/lkmw3aoqVidxt23TEQ==" + "integrity": "sha512-6kM8CLXvuW5crTxsAtva2YLrRrDaiTIkIePWs9moLHqbFWT94WpNFjwS/5dfLfECg5i/lkmw3aoqVidxt23TEQ==", + "license": "MIT" }, "node_modules/nopt": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", "dev": true, + "license": "ISC", "dependencies": { "abbrev": "1", "osenv": "^0.1.4" @@ -21079,13 +23693,15 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/nopt-usage/-/nopt-usage-0.1.0.tgz", "integrity": "sha512-Tg2sISrWBbSsCRqpEMmdxn3KZfacrd0N2NYpZQIq0MHxGHMjwzYlxeB9pVIom/g7CBK28atDUQsTlOfG0wOsNA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", @@ -21098,6 +23714,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver" } @@ -21106,6 +23723,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -21114,6 +23732,7 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -21137,7 +23756,20 @@ "underscore": "~1.4.4" }, "bin": { - "npm-license": "bin/npm-license" + "npm-license": "bin/npm-license" + } + }, + "node_modules/npm-license/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" } }, "node_modules/npm-license/node_modules/nopt": { @@ -21145,6 +23777,7 @@ "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==", "dev": true, + "license": "ISC", "dependencies": { "abbrev": "1" }, @@ -21171,46 +23804,20 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/npm-run-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", - "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, + "license": "MIT", "dependencies": { - "path-key": "^4.0.0", - "unicorn-magic": "^0.3.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, - "engines": { - "node": ">=12" + "path-key": "^3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-run-path/node_modules/unicorn-magic": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", - "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", - "dev": true, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/npmlog": { @@ -21218,6 +23825,7 @@ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "deprecated": "This package is no longer supported.", + "license": "ISC", "dependencies": { "are-we-there-yet": "~1.1.2", "console-control-strings": "~1.1.0", @@ -21230,6 +23838,7 @@ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0" }, @@ -21241,6 +23850,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -21249,12 +23859,14 @@ "version": "2.2.22", "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.22.tgz", "integrity": "sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -21263,6 +23875,7 @@ "version": "1.13.4", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -21275,6 +23888,7 @@ "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1" @@ -21291,6 +23905,7 @@ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -21300,6 +23915,7 @@ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", @@ -21320,6 +23936,7 @@ "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -21338,6 +23955,7 @@ "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -21352,6 +23970,7 @@ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", @@ -21368,18 +23987,21 @@ "node_modules/obuf": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "license": "MIT" }, "node_modules/on-exit-leak-free": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-0.2.0.tgz", "integrity": "sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", "dependencies": { "ee-first": "1.1.1" }, @@ -21391,6 +24013,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -21399,6 +24022,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", "dependencies": { "wrappy": "1" } @@ -21408,6 +24032,7 @@ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, + "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" }, @@ -21422,6 +24047,7 @@ "version": "10.2.0", "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", + "license": "MIT", "dependencies": { "default-browser": "^5.2.1", "define-lazy-prop": "^3.0.0", @@ -21440,6 +24066,7 @@ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, + "license": "MIT", "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", @@ -21455,13 +24082,15 @@ "node_modules/os-browserify": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==" + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", + "license": "MIT" }, "node_modules/os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -21471,6 +24100,7 @@ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", "dev": true, + "license": "MIT", "dependencies": { "lcid": "^1.0.0" }, @@ -21483,6 +24113,7 @@ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -21493,6 +24124,7 @@ "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "deprecated": "This package is no longer supported.", "dev": true, + "license": "ISC", "dependencies": { "os-homedir": "^1.0.0", "os-tmpdir": "^1.0.0" @@ -21503,6 +24135,7 @@ "resolved": "https://registry.npmjs.org/oss-attribution-generator/-/oss-attribution-generator-1.7.1.tgz", "integrity": "sha512-ReLf/UJ3z3ZEhzW6XD4HswUIoUgEUVq8I+amX12DqFwcEYhw8HGGhn2mrk7afqXuT+4AZiPDEhwDXtZSgtnOeA==", "dev": true, + "license": "MIT", "dependencies": { "bluebird": "^3.5.0", "bower": "^1.8.0", @@ -21524,6 +24157,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", "integrity": "sha512-sGwIGMjhYdW26/IhwK2gkWWI8DRCVO6uj3hYgHT+zD+QL1pa37tM3ujhyfcJIYSbsxp7Gxhy7zrRW/1AHm4BmA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -21533,6 +24167,17 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz", "integrity": "sha512-f2PKUkN5QngiSemowa6Mrk9MPCdtFiOSmibjZ+j1qhLGHHYsqZwmBMRF3IRMVXo8sybDqx2fJl2d/8OphBoWkA==", "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/oss-attribution-generator/node_modules/camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==", + "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -21542,6 +24187,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", "integrity": "sha512-bIKA54hP8iZhyDT81TOsJiQvR1gW+ZYSXFaZUAvoD4wCHdbHY2actmpTE4x344ZlFqHbvoxKOaESULTZN2gstg==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^1.1.0", "escape-string-regexp": "^1.0.0", @@ -21558,6 +24204,7 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1", @@ -21569,6 +24216,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -21578,6 +24226,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^2.0.0" }, @@ -21590,15 +24239,27 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } }, + "node_modules/oss-attribution-generator/node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/oss-attribution-generator/node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.0" } @@ -21607,13 +24268,28 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true + "dev": true, + "license": "ISC" + }, + "node_modules/oss-attribution-generator/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/oss-attribution-generator/node_modules/license-checker": { "version": "13.1.0", "resolved": "https://registry.npmjs.org/license-checker/-/license-checker-13.1.0.tgz", "integrity": "sha512-0sqnOzLkYYSZKzR3IO7q/1Drksin6IH1nlUgXE61ycWvF807UmFHV1fSDf6fGw5woQ0On/Gmh1YvVZ2jYMjUwQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "chalk": "~0.5.1", "debug": "^2.2.0", @@ -21635,19 +24311,22 @@ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", "integrity": "sha512-8OCq0De/h9ZxseqzCH8Kw/Filf5pF/vMI6+BH7Lu0jXz2pqYCjTAQRolSxRIi+Ax+oCCjlxoJMP0YQ4XlrQNHg==", "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/oss-attribution-generator/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/oss-attribution-generator/node_modules/nopt": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/nopt/-/nopt-2.2.1.tgz", "integrity": "sha512-gIOTA/uJuhPwFqp+spY7VQ1satbnGlD+iQVZxI18K6hs8Evq4sX81Ml7BB5byP/LsbR2yBVtmvdEmhi7evJ6Aw==", "dev": true, + "license": "MIT", "dependencies": { "abbrev": "1" }, @@ -21660,6 +24339,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver" } @@ -21669,6 +24349,7 @@ "resolved": "https://registry.npmjs.org/spdx-compare/-/spdx-compare-0.1.2.tgz", "integrity": "sha512-Wc1aAqOHvP0e9H6Q6Ie56rGc9Mn00xmhqiB1BaKfMsBpJw/BPp6FLkuKxLcubHXIXwAKTTyvA2E74aPUv8OA8A==", "dev": true, + "license": "MIT", "dependencies": { "spdx-expression-parse": "^1.0.0", "spdx-ranges": "^1.0.0" @@ -21678,13 +24359,15 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", "integrity": "sha512-xMXXC4eLKaIskvZm89nZi/MstVv1UtGk3nJz9BBKjreMVyoWisWFKfboH+kJS97+wUyBLpO/8ghV9M5VvrwwrA==", - "dev": true + "dev": true, + "license": "(MIT AND CC-BY-3.0)" }, "node_modules/oss-attribution-generator/node_modules/spdx-correct": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-2.0.4.tgz", "integrity": "sha512-c+4gPpt9YDhz7cHlz5UrsHzxxRi4ksclxnEEKsuGT9JdwSC+ZNmsGbYRzzgxyZaBYpcWnlu+4lPcdLKx4DOCmA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "spdx-expression-parse": "^2.0.1", "spdx-license-ids": "^2.0.1" @@ -21695,6 +24378,7 @@ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-2.0.2.tgz", "integrity": "sha512-oFxOkWCfFS0ltNp0H66gXlU4NF6bxg7RkoTYR0413t+yTY9zyj+AIWsjtN8dcVp6703ijDYBWBIARlJ7DkyP9Q==", "dev": true, + "license": "MIT", "dependencies": { "spdx-exceptions": "^2.0.0", "spdx-license-ids": "^2.0.1" @@ -21704,19 +24388,22 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-2.0.1.tgz", "integrity": "sha512-3RF4t5oYLlynWVIsKsmmGVM0obnTBK8ElS+2XSwRIYdf1U12aT8jS8MVHv1BH/tKrUKckogK5qJt/T+IMQZlAg==", - "dev": true + "dev": true, + "license": "CC0-1.0" }, "node_modules/oss-attribution-generator/node_modules/spdx-ranges": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/spdx-ranges/-/spdx-ranges-1.0.1.tgz", "integrity": "sha512-re78PYmpAkAqL63aWC+Xnf2GOhOP37uldGWCslThw+NHKuOSPmLATVfNFyetdjyF6F9yHxn5/XzvFHH6CHFjJA==", - "dev": true + "dev": true, + "license": "CC-BY-3.0" }, "node_modules/oss-attribution-generator/node_modules/spdx-satisfies": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/spdx-satisfies/-/spdx-satisfies-0.1.3.tgz", "integrity": "sha512-SdspT8Tv3RyHlH8pESd/rWEXII4Ho3sRr9KYeGAUbhVF+Z8loYdcMg8taog1551DMwHcdV/FK725lEANTehPhg==", "dev": true, + "license": "MIT", "dependencies": { "spdx-compare": "^0.1.2", "spdx-expression-parse": "^1.0.0" @@ -21726,13 +24413,53 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", "integrity": "sha512-xMXXC4eLKaIskvZm89nZi/MstVv1UtGk3nJz9BBKjreMVyoWisWFKfboH+kJS97+wUyBLpO/8ghV9M5VvrwwrA==", - "dev": true + "dev": true, + "license": "(MIT AND CC-BY-3.0)" + }, + "node_modules/oss-attribution-generator/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "license": "MIT", + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/oss-attribution-generator/node_modules/string-width/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/oss-attribution-generator/node_modules/string-width/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/oss-attribution-generator/node_modules/strip-ansi": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", "integrity": "sha512-DerhZL7j6i6/nEnVG0qViKXI0OKouvvpsAiaj7c+LfqZZZxdwZtv8+UiA/w4VUJpT8UzX0pR1dcHOii1GbmruQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^0.2.1" }, @@ -21748,6 +24475,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz", "integrity": "sha512-tdCZ28MnM7k7cJDJc7Eq80A9CsRFAAOZUy41npOZCs++qSjfIy7o5Rh46CBk+Dk5FbKJ33X3Tqg4YrV07N5RaA==", "dev": true, + "license": "MIT", "bin": { "supports-color": "cli.js" }, @@ -21760,6 +24488,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", "dev": true, + "license": "MIT", "dependencies": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1" @@ -21773,6 +24502,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -21782,6 +24512,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^2.0.0" }, @@ -21793,13 +24524,15 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/oss-attribution-generator/node_modules/yargs": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz", "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==", "dev": true, + "license": "MIT", "dependencies": { "camelcase": "^3.0.0", "cliui": "^3.2.0", @@ -21821,6 +24554,7 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz", "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==", "dev": true, + "license": "ISC", "dependencies": { "camelcase": "^3.0.0", "object.assign": "^4.1.0" @@ -21831,6 +24565,7 @@ "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", "dev": true, + "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.6", "object-keys": "^1.1.1", @@ -21847,20 +24582,22 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, + "license": "MIT", "dependencies": { - "yocto-queue": "^1.0.0" + "yocto-queue": "^0.1.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -21871,6 +24608,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^4.0.0" }, @@ -21881,10 +24619,40 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/p-locate/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate/node_modules/yocto-queue": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", + "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/p-retry": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz", "integrity": "sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==", + "license": "MIT", "dependencies": { "@types/retry": "0.12.2", "is-network-error": "^1.0.0", @@ -21902,6 +24670,7 @@ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -21911,6 +24680,7 @@ "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz", "integrity": "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==", "dev": true, + "license": "MIT", "dependencies": { "@tootallnate/quickjs-emscripten": "^0.23.0", "agent-base": "^7.1.2", @@ -21930,6 +24700,7 @@ "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", "dev": true, + "license": "MIT", "dependencies": { "degenerator": "^5.0.0", "netmask": "^2.0.2" @@ -21941,24 +24712,28 @@ "node_modules/package-json-from-dist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==" + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "license": "BlueOak-1.0.0" }, "node_modules/package-license": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/package-license/-/package-license-0.1.2.tgz", "integrity": "sha512-Q5zmx+M9ZJneMpYS6MlYL77gqeMYWuyErXMnQ/83WCztmYQD7Z0U9XGLvX9OKFFXwRj2NzdzlM0y9Jzcww2O1Q==", - "dev": true + "dev": true, + "license": "Apache2" }, "node_modules/pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "license": "(MIT AND Zlib)" }, "node_modules/param-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", "dev": true, + "license": "MIT", "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" @@ -21969,6 +24744,7 @@ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, + "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -21980,6 +24756,7 @@ "version": "5.1.9", "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.9.tgz", "integrity": "sha512-fIYNuZ/HastSb80baGOuPRo1O9cf4baWw5WsAp7dBuUzeTD/BoaG8sVTdlPFksBE2lF21dN+A1AnrpIjSWqHHg==", + "license": "ISC", "dependencies": { "asn1.js": "^4.10.1", "browserify-aes": "^1.2.0", @@ -21991,30 +24768,12 @@ "node": ">= 0.10" } }, - "node_modules/parse-asn1/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -22033,6 +24792,7 @@ "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -22043,13 +24803,15 @@ "node_modules/parse-srcset": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz", - "integrity": "sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==" + "integrity": "sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==", + "license": "MIT" }, "node_modules/parse5": { "version": "7.3.0", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", "dev": true, + "license": "MIT", "dependencies": { "entities": "^6.0.0" }, @@ -22062,6 +24824,7 @@ "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", "dev": true, + "license": "MIT", "dependencies": { "domhandler": "^5.0.3", "parse5": "^7.0.0" @@ -22075,6 +24838,7 @@ "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "domelementtype": "^2.3.0" }, @@ -22090,6 +24854,7 @@ "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", "dev": true, + "license": "MIT", "dependencies": { "parse5": "^7.0.0" }, @@ -22102,6 +24867,7 @@ "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.12" }, @@ -22113,6 +24879,7 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -22122,6 +24889,7 @@ "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", "dev": true, + "license": "MIT", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -22132,6 +24900,7 @@ "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==", "dev": true, + "license": "MIT", "dependencies": { "process": "^0.11.1", "util": "^0.10.3" @@ -22140,13 +24909,15 @@ "node_modules/path-browserify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "license": "MIT" }, "node_modules/path-exists": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } @@ -22155,6 +24926,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -22163,6 +24935,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", "engines": { "node": ">=8" } @@ -22171,12 +24944,14 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/path-scurry": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" @@ -22188,10 +24963,17 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, "node_modules/path-to-regexp": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz", "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==", + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/express" @@ -22202,6 +24984,7 @@ "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.1.2", "pify": "^2.0.0", @@ -22215,13 +24998,15 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/path/node_modules/util": { "version": "0.10.4", "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "2.0.3" } @@ -22230,13 +25015,15 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/pathval": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", "dev": true, + "license": "MIT", "engines": { "node": "*" } @@ -22245,6 +25032,7 @@ "version": "3.1.5", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.5.tgz", "integrity": "sha512-Q3CG/cYvCO1ye4QKkuH7EXxs3VC/rI1/trd+qX2+PolbaKG0H+bgcZzrTt96mMyRtejk+JMCiLUn3y29W8qmFQ==", + "license": "MIT", "dependencies": { "create-hash": "^1.2.0", "create-hmac": "^1.1.7", @@ -22257,42 +25045,27 @@ "node": ">= 0.10" } }, - "node_modules/pbkdf2/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" }, "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "peer": true, "engines": { - "node": ">=8.6" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/jonschlinkert" @@ -22303,6 +25076,7 @@ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -22312,6 +25086,7 @@ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -22321,6 +25096,7 @@ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", "dev": true, + "license": "MIT", "dependencies": { "pinkie": "^2.0.0" }, @@ -22333,6 +25109,7 @@ "resolved": "https://registry.npmjs.org/pino/-/pino-7.11.0.tgz", "integrity": "sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==", "dev": true, + "license": "MIT", "dependencies": { "atomic-sleep": "^1.0.0", "fast-redact": "^3.0.0", @@ -22355,6 +25132,7 @@ "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-0.5.0.tgz", "integrity": "sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==", "dev": true, + "license": "MIT", "dependencies": { "duplexify": "^4.1.2", "split2": "^4.0.0" @@ -22365,6 +25143,7 @@ "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-5.1.3.tgz", "integrity": "sha512-Zj+0TVdYKkAAIx9EUCL5e4TttwgsaFvJh2ceIMQeFCY8ak9tseEZQGSgpvyjEj1/iIVGIh5tdhkGEQWSMILKHA==", "dev": true, + "license": "MIT", "dependencies": { "@hapi/bourne": "^2.0.0", "args": "^5.0.1", @@ -22383,11 +25162,28 @@ "pino-pretty": "bin.js" } }, + "node_modules/pino-pretty/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/pino-pretty/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -22404,6 +25200,7 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -22418,6 +25215,7 @@ "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", "dev": true, + "license": "ISC", "dependencies": { "readable-stream": "^3.0.0" } @@ -22426,13 +25224,15 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-4.0.0.tgz", "integrity": "sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/pirates": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6" } @@ -22441,6 +25241,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.0.tgz", "integrity": "sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==", + "license": "MIT", "engines": { "node": ">=16.20.0" } @@ -22450,6 +25251,7 @@ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^4.0.0" }, @@ -22462,6 +25264,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -22475,6 +25278,7 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -22487,6 +25291,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -22502,6 +25307,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -22514,6 +25320,7 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -22523,6 +25330,7 @@ "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.1.tgz", "integrity": "sha512-yO5feByMzAp96LtP58wvPKSbaKAi/1C4kV9XpTctr6EepnP6F33RBNOiVrdz9BrPA98U2BMFsTNHo44TWcbQ2A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4.0" } @@ -22531,6 +25339,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -22553,6 +25362,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -22566,6 +25376,7 @@ "version": "5.3.6", "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.3.6.tgz", "integrity": "sha512-s8Aai8++QQGi4sSbs/M1Qku62PFK49Jm1CbgXklGz4nmHveDq0wzJkg7Na5QbnO1uNH8K7iqx2EQ/mV0MZEmOg==", + "license": "MIT", "dependencies": { "detect-libc": "^1.0.3", "expand-template": "^2.0.3", @@ -22595,6 +25406,7 @@ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8.0" } @@ -22604,6 +25416,8 @@ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", "dev": true, + "license": "MIT", + "peer": true, "bin": { "prettier": "bin/prettier.cjs" }, @@ -22619,6 +25433,7 @@ "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", "dev": true, + "license": "MIT", "dependencies": { "lodash": "^4.17.20", "renderkid": "^3.0.0" @@ -22629,6 +25444,7 @@ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, + "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", @@ -22638,23 +25454,12 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/pretty-hrtime": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -22664,6 +25469,7 @@ "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.3.0.tgz", "integrity": "sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==", "dev": true, + "license": "MIT", "dependencies": { "parse-ms": "^4.0.0" }, @@ -22679,6 +25485,7 @@ "resolved": "https://registry.npmjs.org/pretty-quick/-/pretty-quick-4.2.2.tgz", "integrity": "sha512-uAh96tBW1SsD34VhhDmWuEmqbpfYc/B3j++5MC/6b3Cb8Ow7NJsvKFhg0eoGu2xXX+o9RkahkTK6sUdd8E7g5w==", "dev": true, + "license": "MIT", "dependencies": { "@pkgr/core": "^0.2.7", "ignore": "^7.0.5", @@ -22701,29 +25508,19 @@ "prettier": "^3.0.0" } }, - "node_modules/pretty-quick/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/pretty-quick/node_modules/tinyexec": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/private": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -22732,6 +25529,7 @@ "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "license": "MIT", "engines": { "node": ">= 0.6.0" } @@ -22739,19 +25537,22 @@ "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" }, "node_modules/process-warning": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-1.0.0.tgz", "integrity": "sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.4.0" } @@ -22761,6 +25562,7 @@ "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", "dev": true, + "license": "MIT", "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" @@ -22774,6 +25576,7 @@ "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.4.tgz", "integrity": "sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==", "hasInstallScript": true, + "license": "BSD-3-Clause", "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", @@ -22796,6 +25599,7 @@ "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" @@ -22809,6 +25613,7 @@ "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz", "integrity": "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "^7.1.2", "debug": "^4.3.4", @@ -22828,6 +25633,7 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } @@ -22835,13 +25641,15 @@ "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" }, "node_modules/psl": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", "dev": true, + "license": "MIT", "dependencies": { "punycode": "^2.3.1" }, @@ -22853,6 +25661,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "license": "MIT", "dependencies": { "bn.js": "^4.1.0", "browserify-rsa": "^4.0.0", @@ -22865,12 +25674,14 @@ "node_modules/public-encrypt/node_modules/bn.js": { "version": "4.12.2", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", - "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==" + "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", + "license": "MIT" }, "node_modules/pump": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==", + "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -22880,6 +25691,8 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -22898,7 +25711,8 @@ "type": "opencollective", "url": "https://opencollective.com/fast-check" } - ] + ], + "license": "MIT" }, "node_modules/q": { "version": "1.5.1", @@ -22906,6 +25720,7 @@ "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", "deprecated": "You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.\n\n(For a CapTP with native promises, see @endo/eventual-send and @endo/captp)", "dev": true, + "license": "MIT", "engines": { "node": ">=0.6.0", "teleport": ">=0.2.0" @@ -22915,6 +25730,7 @@ "version": "6.14.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.1.0" }, @@ -22929,13 +25745,15 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/query-selector-shadow-dom/-/query-selector-shadow-dom-1.0.1.tgz", "integrity": "sha512-lT5yCqEBgfoMYpf3F2xQRK7zEr1rhIIZuceDK6+xRkJQ4NMbHTwXqk4NkwDwQMNqXgG9r9fyHnzwNVs6zV5KRw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/querystringify": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/queue-microtask": { "version": "1.2.3", @@ -22954,18 +25772,21 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/quick-format-unescaped": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/quick-lru": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -22977,12 +25798,14 @@ "version": "0.18.0", "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.18.0.tgz", "integrity": "sha512-bSgBktaZE0uDH5KmMpbizsxSNcw9MumqtouUVUrxHZSunm+WdDc/UlzwWFtgqMfngX7TZ12d9QsyWkYK7OoJSw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "license": "MIT", "dependencies": { "safe-buffer": "^5.1.0" } @@ -22991,6 +25814,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "license": "MIT", "dependencies": { "randombytes": "^2.0.5", "safe-buffer": "^5.1.0" @@ -23000,6 +25824,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -23008,12 +25833,14 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/raptor-args/-/raptor-args-1.0.3.tgz", "integrity": "sha512-dxcvspDOzYGTF4lonon711avlxvcX5s/XTqNNGSaz59cy4Tik+Z6jDFDSVGpAaOL71cc01kc3u3AdxgPIKG+RQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/raw-body": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.1.tgz", "integrity": "sha512-9G8cA+tuMS75+6G/TzW8OtLzmBDMo8p1JRxN5AZ+LAp8uxGA8V8GZm4GQ4/N5QNQEnLmg6SS7wyuSmbKepiKqA==", + "license": "MIT", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -23024,10 +25851,27 @@ "node": ">= 0.10" } }, + "node_modules/raw-body/node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/raw-body/node_modules/iconv-lite": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz", "integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==", + "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -23039,10 +25883,20 @@ "url": "https://opencollective.com/express" } }, + "node_modules/raw-body/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -23057,6 +25911,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "license": "MIT", "engines": { "node": ">=4.0.0" } @@ -23064,12 +25919,14 @@ "node_modules/rc/node_modules/ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" }, "node_modules/rc/node_modules/strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -23078,7 +25935,8 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/read-installed": { "version": "4.0.3", @@ -23086,6 +25944,7 @@ "integrity": "sha512-O03wg/IYuV/VtnK2h/KXEt9VIbMUFbk3ERG0Iu4FhLZw0EP0T9znqrYDGn6ncbEsXUFaUjiVAWXHzxwt3lhRPQ==", "deprecated": "This package is no longer supported.", "dev": true, + "license": "ISC", "dependencies": { "debuglog": "^1.0.1", "read-package-json": "^2.0.0", @@ -23103,6 +25962,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver" } @@ -23113,6 +25973,7 @@ "integrity": "sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==", "deprecated": "This package is no longer supported. Please use @npmcli/package-json instead.", "dev": true, + "license": "ISC", "dependencies": { "glob": "^7.1.1", "json-parse-even-better-errors": "^2.3.0", @@ -23120,11 +25981,58 @@ "npm-normalize-package-bin": "^1.0.0" } }, + "node_modules/read-package-json/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/read-package-json/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/read-package-json/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", "dev": true, + "license": "MIT", "dependencies": { "load-json-file": "^1.0.0", "normalize-package-data": "^2.3.2", @@ -23139,6 +26047,7 @@ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^1.0.0", "read-pkg": "^1.0.0" @@ -23152,6 +26061,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", "dev": true, + "license": "MIT", "dependencies": { "path-exists": "^2.0.0", "pinkie-promise": "^2.0.0" @@ -23165,6 +26075,7 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", "dev": true, + "license": "MIT", "dependencies": { "pinkie-promise": "^2.0.0" }, @@ -23173,23 +26084,26 @@ } }, "node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "license": "MIT", "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/readdir-glob": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", + "license": "Apache-2.0", "dependencies": { "minimatch": "^5.1.0" } @@ -23198,6 +26112,7 @@ "version": "5.1.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -23211,6 +26126,7 @@ "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", "deprecated": "This functionality has been moved to @npmcli/fs", "dev": true, + "license": "ISC", "dependencies": { "debuglog": "^1.0.1", "dezalgo": "^1.0.0", @@ -23222,6 +26138,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "license": "MIT", "engines": { "node": ">= 14.18.0" }, @@ -23235,6 +26152,7 @@ "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.1.0.tgz", "integrity": "sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 12.13.0" } @@ -23244,6 +26162,7 @@ "resolved": "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz", "integrity": "sha512-+nixG+3NugceyR8O1bLU45qs84JgI3+8EauyRZafLgC9XbdAOIVgwV1Pe2da0YzGo62KzWoZwUpVEQf6qNAXWA==", "dev": true, + "license": "MIT", "dependencies": { "ast-types": "0.9.6", "esprima": "~3.1.0", @@ -23259,6 +26178,7 @@ "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.6.tgz", "integrity": "sha512-qEdtR2UH78yyHX/AUNfXmJTlM48XoFZKBdwi1nzkI1mJL21cmbu0cvjxjpkXJ5NENMq42H+hNs8VLJcqXLerBQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -23268,6 +26188,7 @@ "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", "integrity": "sha512-AWwVMNxwhN8+NIPQzAQZCm7RkLC4RbM3B1OobMuyp3i+w73X57KCKaVIxaRZb+DYCojq7rspo+fmuQfAboyhFg==", "dev": true, + "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -23281,6 +26202,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -23302,6 +26224,7 @@ "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", "dev": true, + "license": "MIT", "dependencies": { "minimatch": "^3.0.5" }, @@ -23314,6 +26237,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -23324,6 +26248,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -23336,6 +26261,7 @@ "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", @@ -23358,6 +26284,7 @@ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", @@ -23378,6 +26305,7 @@ "resolved": "https://registry.npmjs.org/registry-js/-/registry-js-1.16.1.tgz", "integrity": "sha512-pQ2kD36lh+YNtpaXm6HCCb0QZtV/zQEeKnkfEIj5FDSpF/oFts7pwizEUkWSvP8IbGb4A4a5iBhhS9eUearMmQ==", "hasInstallScript": true, + "license": "MIT", "dependencies": { "node-addon-api": "^3.2.1", "prebuild-install": "^5.3.5" @@ -23388,6 +26316,7 @@ "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.10" } @@ -23397,6 +26326,7 @@ "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", "dev": true, + "license": "MIT", "dependencies": { "css-select": "^4.1.3", "dom-converter": "^0.2.0", @@ -23408,12 +26338,14 @@ "node_modules/request-light": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/request-light/-/request-light-0.8.0.tgz", - "integrity": "sha512-bH6E4PMmsEXYrLX6Kr1vu+xI3HproB1vECAwaPSJeroLE1kpWE3HR27uB4icx+6YORu1ajqBJXxuedv8ZQg5Lw==" + "integrity": "sha512-bH6E4PMmsEXYrLX6Kr1vu+xI3HproB1vECAwaPSJeroLE1kpWE3HR27uB4icx+6YORu1ajqBJXxuedv8ZQg5Lw==", + "license": "MIT" }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -23422,6 +26354,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -23430,20 +26363,23 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "license": "MIT" }, "node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", "dev": true, + "license": "MIT", "dependencies": { - "is-core-module": "^2.16.0", + "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -23460,13 +26396,15 @@ "node_modules/resolve-alpn": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "license": "MIT" }, "node_modules/resolve-cwd": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, + "license": "MIT", "dependencies": { "resolve-from": "^5.0.0" }, @@ -23479,6 +26417,7 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -23488,6 +26427,7 @@ "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } @@ -23497,6 +26437,7 @@ "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" } @@ -23505,6 +26446,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "license": "MIT", "dependencies": { "lowercase-keys": "^2.0.0" }, @@ -23517,6 +26459,7 @@ "resolved": "https://registry.npmjs.org/resq/-/resq-1.11.0.tgz", "integrity": "sha512-G10EBz+zAAy3zUd/CDoBbXRL6ia9kOo3xRHrMDsHljI0GDkhYlyjwoCx5+3eCC4swi1uCoZQhskuJkj7Gp57Bw==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^2.0.1" } @@ -23525,13 +26468,15 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", "integrity": "sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/ret": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/ret/-/ret-0.5.0.tgz", "integrity": "sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" } @@ -23540,6 +26485,7 @@ "version": "0.13.1", "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "license": "MIT", "engines": { "node": ">= 4" } @@ -23548,6 +26494,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -23557,13 +26504,15 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/rgb2hex": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/rgb2hex/-/rgb2hex-0.2.5.tgz", "integrity": "sha512-22MOP1Rh7sAo1BZpDG6R5RFYzR2lYEgwq7HEmyW2qcsOqR2lQKmn+O//xV3YG/0rrhMC6KVX2hU+ZXuaw9a5bw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/rimraf": { "version": "3.0.2", @@ -23571,6 +26520,7 @@ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -23581,10 +26531,57 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rimraf/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/ripemd160": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.3.tgz", "integrity": "sha512-5Di9UC0+8h1L6ZD2d7awM7E/T4uA1fJRlx6zk/NvdCCVEoAnFqvHmCuNeIKoCeIixBX/q8uM+6ycDvF8woqosA==", + "license": "MIT", "dependencies": { "hash-base": "^3.1.2", "inherits": "^2.0.4" @@ -23597,6 +26594,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.2.tgz", "integrity": "sha512-Bb33KbowVTIj5s7Ked1OsqHUeCpz//tPwR+E2zJgJKo9Z5XolZ9b6bdUgjmYlwnWhoOQKoTd1TYToZGn5mAYOg==", + "license": "MIT", "dependencies": { "inherits": "^2.0.4", "readable-stream": "^2.3.8", @@ -23607,29 +26605,53 @@ "node": ">= 0.8" } }, - "node_modules/ripemd160/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "node_modules/ripemd160/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/ripemd160/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/ripemd160/node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/ripemd160/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/ripemd160/node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" }, "node_modules/router": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "license": "MIT", "dependencies": { "debug": "^4.4.0", "depd": "^2.0.0", @@ -23645,12 +26667,14 @@ "version": "0.7.1", "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz", "integrity": "sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/run-applescript": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", + "license": "MIT", "engines": { "node": ">=18" }, @@ -23663,6 +26687,7 @@ "resolved": "https://registry.npmjs.org/run-async/-/run-async-4.0.6.tgz", "integrity": "sha512-IoDlSLTs3Yq593mb3ZoKWKXMNu3UpObxhgA/Xuid5p4bbfi2jdY1Hj0m1K+0/tEuQTxIGMhQDqGjKb7RuxGpAQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -23685,6 +26710,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } @@ -23693,6 +26719,7 @@ "version": "7.8.2", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.1.0" } @@ -23702,6 +26729,7 @@ "resolved": "https://registry.npmjs.org/safaridriver/-/safaridriver-1.0.0.tgz", "integrity": "sha512-J92IFbskyo7OYB3Dt4aTdyhag1GlInrfbPCmMteb7aBK7PwlnGz1HI0+oyNN97j7pV9DqUAVoVgkNRMrfY47mQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18.0.0" } @@ -23711,6 +26739,7 @@ "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", @@ -23725,22 +26754,32 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safe-array-concat/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" }, "node_modules/safe-push-apply": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "isarray": "^2.0.5" @@ -23752,17 +26791,12 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safe-push-apply/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, "node_modules/safe-regex-test": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -23790,6 +26824,7 @@ "url": "https://opencollective.com/fastify" } ], + "license": "MIT", "dependencies": { "ret": "~0.5.0" } @@ -23799,6 +26834,7 @@ "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" } @@ -23806,12 +26842,14 @@ "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" }, "node_modules/sanitize-html": { "version": "2.17.0", "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-2.17.0.tgz", "integrity": "sha512-dLAADUSS8rBwhaevT12yCezvioCA+bmUTPH/u57xKPT8d++voeYE6HeluA/bPbQ15TwDBG2ii+QZIEmYx8VdxA==", + "license": "MIT", "dependencies": { "deepmerge": "^4.2.2", "escape-string-regexp": "^4.0.0", @@ -23825,6 +26863,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "license": "MIT", "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.2", @@ -23838,6 +26877,7 @@ "version": "5.0.3", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", "dependencies": { "domelementtype": "^2.3.0" }, @@ -23852,6 +26892,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "license": "BSD-2-Clause", "dependencies": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", @@ -23872,6 +26913,7 @@ "url": "https://github.com/sponsors/fb55" } ], + "license": "MIT", "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", @@ -23879,16 +26921,27 @@ "entities": "^4.4.0" } }, + "node_modules/sanitize-html/node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/sax": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", - "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==" + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.3.tgz", + "integrity": "sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==", + "license": "BlueOak-1.0.0" }, "node_modules/saxes": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", "dev": true, + "license": "ISC", "dependencies": { "xmlchars": "^2.2.0" }, @@ -23900,6 +26953,7 @@ "version": "4.3.3", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", + "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", @@ -23914,15 +26968,34 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/schema-utils/node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, "node_modules/select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==" + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "license": "MIT" }, "node_modules/selfsigned": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "license": "MIT", "dependencies": { "@types/node-forge": "^1.3.0", "node-forge": "^1" @@ -23932,20 +27005,20 @@ } }, "node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" } }, "node_modules/send": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", + "license": "MIT", "dependencies": { "debug": "^4.3.5", "encodeurl": "^2.0.0", @@ -23963,22 +27036,12 @@ "node": ">= 18" } }, - "node_modules/send/node_modules/mime-types": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", - "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", - "dependencies": { - "mime-db": "^1.54.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/serialize-error": { "version": "12.0.0", "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-12.0.0.tgz", "integrity": "sha512-ZYkZLAvKTKQXWuh5XpBw7CdbSzagarX39WyZ2H07CDLC5/KfsRGlIXV8d4+tfqX1M7916mRqR1QfNHSij+c9Pw==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^4.31.0" }, @@ -23994,6 +27057,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=16" }, @@ -24006,6 +27070,7 @@ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "devOptional": true, + "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } @@ -24014,6 +27079,7 @@ "version": "1.9.1", "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "license": "MIT", "dependencies": { "accepts": "~1.3.4", "batch": "0.6.1", @@ -24031,6 +27097,7 @@ "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" @@ -24043,6 +27110,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -24051,6 +27119,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -24059,6 +27128,7 @@ "version": "1.6.3", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "license": "MIT", "dependencies": { "depd": "~1.1.2", "inherits": "2.0.3", @@ -24072,17 +27142,41 @@ "node_modules/serve-index/node_modules/inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "license": "ISC" + }, + "node_modules/serve-index/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } }, "node_modules/serve-index/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" }, "node_modules/serve-index/node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -24090,12 +27184,14 @@ "node_modules/serve-index/node_modules/setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "license": "ISC" }, "node_modules/serve-index/node_modules/statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -24104,6 +27200,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz", "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", + "license": "MIT", "dependencies": { "encodeurl": "^2.0.0", "escape-html": "^1.0.3", @@ -24117,12 +27214,14 @@ "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "license": "ISC" }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -24140,6 +27239,7 @@ "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", "dev": true, + "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -24155,6 +27255,7 @@ "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", "dev": true, + "license": "MIT", "dependencies": { "dunder-proto": "^1.0.1", "es-errors": "^1.3.0", @@ -24167,17 +27268,20 @@ "node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "license": "MIT" }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" }, "node_modules/sha.js": { "version": "2.4.12", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.12.tgz", "integrity": "sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==", + "license": "(MIT AND BSD-3-Clause)", "dependencies": { "inherits": "^2.0.4", "safe-buffer": "^5.2.1", @@ -24193,30 +27297,12 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/sha.js/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/shallow-clone": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, + "license": "MIT", "dependencies": { "kind-of": "^6.0.2" }, @@ -24228,6 +27314,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -24239,6 +27326,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", "engines": { "node": ">=8" } @@ -24247,6 +27335,7 @@ "version": "1.8.3", "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -24259,6 +27348,7 @@ "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "glob": "^7.0.0", "interpret": "^1.0.0", @@ -24271,16 +27361,64 @@ "node": ">=4" } }, + "node_modules/shelljs/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/shelljs/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/shelljs/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/shlex": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/shlex/-/shlex-2.1.2.tgz", - "integrity": "sha512-Nz6gtibMVgYeMEhUjp2KuwAgqaJA1K155dU/HuDaEJUGgnmYfVtVZah+uerVWdH8UGnyahhDCgABbYTbs254+w==" + "integrity": "sha512-Nz6gtibMVgYeMEhUjp2KuwAgqaJA1K155dU/HuDaEJUGgnmYfVtVZah+uerVWdH8UGnyahhDCgABbYTbs254+w==", + "license": "MIT" }, "node_modules/shx": { "version": "0.3.4", "resolved": "https://registry.npmjs.org/shx/-/shx-0.3.4.tgz", "integrity": "sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g==", "dev": true, + "license": "MIT", "dependencies": { "minimist": "^1.2.3", "shelljs": "^0.8.5" @@ -24296,6 +27434,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", @@ -24314,6 +27453,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3" @@ -24329,6 +27469,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -24346,6 +27487,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -24364,6 +27506,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", "engines": { "node": ">=14" }, @@ -24388,23 +27531,50 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/simple-get": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", + "license": "MIT", "dependencies": { "decompress-response": "^4.2.0", "once": "^1.3.1", "simple-concat": "^1.0.0" } }, + "node_modules/simple-get/node_modules/decompress-response": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", + "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", + "license": "MIT", + "dependencies": { + "mimic-response": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/simple-get/node_modules/mimic-response": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", + "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/simple-invariant": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/simple-invariant/-/simple-invariant-2.0.1.tgz", "integrity": "sha512-1sbhsxqI+I2tqlmjbz99GXNmZtr6tKIyEgGGnJw/MKGblalqk/XoOYYFJlBzTKZCxx8kLaD3FD5s9BEEjx5Pyg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" } @@ -24414,6 +27584,7 @@ "resolved": "https://registry.npmjs.org/sinon/-/sinon-19.0.5.tgz", "integrity": "sha512-r15s9/s+ub/d4bxNXqIUmwp6imVSdTorIRaxoecYjqTVLZ8RuoXr/4EDGwIBo6Waxn7f2gnURX9zuhAfCwaF6Q==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^3.0.1", "@sinonjs/fake-timers": "^13.0.5", @@ -24432,40 +27603,41 @@ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^3.0.1" } }, - "node_modules/sinon/node_modules/diff": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz", - "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, "node_modules/sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/skema": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/skema/-/skema-1.0.2.tgz", "integrity": "sha512-5LWfF2RSW2B3xfOaY6j49X8aNwsnj9cRVrM5QMF7it+cZvpv5ufiOUT13ps2U52sIbAzs11bdRP6mi5qyg75VQ==", + "license": "MIT", "dependencies": { "async": "^0.9.0", "make-array": "^0.1.2", "mix2": "^1.0.0" } }, + "node_modules/skema/node_modules/async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha512-l6ToIJIotphWahxxHyzK9bnLR6kM4jJIIgLShZeqLY7iboHoGkdgFl7W2/Ivi4SkMJYGKqW8vSuk0uKUj6qsSw==", + "license": "MIT" + }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -24475,6 +27647,7 @@ "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", "integrity": "sha512-NwrtjCg+lZoqhFU8fOwl4ay2ei8PaqCBOUV3/ektPY9trO1yQ1oXEfmHAhKArUVUr/hOHvy5f6AdP17dCM0zMw==", "dev": true, + "license": "ISC", "engines": { "node": "*" } @@ -24484,6 +27657,7 @@ "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" @@ -24493,6 +27667,7 @@ "version": "0.3.24", "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "license": "MIT", "dependencies": { "faye-websocket": "^0.11.3", "uuid": "^8.3.2", @@ -24503,6 +27678,7 @@ "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } @@ -24512,6 +27688,7 @@ "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", "dev": true, + "license": "MIT", "dependencies": { "ip-address": "^10.0.1", "smart-buffer": "^4.2.0" @@ -24526,6 +27703,7 @@ "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "^7.1.2", "debug": "^4.3.4", @@ -24540,6 +27718,7 @@ "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-2.8.0.tgz", "integrity": "sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==", "dev": true, + "license": "MIT", "dependencies": { "atomic-sleep": "^1.0.0" } @@ -24549,6 +27728,7 @@ "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==", "dev": true, + "license": "MIT", "dependencies": { "is-plain-obj": "^1.0.0" }, @@ -24561,6 +27741,7 @@ "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz", "integrity": "sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==", "dev": true, + "license": "MIT", "dependencies": { "sort-keys": "^1.0.0" }, @@ -24573,6 +27754,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "devOptional": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -24581,15 +27763,17 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "devOptional": true, + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -24609,7 +27793,8 @@ "type": "github", "url": "https://github.com/hejny/spacetrim/blob/main/README.md#%EF%B8%8F-contributing" } - ] + ], + "license": "Apache-2.0" }, "node_modules/spdx": { "version": "0.5.2", @@ -24617,6 +27802,7 @@ "integrity": "sha512-WQbfCQT2uKLsDllnO9ItpcGUiiF1O/ZvBGCyqFZRg122HgiZubpwpZiM7BkmH19HC3XR3Z+DFMGJNzXSPebG8A==", "deprecated": "see spdx-expression-parse, spdx-satisfies, &c.", "dev": true, + "license": "MIT", "dependencies": { "spdx-exceptions": "^1.0.0", "spdx-license-ids": "^1.0.0" @@ -24627,6 +27813,7 @@ "resolved": "https://registry.npmjs.org/spdx-compare/-/spdx-compare-1.0.0.tgz", "integrity": "sha512-C1mDZOX0hnu0ep9dfmuoi03+eOdDoz2yvK79RxbcrVEG1NO1Ph35yW102DHWKN4pk80nwCgeMmSY5L25VE4D9A==", "dev": true, + "license": "MIT", "dependencies": { "array-find-index": "^1.0.2", "spdx-expression-parse": "^3.0.0", @@ -24638,6 +27825,7 @@ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -24647,13 +27835,15 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", - "dev": true + "dev": true, + "license": "CC-BY-3.0" }, "node_modules/spdx-expression-parse": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, + "license": "MIT", "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -24663,13 +27853,15 @@ "version": "3.0.22", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz", "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==", - "dev": true + "dev": true, + "license": "CC0-1.0" }, "node_modules/spdx-licenses": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/spdx-licenses/-/spdx-licenses-0.0.3.tgz", "integrity": "sha512-T9bEF+Q2ugCCyFp3c9t5ROjLFGTNxDJBobjK5muQlEM5ATKRDwjprTOwpwbrc/+WcBzHvPck/roTMfC9YHWbCQ==", "dev": true, + "license": "MIT", "dependencies": { "debug": "0.7.4", "is2": "0.0.11" @@ -24688,13 +27880,15 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/spdx-ranges/-/spdx-ranges-2.1.1.tgz", "integrity": "sha512-mcdpQFV7UDAgLpXEE/jOMqvK4LBoO0uTQg0uvXUewmEFhpiZx5yJSZITHB8w1ZahKdhfZqP5GPEOKLyEq5p8XA==", - "dev": true + "dev": true, + "license": "(MIT AND CC-BY-3.0)" }, "node_modules/spdx-satisfies": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/spdx-satisfies/-/spdx-satisfies-4.0.1.tgz", "integrity": "sha512-WVzZ/cXAzoNmjCWiEluEA3BjHp5tiUmmhn9MK+X0tBbR9sOqtC6UQwmgCNrAIZvNlMuBUYAaHYfb2oqlF9SwKA==", "dev": true, + "license": "MIT", "dependencies": { "spdx-compare": "^1.0.0", "spdx-expression-parse": "^3.0.0", @@ -24705,18 +27899,21 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-1.0.5.tgz", "integrity": "sha512-gJ2SzvQuUNno1/G6sDRHP2CN+Hfi+weHY9E+kTvB8zxH/CTkhazfYazuZcwhXtwWbDKl5CAJ1fBbqAgpkd8CCQ==", - "dev": true + "dev": true, + "license": "CC-BY-3.0" }, "node_modules/spdx/node_modules/spdx-license-ids": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", "integrity": "sha512-qIBFhkh6ILCWNeWEe3ODFPKDYhPJrZpqdNCI2Z+w9lNdH5hoVEkfRLLbRfoIi8fb4xRYmpEOaaMH4G2pwYp/iQ==", - "dev": true + "dev": true, + "license": "Unlicense" }, "node_modules/spdy": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "license": "MIT", "dependencies": { "debug": "^4.1.0", "handle-thing": "^2.0.0", @@ -24732,6 +27929,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "license": "MIT", "dependencies": { "debug": "^4.1.0", "detect-node": "^2.0.4", @@ -24745,6 +27943,7 @@ "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -24758,6 +27957,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "license": "MIT", "dependencies": { "through": "2" }, @@ -24770,6 +27970,7 @@ "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", "dev": true, + "license": "ISC", "engines": { "node": ">= 10.x" } @@ -24777,13 +27978,15 @@ "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "license": "BSD-3-Clause" }, "node_modules/stack-utils": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dev": true, + "license": "MIT", "dependencies": { "escape-string-regexp": "^2.0.0" }, @@ -24796,6 +27999,7 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -24804,6 +28008,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -24813,6 +28018,7 @@ "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "internal-slot": "^1.1.0" @@ -24825,6 +28031,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", + "license": "MIT", "dependencies": { "inherits": "~2.0.4", "readable-stream": "^3.5.0" @@ -24834,6 +28041,7 @@ "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -24848,6 +28056,7 @@ "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-3.0.3.tgz", "integrity": "sha512-pqMqwQCso0PBJt2PQmDO0cFj0lyqmiwOMiMSkVtRokl7e+ZTRYgDHKnuZNbqjiJXgsg4nuqtD/zxuo9KqTp0Yw==", "dev": true, + "license": "Unlicense", "engines": { "node": ">= 0.10.0" } @@ -24856,6 +28065,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", + "license": "MIT", "dependencies": { "builtin-status-codes": "^3.0.0", "inherits": "^2.0.4", @@ -24867,6 +28077,7 @@ "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -24880,12 +28091,14 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/streamx": { "version": "2.23.0", "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.23.0.tgz", "integrity": "sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==", + "license": "MIT", "dependencies": { "events-universal": "^1.0.0", "fast-fifo": "^1.3.2", @@ -24893,11 +28106,12 @@ } }, "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", "dependencies": { - "safe-buffer": "~5.1.0" + "safe-buffer": "~5.2.0" } }, "node_modules/string-length": { @@ -24905,6 +28119,7 @@ "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", "dev": true, + "license": "MIT", "dependencies": { "char-regex": "^1.0.2", "strip-ansi": "^6.0.0" @@ -24914,16 +28129,20 @@ } }, "node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "license": "MIT", "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/string-width-cjs": { @@ -24931,6 +28150,7 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -24940,31 +28160,37 @@ "node": ">=8" } }, - "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "engines": { - "node": ">=8" - } + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" }, "node_modules/string-width/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, "node_modules/string-width/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, "node_modules/string.prototype.trim": { @@ -24972,6 +28198,7 @@ "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", @@ -24993,6 +28220,7 @@ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", @@ -25011,6 +28239,7 @@ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -25027,6 +28256,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -25039,6 +28269,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -25047,24 +28278,23 @@ } }, "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/strip-final-newline": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", - "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "license": "MIT", + "engines": { + "node": ">=6" } }, "node_modules/strip-json-comments": { @@ -25072,6 +28302,7 @@ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -25088,12 +28319,14 @@ "type": "github", "url": "https://github.com/sponsors/NaturalIntelligence" } - ] + ], + "license": "MIT" }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -25106,6 +28339,7 @@ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -25117,13 +28351,15 @@ "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/taim": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/taim/-/taim-1.1.0.tgz", "integrity": "sha512-NvqllOkhHKSG6llRKhrRLIzXHnbfyfTdcObDGIEqea9098ierzuowZyYAuHHf+JbpOhfKSisbe2bIVuA2nEaRA==", "dev": true, + "license": "ISC", "dependencies": { "chalk": "^1.1.1", "pretty-hrtime": "^1.0.0", @@ -25135,6 +28371,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -25144,6 +28381,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -25153,6 +28391,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^2.2.1", "escape-string-regexp": "^1.0.2", @@ -25169,6 +28408,7 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.0" } @@ -25178,6 +28418,7 @@ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^2.0.0" }, @@ -25190,6 +28431,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^2.0.0" }, @@ -25202,6 +28444,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.0" } @@ -25211,6 +28454,7 @@ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", "devOptional": true, + "license": "MIT", "engines": { "node": ">=6" }, @@ -25223,6 +28467,7 @@ "version": "2.1.4", "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz", "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==", + "license": "MIT", "dependencies": { "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", @@ -25230,10 +28475,25 @@ "tar-stream": "^2.1.4" } }, - "node_modules/tar-stream": { + "node_modules/tar-fs/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/tar-fs/node_modules/tar-stream": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "license": "MIT", "dependencies": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", @@ -25245,24 +28505,23 @@ "node": ">=6" } }, - "node_modules/tar-stream/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "node_modules/tar-stream": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", + "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" } }, "node_modules/terser": { - "version": "5.44.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.0.tgz", - "integrity": "sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==", + "version": "5.44.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.1.tgz", + "integrity": "sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==", "devOptional": true, + "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.15.0", @@ -25281,6 +28540,7 @@ "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", "devOptional": true, + "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", @@ -25310,14 +28570,46 @@ } } }, - "node_modules/terser-webpack-plugin/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "node_modules/terser-webpack-plugin/node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "devOptional": true, + "license": "MIT", "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/terser/node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, "node_modules/test-exclude": { @@ -25325,6 +28617,7 @@ "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz", "integrity": "sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==", "dev": true, + "license": "ISC", "dependencies": { "@istanbuljs/schema": "^0.1.2", "glob": "^10.4.1", @@ -25334,30 +28627,11 @@ "node": ">=18" } }, - "node_modules/test-exclude/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/text-decoder": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz", "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==", + "license": "Apache-2.0", "dependencies": { "b4a": "^1.6.4" } @@ -25367,6 +28641,7 @@ "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-2.4.0.tgz", "integrity": "sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -25378,12 +28653,14 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/thingies": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/thingies/-/thingies-2.5.0.tgz", "integrity": "sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw==", + "license": "MIT", "engines": { "node": ">=10.18" }, @@ -25400,6 +28677,7 @@ "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-0.15.2.tgz", "integrity": "sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==", "dev": true, + "license": "MIT", "dependencies": { "real-require": "^0.1.0" } @@ -25407,33 +28685,77 @@ "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "license": "MIT" }, "node_modules/through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "license": "MIT", "dependencies": { "readable-stream": "~2.3.6", "xtend": "~4.0.1" } }, + "node_modules/through2/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/through2/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/through2/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/through2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/thunky": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "license": "MIT" }, "node_modules/tinyexec": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.1.tgz", - "integrity": "sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==", - "dev": true + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz", + "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } }, "node_modules/tinyrainbow": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-1.2.0.tgz", "integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.0.0" } @@ -25442,12 +28764,14 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/to-buffer": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.2.tgz", "integrity": "sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==", + "license": "MIT", "dependencies": { "isarray": "^2.0.5", "safe-buffer": "^5.2.1", @@ -25457,34 +28781,11 @@ "node": ">= 0.4" } }, - "node_modules/to-buffer/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" - }, - "node_modules/to-buffer/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -25496,6 +28797,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", "engines": { "node": ">=0.6" } @@ -25505,6 +28807,7 @@ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "psl": "^1.1.33", "punycode": "^2.1.1", @@ -25520,6 +28823,7 @@ "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz", "integrity": "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==", "dev": true, + "license": "MIT", "dependencies": { "punycode": "^2.3.1" }, @@ -25531,6 +28835,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.1.0.tgz", "integrity": "sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==", + "license": "Apache-2.0", "engines": { "node": ">=10.0" }, @@ -25547,6 +28852,7 @@ "resolved": "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz", "integrity": "sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.6" } @@ -25556,6 +28862,7 @@ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18.12" }, @@ -25564,10 +28871,11 @@ } }, "node_modules/ts-jest": { - "version": "29.4.4", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.4.tgz", - "integrity": "sha512-ccVcRABct5ZELCT5U0+DZwkXMCcOCLi2doHRrKy1nK/s7J7bch6TzJMsrY09WxgUUIP/ITfmcDS8D2yl63rnXw==", + "version": "29.4.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.5.tgz", + "integrity": "sha512-HO3GyiWn2qvTQA4kTgjDcXiMwYQt68a1Y8+JuLRVpdIzm+UOLSHgl/XqR4c6nzJkq5rOkjc02O2I7P7l/Yof0Q==", "dev": true, + "license": "MIT", "dependencies": { "bs-logger": "^0.2.6", "fast-json-stable-stringify": "^2.1.0", @@ -25575,7 +28883,7 @@ "json5": "^2.2.3", "lodash.memoize": "^4.1.2", "make-error": "^1.3.6", - "semver": "^7.7.2", + "semver": "^7.7.3", "type-fest": "^4.41.0", "yargs-parser": "^21.1.1" }, @@ -25615,11 +28923,25 @@ } } }, + "node_modules/ts-jest/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/ts-jest/node_modules/type-fest": { "version": "4.41.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=16" }, @@ -25632,6 +28954,7 @@ "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.4.tgz", "integrity": "sha512-nCz0rEwunlTZiy6rXFByQU1kVVpCIgUpc/psFiKVrUwrizdnIbRFu8w7bxhUF0X613DYwT4XzrZHpVyMe758hQ==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.1.0", "enhanced-resolve": "^5.0.0", @@ -25647,11 +28970,28 @@ "webpack": "^5.0.0" } }, + "node_modules/ts-loader/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/ts-loader/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -25663,11 +29003,25 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/ts-loader/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/ts-loader/node_modules/source-map": { "version": "0.7.6", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">= 12" } @@ -25677,28 +29031,54 @@ "resolved": "https://registry.npmjs.org/ts-lsp-client/-/ts-lsp-client-1.0.3.tgz", "integrity": "sha512-0ItrsqvNUM9KNFGbeT1N8jSi9gvasGOvxJUXjGf4P2TX0w250AUWLeRStaSrQbYcFDshDtE5d4BshUmYwodDgw==", "dev": true, + "license": "MIT", "dependencies": { "json-rpc-2.0": "^1.7.0", "pino": "^7.0.5", "pino-pretty": "^5.1.3", "tslib": "~2.6.2" }, - "engines": { - "node": ">= 14.21", - "pnpm": ">= 6.0.0" + "engines": { + "node": ">= 14.21", + "pnpm": ">= 6.0.0" + } + }, + "node_modules/ts-lsp-client/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "dev": true, + "license": "0BSD" + }, + "node_modules/ts-mocha": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/ts-mocha/-/ts-mocha-11.1.0.tgz", + "integrity": "sha512-yT7FfzNRCu8ZKkYvAOiH01xNma/vLq6Vit7yINKYFNVP8e5UyrYXSOMIipERTpzVKJQ4Qcos5bQo1tNERNZevQ==", + "dev": true, + "license": "MIT", + "bin": { + "ts-mocha": "bin/ts-mocha" + }, + "engines": { + "node": ">= 6.X.X" + }, + "peerDependencies": { + "mocha": "^3.X.X || ^4.X.X || ^5.X.X || ^6.X.X || ^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X || ^11.X.X", + "ts-node": "^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X", + "tsconfig-paths": "^4.X.X" + }, + "peerDependenciesMeta": { + "tsconfig-paths": { + "optional": true + } } }, - "node_modules/ts-lsp-client/node_modules/tslib": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", - "dev": true - }, "node_modules/ts-node": { "version": "10.9.2", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "dev": true, + "license": "MIT", "dependencies": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", @@ -25737,11 +29117,22 @@ } } }, + "node_modules/ts-node/node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/ts-sinon": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/ts-sinon/-/ts-sinon-2.0.2.tgz", "integrity": "sha512-Eh6rXPQruACHPn+/e5HsIMaHZa17tGP/scGjUeW5eJ/Levn8hBV6zSP/6QkEDUP7wLkTyY0yeYikjpTzgC9Gew==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "^14.6.1", "@types/sinon": "^9.0.5", @@ -25754,6 +29145,7 @@ "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "type-detect": "4.0.8" } @@ -25763,6 +29155,7 @@ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^1.7.0" } @@ -25772,6 +29165,7 @@ "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-5.3.1.tgz", "integrity": "sha512-1Hc0b1TtyfBu8ixF/tpfSHTVWKwCBLY4QJbkgnE7HcwyvT2xArDxb4K7dMgqRm3szI+LJbzmW/s4xxEhv6hwDg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^1.6.0", "lodash.get": "^4.4.2", @@ -25782,34 +29176,49 @@ "version": "14.18.63", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.63.tgz", "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/ts-sinon/node_modules/@types/sinon": { "version": "9.0.11", "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-9.0.11.tgz", "integrity": "sha512-PwP4UY33SeeVKodNE37ZlOsR9cReypbMJOhZ7BVE0lB+Hix3efCOxiJWiE5Ia+yL9Cn2Ch72EjFTRze8RZsNtg==", "dev": true, + "license": "MIT", "dependencies": { "@types/sinonjs__fake-timers": "*" } }, + "node_modules/ts-sinon/node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/ts-sinon/node_modules/isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/ts-sinon/node_modules/just-extend": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/ts-sinon/node_modules/nise": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/nise/-/nise-4.1.0.tgz", "integrity": "sha512-eQMEmGN/8arp0xsvGoQ+B1qvSkR73B1nWSCh7nOt5neMCtwcQVYQGdzQMhcNscktTsWB54xnlSQFzOAPJD8nXA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^1.7.0", "@sinonjs/fake-timers": "^6.0.0", @@ -25823,6 +29232,7 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz", "integrity": "sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==", "dev": true, + "license": "MIT", "dependencies": { "isarray": "0.0.1" } @@ -25833,6 +29243,7 @@ "integrity": "sha512-zljcULZQsJxVra28qIAL6ow1Z9tpattkCTEJR4RBP3TGc00FcttsP5pK284Nas5WjMZU5Yzy3kAIp3B3KRf5Yg==", "deprecated": "16.1.1", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^1.8.1", "@sinonjs/fake-timers": "^6.0.1", @@ -25851,44 +29262,51 @@ "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", "dev": true, + "license": "MIT", + "optional": true, "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", + "json5": "^2.2.2", "minimist": "^1.2.6", "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" + "license": "MIT", + "optional": true, + "engines": { + "node": ">=4" } }, "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD", + "peer": true }, "node_modules/tsx": { "version": "4.20.6", "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.6.tgz", "integrity": "sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==", "dev": true, + "license": "MIT", "dependencies": { "esbuild": "~0.25.0", "get-tsconfig": "^4.7.5" @@ -25907,6 +29325,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "license": "Apache-2.0", "dependencies": { "safe-buffer": "^5.0.1" }, @@ -25919,6 +29338,7 @@ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" }, @@ -25931,6 +29351,7 @@ "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -25940,6 +29361,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -25951,6 +29373,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "license": "MIT", "dependencies": { "content-type": "^1.0.5", "media-typer": "^1.1.0", @@ -25960,21 +29383,11 @@ "node": ">= 0.6" } }, - "node_modules/type-is/node_modules/mime-types": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", - "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", - "dependencies": { - "mime-db": "^1.54.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/typed-array-buffer": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", @@ -25989,6 +29402,7 @@ "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "for-each": "^0.3.3", @@ -26008,6 +29422,7 @@ "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", "dev": true, + "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", @@ -26029,6 +29444,7 @@ "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", @@ -26048,6 +29464,8 @@ "version": "5.9.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -26059,13 +29477,15 @@ "node_modules/typescript-collections": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/typescript-collections/-/typescript-collections-1.3.3.tgz", - "integrity": "sha512-7sI4e/bZijOzyURng88oOFZCISQPTHozfE2sUu5AviFYk5QV7fYGb6YiDl+vKjF/pICA354JImBImL9XJWUvdQ==" + "integrity": "sha512-7sI4e/bZijOzyURng88oOFZCISQPTHozfE2sUu5AviFYk5QV7fYGb6YiDl+vKjF/pICA354JImBImL9XJWUvdQ==", + "license": "MIT" }, "node_modules/uglify-js": { "version": "3.19.3", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", "dev": true, + "license": "BSD-2-Clause", "optional": true, "bin": { "uglifyjs": "bin/uglifyjs" @@ -26079,6 +29499,7 @@ "resolved": "https://registry.npmjs.org/umd-compat-loader/-/umd-compat-loader-2.1.2.tgz", "integrity": "sha512-RkTlsfrCxUISWqiTtYFFJank7b2Hhl4V2pc29nl0xOEGvvuVkpy1xnufhXfTituxgpW0HSrDk0JHlvPYZxEXKQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "ast-types": "^0.9.2", "loader-utils": "^1.0.3", @@ -26090,6 +29511,7 @@ "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.14.tgz", "integrity": "sha512-Ebvx7/0lLboCdyEmAw/4GqwBeKIijPveXNiVGhCGCNxc7z26T5he7DC6ARxu8ByKuzUZZcLog+VP8GMyZrBzJw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -26099,6 +29521,7 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, + "license": "MIT", "dependencies": { "minimist": "^1.2.0" }, @@ -26111,6 +29534,7 @@ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", "dev": true, + "license": "MIT", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -26125,6 +29549,7 @@ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "has-bigints": "^1.0.2", @@ -26148,6 +29573,7 @@ "version": "6.22.0", "resolved": "https://registry.npmjs.org/undici/-/undici-6.22.0.tgz", "integrity": "sha512-hU/10obOIu62MGYjdskASR3CUAiYaFTtC9Pa6vHyf//mAipSvSQg6od2CnJswq7fvzNS3zJhxoRkgNVaHurWKw==", + "license": "MIT", "engines": { "node": ">=18.17" } @@ -26155,18 +29581,21 @@ "node_modules/undici-types": { "version": "6.21.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==" + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "license": "MIT" }, "node_modules/unescape-html": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/unescape-html/-/unescape-html-1.1.0.tgz", - "integrity": "sha512-O9/yBNqIkArjS597iHez5hAaAdn7b8/230SX8IncgXAX5tWI9XlEQYaz6Qbou0Sloa9n6lx9G5s6hg5qhJyzGg==" + "integrity": "sha512-O9/yBNqIkArjS597iHez5hAaAdn7b8/230SX8IncgXAX5tWI9XlEQYaz6Qbou0Sloa9n6lx9G5s6hg5qhJyzGg==", + "license": "MIT" }, "node_modules/unicorn-magic": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -26179,6 +29608,7 @@ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4.0.0" } @@ -26187,6 +29617,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -26195,14 +29626,15 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/update-browserslist-db": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", - "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz", + "integrity": "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==", "devOptional": true, "funding": [ { @@ -26218,6 +29650,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" @@ -26233,31 +29666,55 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } }, + "node_modules/url": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.4.tgz", + "integrity": "sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==", + "license": "MIT", + "dependencies": { + "punycode": "^1.4.1", + "qs": "^6.12.3" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/url-parse": { "version": "1.5.10", "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", "dev": true, + "license": "MIT", "dependencies": { "querystringify": "^2.1.1", "requires-port": "^1.0.0" } }, + "node_modules/url/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "license": "MIT" + }, "node_modules/urlpattern-polyfill": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.1.0.tgz", "integrity": "sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/userhome": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/userhome/-/userhome-1.0.1.tgz", "integrity": "sha512-5cnLm4gseXjAclKowC4IjByaGsjtAoV6PrOQOljplNB54ReUYJP8HdAFq2muHinSDAh09PPX/uXDPfdxRHvuSA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8.0" } @@ -26267,6 +29724,7 @@ "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", "dev": true, + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", @@ -26278,24 +29736,28 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" }, "node_modules/util-extend": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/util-extend/-/util-extend-1.0.3.tgz", "integrity": "sha512-mLs5zAK+ctllYBj+iAQvlDCwoxU/WDOUaJkcFudeiAX6OajC6BKXJUa9a+tbtkC11dz2Ufb7h0lyvIOVn4LADA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/utila": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "license": "MIT", "engines": { "node": ">= 0.4.0" } @@ -26308,6 +29770,7 @@ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], + "license": "MIT", "bin": { "uuid": "dist/esm/bin/uuid" } @@ -26316,13 +29779,15 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/v8-to-istanbul": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", "dev": true, + "license": "ISC", "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", @@ -26332,21 +29797,12 @@ "node": ">=10.12.0" } }, - "node_modules/v8-to-istanbul/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, + "license": "Apache-2.0", "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -26356,6 +29812,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -26364,6 +29821,7 @@ "version": "4.1.8", "resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-4.1.8.tgz", "integrity": "sha512-0vSpg6Xd9hfV+eZAaYN63xVVMOTmJ4GgHxXnkLCh+9RsQBkWKIghzLhW2B9ebfG+LQQg8uLtsQ2aUKjTgE+QOg==", + "license": "MIT", "dependencies": { "jsonc-parser": "^3.0.0", "vscode-languageserver-textdocument": "^1.0.1", @@ -26379,6 +29837,7 @@ "version": "8.2.0", "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", + "license": "MIT", "engines": { "node": ">=14.0.0" } @@ -26388,6 +29847,7 @@ "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-9.0.1.tgz", "integrity": "sha512-JZiimVdvimEuHh5olxhxkht09m3JzUGwggb5eRUkzzJhZ2KjCN0nh55VfiED9oez9DyF8/fz1g1iBV3h+0Z2EA==", "dev": true, + "license": "MIT", "dependencies": { "minimatch": "^5.1.0", "semver": "^7.3.7", @@ -26402,6 +29862,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -26409,10 +29870,24 @@ "node": ">=10" } }, + "node_modules/vscode-languageclient/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/vscode-languageserver": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==", + "license": "MIT", "dependencies": { "vscode-languageserver-protocol": "3.17.5" }, @@ -26424,6 +29899,7 @@ "version": "3.17.5", "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", + "license": "MIT", "dependencies": { "vscode-jsonrpc": "8.2.0", "vscode-languageserver-types": "3.17.5" @@ -26432,28 +29908,33 @@ "node_modules/vscode-languageserver-textdocument": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz", - "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==" + "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==", + "license": "MIT" }, "node_modules/vscode-languageserver-types": { "version": "3.17.5", "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", - "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==" + "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", + "license": "MIT" }, "node_modules/vscode-nls": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-5.2.0.tgz", - "integrity": "sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==" + "integrity": "sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==", + "license": "MIT" }, "node_modules/vscode-uri": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.1.0.tgz", - "integrity": "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==" + "integrity": "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==", + "license": "MIT" }, "node_modules/w3c-xmlserializer": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", "dev": true, + "license": "MIT", "dependencies": { "xml-name-validator": "^5.0.0" }, @@ -26466,6 +29947,7 @@ "resolved": "https://registry.npmjs.org/wait-port/-/wait-port-1.1.0.tgz", "integrity": "sha512-3e04qkoN3LxTMLakdqeWth8nih8usyg+sf1Bgdf9wwUkp05iuK1eSY/QpLvscT/+F/gA89+LpUmmgBtesbqI2Q==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.1.2", "commander": "^9.3.0", @@ -26478,11 +29960,28 @@ "node": ">=10" } }, + "node_modules/wait-port/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/wait-port/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -26499,6 +29998,7 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || >=14" } @@ -26508,6 +30008,7 @@ "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "makeerror": "1.0.12" } @@ -26517,6 +30018,7 @@ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz", "integrity": "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==", "devOptional": true, + "license": "MIT", "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -26529,6 +30031,7 @@ "version": "1.7.3", "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "license": "MIT", "dependencies": { "minimalistic-assert": "^1.0.0" } @@ -26538,6 +30041,7 @@ "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", "dev": true, + "license": "MIT", "optional": true, "dependencies": { "defaults": "^1.0.3" @@ -26548,6 +30052,7 @@ "resolved": "https://registry.npmjs.org/wdio/-/wdio-6.0.1.tgz", "integrity": "sha512-mH5/Emi+F9gI7IQTuWA8/TRjS1oBg/gQonV0sSucgUMGEVU+e3Ng/wm9v86/OAHo4HAz/B5GA0+WW7cVHVo3eA==", "deprecated": "This package got deprecated. Please use the 'create-wdio' starter toolkit via: 'npm init wdio ./path/to/project' or 'yarn create wdio ./path/to/project'.", + "license": "MIT", "dependencies": { "chalk": "^4.1.2", "commander": "^8.2.0", @@ -26558,10 +30063,26 @@ "wdio": "bin/wdio.js" } }, + "node_modules/wdio/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/wdio/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -26577,15 +30098,29 @@ "version": "8.3.0", "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "license": "MIT", "engines": { "node": ">= 12" } }, + "node_modules/wdio/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/web-streams-polyfill": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -26593,21 +30128,23 @@ "node_modules/web-tree-sitter": { "version": "0.22.6", "resolved": "https://registry.npmjs.org/web-tree-sitter/-/web-tree-sitter-0.22.6.tgz", - "integrity": "sha512-hS87TH71Zd6mGAmYCvlgxeGDjqd9GTeqXNqTT+u0Gs51uIozNIaaq/kUAbV/Zf56jb2ZOyG8BxZs2GG9wbLi6Q==" + "integrity": "sha512-hS87TH71Zd6mGAmYCvlgxeGDjqd9GTeqXNqTT+u0Gs51uIozNIaaq/kUAbV/Zf56jb2ZOyG8BxZs2GG9wbLi6Q==", + "license": "MIT" }, "node_modules/webdriver": { - "version": "9.20.0", - "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-9.20.0.tgz", - "integrity": "sha512-Kk+AGV1xWLNHVpzUynQJDULMzbcO3IjXo3s0BzfC30OpGxhpaNmoazMQodhtv0Lp242Mb1VYXD89dCb4oAHc4w==", + "version": "9.20.1", + "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-9.20.1.tgz", + "integrity": "sha512-QtvYqPai2NOnq7qePPH6kNSwk7+tnmSvnlOnY8dIT/Y24TPdQp44NjF/BUYAWIlqoBlZqHClQFTSVwT2qvO2Tw==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "^20.1.0", "@types/ws": "^8.5.3", - "@wdio/config": "9.20.0", + "@wdio/config": "9.20.1", "@wdio/logger": "9.18.0", "@wdio/protocols": "9.16.2", "@wdio/types": "9.20.0", - "@wdio/utils": "9.20.0", + "@wdio/utils": "9.20.1", "deepmerge-ts": "^7.0.3", "https-proxy-agent": "^7.0.6", "undici": "^6.21.3", @@ -26618,28 +30155,31 @@ } }, "node_modules/webdriver/node_modules/@types/node": { - "version": "20.19.19", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.19.tgz", - "integrity": "sha512-pb1Uqj5WJP7wrcbLU7Ru4QtA0+3kAXrkutGiD26wUKzSMgNNaPARTUDQmElUXp64kh3cWdou3Q0C7qwwxqSFmg==", + "version": "20.19.25", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.25.tgz", + "integrity": "sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==", "dev": true, + "license": "MIT", "dependencies": { "undici-types": "~6.21.0" } }, "node_modules/webdriverio": { - "version": "9.20.0", - "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-9.20.0.tgz", - "integrity": "sha512-cqaXfahTzCFaQLlk++feZaze6tAsW8OSdaVRgmOGJRII1z2A4uh4YGHtusTpqOiZAST7OBPqycOwfh01G/Ktbg==", + "version": "9.20.1", + "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-9.20.1.tgz", + "integrity": "sha512-QVM/asb5sDESz37ow/BAOA0z2HtUJsuAjPKHdw+Vx92PaQP3EfHwTgxK2T5rgwa0WRNh+c+n/0nEqIvqBl01sA==", "dev": true, + "license": "MIT", + "peer": true, "dependencies": { "@types/node": "^20.11.30", "@types/sinonjs__fake-timers": "^8.1.5", - "@wdio/config": "9.20.0", + "@wdio/config": "9.20.1", "@wdio/logger": "9.18.0", "@wdio/protocols": "9.16.2", "@wdio/repl": "9.16.2", "@wdio/types": "9.20.0", - "@wdio/utils": "9.20.0", + "@wdio/utils": "9.20.1", "archiver": "^7.0.1", "aria-query": "^5.3.0", "cheerio": "^1.0.0-rc.12", @@ -26656,7 +30196,7 @@ "rgb2hex": "0.2.5", "serialize-error": "^12.0.0", "urlpattern-polyfill": "^10.0.0", - "webdriver": "9.20.0" + "webdriver": "9.20.1" }, "engines": { "node": ">=18.20.0" @@ -26671,19 +30211,28 @@ } }, "node_modules/webdriverio/node_modules/@types/node": { - "version": "20.19.19", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.19.tgz", - "integrity": "sha512-pb1Uqj5WJP7wrcbLU7Ru4QtA0+3kAXrkutGiD26wUKzSMgNNaPARTUDQmElUXp64kh3cWdou3Q0C7qwwxqSFmg==", + "version": "20.19.25", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.25.tgz", + "integrity": "sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==", "dev": true, + "license": "MIT", "dependencies": { "undici-types": "~6.21.0" } }, + "node_modules/webdriverio/node_modules/@types/sinonjs__fake-timers": { + "version": "8.1.5", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz", + "integrity": "sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==", + "dev": true, + "license": "MIT" + }, "node_modules/webdriverio/node_modules/is-plain-obj": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -26696,15 +30245,18 @@ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=12" } }, "node_modules/webpack": { - "version": "5.102.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.102.1.tgz", - "integrity": "sha512-7h/weGm9d/ywQ6qzJ+Xy+r9n/3qgp/thalBbpOi5i223dPXKi04IBtqPN9nTd+jBc7QKfvDbaBnFipYp4sJAUQ==", + "version": "5.103.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.103.0.tgz", + "integrity": "sha512-HU1JOuV1OavsZ+mfigY0j8d1TgQgbZ6M+J75zDkpEAwYeXjWSqrGJtgnPblJjd/mAyTNQ7ygw0MiKOn6etz8yw==", "devOptional": true, + "license": "MIT", + "peer": true, "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.8", @@ -26723,7 +30275,7 @@ "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.2.11", "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", + "loader-runner": "^4.3.1", "mime-types": "^2.1.27", "neo-async": "^2.6.2", "schema-utils": "^4.3.3", @@ -26753,6 +30305,8 @@ "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-6.0.1.tgz", "integrity": "sha512-MfwFQ6SfwinsUVi0rNJm7rHZ31GyTcpVE5pgVA3hwFRb7COD4TzjUUwhGWKfO50+xdc2MQPuEBBJoqIMGt3JDw==", "dev": true, + "license": "MIT", + "peer": true, "dependencies": { "@discoveryjs/json-ext": "^0.6.1", "@webpack-cli/configtest": "^3.0.1", @@ -26795,6 +30349,7 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" } @@ -26804,6 +30359,7 @@ "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.13.0" } @@ -26813,6 +30369,7 @@ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", "dev": true, + "license": "MIT", "dependencies": { "resolve": "^1.20.0" }, @@ -26824,6 +30381,7 @@ "version": "7.4.5", "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.5.tgz", "integrity": "sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA==", + "license": "MIT", "dependencies": { "colorette": "^2.0.10", "memfs": "^4.43.1", @@ -26843,26 +30401,16 @@ "webpack": "^5.0.0" }, "peerDependenciesMeta": { - "webpack": { - "optional": true - } - } - }, - "node_modules/webpack-dev-middleware/node_modules/mime-types": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", - "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", - "dependencies": { - "mime-db": "^1.54.0" - }, - "engines": { - "node": ">= 0.6" + "webpack": { + "optional": true + } } }, "node_modules/webpack-dev-server": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.2.tgz", "integrity": "sha512-QcQ72gh8a+7JO63TAx/6XZf/CWhgMzu5m0QirvPfGvptOusAxG12w2+aua1Jkjr7hzaWDnJ2n6JFeexMHI+Zjg==", + "license": "MIT", "dependencies": { "@types/bonjour": "^3.5.13", "@types/connect-history-api-fallback": "^1.5.4", @@ -26916,1033 +30464,679 @@ } }, "node_modules/webpack-dev-server/node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/webpack-dev-server/node_modules/body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.13.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/webpack-dev-server/node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/webpack-dev-server/node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/webpack-dev-server/node_modules/cookie": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", - "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/webpack-dev-server/node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - }, - "node_modules/webpack-dev-server/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/webpack-dev-server/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/webpack-dev-server/node_modules/express": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", - "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.3", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.7.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.3.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.3", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.12", - "proxy-addr": "~2.0.7", - "qs": "6.13.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.19.0", - "serve-static": "1.16.2", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/webpack-dev-server/node_modules/finalhandler": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/webpack-dev-server/node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/webpack-dev-server/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/webpack-dev-server/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/ipaddr.js": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", - "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", - "engines": { - "node": ">= 10" - } - }, - "node_modules/webpack-dev-server/node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/webpack-dev-server/node_modules/merge-descriptors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", - "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/webpack-dev-server/node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/webpack-dev-server/node_modules/path-to-regexp": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==" - }, - "node_modules/webpack-dev-server/node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", - "dependencies": { - "side-channel": "^1.0.6" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/webpack-dev-server/node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/webpack-dev-server/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", "dependencies": { - "picomatch": "^2.2.1" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" }, "engines": { - "node": ">=8.10.0" + "node": ">= 0.6" } }, - "node_modules/webpack-dev-server/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/webpack-dev-server/node_modules/send": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", - "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "node_modules/webpack-dev-server/node_modules/body-parser": { + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "license": "MIT", "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", + "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" + "qs": "6.13.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" }, "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/webpack-dev-server/node_modules/send/node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "engines": { - "node": ">= 0.8" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/webpack-dev-server/node_modules/serve-static": { - "version": "1.16.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", - "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "node_modules/webpack-dev-server/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "license": "MIT", "dependencies": { - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.19.0" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" }, "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/webpack-dev-server/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "engines": { - "node": ">= 0.8" + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/webpack-dev-server/node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "node_modules/webpack-dev-server/node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "license": "MIT", "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" + "safe-buffer": "5.2.1" }, "engines": { "node": ">= 0.6" } }, - "node_modules/webpack-merge": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-6.0.1.tgz", - "integrity": "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==", - "dev": true, - "dependencies": { - "clone-deep": "^4.0.1", - "flat": "^5.0.2", - "wildcard": "^2.0.1" - }, + "node_modules/webpack-dev-server/node_modules/cookie": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": ">= 0.6" } }, - "node_modules/webpack-sources": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.3.tgz", - "integrity": "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==", - "devOptional": true, - "engines": { - "node": ">=10.13.0" - } + "node_modules/webpack-dev-server/node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "license": "MIT" }, - "node_modules/webpack/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "devOptional": true, + "node_modules/webpack-dev-server/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" + "ms": "2.0.0" } }, - "node_modules/webpack/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "devOptional": true, - "engines": { - "node": ">=4.0" - } + "node_modules/webpack-dev-server/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" }, - "node_modules/websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "node_modules/webpack-dev-server/node_modules/express": { + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", + "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", + "license": "MIT", "dependencies": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.3", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.7.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.3.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.12", + "proxy-addr": "~2.0.7", + "qs": "6.13.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.19.0", + "serve-static": "1.16.2", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" }, "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/whatwg-encoding": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", - "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", - "dev": true, - "dependencies": { - "iconv-lite": "0.6.3" + "node": ">= 0.10.0" }, - "engines": { - "node": ">=18" - } - }, - "node_modules/whatwg-mimetype": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", - "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", - "dev": true, - "engines": { - "node": ">=18" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/whatwg-url": { - "version": "14.2.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", - "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", - "dev": true, + "node_modules/webpack-dev-server/node_modules/finalhandler": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "license": "MIT", "dependencies": { - "tr46": "^5.1.0", - "webidl-conversions": "^7.0.0" + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" }, "engines": { - "node": ">=18" + "node": ">= 0.8" } }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, + "node_modules/webpack-dev-server/node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", "engines": { - "node": ">= 8" + "node": ">= 0.6" } }, - "node_modules/which-boxed-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", - "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", - "dev": true, + "node_modules/webpack-dev-server/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", "dependencies": { - "is-bigint": "^1.1.0", - "is-boolean-object": "^1.2.1", - "is-number-object": "^1.1.1", - "is-string": "^1.1.1", - "is-symbol": "^1.1.1" + "is-glob": "^4.0.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 6" } }, - "node_modules/which-builtin-type": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", - "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", - "dev": true, + "node_modules/webpack-dev-server/node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", - "function.prototype.name": "^1.1.6", - "has-tostringtag": "^1.0.2", - "is-async-function": "^2.0.0", - "is-date-object": "^1.1.0", - "is-finalizationregistry": "^1.1.0", - "is-generator-function": "^1.0.10", - "is-regex": "^1.2.1", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.1.0", - "which-collection": "^1.0.2", - "which-typed-array": "^1.1.16" + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.8" } }, - "node_modules/which-builtin-type/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, - "node_modules/which-collection": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "dev": true, + "node_modules/webpack-dev-server/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", "dependencies": { - "is-map": "^2.0.3", - "is-set": "^2.0.3", - "is-weakmap": "^2.0.2", - "is-weakset": "^2.0.3" + "safer-buffer": ">= 2.1.2 < 3" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10.0" } }, - "node_modules/which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==", - "dev": true - }, - "node_modules/which-pm-runs": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz", - "integrity": "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==", + "node_modules/webpack-dev-server/node_modules/ipaddr.js": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", + "license": "MIT", "engines": { - "node": ">=4" + "node": ">= 10" } }, - "node_modules/which-typed-array": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", - "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "for-each": "^0.3.5", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2" - }, + "node_modules/webpack-dev-server/node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "license": "MIT", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.6" } }, - "node_modules/wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" + "node_modules/webpack-dev-server/node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/wildcard": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", - "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", - "dev": true - }, - "node_modules/win-ca": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/win-ca/-/win-ca-3.5.1.tgz", - "integrity": "sha512-RNy9gpBS6cxWHjfbqwBA7odaHyT+YQNhtdpJZwYCFoxB/Dq22oeOZ9YCXMwjhLytKpo7JJMnKdJ/ve7N12zzfQ==", - "hasInstallScript": true, - "dependencies": { - "is-electron": "^2.2.0", - "make-dir": "^1.3.0", - "node-forge": "^1.2.1", - "split": "^1.0.1" + "node_modules/webpack-dev-server/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" } }, - "node_modules/win-ca/node_modules/make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "node_modules/webpack-dev-server/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", "dependencies": { - "pify": "^3.0.0" + "mime-db": "1.52.0" }, "engines": { - "node": ">=4" - } - }, - "node_modules/win-ca/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "engines": { - "node": ">=4" + "node": ">= 0.6" } }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, + "node_modules/webpack-dev-server/node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.6" } }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", - "dev": true - }, - "node_modules/workerpool": { - "version": "9.3.4", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-9.3.4.tgz", - "integrity": "sha512-TmPRQYYSAnnDiEB0P/Ytip7bFGvqnSU6I2BcuSw7Hx+JSg/DsUi5ebYfc8GYaSdpuvOcEs6dXxPurOYpe9QFwg==", - "dev": true - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } + "node_modules/webpack-dev-server/node_modules/path-to-regexp": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "license": "MIT" }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, + "node_modules/webpack-dev-server/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=8.6" }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "engines": { - "node": ">=8" + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/wrap-ansi-cjs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/webpack-dev-server/node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "license": "BSD-3-Clause", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "side-channel": "^1.0.6" }, "engines": { - "node": ">=8" + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/webpack-dev-server/node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, "engines": { - "node": ">=8" + "node": ">= 0.8" } }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/webpack-dev-server/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "picomatch": "^2.2.1" }, "engines": { - "node": ">=8" + "node": ">=8.10.0" } }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dev": true, + "node_modules/webpack-dev-server/node_modules/send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "license": "MIT", "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 0.8.0" } }, - "node_modules/write-file-atomic/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/ws": { - "version": "8.18.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", - "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", + "node_modules/webpack-dev-server/node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "license": "MIT", "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "node": ">= 0.8" } }, - "node_modules/wsl-utils": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", - "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", + "node_modules/webpack-dev-server/node_modules/serve-static": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "license": "MIT", "dependencies": { - "is-wsl": "^3.1.0" + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.19.0" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.8.0" } }, - "node_modules/xml-name-validator": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", - "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", - "dev": true, + "node_modules/webpack-dev-server/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", "engines": { - "node": ">=18" + "node": ">= 0.8" } }, - "node_modules/xml2js": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", - "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", + "node_modules/webpack-dev-server/node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "license": "MIT", "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" + "media-typer": "0.3.0", + "mime-types": "~2.1.24" }, "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "engines": { - "node": ">=4.0" + "node": ">= 0.6" } }, - "node_modules/xmlbuilder2": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/xmlbuilder2/-/xmlbuilder2-3.1.1.tgz", - "integrity": "sha512-WCSfbfZnQDdLQLiMdGUQpMxxckeQ4oZNMNhLVkcekTu7xhD4tuUDyAPoY8CwXvBYE6LwBHd6QW2WZXlOWr1vCw==", + "node_modules/webpack-merge": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-6.0.1.tgz", + "integrity": "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==", + "dev": true, + "license": "MIT", "dependencies": { - "@oozcitak/dom": "1.15.10", - "@oozcitak/infra": "1.0.8", - "@oozcitak/util": "8.3.8", - "js-yaml": "3.14.1" + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.1" }, "engines": { - "node": ">=12.0" + "node": ">=18.0.0" } }, - "node_modules/xmlbuilder2/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dependencies": { - "sprintf-js": "~1.0.2" + "node_modules/webpack-sources": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.3.tgz", + "integrity": "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" } }, - "node_modules/xmlbuilder2/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "node_modules/webpack/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "devOptional": true, + "license": "BSD-2-Clause", "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "engines": { - "node": ">=0.4" + "node": ">=8.0.0" } }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "node_modules/webpack/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "devOptional": true, + "license": "BSD-2-Clause", "engines": { - "node": ">=10" + "node": ">=4.0" } }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/yaml": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.2.tgz", - "integrity": "sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==", + "node_modules/webpack/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "devOptional": true, + "license": "MIT", "engines": { - "node": ">= 14" + "node": ">= 0.6" } }, - "node_modules/yaml-language-server": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/yaml-language-server/-/yaml-language-server-1.13.0.tgz", - "integrity": "sha512-CzekVjFOUkiXI6tg3BPuSkxE60keDT4/+LjPLXwnt4gCRzaaWMCjT92NxOHv1derbBLHWoecay48tse/De181Q==", + "node_modules/webpack/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "devOptional": true, + "license": "MIT", "dependencies": { - "ajv": "^8.11.0", - "lodash": "4.17.21", - "request-light": "^0.5.7", - "vscode-json-languageservice": "4.1.8", - "vscode-languageserver": "^7.0.0", - "vscode-languageserver-textdocument": "^1.0.1", - "vscode-languageserver-types": "^3.16.0", - "vscode-nls": "^5.0.0", - "vscode-uri": "^3.0.2", - "yaml": "2.2.2" - }, - "bin": { - "yaml-language-server": "bin/yaml-language-server" + "mime-db": "1.52.0" }, - "optionalDependencies": { - "prettier": "2.8.7" + "engines": { + "node": ">= 0.6" } }, - "node_modules/yaml-language-server/node_modules/prettier": { - "version": "2.8.7", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz", - "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==", - "optional": true, - "bin": { - "prettier": "bin-prettier.js" + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "license": "Apache-2.0", + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" }, "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" + "node": ">=0.8.0" } }, - "node_modules/yaml-language-server/node_modules/request-light": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/request-light/-/request-light-0.5.8.tgz", - "integrity": "sha512-3Zjgh+8b5fhRJBQZoy+zbVKpAQGLyka0MPgW3zruTF4dFFJ8Fqcfu9YsAvi/rvdcaTeWG3MkbZv4WKxAn/84Lg==" - }, - "node_modules/yaml-language-server/node_modules/vscode-jsonrpc": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz", - "integrity": "sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==", + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "license": "Apache-2.0", "engines": { - "node": ">=8.0.0 || >=10.0.0" + "node": ">=0.8.0" } }, - "node_modules/yaml-language-server/node_modules/vscode-languageserver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-7.0.0.tgz", - "integrity": "sha512-60HTx5ID+fLRcgdHfmz0LDZAXYEV68fzwG0JWwEPBode9NuMYTIxuYXPg4ngO8i8+Ou0lM7y6GzaYWbiDL0drw==", + "node_modules/whatwg-encoding": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "dev": true, + "license": "MIT", "dependencies": { - "vscode-languageserver-protocol": "3.16.0" + "iconv-lite": "0.6.3" }, - "bin": { - "installServerIntoExtension": "bin/installServerIntoExtension" + "engines": { + "node": ">=18" } }, - "node_modules/yaml-language-server/node_modules/vscode-languageserver-protocol": { - "version": "3.16.0", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.16.0.tgz", - "integrity": "sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==", - "dependencies": { - "vscode-jsonrpc": "6.0.0", - "vscode-languageserver-types": "3.16.0" + "node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" } }, - "node_modules/yaml-language-server/node_modules/vscode-languageserver-types": { - "version": "3.16.0", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz", - "integrity": "sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==" - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "node_modules/whatwg-url": { + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", + "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", "dev": true, + "license": "MIT", "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" + "tr46": "^5.1.0", + "webidl-conversions": "^7.0.0" }, "engines": { - "node": ">=12" + "node": ">=18" } }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, "engines": { - "node": ">=12" + "node": ">= 8" } }, - "node_modules/yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", "dev": true, + "license": "MIT", "dependencies": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" }, "engines": { - "node": ">=10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/yargs-unparser/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/yargs-unparser/node_modules/decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/yargs-unparser/node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "node_modules/which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==", "dev": true, + "license": "ISC" + }, + "node_modules/which-pm-runs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz", + "integrity": "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==", + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/yargs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, + "node_modules/which-typed-array": { + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "license": "ISC", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" } }, - "node_modules/yargs/node_modules/string-width": { + "node_modules/wide-align/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/wide-align/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -27952,929 +31146,923 @@ "node": ">=8" } }, - "node_modules/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", "dev": true, + "license": "MIT" + }, + "node_modules/win-ca": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/win-ca/-/win-ca-3.5.1.tgz", + "integrity": "sha512-RNy9gpBS6cxWHjfbqwBA7odaHyT+YQNhtdpJZwYCFoxB/Dq22oeOZ9YCXMwjhLytKpo7JJMnKdJ/ve7N12zzfQ==", + "hasInstallScript": true, + "license": "MIT", "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" + "is-electron": "^2.2.0", + "make-dir": "^1.3.0", + "node-forge": "^1.2.1", + "split": "^1.0.1" } }, - "node_modules/yauzl-promise": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yauzl-promise/-/yauzl-promise-4.0.0.tgz", - "integrity": "sha512-/HCXpyHXJQQHvFq9noqrjfa/WpQC2XYs3vI7tBiAi4QiIU1knvYhZGaO1QPjwIVMdqflxbmwgMXtYeaRiAE0CA==", - "dev": true, + "node_modules/win-ca/node_modules/make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "license": "MIT", "dependencies": { - "@node-rs/crc32": "^1.7.0", - "is-it-type": "^5.1.2", - "simple-invariant": "^2.0.1" + "pify": "^3.0.0" }, "engines": { - "node": ">=16" + "node": ">=4" } }, - "node_modules/yauzl/node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true, + "node_modules/win-ca/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "license": "MIT", "engines": { - "node": "*" + "node": ">=4" } }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/yocto-queue": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz", - "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==", + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", "dev": true, - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "license": "MIT" }, - "node_modules/yoctocolors": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.2.tgz", - "integrity": "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==", + "node_modules/workerpool": { + "version": "9.3.4", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-9.3.4.tgz", + "integrity": "sha512-TmPRQYYSAnnDiEB0P/Ytip7bFGvqnSU6I2BcuSw7Hx+JSg/DsUi5ebYfc8GYaSdpuvOcEs6dXxPurOYpe9QFwg==", "dev": true, + "license": "Apache-2.0" + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, "engines": { - "node": ">=18" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/yoctocolors-cjs": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz", - "integrity": "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==", - "dev": true, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, "engines": { - "node": ">=18" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/zip-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-6.0.1.tgz", - "integrity": "sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==", + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", "dependencies": { - "archiver-utils": "^5.0.0", - "compress-commons": "^6.0.2", - "readable-stream": "^4.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 14" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/zip-stream/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" }, - "node_modules/zip-stream/node_modules/readable-stream": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", - "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/zip-stream/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/zip-stream/node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/zod": { - "version": "3.25.76", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", - "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - }, - "node_modules/zod-to-json-schema": { - "version": "3.24.6", - "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.6.tgz", - "integrity": "sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==", - "peerDependencies": { - "zod": "^3.24.1" + "node": ">=8" } }, - "node_modules/zx": { - "version": "8.8.4", - "resolved": "https://registry.npmjs.org/zx/-/zx-8.8.4.tgz", - "integrity": "sha512-44GcD+ZlM/v1OQtbwnSxLPcoE1ZEUICmR+RSbJZLAqfIixNLuMjLyh0DcS75OyfJ/sWYAwCWDmDvJ4hdnANAPQ==", - "dev": true, - "bin": { - "zx": "build/cli.js" - }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", "engines": { - "node": ">= 12.17.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "server/aws-lsp-antlr4": { - "name": "@aws/lsp-antlr4", - "version": "0.1.20", - "license": "Apache-2.0", - "dependencies": { - "@aws/language-server-runtimes": "0.3.6", - "@aws/lsp-core": "^0.0.16" - }, - "devDependencies": { - "@babel/plugin-transform-modules-commonjs": "^7.24.1", - "@types/jest": "29.5.14", - "antlr4-c3": "3.4.4", - "antlr4ng": "3.0.16", - "antlr4ng-cli": "^2.0.0", - "babel-plugin-transform-import-meta": "^2.3.2", - "jest": "^29.7.0", - "prettier": "^2.8.8", - "ts-jest": "^29.2.3", - "ts-sinon": "^2.0.2" - }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": ">=12" }, - "peerDependencies": { - "antlr4-c3": ">=3.4 < 4", - "antlr4ng": "3.x" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "server/aws-lsp-antlr4/node_modules/prettier": { - "version": "2.8.8", - "dev": true, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", "license": "MIT", - "bin": { - "prettier": "bin-prettier.js" + "dependencies": { + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">=10.13.0" + "node": ">=12" }, "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "server/aws-lsp-buildspec": { - "name": "@aws/lsp-buildspec", - "version": "0.0.1", - "dependencies": { - "@aws/language-server-runtimes": "0.3.6", - "@aws/lsp-json": "*", - "@aws/lsp-yaml": "*", - "vscode-languageserver": "^9.0.1", - "vscode-languageserver-textdocument": "^1.0.8" - } + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" }, - "server/aws-lsp-cloudformation": { - "name": "@aws/lsp-cloudformation", - "version": "0.0.1", + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "license": "ISC", "dependencies": { - "@aws/language-server-runtimes": "0.3.6", - "@aws/lsp-core": "*", - "@aws/lsp-json": "*", - "vscode-languageserver": "^9.0.1", - "vscode-languageserver-textdocument": "^1.0.8" + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "server/aws-lsp-codewhisperer": { - "name": "@aws/lsp-codewhisperer", - "version": "0.0.91", - "bundleDependencies": [ - "@amzn/codewhisperer", - "@amzn/codewhisperer-runtime", - "@amzn/codewhisperer-streaming", - "@amzn/amazon-q-developer-streaming-client" - ], - "hasInstallScript": true, - "license": "Apache-2.0", - "dependencies": { - "@amzn/amazon-q-developer-streaming-client": "file:../../core/q-developer-streaming-client/amzn-amazon-q-developer-streaming-client-1.0.0.tgz", - "@amzn/codewhisperer": "file:../../core/codewhisperer/amzn-codewhisperer-1.0.0.tgz", - "@amzn/codewhisperer-runtime": "file:../../core/codewhisperer-runtime/amzn-codewhisperer-runtime-1.0.0.tgz", - "@amzn/codewhisperer-streaming": "file:../../core/codewhisperer-streaming/amzn-codewhisperer-streaming-1.0.0.tgz", - "@aws-sdk/types": "^3.734.0", - "@aws-sdk/util-arn-parser": "^3.723.0", - "@aws-sdk/util-retry": "^3.374.0", - "@aws/chat-client-ui-types": "0.1.68", - "@aws/language-server-runtimes": "0.3.6", - "@aws/lsp-core": "^0.0.16", - "@modelcontextprotocol/sdk": "^1.15.0", - "@smithy/node-http-handler": "^2.5.0", - "adm-zip": "^0.5.10", - "archiver": "^7.0.1", - "async-mutex": "^0.5.0", - "axios": "^1.8.4", - "chokidar": "^4.0.3", - "deepmerge": "^4.3.1", - "diff": "^7.0.0", - "encoding-japanese": "^2.2.0", - "fast-glob": "^3.3.3", - "fastest-levenshtein": "^1.0.16", - "fdir": "^6.4.3", - "fuse.js": "^7.1.0", - "got": "^11.8.5", - "hpagent": "^1.2.0", - "ignore": "^7.0.3", - "image-size": "^2.0.2", - "js-md5": "^0.8.3", - "jszip": "^3.10.1", - "lokijs": "^1.5.12", - "picomatch": "^4.0.2", - "shlex": "2.1.2", - "typescript-collections": "^1.3.3", - "uuid": "^11.0.5", - "vscode-uri": "^3.1.0", - "ws": "^8.18.0", - "xml2js": "^0.6.2", - "xmlbuilder2": "^3.1.1" + "node_modules/write-file-atomic/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/ws": { + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" }, - "devDependencies": { - "@types/adm-zip": "^0.5.5", - "@types/archiver": "^6.0.2", - "@types/diff": "^7.0.2", - "@types/encoding-japanese": "^2.2.1", - "@types/escape-html": "^1.0.4", - "@types/ignore-walk": "^4.0.3", - "@types/local-indexing": "file:./types/types-local-indexing-1.1.0.tgz", - "@types/lokijs": "^1.5.14", - "@types/uuid": "^9.0.8", - "@types/xml2js": "^0.4.14", - "assert": "^2.1.0", - "c8": "^10.1.2", - "copyfiles": "^2.4.1", - "mock-fs": "^5.2.0", - "sinon": "^19.0.2", - "ts-loader": "^9.4.4", - "ts-mocha": "^11.1.0", - "ts-sinon": "^2.0.2", - "vscode-languageserver-textdocument": "^1.0.11", - "webpack": "^5.94.0", - "webpack-cli": "^6.0.1" + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" }, - "engines": { - "node": ">=18.0.0" + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "server/aws-lsp-codewhisperer/node_modules/@smithy/abort-controller": { - "version": "2.2.0", - "license": "Apache-2.0", + "node_modules/wsl-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", + "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", + "license": "MIT", "dependencies": { - "@smithy/types": "^2.12.0", - "tslib": "^2.6.2" + "is-wsl": "^3.1.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "server/aws-lsp-codewhisperer/node_modules/@smithy/node-http-handler": { - "version": "2.5.0", + "node_modules/xml-name-validator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", + "dev": true, "license": "Apache-2.0", - "dependencies": { - "@smithy/abort-controller": "^2.2.0", - "@smithy/protocol-http": "^3.3.0", - "@smithy/querystring-builder": "^2.2.0", - "@smithy/types": "^2.12.0", - "tslib": "^2.6.2" - }, "engines": { - "node": ">=14.0.0" + "node": ">=18" } }, - "server/aws-lsp-codewhisperer/node_modules/@smithy/protocol-http": { - "version": "3.3.0", - "license": "Apache-2.0", + "node_modules/xml2js": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", + "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", + "license": "MIT", "dependencies": { - "@smithy/types": "^2.12.0", - "tslib": "^2.6.2" + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=4.0.0" } }, - "server/aws-lsp-codewhisperer/node_modules/@smithy/querystring-builder": { - "version": "2.2.0", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^2.12.0", - "@smithy/util-uri-escape": "^2.2.0", - "tslib": "^2.6.2" - }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "license": "MIT", "engines": { - "node": ">=14.0.0" + "node": ">=4.0" } }, - "server/aws-lsp-codewhisperer/node_modules/@smithy/types": { - "version": "2.12.0", - "license": "Apache-2.0", + "node_modules/xmlbuilder2": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder2/-/xmlbuilder2-3.1.1.tgz", + "integrity": "sha512-WCSfbfZnQDdLQLiMdGUQpMxxckeQ4oZNMNhLVkcekTu7xhD4tuUDyAPoY8CwXvBYE6LwBHd6QW2WZXlOWr1vCw==", + "license": "MIT", "dependencies": { - "tslib": "^2.6.2" + "@oozcitak/dom": "1.15.10", + "@oozcitak/infra": "1.0.8", + "@oozcitak/util": "8.3.8", + "js-yaml": "3.14.1" }, "engines": { - "node": ">=14.0.0" + "node": ">=12.0" } }, - "server/aws-lsp-codewhisperer/node_modules/@smithy/util-uri-escape": { - "version": "2.2.0", - "license": "Apache-2.0", + "node_modules/xmlbuilder2/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", "dependencies": { - "tslib": "^2.6.2" + "sprintf-js": "~1.0.2" + } + }, + "node_modules/xmlbuilder2/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true, + "license": "MIT" + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "license": "MIT", "engines": { - "node": ">=14.0.0" + "node": ">=0.4" } }, - "server/aws-lsp-codewhisperer/node_modules/diff": { - "version": "7.0.0", - "license": "BSD-3-Clause", + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", "engines": { - "node": ">=0.3.1" + "node": ">=10" } }, - "server/aws-lsp-codewhisperer/node_modules/fdir": { - "version": "6.5.0", - "license": "MIT", + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yaml": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.2.tgz", + "integrity": "sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==", + "license": "ISC", "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } + "node": ">= 14" } }, - "server/aws-lsp-codewhisperer/node_modules/picomatch": { - "version": "4.0.3", + "node_modules/yaml-language-server": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/yaml-language-server/-/yaml-language-server-1.13.0.tgz", + "integrity": "sha512-CzekVjFOUkiXI6tg3BPuSkxE60keDT4/+LjPLXwnt4gCRzaaWMCjT92NxOHv1derbBLHWoecay48tse/De181Q==", "license": "MIT", - "engines": { - "node": ">=12" + "dependencies": { + "ajv": "^8.11.0", + "lodash": "4.17.21", + "request-light": "^0.5.7", + "vscode-json-languageservice": "4.1.8", + "vscode-languageserver": "^7.0.0", + "vscode-languageserver-textdocument": "^1.0.1", + "vscode-languageserver-types": "^3.16.0", + "vscode-nls": "^5.0.0", + "vscode-uri": "^3.0.2", + "yaml": "2.2.2" }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "bin": { + "yaml-language-server": "bin/yaml-language-server" + }, + "optionalDependencies": { + "prettier": "2.8.7" } }, - "server/aws-lsp-codewhisperer/node_modules/ts-mocha": { - "version": "11.1.0", - "dev": true, + "node_modules/yaml-language-server/node_modules/prettier": { + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz", + "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==", "license": "MIT", + "optional": true, "bin": { - "ts-mocha": "bin/ts-mocha" + "prettier": "bin-prettier.js" }, "engines": { - "node": ">= 6.X.X" - }, - "peerDependencies": { - "mocha": "^3.X.X || ^4.X.X || ^5.X.X || ^6.X.X || ^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X || ^11.X.X", - "ts-node": "^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X", - "tsconfig-paths": "^4.X.X" + "node": ">=10.13.0" }, - "peerDependenciesMeta": { - "tsconfig-paths": { - "optional": true - } + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "server/aws-lsp-identity": { - "name": "@aws/lsp-identity", - "version": "0.0.1", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/client-sso-oidc": "^3.616.0", - "@aws-sdk/token-providers": "^3.744.0", - "@aws/language-server-runtimes": "0.3.6", - "@aws/lsp-core": "^0.0.16", - "@smithy/node-http-handler": "^3.2.5", - "@smithy/shared-ini-file-loader": "^4.0.1", - "https-proxy-agent": "^7.0.5", - "vscode-languageserver": "^9.0.1" - }, - "devDependencies": { - "@aws-sdk/types": "^3.734.0", - "@smithy/types": "^3.4.1", - "@types/chai": "^4.3.5", - "@types/chai-as-promised": "^7.1.5", - "@types/mocha": "^10.0.9", - "@types/mock-fs": "^4.13.4", - "@types/sinon": "^17.0.3", - "c8": "^10.1.2", - "chai": "^4.3.7", - "chai-as-promised": "^7.1.1", - "copyfiles": "^2.4.1", - "mock-fs": "^5.2.0", - "sinon": "^19.0.2", - "ts-loader": "^9.5.1", - "ts-mocha": "^11.1.0", - "ts-sinon": "^2.0.2" - }, - "engines": { - "node": ">=18.0.0" - } + "node_modules/yaml-language-server/node_modules/request-light": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/request-light/-/request-light-0.5.8.tgz", + "integrity": "sha512-3Zjgh+8b5fhRJBQZoy+zbVKpAQGLyka0MPgW3zruTF4dFFJ8Fqcfu9YsAvi/rvdcaTeWG3MkbZv4WKxAn/84Lg==", + "license": "MIT" }, - "server/aws-lsp-identity/node_modules/@aws-sdk/core": { - "version": "3.901.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.901.0", - "@aws-sdk/xml-builder": "3.901.0", - "@smithy/core": "^3.14.0", - "@smithy/node-config-provider": "^4.3.0", - "@smithy/property-provider": "^4.2.0", - "@smithy/protocol-http": "^5.3.0", - "@smithy/signature-v4": "^5.3.0", - "@smithy/smithy-client": "^4.7.0", - "@smithy/types": "^4.6.0", - "@smithy/util-base64": "^4.2.0", - "@smithy/util-middleware": "^4.2.0", - "@smithy/util-utf8": "^4.2.0", - "tslib": "^2.6.2" - }, + "node_modules/yaml-language-server/node_modules/vscode-jsonrpc": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz", + "integrity": "sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==", + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": ">=8.0.0 || >=10.0.0" } }, - "server/aws-lsp-identity/node_modules/@aws-sdk/core/node_modules/@smithy/protocol-http": { - "version": "5.3.0", - "license": "Apache-2.0", + "node_modules/yaml-language-server/node_modules/vscode-languageserver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-7.0.0.tgz", + "integrity": "sha512-60HTx5ID+fLRcgdHfmz0LDZAXYEV68fzwG0JWwEPBode9NuMYTIxuYXPg4ngO8i8+Ou0lM7y6GzaYWbiDL0drw==", + "license": "MIT", "dependencies": { - "@smithy/types": "^4.6.0", - "tslib": "^2.6.2" + "vscode-languageserver-protocol": "3.16.0" }, - "engines": { - "node": ">=18.0.0" + "bin": { + "installServerIntoExtension": "bin/installServerIntoExtension" } }, - "server/aws-lsp-identity/node_modules/@aws-sdk/core/node_modules/@smithy/types": { - "version": "4.6.0", - "license": "Apache-2.0", + "node_modules/yaml-language-server/node_modules/vscode-languageserver-protocol": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.16.0.tgz", + "integrity": "sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==", + "license": "MIT", "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" + "vscode-jsonrpc": "6.0.0", + "vscode-languageserver-types": "3.16.0" } }, - "server/aws-lsp-identity/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.901.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.901.0", - "@smithy/protocol-http": "^5.3.0", - "@smithy/types": "^4.6.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } + "node_modules/yaml-language-server/node_modules/vscode-languageserver-types": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz", + "integrity": "sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==", + "license": "MIT" }, - "server/aws-lsp-identity/node_modules/@aws-sdk/middleware-host-header/node_modules/@smithy/protocol-http": { - "version": "5.3.0", - "license": "Apache-2.0", + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", "dependencies": { - "@smithy/types": "^4.6.0", - "tslib": "^2.6.2" + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" }, "engines": { - "node": ">=18.0.0" + "node": ">=12" } }, - "server/aws-lsp-identity/node_modules/@aws-sdk/middleware-host-header/node_modules/@smithy/types": { - "version": "4.6.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", "engines": { - "node": ">=18.0.0" + "node": ">=12" } }, - "server/aws-lsp-identity/node_modules/@aws-sdk/middleware-logger": { - "version": "3.901.0", - "license": "Apache-2.0", + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "license": "MIT", "dependencies": { - "@aws-sdk/types": "3.901.0", - "@smithy/types": "^4.6.0", - "tslib": "^2.6.2" + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=10" } }, - "server/aws-lsp-identity/node_modules/@aws-sdk/middleware-logger/node_modules/@smithy/types": { - "version": "4.6.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, + "node_modules/yargs-unparser/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "server/aws-lsp-identity/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.901.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.901.0", - "@aws/lambda-invoke-store": "^0.0.1", - "@smithy/protocol-http": "^5.3.0", - "@smithy/types": "^4.6.0", - "tslib": "^2.6.2" - }, + "node_modules/yargs-unparser/node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": ">=8" } }, - "server/aws-lsp-identity/node_modules/@aws-sdk/middleware-recursion-detection/node_modules/@smithy/protocol-http": { - "version": "5.3.0", - "license": "Apache-2.0", + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", "dependencies": { - "@smithy/types": "^4.6.0", - "tslib": "^2.6.2" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=18.0.0" + "node": ">=8" } }, - "server/aws-lsp-identity/node_modules/@aws-sdk/middleware-recursion-detection/node_modules/@smithy/types": { - "version": "4.6.0", - "license": "Apache-2.0", + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "license": "MIT", "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" } }, - "server/aws-lsp-identity/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.901.0", - "license": "Apache-2.0", + "node_modules/yauzl-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yauzl-promise/-/yauzl-promise-4.0.0.tgz", + "integrity": "sha512-/HCXpyHXJQQHvFq9noqrjfa/WpQC2XYs3vI7tBiAi4QiIU1knvYhZGaO1QPjwIVMdqflxbmwgMXtYeaRiAE0CA==", + "dev": true, + "license": "MIT", "dependencies": { - "@aws-sdk/core": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@aws-sdk/util-endpoints": "3.901.0", - "@smithy/core": "^3.14.0", - "@smithy/protocol-http": "^5.3.0", - "@smithy/types": "^4.6.0", - "tslib": "^2.6.2" + "@node-rs/crc32": "^1.7.0", + "is-it-type": "^5.1.2", + "simple-invariant": "^2.0.1" }, "engines": { - "node": ">=18.0.0" + "node": ">=16" } }, - "server/aws-lsp-identity/node_modules/@aws-sdk/middleware-user-agent/node_modules/@smithy/protocol-http": { - "version": "5.3.0", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.6.0", - "tslib": "^2.6.2" - }, + "node_modules/yauzl/node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": "*" } }, - "server/aws-lsp-identity/node_modules/@aws-sdk/middleware-user-agent/node_modules/@smithy/types": { - "version": "4.6.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": ">=6" } }, - "server/aws-lsp-identity/node_modules/@aws-sdk/nested-clients": { - "version": "3.901.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.901.0", - "@aws-sdk/middleware-host-header": "3.901.0", - "@aws-sdk/middleware-logger": "3.901.0", - "@aws-sdk/middleware-recursion-detection": "3.901.0", - "@aws-sdk/middleware-user-agent": "3.901.0", - "@aws-sdk/region-config-resolver": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@aws-sdk/util-endpoints": "3.901.0", - "@aws-sdk/util-user-agent-browser": "3.901.0", - "@aws-sdk/util-user-agent-node": "3.901.0", - "@smithy/config-resolver": "^4.3.0", - "@smithy/core": "^3.14.0", - "@smithy/fetch-http-handler": "^5.3.0", - "@smithy/hash-node": "^4.2.0", - "@smithy/invalid-dependency": "^4.2.0", - "@smithy/middleware-content-length": "^4.2.0", - "@smithy/middleware-endpoint": "^4.3.0", - "@smithy/middleware-retry": "^4.4.0", - "@smithy/middleware-serde": "^4.2.0", - "@smithy/middleware-stack": "^4.2.0", - "@smithy/node-config-provider": "^4.3.0", - "@smithy/node-http-handler": "^4.3.0", - "@smithy/protocol-http": "^5.3.0", - "@smithy/smithy-client": "^4.7.0", - "@smithy/types": "^4.6.0", - "@smithy/url-parser": "^4.2.0", - "@smithy/util-base64": "^4.2.0", - "@smithy/util-body-length-browser": "^4.2.0", - "@smithy/util-body-length-node": "^4.2.0", - "@smithy/util-defaults-mode-browser": "^4.2.0", - "@smithy/util-defaults-mode-node": "^4.2.0", - "@smithy/util-endpoints": "^3.2.0", - "@smithy/util-middleware": "^4.2.0", - "@smithy/util-retry": "^4.2.0", - "@smithy/util-utf8": "^4.2.0", - "tslib": "^2.6.2" - }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "server/aws-lsp-identity/node_modules/@aws-sdk/nested-clients/node_modules/@smithy/abort-controller": { - "version": "4.2.0", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.6.0", - "tslib": "^2.6.2" - }, + "node_modules/yoctocolors": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.2.tgz", + "integrity": "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "server/aws-lsp-identity/node_modules/@aws-sdk/nested-clients/node_modules/@smithy/node-http-handler": { - "version": "4.3.0", - "license": "Apache-2.0", - "dependencies": { - "@smithy/abort-controller": "^4.2.0", - "@smithy/protocol-http": "^5.3.0", - "@smithy/querystring-builder": "^4.2.0", - "@smithy/types": "^4.6.0", - "tslib": "^2.6.2" - }, + "node_modules/yoctocolors-cjs": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz", + "integrity": "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=18.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "server/aws-lsp-identity/node_modules/@aws-sdk/nested-clients/node_modules/@smithy/protocol-http": { - "version": "5.3.0", - "license": "Apache-2.0", + "node_modules/zip-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-6.0.1.tgz", + "integrity": "sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==", + "license": "MIT", "dependencies": { - "@smithy/types": "^4.6.0", - "tslib": "^2.6.2" + "archiver-utils": "^5.0.0", + "compress-commons": "^6.0.2", + "readable-stream": "^4.0.0" }, "engines": { - "node": ">=18.0.0" + "node": ">= 14" } }, - "server/aws-lsp-identity/node_modules/@aws-sdk/nested-clients/node_modules/@smithy/querystring-builder": { - "version": "4.2.0", + "node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "license": "MIT", + "peer": true, + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-to-json-schema": { + "version": "3.25.0", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.0.tgz", + "integrity": "sha512-HvWtU2UG41LALjajJrML6uQejQhNJx+JBO9IflpSja4R03iNWfKXrj6W2h7ljuLyc1nKS+9yDyL/9tD1U/yBnQ==", + "license": "ISC", + "peerDependencies": { + "zod": "^3.25 || ^4" + } + }, + "node_modules/zx": { + "version": "8.8.5", + "resolved": "https://registry.npmjs.org/zx/-/zx-8.8.5.tgz", + "integrity": "sha512-SNgDF5L0gfN7FwVOdEFguY3orU5AkfFZm9B5YSHog/UDHv+lvmd82ZAsOenOkQixigwH2+yyH198AwNdKhj+RA==", + "dev": true, "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.6.0", - "@smithy/util-uri-escape": "^4.2.0", - "tslib": "^2.6.2" + "bin": { + "zx": "build/cli.js" }, "engines": { - "node": ">=18.0.0" + "node": ">= 12.17.0" } }, - "server/aws-lsp-identity/node_modules/@aws-sdk/nested-clients/node_modules/@smithy/types": { - "version": "4.6.0", + "server/aws-lsp-antlr4": { + "name": "@aws/lsp-antlr4", + "version": "0.1.21", "license": "Apache-2.0", "dependencies": { - "tslib": "^2.6.2" + "@aws/language-server-runtimes": "0.3.6", + "@aws/lsp-core": "^0.0.17" + }, + "devDependencies": { + "@babel/plugin-transform-modules-commonjs": "^7.24.1", + "@types/jest": "29.5.14", + "antlr4-c3": "3.4.4", + "antlr4ng": "3.0.16", + "antlr4ng-cli": "^2.0.0", + "babel-plugin-transform-import-meta": "^2.3.2", + "jest": "^29.7.0", + "prettier": "^2.8.8", + "ts-jest": "^29.2.3", + "ts-sinon": "^2.0.2" }, "engines": { "node": ">=18.0.0" + }, + "peerDependencies": { + "antlr4-c3": ">=3.4 < 4", + "antlr4ng": "3.x" } }, - "server/aws-lsp-identity/node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-uri-escape": { - "version": "4.2.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" + "server/aws-lsp-antlr4/node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin-prettier.js" }, "engines": { - "node": ">=18.0.0" + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "server/aws-lsp-identity/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.901.0", - "license": "Apache-2.0", + "server/aws-lsp-buildspec": { + "name": "@aws/lsp-buildspec", + "version": "0.0.1", "dependencies": { - "@aws-sdk/types": "3.901.0", - "@smithy/node-config-provider": "^4.3.0", - "@smithy/types": "^4.6.0", - "@smithy/util-config-provider": "^4.2.0", - "@smithy/util-middleware": "^4.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" + "@aws/language-server-runtimes": "0.3.6", + "@aws/lsp-json": "*", + "@aws/lsp-yaml": "*", + "vscode-languageserver": "^9.0.1", + "vscode-languageserver-textdocument": "^1.0.8" } }, - "server/aws-lsp-identity/node_modules/@aws-sdk/region-config-resolver/node_modules/@smithy/types": { - "version": "4.6.0", - "license": "Apache-2.0", + "server/aws-lsp-cloudformation": { + "name": "@aws/lsp-cloudformation", + "version": "0.0.1", "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" + "@aws/language-server-runtimes": "0.3.6", + "@aws/lsp-core": "*", + "@aws/lsp-json": "*", + "vscode-languageserver": "^9.0.1", + "vscode-languageserver-textdocument": "^1.0.8" } }, - "server/aws-lsp-identity/node_modules/@aws-sdk/token-providers": { - "version": "3.901.0", + "server/aws-lsp-codewhisperer": { + "name": "@aws/lsp-codewhisperer", + "version": "0.0.92", + "bundleDependencies": [ + "@amzn/codewhisperer", + "@amzn/codewhisperer-runtime", + "@amzn/codewhisperer-streaming", + "@amzn/amazon-q-developer-streaming-client" + ], + "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "3.901.0", - "@aws-sdk/nested-clients": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@smithy/property-provider": "^4.2.0", - "@smithy/shared-ini-file-loader": "^4.3.0", - "@smithy/types": "^4.6.0", - "tslib": "^2.6.2" + "@amzn/amazon-q-developer-streaming-client": "file:../../core/q-developer-streaming-client/amzn-amazon-q-developer-streaming-client-1.0.0.tgz", + "@amzn/codewhisperer": "file:../../core/codewhisperer/amzn-codewhisperer-1.0.0.tgz", + "@amzn/codewhisperer-runtime": "file:../../core/codewhisperer-runtime/amzn-codewhisperer-runtime-1.0.0.tgz", + "@amzn/codewhisperer-streaming": "file:../../core/codewhisperer-streaming/amzn-codewhisperer-streaming-1.0.0.tgz", + "@aws-sdk/types": "^3.734.0", + "@aws-sdk/util-arn-parser": "^3.723.0", + "@aws-sdk/util-retry": "^3.374.0", + "@aws/chat-client-ui-types": "0.1.68", + "@aws/language-server-runtimes": "0.3.6", + "@aws/lsp-core": "^0.0.17", + "@modelcontextprotocol/sdk": "^1.15.0", + "@smithy/node-http-handler": "^2.5.0", + "adm-zip": "^0.5.10", + "archiver": "^7.0.1", + "async-mutex": "^0.5.0", + "axios": "^1.8.4", + "chokidar": "^4.0.3", + "deepmerge": "^4.3.1", + "diff": "^7.0.0", + "encoding-japanese": "^2.2.0", + "fast-glob": "^3.3.3", + "fastest-levenshtein": "^1.0.16", + "fdir": "^6.4.3", + "fuse.js": "^7.1.0", + "got": "^11.8.5", + "hpagent": "^1.2.0", + "ignore": "^7.0.3", + "image-size": "^2.0.2", + "js-md5": "^0.8.3", + "jszip": "^3.10.1", + "lokijs": "^1.5.12", + "picomatch": "^4.0.2", + "shlex": "2.1.2", + "typescript-collections": "^1.3.3", + "uuid": "^11.0.5", + "vscode-uri": "^3.1.0", + "ws": "^8.18.0", + "xml2js": "^0.6.2", + "xmlbuilder2": "^3.1.1" }, - "engines": { - "node": ">=18.0.0" - } - }, - "server/aws-lsp-identity/node_modules/@aws-sdk/token-providers/node_modules/@smithy/types": { - "version": "4.6.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" + "devDependencies": { + "@types/adm-zip": "^0.5.5", + "@types/archiver": "^6.0.2", + "@types/diff": "^7.0.2", + "@types/encoding-japanese": "^2.2.1", + "@types/escape-html": "^1.0.4", + "@types/ignore-walk": "^4.0.3", + "@types/local-indexing": "file:./types/types-local-indexing-1.1.0.tgz", + "@types/lokijs": "^1.5.14", + "@types/uuid": "^9.0.8", + "@types/xml2js": "^0.4.14", + "assert": "^2.1.0", + "c8": "^10.1.2", + "copyfiles": "^2.4.1", + "mock-fs": "^5.2.0", + "sinon": "^19.0.2", + "ts-loader": "^9.4.4", + "ts-mocha": "^11.1.0", + "ts-sinon": "^2.0.2", + "vscode-languageserver-textdocument": "^1.0.11", + "webpack": "^5.94.0", + "webpack-cli": "^6.0.1" }, "engines": { "node": ">=18.0.0" } }, - "server/aws-lsp-identity/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.901.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.901.0", - "@smithy/types": "^4.6.0", - "bowser": "^2.11.0", - "tslib": "^2.6.2" - } - }, - "server/aws-lsp-identity/node_modules/@aws-sdk/util-user-agent-browser/node_modules/@smithy/types": { - "version": "4.6.0", + "server/aws-lsp-codewhisperer/node_modules/@smithy/abort-controller": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.2.0.tgz", + "integrity": "sha512-wRlta7GuLWpTqtFfGo+nZyOO1vEvewdNR1R4rTxpC8XU6vG/NDyrFBhwLZsqg1NUoR1noVaXJPC/7ZK47QCySw==", "license": "Apache-2.0", "dependencies": { + "@smithy/types": "^2.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=14.0.0" } }, - "server/aws-lsp-identity/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.901.0", + "server/aws-lsp-codewhisperer/node_modules/@smithy/node-http-handler": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-2.5.0.tgz", + "integrity": "sha512-mVGyPBzkkGQsPoxQUbxlEfRjrj6FPyA3u3u2VXGr9hT8wilsoQdZdvKpMBFMB8Crfhv5dNkKHIW0Yyuc7eABqA==", "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-user-agent": "3.901.0", - "@aws-sdk/types": "3.901.0", - "@smithy/node-config-provider": "^4.3.0", - "@smithy/types": "^4.6.0", + "@smithy/abort-controller": "^2.2.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/querystring-builder": "^2.2.0", + "@smithy/types": "^2.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "aws-crt": ">=1.0.0" - }, - "peerDependenciesMeta": { - "aws-crt": { - "optional": true - } + "node": ">=14.0.0" } }, - "server/aws-lsp-identity/node_modules/@aws-sdk/util-user-agent-node/node_modules/@smithy/types": { - "version": "4.6.0", + "server/aws-lsp-codewhisperer/node_modules/@smithy/protocol-http": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.3.0.tgz", + "integrity": "sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ==", "license": "Apache-2.0", "dependencies": { + "@smithy/types": "^2.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=14.0.0" } }, - "server/aws-lsp-identity/node_modules/@smithy/abort-controller": { - "version": "3.1.9", + "server/aws-lsp-codewhisperer/node_modules/@smithy/querystring-builder": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-2.2.0.tgz", + "integrity": "sha512-L1kSeviUWL+emq3CUVSgdogoM/D9QMFaqxL/dd0X7PCNWmPXqt+ExtrBjqT0V7HLN03Vs9SuiLrG3zy3JGnE5A==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^3.7.2", + "@smithy/types": "^2.12.0", + "@smithy/util-uri-escape": "^2.2.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=16.0.0" + "node": ">=14.0.0" } }, - "server/aws-lsp-identity/node_modules/@smithy/node-http-handler": { - "version": "3.3.3", + "server/aws-lsp-codewhisperer/node_modules/@smithy/types": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.12.0.tgz", + "integrity": "sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==", "license": "Apache-2.0", "dependencies": { - "@smithy/abort-controller": "^3.1.9", - "@smithy/protocol-http": "^4.1.8", - "@smithy/querystring-builder": "^3.0.11", - "@smithy/types": "^3.7.2", "tslib": "^2.6.2" }, "engines": { - "node": ">=16.0.0" + "node": ">=14.0.0" } }, - "server/aws-lsp-identity/node_modules/@smithy/protocol-http": { - "version": "4.1.8", + "server/aws-lsp-codewhisperer/node_modules/@smithy/util-uri-escape": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-2.2.0.tgz", + "integrity": "sha512-jtmJMyt1xMD/d8OtbVJ2gFZOSKc+ueYJZPW20ULW1GOp/q/YIM0wNh+u8ZFao9UaIGz4WoPW8hC64qlWLIfoDA==", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^3.7.2", "tslib": "^2.6.2" }, "engines": { - "node": ">=16.0.0" + "node": ">=14.0.0" } }, - "server/aws-lsp-identity/node_modules/@smithy/querystring-builder": { - "version": "3.0.11", + "server/aws-lsp-identity": { + "name": "@aws/lsp-identity", + "version": "0.0.1", "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^3.7.2", - "@smithy/util-uri-escape": "^3.0.0", - "tslib": "^2.6.2" + "@aws-sdk/client-sso-oidc": "^3.616.0", + "@aws-sdk/token-providers": "^3.744.0", + "@aws/language-server-runtimes": "0.3.6", + "@aws/lsp-core": "0.0.17", + "@smithy/node-http-handler": "^3.2.5", + "@smithy/shared-ini-file-loader": "^4.0.1", + "https-proxy-agent": "^7.0.5", + "vscode-languageserver": "^9.0.1" + }, + "devDependencies": { + "@aws-sdk/types": "^3.734.0", + "@smithy/types": "^3.4.1", + "@types/chai": "^4.3.5", + "@types/chai-as-promised": "^7.1.5", + "@types/mocha": "^10.0.9", + "@types/mock-fs": "^4.13.4", + "@types/sinon": "^17.0.3", + "c8": "^10.1.2", + "chai": "^4.3.7", + "chai-as-promised": "^7.1.1", + "copyfiles": "^2.4.1", + "mock-fs": "^5.2.0", + "sinon": "^19.0.2", + "ts-loader": "^9.5.1", + "ts-mocha": "^11.1.0", + "ts-sinon": "^2.0.2" }, "engines": { - "node": ">=16.0.0" + "node": ">=18.0.0" } }, "server/aws-lsp-identity/node_modules/@smithy/types": { "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz", + "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==", + "dev": true, "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -28883,44 +32071,13 @@ "node": ">=16.0.0" } }, - "server/aws-lsp-identity/node_modules/@smithy/util-uri-escape": { - "version": "3.0.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "server/aws-lsp-identity/node_modules/ts-mocha": { - "version": "11.1.0", - "dev": true, - "license": "MIT", - "bin": { - "ts-mocha": "bin/ts-mocha" - }, - "engines": { - "node": ">= 6.X.X" - }, - "peerDependencies": { - "mocha": "^3.X.X || ^4.X.X || ^5.X.X || ^6.X.X || ^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X || ^11.X.X", - "ts-node": "^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X", - "tsconfig-paths": "^4.X.X" - }, - "peerDependenciesMeta": { - "tsconfig-paths": { - "optional": true - } - } - }, "server/aws-lsp-json": { "name": "@aws/lsp-json", - "version": "0.1.21", + "version": "0.1.22", "license": "Apache-2.0", "dependencies": { "@aws/language-server-runtimes": "0.3.6", - "@aws/lsp-core": "^0.0.16", + "@aws/lsp-core": "^0.0.17", "vscode-languageserver": "^9.0.1", "vscode-languageserver-textdocument": "^1.0.8" }, @@ -28932,35 +32089,13 @@ "node": ">=18.0.0" } }, - "server/aws-lsp-json/node_modules/ts-mocha": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/ts-mocha/-/ts-mocha-11.1.0.tgz", - "integrity": "sha512-yT7FfzNRCu8ZKkYvAOiH01xNma/vLq6Vit7yINKYFNVP8e5UyrYXSOMIipERTpzVKJQ4Qcos5bQo1tNERNZevQ==", - "dev": true, - "bin": { - "ts-mocha": "bin/ts-mocha" - }, - "engines": { - "node": ">= 6.X.X" - }, - "peerDependencies": { - "mocha": "^3.X.X || ^4.X.X || ^5.X.X || ^6.X.X || ^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X || ^11.X.X", - "ts-node": "^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X", - "tsconfig-paths": "^4.X.X" - }, - "peerDependenciesMeta": { - "tsconfig-paths": { - "optional": true - } - } - }, "server/aws-lsp-notification": { "name": "@aws/lsp-notification", "version": "0.0.1", "license": "Apache-2.0", "dependencies": { "@aws/language-server-runtimes": "0.3.6", - "@aws/lsp-core": "^0.0.16", + "@aws/lsp-core": "0.0.17", "vscode-languageserver": "^9.0.1" }, "devDependencies": { @@ -28986,6 +32121,8 @@ }, "server/aws-lsp-notification/node_modules/@smithy/types": { "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz", + "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -28995,30 +32132,9 @@ "node": ">=16.0.0" } }, - "server/aws-lsp-notification/node_modules/ts-mocha": { - "version": "11.1.0", - "dev": true, - "license": "MIT", - "bin": { - "ts-mocha": "bin/ts-mocha" - }, - "engines": { - "node": ">= 6.X.X" - }, - "peerDependencies": { - "mocha": "^3.X.X || ^4.X.X || ^5.X.X || ^6.X.X || ^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X || ^11.X.X", - "ts-node": "^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X", - "tsconfig-paths": "^4.X.X" - }, - "peerDependenciesMeta": { - "tsconfig-paths": { - "optional": true - } - } - }, "server/aws-lsp-partiql": { "name": "@aws/lsp-partiql", - "version": "0.0.18", + "version": "0.0.19", "license": "Apache-2.0", "dependencies": { "@aws/language-server-runtimes": "0.3.6", @@ -29044,66 +32160,19 @@ "@aws-sdk/client-s3": "^3.623.0", "@aws-sdk/types": "^3.734.0", "@aws/language-server-runtimes": "0.3.6", - "@aws/lsp-core": "^0.0.15", + "@aws/lsp-core": "0.0.17", "vscode-languageserver": "^9.0.1", "vscode-languageserver-textdocument": "^1.0.8" } }, - "server/aws-lsp-s3/node_modules/@aws/lsp-core": { - "version": "0.0.15", - "license": "Apache-2.0", - "dependencies": { - "@aws/language-server-runtimes": "^0.2.128", - "@gerhobbelt/gitignore-parser": "^0.2.0-9", - "cross-spawn": "7.0.6", - "jose": "^5.2.4", - "request-light": "^0.8.0", - "vscode-languageserver-textdocument": "^1.0.8", - "vscode-languageserver-types": "^3.17.3", - "vscode-uri": "^3.1.0" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "server/aws-lsp-s3/node_modules/@aws/lsp-core/node_modules/@aws/language-server-runtimes": { - "version": "0.2.129", - "license": "Apache-2.0", - "dependencies": { - "@aws/language-server-runtimes-types": "^0.1.57", - "@opentelemetry/api": "^1.9.0", - "@opentelemetry/api-logs": "^0.200.0", - "@opentelemetry/core": "^2.0.0", - "@opentelemetry/exporter-logs-otlp-http": "^0.200.0", - "@opentelemetry/exporter-metrics-otlp-http": "^0.200.0", - "@opentelemetry/resources": "^2.0.1", - "@opentelemetry/sdk-logs": "^0.200.0", - "@opentelemetry/sdk-metrics": "^2.0.1", - "@smithy/node-http-handler": "^4.0.4", - "ajv": "^8.17.1", - "aws-sdk": "^2.1692.0", - "hpagent": "^1.2.0", - "jose": "^5.9.6", - "mac-ca": "^3.1.1", - "registry-js": "^1.16.1", - "rxjs": "^7.8.2", - "vscode-languageserver": "^9.0.1", - "vscode-languageserver-protocol": "^3.17.5", - "vscode-uri": "^3.1.0", - "win-ca": "^3.5.1" - }, - "engines": { - "node": ">=18.0.0" - } - }, "server/aws-lsp-yaml": { "name": "@aws/lsp-yaml", - "version": "0.1.21", + "version": "0.1.22", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { "@aws/language-server-runtimes": "0.3.6", - "@aws/lsp-core": "^0.0.16", + "@aws/lsp-core": "^0.0.17", "vscode-languageserver": "^9.0.1", "vscode-languageserver-textdocument": "^1.0.8", "yaml-language-server": "1.13.0" @@ -29137,28 +32206,6 @@ "webpack": "^5.94.0", "webpack-cli": "^6.0.1" } - }, - "server/hello-world-lsp/node_modules/ts-mocha": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/ts-mocha/-/ts-mocha-11.1.0.tgz", - "integrity": "sha512-yT7FfzNRCu8ZKkYvAOiH01xNma/vLq6Vit7yINKYFNVP8e5UyrYXSOMIipERTpzVKJQ4Qcos5bQo1tNERNZevQ==", - "dev": true, - "bin": { - "ts-mocha": "bin/ts-mocha" - }, - "engines": { - "node": ">= 6.X.X" - }, - "peerDependencies": { - "mocha": "^3.X.X || ^4.X.X || ^5.X.X || ^6.X.X || ^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X || ^11.X.X", - "ts-node": "^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X", - "tsconfig-paths": "^4.X.X" - }, - "peerDependenciesMeta": { - "tsconfig-paths": { - "optional": true - } - } } } } diff --git a/server/aws-lsp-antlr4/CHANGELOG.md b/server/aws-lsp-antlr4/CHANGELOG.md index a928a4900b..8b2a658e9b 100644 --- a/server/aws-lsp-antlr4/CHANGELOG.md +++ b/server/aws-lsp-antlr4/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [0.1.21](https://github.com/aws/language-servers/compare/lsp-antlr4/v0.1.20...lsp-antlr4/v0.1.21) (2025-11-21) + + +### Features + +* **amazonq:** adding MCP registry for governance for Amazon Q ([#2512](https://github.com/aws/language-servers/issues/2512)) ([e8d4bf5](https://github.com/aws/language-servers/commit/e8d4bf588e9b7bc13102b33ee03bd357f9698811)) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @aws/lsp-core bumped from ^0.0.16 to ^0.0.17 + ## [0.1.20](https://github.com/aws/language-servers/compare/lsp-antlr4/v0.1.19...lsp-antlr4/v0.1.20) (2025-10-01) diff --git a/server/aws-lsp-antlr4/package.json b/server/aws-lsp-antlr4/package.json index 4c30271ebd..50dad13a69 100644 --- a/server/aws-lsp-antlr4/package.json +++ b/server/aws-lsp-antlr4/package.json @@ -1,6 +1,6 @@ { "name": "@aws/lsp-antlr4", - "version": "0.1.20", + "version": "0.1.21", "description": "ANTLR4 language server", "main": "out/index.js", "repository": { @@ -29,7 +29,7 @@ }, "dependencies": { "@aws/language-server-runtimes": "0.3.6", - "@aws/lsp-core": "^0.0.16" + "@aws/lsp-core": "^0.0.17" }, "peerDependencies": { "antlr4-c3": ">=3.4 < 4", diff --git a/server/aws-lsp-codewhisperer/CHANGELOG.md b/server/aws-lsp-codewhisperer/CHANGELOG.md index 0a2d4707dc..25fdaa0dfd 100644 --- a/server/aws-lsp-codewhisperer/CHANGELOG.md +++ b/server/aws-lsp-codewhisperer/CHANGELOG.md @@ -1,5 +1,27 @@ # Changelog +## [0.0.92](https://github.com/aws/language-servers/compare/lsp-codewhisperer/v0.0.91...lsp-codewhisperer/v0.0.92) (2025-11-21) + + +### Features + +* **amazonq:** adding MCP registry for governance for Amazon Q ([#2512](https://github.com/aws/language-servers/issues/2512)) ([e8d4bf5](https://github.com/aws/language-servers/commit/e8d4bf588e9b7bc13102b33ee03bd357f9698811)) + + +### Bug Fixes + +* **amazonq:** prevent base64 encoding error by passing undefined instead of empty object ([#2492](https://github.com/aws/language-servers/issues/2492)) ([30e28b7](https://github.com/aws/language-servers/commit/30e28b75499b1a55da904697fd446a30c6a87665)) +* incorrect error reference in previous fix ([9fddc8e](https://github.com/aws/language-servers/commit/9fddc8e11f583dbf089f93979e1602d8c8795a16)) +* preserve registry server config when updating permissions ([#2515](https://github.com/aws/language-servers/issues/2515)) ([49ca3bb](https://github.com/aws/language-servers/commit/49ca3bbb6dbf9eac4b281aa80cd5ff30b94b3a7e)) +* resolve process crash when managing BID subscription ([#2501](https://github.com/aws/language-servers/issues/2501)) ([5d6590a](https://github.com/aws/language-servers/commit/5d6590a1d8c7aeb80b75036eb0e1b3802afe5c08)) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @aws/lsp-core bumped from ^0.0.16 to ^0.0.17 + ## [0.0.91](https://github.com/aws/language-servers/compare/lsp-codewhisperer/v0.0.90...lsp-codewhisperer/v0.0.91) (2025-11-18) diff --git a/server/aws-lsp-codewhisperer/package.json b/server/aws-lsp-codewhisperer/package.json index 2c5dd9a7fc..d95f450152 100644 --- a/server/aws-lsp-codewhisperer/package.json +++ b/server/aws-lsp-codewhisperer/package.json @@ -1,6 +1,6 @@ { "name": "@aws/lsp-codewhisperer", - "version": "0.0.91", + "version": "0.0.92", "description": "CodeWhisperer Language Server", "main": "out/index.js", "repository": { @@ -38,7 +38,7 @@ "@aws-sdk/util-retry": "^3.374.0", "@aws/chat-client-ui-types": "0.1.68", "@aws/language-server-runtimes": "0.3.6", - "@aws/lsp-core": "^0.0.16", + "@aws/lsp-core": "^0.0.17", "@modelcontextprotocol/sdk": "^1.15.0", "@smithy/node-http-handler": "^2.5.0", "adm-zip": "^0.5.10", diff --git a/server/aws-lsp-identity/package.json b/server/aws-lsp-identity/package.json index a387118283..17ba899781 100644 --- a/server/aws-lsp-identity/package.json +++ b/server/aws-lsp-identity/package.json @@ -27,7 +27,7 @@ "@aws-sdk/client-sso-oidc": "^3.616.0", "@aws-sdk/token-providers": "^3.744.0", "@aws/language-server-runtimes": "0.3.6", - "@aws/lsp-core": "^0.0.16", + "@aws/lsp-core": "0.0.17", "@smithy/node-http-handler": "^3.2.5", "@smithy/shared-ini-file-loader": "^4.0.1", "https-proxy-agent": "^7.0.5", diff --git a/server/aws-lsp-json/CHANGELOG.md b/server/aws-lsp-json/CHANGELOG.md index d3bf1949b5..8ed9da3811 100644 --- a/server/aws-lsp-json/CHANGELOG.md +++ b/server/aws-lsp-json/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [0.1.22](https://github.com/aws/language-servers/compare/lsp-json/v0.1.21...lsp-json/v0.1.22) (2025-11-21) + + +### Features + +* **amazonq:** adding MCP registry for governance for Amazon Q ([#2512](https://github.com/aws/language-servers/issues/2512)) ([e8d4bf5](https://github.com/aws/language-servers/commit/e8d4bf588e9b7bc13102b33ee03bd357f9698811)) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @aws/lsp-core bumped from ^0.0.16 to ^0.0.17 + ## [0.1.21](https://github.com/aws/language-servers/compare/lsp-json/v0.1.20...lsp-json/v0.1.21) (2025-10-14) diff --git a/server/aws-lsp-json/package.json b/server/aws-lsp-json/package.json index d599e6114e..1548f374c6 100644 --- a/server/aws-lsp-json/package.json +++ b/server/aws-lsp-json/package.json @@ -1,6 +1,6 @@ { "name": "@aws/lsp-json", - "version": "0.1.21", + "version": "0.1.22", "description": "JSON Language Server", "main": "out/index.js", "repository": { @@ -27,7 +27,7 @@ }, "dependencies": { "@aws/language-server-runtimes": "0.3.6", - "@aws/lsp-core": "^0.0.16", + "@aws/lsp-core": "^0.0.17", "vscode-languageserver": "^9.0.1", "vscode-languageserver-textdocument": "^1.0.8" }, diff --git a/server/aws-lsp-notification/package.json b/server/aws-lsp-notification/package.json index 9a7c3341d5..5f4185e4b3 100644 --- a/server/aws-lsp-notification/package.json +++ b/server/aws-lsp-notification/package.json @@ -23,7 +23,7 @@ }, "dependencies": { "@aws/language-server-runtimes": "0.3.6", - "@aws/lsp-core": "^0.0.16", + "@aws/lsp-core": "0.0.17", "vscode-languageserver": "^9.0.1" }, "devDependencies": { diff --git a/server/aws-lsp-partiql/CHANGELOG.md b/server/aws-lsp-partiql/CHANGELOG.md index 37efbed366..2587db53c4 100644 --- a/server/aws-lsp-partiql/CHANGELOG.md +++ b/server/aws-lsp-partiql/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.0.19](https://github.com/aws/language-servers/compare/lsp-partiql/v0.0.18...lsp-partiql/v0.0.19) (2025-11-21) + + +### Features + +* **amazonq:** adding MCP registry for governance for Amazon Q ([#2512](https://github.com/aws/language-servers/issues/2512)) ([e8d4bf5](https://github.com/aws/language-servers/commit/e8d4bf588e9b7bc13102b33ee03bd357f9698811)) + ## [0.0.18](https://github.com/aws/language-servers/compare/lsp-partiql/v0.0.17...lsp-partiql/v0.0.18) (2025-09-09) diff --git a/server/aws-lsp-partiql/package.json b/server/aws-lsp-partiql/package.json index ab79d5e11d..1cfc2ff36d 100644 --- a/server/aws-lsp-partiql/package.json +++ b/server/aws-lsp-partiql/package.json @@ -3,7 +3,7 @@ "author": "Amazon Web Services", "license": "Apache-2.0", "description": "PartiQL language server", - "version": "0.0.18", + "version": "0.0.19", "repository": { "type": "git", "url": "https://github.com/aws/language-servers" diff --git a/server/aws-lsp-s3/package.json b/server/aws-lsp-s3/package.json index 3ff71f9e92..f3b11973c0 100644 --- a/server/aws-lsp-s3/package.json +++ b/server/aws-lsp-s3/package.json @@ -10,7 +10,7 @@ "@aws-sdk/client-s3": "^3.623.0", "@aws-sdk/types": "^3.734.0", "@aws/language-server-runtimes": "0.3.6", - "@aws/lsp-core": "^0.0.15", + "@aws/lsp-core": "0.0.17", "vscode-languageserver": "^9.0.1", "vscode-languageserver-textdocument": "^1.0.8" } diff --git a/server/aws-lsp-yaml/CHANGELOG.md b/server/aws-lsp-yaml/CHANGELOG.md index c3e85718c7..c7604a9ae6 100644 --- a/server/aws-lsp-yaml/CHANGELOG.md +++ b/server/aws-lsp-yaml/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [0.1.22](https://github.com/aws/language-servers/compare/lsp-yaml/v0.1.21...lsp-yaml/v0.1.22) (2025-11-21) + + +### Features + +* **amazonq:** adding MCP registry for governance for Amazon Q ([#2512](https://github.com/aws/language-servers/issues/2512)) ([e8d4bf5](https://github.com/aws/language-servers/commit/e8d4bf588e9b7bc13102b33ee03bd357f9698811)) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @aws/lsp-core bumped from ^0.0.16 to ^0.0.17 + ## [0.1.21](https://github.com/aws/language-servers/compare/lsp-yaml/v0.1.20...lsp-yaml/v0.1.21) (2025-10-14) diff --git a/server/aws-lsp-yaml/package.json b/server/aws-lsp-yaml/package.json index 87d324118d..ea103df9f4 100644 --- a/server/aws-lsp-yaml/package.json +++ b/server/aws-lsp-yaml/package.json @@ -1,6 +1,6 @@ { "name": "@aws/lsp-yaml", - "version": "0.1.21", + "version": "0.1.22", "description": "YAML Language Server", "main": "out/index.js", "repository": { @@ -27,7 +27,7 @@ }, "dependencies": { "@aws/language-server-runtimes": "0.3.6", - "@aws/lsp-core": "^0.0.16", + "@aws/lsp-core": "^0.0.17", "vscode-languageserver": "^9.0.1", "vscode-languageserver-textdocument": "^1.0.8", "yaml-language-server": "1.13.0" From 7db0277121b9f70351376637dde2464cb85a4ee2 Mon Sep 17 00:00:00 2001 From: chungjac Date: Fri, 21 Nov 2025 12:48:32 -0800 Subject: [PATCH 23/36] chore: bump agentic version: 1.47.0 (#2516) Co-authored-by: aws-toolkit-automation <> --- app/aws-lsp-codewhisperer-runtimes/src/version.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/aws-lsp-codewhisperer-runtimes/src/version.json b/app/aws-lsp-codewhisperer-runtimes/src/version.json index aeef79ec50..67911637bb 100644 --- a/app/aws-lsp-codewhisperer-runtimes/src/version.json +++ b/app/aws-lsp-codewhisperer-runtimes/src/version.json @@ -1,3 +1,3 @@ { - "agenticChat": "1.46.0" + "agenticChat": "1.47.0" } From ef86b5ce474993265f9ffa8cb184e96eb1d0daee Mon Sep 17 00:00:00 2001 From: invictus <149003065+ashishrp-aws@users.noreply.github.com> Date: Fri, 21 Nov 2025 15:23:18 -0600 Subject: [PATCH 24/36] fix: fix for permission update for servers (#2517) --- .../src/language-server/agenticChat/tools/mcp/mcpManager.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpManager.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpManager.ts index 1b1d9afe6c..a65c3ef4a2 100644 --- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpManager.ts +++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/mcp/mcpManager.ts @@ -1311,7 +1311,7 @@ export class McpManager { serverAllowedTools, agentPath, false, - isRegistryServerConfig(serverCfg) + this.isRegistryModeActive() ) } } From d15c421992242222e0e8b6325bfd5494e68d408a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 21 Nov 2025 16:18:13 -0600 Subject: [PATCH 25/36] chore(release): release packages from branch main (#2518) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- package-lock.json | 2 +- server/aws-lsp-codewhisperer/CHANGELOG.md | 7 +++++++ server/aws-lsp-codewhisperer/package.json | 2 +- 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 25f4408602..bc93e9f8a7 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -2,7 +2,7 @@ "chat-client": "0.1.42", "core/aws-lsp-core": "0.0.17", "server/aws-lsp-antlr4": "0.1.21", - "server/aws-lsp-codewhisperer": "0.0.92", + "server/aws-lsp-codewhisperer": "0.0.93", "server/aws-lsp-json": "0.1.22", "server/aws-lsp-partiql": "0.0.19", "server/aws-lsp-yaml": "0.1.22" diff --git a/package-lock.json b/package-lock.json index 44ef922843..5b1469e4b6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -31865,7 +31865,7 @@ }, "server/aws-lsp-codewhisperer": { "name": "@aws/lsp-codewhisperer", - "version": "0.0.92", + "version": "0.0.93", "bundleDependencies": [ "@amzn/codewhisperer", "@amzn/codewhisperer-runtime", diff --git a/server/aws-lsp-codewhisperer/CHANGELOG.md b/server/aws-lsp-codewhisperer/CHANGELOG.md index 25fdaa0dfd..1ede2ddcac 100644 --- a/server/aws-lsp-codewhisperer/CHANGELOG.md +++ b/server/aws-lsp-codewhisperer/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.0.93](https://github.com/aws/language-servers/compare/lsp-codewhisperer/v0.0.92...lsp-codewhisperer/v0.0.93) (2025-11-21) + + +### Bug Fixes + +* fix for permission update for servers ([#2517](https://github.com/aws/language-servers/issues/2517)) ([ef86b5c](https://github.com/aws/language-servers/commit/ef86b5ce474993265f9ffa8cb184e96eb1d0daee)) + ## [0.0.92](https://github.com/aws/language-servers/compare/lsp-codewhisperer/v0.0.91...lsp-codewhisperer/v0.0.92) (2025-11-21) diff --git a/server/aws-lsp-codewhisperer/package.json b/server/aws-lsp-codewhisperer/package.json index d95f450152..c9ab39c0cc 100644 --- a/server/aws-lsp-codewhisperer/package.json +++ b/server/aws-lsp-codewhisperer/package.json @@ -1,6 +1,6 @@ { "name": "@aws/lsp-codewhisperer", - "version": "0.0.92", + "version": "0.0.93", "description": "CodeWhisperer Language Server", "main": "out/index.js", "repository": { From 1eb3910d4ecb1c643bddca2a7ddcb07baa48d17c Mon Sep 17 00:00:00 2001 From: invictus <149003065+ashishrp-aws@users.noreply.github.com> Date: Fri, 21 Nov 2025 18:50:55 -0600 Subject: [PATCH 26/36] chore: bump agentic version: 1.47.1 (#2519) Co-authored-by: aws-toolkit-automation <> --- app/aws-lsp-codewhisperer-runtimes/src/version.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/aws-lsp-codewhisperer-runtimes/src/version.json b/app/aws-lsp-codewhisperer-runtimes/src/version.json index 67911637bb..0bc3e55b05 100644 --- a/app/aws-lsp-codewhisperer-runtimes/src/version.json +++ b/app/aws-lsp-codewhisperer-runtimes/src/version.json @@ -1,3 +1,3 @@ { - "agenticChat": "1.47.0" + "agenticChat": "1.47.1" } From 8584723839447dda878474e17a3b21a315ffc759 Mon Sep 17 00:00:00 2001 From: invictus <149003065+ashishrp-aws@users.noreply.github.com> Date: Tue, 25 Nov 2025 15:26:11 -0600 Subject: [PATCH 27/36] fix: fix for mcp tool resgistration on smus (#2524) --- package-lock.json | 103 +++++++++--------- server/aws-lsp-codewhisperer/package.json | 2 +- .../agenticChat/tools/toolServer.ts | 12 +- 3 files changed, 58 insertions(+), 59 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5b1469e4b6..6f525d3652 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7925,38 +7925,6 @@ "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", "license": "MIT" }, - "node_modules/@modelcontextprotocol/sdk": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.22.0.tgz", - "integrity": "sha512-VUpl106XVTCpDmTBil2ehgJZjhyLY2QZikzF8NvTXtLRF1CvO5iEE2UNZdVIUer35vFOwMKYeUGbjJtvPWan3g==", - "license": "MIT", - "dependencies": { - "ajv": "^8.17.1", - "ajv-formats": "^3.0.1", - "content-type": "^1.0.5", - "cors": "^2.8.5", - "cross-spawn": "^7.0.5", - "eventsource": "^3.0.2", - "eventsource-parser": "^3.0.0", - "express": "^5.0.1", - "express-rate-limit": "^7.5.0", - "pkce-challenge": "^5.0.0", - "raw-body": "^3.0.0", - "zod": "^3.23.8", - "zod-to-json-schema": "^3.24.1" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@cfworker/json-schema": "^4.1.1" - }, - "peerDependenciesMeta": { - "@cfworker/json-schema": { - "optional": true - } - } - }, "node_modules/@napi-rs/wasm-runtime": { "version": "0.2.12", "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", @@ -12412,23 +12380,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ajv-formats": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", - "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, "node_modules/ajv-keywords": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", @@ -13338,6 +13289,7 @@ "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz", "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==", "license": "Apache-2.0", + "peer": true, "peerDependencies": { "bare-abort-controller": "*" }, @@ -18120,7 +18072,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, "license": "MIT" }, "node_modules/fast-levenshtein": { @@ -23281,6 +23232,7 @@ "integrity": "sha512-mTT6RgopEYABzXWFx+GcJ+ZQ32kp4fMf0xvpZIIfSq9Z8lC/++MtcCnQ9t5FP2veYEP95FIYSvW+U9fV4xrlig==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "browser-stdout": "^1.3.1", "chokidar": "^4.0.1", @@ -25063,7 +25015,6 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -25691,7 +25642,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -29079,6 +29029,7 @@ "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", @@ -29666,7 +29617,6 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" @@ -31885,7 +31835,7 @@ "@aws/chat-client-ui-types": "0.1.68", "@aws/language-server-runtimes": "0.3.6", "@aws/lsp-core": "^0.0.17", - "@modelcontextprotocol/sdk": "^1.15.0", + "@modelcontextprotocol/sdk": "1.19.1", "@smithy/node-http-handler": "^2.5.0", "adm-zip": "^0.5.10", "archiver": "^7.0.1", @@ -31942,6 +31892,29 @@ "node": ">=18.0.0" } }, + "server/aws-lsp-codewhisperer/node_modules/@modelcontextprotocol/sdk": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.19.1.tgz", + "integrity": "sha512-3Y2h3MZKjec1eAqSTBclATlX+AbC6n1LgfVzRMJLt3v6w0RCYgwLrjbxPDbhsYHt6Wdqc/aCceNJYgj448ELQQ==", + "license": "MIT", + "dependencies": { + "ajv": "^6.12.6", + "content-type": "^1.0.5", + "cors": "^2.8.5", + "cross-spawn": "^7.0.5", + "eventsource": "^3.0.2", + "eventsource-parser": "^3.0.0", + "express": "^5.0.1", + "express-rate-limit": "^7.5.0", + "pkce-challenge": "^5.0.0", + "raw-body": "^3.0.0", + "zod": "^3.23.8", + "zod-to-json-schema": "^3.24.1" + }, + "engines": { + "node": ">=18" + } + }, "server/aws-lsp-codewhisperer/node_modules/@smithy/abort-controller": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.2.0.tgz", @@ -32022,6 +31995,28 @@ "node": ">=14.0.0" } }, + "server/aws-lsp-codewhisperer/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "server/aws-lsp-codewhisperer/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "license": "MIT" + }, "server/aws-lsp-identity": { "name": "@aws/lsp-identity", "version": "0.0.1", diff --git a/server/aws-lsp-codewhisperer/package.json b/server/aws-lsp-codewhisperer/package.json index c9ab39c0cc..89005d2f18 100644 --- a/server/aws-lsp-codewhisperer/package.json +++ b/server/aws-lsp-codewhisperer/package.json @@ -39,7 +39,7 @@ "@aws/chat-client-ui-types": "0.1.68", "@aws/language-server-runtimes": "0.3.6", "@aws/lsp-core": "^0.0.17", - "@modelcontextprotocol/sdk": "^1.15.0", + "@modelcontextprotocol/sdk": "1.19.1", "@smithy/node-http-handler": "^2.5.0", "adm-zip": "^0.5.10", "archiver": "^7.0.1", diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/toolServer.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/toolServer.ts index 1b405512b1..0d28dae65d 100644 --- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/toolServer.ts +++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/tools/toolServer.ts @@ -382,10 +382,6 @@ export const McpToolsServer: Server = ({ registerServerTools(server, defs) } - McpManager.instance.events.on(AGENT_TOOLS_CHANGED, (server: string, defs: McpToolDefinition[]) => { - registerServerTools(server, defs) - }) - // Emit metrics after tools are registered McpManager.instance.emitMcpConfigMetrics() } @@ -466,6 +462,14 @@ export const McpToolsServer: Server = ({ // Wait for auth to be initialized before discovering servers const waitForAuthAndDiscover = async () => { try { + // Set up event listener for tool changes during server initialization + McpManager.instance.events.on(AGENT_TOOLS_CHANGED, (server: string, defs: McpToolDefinition[]) => { + if (!ProfileStatusMonitor.getMcpState()) { + return + } + registerServerTools(server, defs) + }) + const serviceManager = AmazonQTokenServiceManager.getInstance() const authState = serviceManager.getState() From adb95deee525f6206224ef3c317b6dc777dbdd61 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 25 Nov 2025 15:48:25 -0600 Subject: [PATCH 28/36] chore(release): release packages from branch main (#2525) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- package-lock.json | 2 +- server/aws-lsp-codewhisperer/CHANGELOG.md | 7 +++++++ server/aws-lsp-codewhisperer/package.json | 2 +- 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index bc93e9f8a7..0933826f6b 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -2,7 +2,7 @@ "chat-client": "0.1.42", "core/aws-lsp-core": "0.0.17", "server/aws-lsp-antlr4": "0.1.21", - "server/aws-lsp-codewhisperer": "0.0.93", + "server/aws-lsp-codewhisperer": "0.0.94", "server/aws-lsp-json": "0.1.22", "server/aws-lsp-partiql": "0.0.19", "server/aws-lsp-yaml": "0.1.22" diff --git a/package-lock.json b/package-lock.json index 6f525d3652..934040f4a0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -31815,7 +31815,7 @@ }, "server/aws-lsp-codewhisperer": { "name": "@aws/lsp-codewhisperer", - "version": "0.0.93", + "version": "0.0.94", "bundleDependencies": [ "@amzn/codewhisperer", "@amzn/codewhisperer-runtime", diff --git a/server/aws-lsp-codewhisperer/CHANGELOG.md b/server/aws-lsp-codewhisperer/CHANGELOG.md index 1ede2ddcac..a45a396a1a 100644 --- a/server/aws-lsp-codewhisperer/CHANGELOG.md +++ b/server/aws-lsp-codewhisperer/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.0.94](https://github.com/aws/language-servers/compare/lsp-codewhisperer/v0.0.93...lsp-codewhisperer/v0.0.94) (2025-11-25) + + +### Bug Fixes + +* fix for mcp tool resgistration on smus ([#2524](https://github.com/aws/language-servers/issues/2524)) ([8584723](https://github.com/aws/language-servers/commit/8584723839447dda878474e17a3b21a315ffc759)) + ## [0.0.93](https://github.com/aws/language-servers/compare/lsp-codewhisperer/v0.0.92...lsp-codewhisperer/v0.0.93) (2025-11-21) diff --git a/server/aws-lsp-codewhisperer/package.json b/server/aws-lsp-codewhisperer/package.json index 89005d2f18..a413d6b58b 100644 --- a/server/aws-lsp-codewhisperer/package.json +++ b/server/aws-lsp-codewhisperer/package.json @@ -1,6 +1,6 @@ { "name": "@aws/lsp-codewhisperer", - "version": "0.0.93", + "version": "0.0.94", "description": "CodeWhisperer Language Server", "main": "out/index.js", "repository": { From 2fb3f0ed93979f46cbb91a488f5593c712e5816d Mon Sep 17 00:00:00 2001 From: invictus <149003065+ashishrp-aws@users.noreply.github.com> Date: Tue, 25 Nov 2025 18:06:27 -0600 Subject: [PATCH 29/36] chore: bump agentic version: 1.48.0 (#2526) Co-authored-by: aws-toolkit-automation <> --- app/aws-lsp-codewhisperer-runtimes/src/version.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/aws-lsp-codewhisperer-runtimes/src/version.json b/app/aws-lsp-codewhisperer-runtimes/src/version.json index 0bc3e55b05..8454f067ee 100644 --- a/app/aws-lsp-codewhisperer-runtimes/src/version.json +++ b/app/aws-lsp-codewhisperer-runtimes/src/version.json @@ -1,3 +1,3 @@ { - "agenticChat": "1.47.1" + "agenticChat": "1.48.0" } From 56ee4891a2e19b259c129fd531f8b06f763c1b57 Mon Sep 17 00:00:00 2001 From: Rajanna-Karthik Date: Wed, 26 Nov 2025 11:27:25 -0800 Subject: [PATCH 30/36] feat: Adding ATX-FES apis support for transformation (#2521) * Atx riv final (#2520) * feat: add atx fes integration for transform profiles * feat: implement Transform profile discovery via ATX FES with cache clearing * fix: remove unsupported eu-central-1 region from ATX FES endpoints * feat: add separate flow for RTS and ATX listavailableprofile api * fix: remove profile handling from atxnettransformserver * feat: separating qdev and aws transform * fix: fixing unit tests * fix: adding tests * fix: updating as per langugae server runtime updates * feat: add starttranform and workspace * feat: added getTransformInfo and its support methods * fix: with new runtimes * feat: add stopjob support * merged stopjob and added upload plan * chore: force use of new runtimes * fix: completed getting plan, worklogs, and final artifact * chore: deleting unused RPC messages * feat: added list worklogs before planning * fix: remove unused methods --------- Co-authored-by: Pranav Firake Co-authored-by: pranav firake Co-authored-by: Jordan Miao * fix: adding atxcredentials details * fix: updating plan for completed status * fix: separating aws atx and q credentials storage * fix: changed customer_output to customer_input * fix: added new atx-fes-client models to allow CUSTOMER_INPUT types * fix: multiple accounts token auth * fix: auto-sync transform profiles using TransformConfigurationServer and prevent us-east-1 defaults * fix: set default fallback transform request from net 8 to net 10 * fix: changed back q flow to net 8, added target framework to create job requests * fix: updates aws-server-runtimes to 0.3.8 and added Syd endpoint to constants * fix: maintaining backwards compatibility * fix: fixing failing test * fix: fixing tests * fix: get endpoints by stage * fix: regex for appUrl not handling gamma stage and return default region * fix: fix for initInstance and moved init of atx servers to be after base server is initialized * fix: fixing tests * fix: fixing tests * fix: fixing tests * chore: bumping lsp version to 0.3.8 * chore: revert naming from Q back to codewhisperer * chore: deleting stale function * chore: updating folder * fix: changed transformserver to log caught errors instead of throwing * chore: reverting changes and adding todo * fix: tests with changes * fix: tests with changes * chore: removing debug logs --------- Co-authored-by: Pranav Firake Co-authored-by: pranav firake Co-authored-by: Jordan Miao Co-authored-by: Sherry Lu <75588211+XiaoxuanLu@users.noreply.github.com> Co-authored-by: Chris Long --- app/aws-lsp-antlr4-runtimes/package.json | 2 +- app/aws-lsp-buildspec-runtimes/package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../src/agent-standalone.ts | 5 + .../src/token-standalone.ts | 5 + app/aws-lsp-identity-runtimes/package.json | 2 +- app/aws-lsp-json-runtimes/package.json | 2 +- .../package.json | 2 +- app/aws-lsp-partiql-runtimes/package.json | 2 +- app/aws-lsp-s3-runtimes/package.json | 2 +- app/aws-lsp-yaml-json-webworker/package.json | 2 +- app/aws-lsp-yaml-runtimes/package.json | 2 +- app/hello-world-lsp-runtimes/package.json | 2 +- chat-client/package.json | 2 +- client/vscode/package.json | 2 +- ...on-elastic-gumby-frontend-client-1.0.0.tgz | Bin 0 -> 1257977 bytes core/aws-lsp-core/package.json | 2 +- .../ideCredentialsProvider.test.ts | 43 + .../src/credentials/ideCredentialsProvider.ts | 13 + .../q-agentic-chat-server/package.json | 2 +- package-lock.json | 845 +++++++- package.json | 2 +- server/aws-lsp-antlr4/package.json | 2 +- server/aws-lsp-buildspec/package.json | 2 +- server/aws-lsp-cloudformation/package.json | 2 +- server/aws-lsp-codewhisperer/package.json | 6 +- server/aws-lsp-codewhisperer/src/index.ts | 1 + .../agenticChat/agenticChatController.test.ts | 11 + .../transformConfigurationServer.test.ts | 204 ++ .../transformConfigurationServer.ts | 397 ++++ .../language-server/netTransform/atxModels.ts | 95 + .../netTransform/atxNetTransformServer.ts | 125 ++ .../netTransform/atxTransformHandler.ts | 1841 +++++++++++++++++ .../tests/AtxTokenServiceManager.test.ts | 69 + .../src/shared/amazonQServer.test.ts | 33 + .../src/shared/amazonQServer.ts | 57 +- .../AmazonQIAMServiceManager.test.ts | 28 + .../AmazonQIAMServiceManager.ts | 19 + .../AmazonQTokenServiceManager.test.ts | 76 + .../AmazonQTokenServiceManager.ts | 117 +- .../AtxTokenServiceManager.ts | 383 ++++ .../BaseAmazonQServiceManager.test.ts | 32 + .../BaseAmazonQServiceManager.ts | 29 + .../atxTransformProfiles.ts | 150 ++ .../shared/amazonQServiceManager/testUtils.ts | 9 + .../src/shared/constants.ts | 28 + .../src/shared/proxy-server.ts | 8 + .../src/shared/testUtils.ts | 1 + .../src/shared/utils.test.ts | 74 + .../aws-lsp-codewhisperer/src/shared/utils.ts | 13 + server/aws-lsp-identity/package.json | 2 +- .../profiles/profileService.test.ts | 4 - .../profiles/profileService.ts | 7 +- .../profiles/sharedConfigProfileStore.ts | 22 +- server/aws-lsp-json/package.json | 2 +- server/aws-lsp-notification/package.json | 2 +- server/aws-lsp-partiql/package.json | 2 +- server/aws-lsp-s3/package.json | 2 +- server/aws-lsp-yaml/package.json | 2 +- server/device-sso-auth-lsp/package.json | 2 +- server/hello-world-lsp/package.json | 2 +- 62 files changed, 4687 insertions(+), 119 deletions(-) create mode 100644 core/atx-fes-client/amazon-elastic-gumby-frontend-client-1.0.0.tgz create mode 100644 server/aws-lsp-codewhisperer/src/language-server/configuration/transformConfigurationServer.test.ts create mode 100644 server/aws-lsp-codewhisperer/src/language-server/configuration/transformConfigurationServer.ts create mode 100644 server/aws-lsp-codewhisperer/src/language-server/netTransform/atxModels.ts create mode 100644 server/aws-lsp-codewhisperer/src/language-server/netTransform/atxNetTransformServer.ts create mode 100644 server/aws-lsp-codewhisperer/src/language-server/netTransform/atxTransformHandler.ts create mode 100644 server/aws-lsp-codewhisperer/src/language-server/netTransform/tests/AtxTokenServiceManager.test.ts create mode 100644 server/aws-lsp-codewhisperer/src/shared/amazonQServiceManager/AtxTokenServiceManager.ts create mode 100644 server/aws-lsp-codewhisperer/src/shared/amazonQServiceManager/atxTransformProfiles.ts diff --git a/app/aws-lsp-antlr4-runtimes/package.json b/app/aws-lsp-antlr4-runtimes/package.json index 49c60085ad..3f49cd5202 100644 --- a/app/aws-lsp-antlr4-runtimes/package.json +++ b/app/aws-lsp-antlr4-runtimes/package.json @@ -12,7 +12,7 @@ "webpack": "webpack" }, "dependencies": { - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "^0.3.8", "@aws/lsp-antlr4": "*", "antlr4-c3": "^3.4.2", "antlr4ng": "^3.0.14" diff --git a/app/aws-lsp-buildspec-runtimes/package.json b/app/aws-lsp-buildspec-runtimes/package.json index d9cd2cefaf..f2f28f8695 100644 --- a/app/aws-lsp-buildspec-runtimes/package.json +++ b/app/aws-lsp-buildspec-runtimes/package.json @@ -7,7 +7,7 @@ "compile": "tsc --build" }, "dependencies": { - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "^0.3.8", "@aws/lsp-buildspec": "^0.0.1" } } diff --git a/app/aws-lsp-cloudformation-runtimes/package.json b/app/aws-lsp-cloudformation-runtimes/package.json index 7b2cc87389..26e8574907 100644 --- a/app/aws-lsp-cloudformation-runtimes/package.json +++ b/app/aws-lsp-cloudformation-runtimes/package.json @@ -7,7 +7,7 @@ "compile": "tsc --build" }, "dependencies": { - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "^0.3.8", "@aws/lsp-cloudformation": "^0.0.1" } } diff --git a/app/aws-lsp-codewhisperer-runtimes/package.json b/app/aws-lsp-codewhisperer-runtimes/package.json index 4ef8c94120..272bba7326 100644 --- a/app/aws-lsp-codewhisperer-runtimes/package.json +++ b/app/aws-lsp-codewhisperer-runtimes/package.json @@ -23,7 +23,7 @@ "local-build": "node scripts/local-build.js" }, "dependencies": { - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "^0.3.8", "@aws/lsp-codewhisperer": "*", "copyfiles": "^2.4.1", "cross-env": "^7.0.3", diff --git a/app/aws-lsp-codewhisperer-runtimes/src/agent-standalone.ts b/app/aws-lsp-codewhisperer-runtimes/src/agent-standalone.ts index 49600a91b8..a7bd21d013 100644 --- a/app/aws-lsp-codewhisperer-runtimes/src/agent-standalone.ts +++ b/app/aws-lsp-codewhisperer-runtimes/src/agent-standalone.ts @@ -6,6 +6,8 @@ import { CodeWhispererServer, QAgenticChatServerProxy, QConfigurationServerTokenProxy, + TransformConfigurationServerTokenProxy, + AtxNetTransformServerTokenProxy, QLocalProjectContextServerProxy, QNetTransformServerTokenProxy, WorkspaceContextServerTokenProxy, @@ -40,6 +42,9 @@ const props = { // LspToolsServer, AmazonQServiceServerIAM, AmazonQServiceServerToken, + // ATX Servers + TransformConfigurationServerTokenProxy, + AtxNetTransformServerTokenProxy, ], name: 'AWS CodeWhisperer', } as RuntimeProps diff --git a/app/aws-lsp-codewhisperer-runtimes/src/token-standalone.ts b/app/aws-lsp-codewhisperer-runtimes/src/token-standalone.ts index 266dd06535..4cad35b7ca 100644 --- a/app/aws-lsp-codewhisperer-runtimes/src/token-standalone.ts +++ b/app/aws-lsp-codewhisperer-runtimes/src/token-standalone.ts @@ -4,6 +4,8 @@ import { CodeWhispererServerTokenProxy, QChatServerTokenProxy, QConfigurationServerTokenProxy, + TransformConfigurationServerTokenProxy, + AtxNetTransformServerTokenProxy, QNetTransformServerTokenProxy, QLocalProjectContextServerProxy, WorkspaceContextServerTokenProxy, @@ -25,6 +27,9 @@ const props = createTokenRuntimeProps(VERSION, [ IdentityServer.create, QLocalProjectContextServerProxy, WorkspaceContextServerTokenProxy, + + TransformConfigurationServerTokenProxy, + AtxNetTransformServerTokenProxy as any, ]) standalone(props) diff --git a/app/aws-lsp-identity-runtimes/package.json b/app/aws-lsp-identity-runtimes/package.json index f24156f2a6..719960c5c3 100644 --- a/app/aws-lsp-identity-runtimes/package.json +++ b/app/aws-lsp-identity-runtimes/package.json @@ -7,7 +7,7 @@ "compile": "tsc --build" }, "dependencies": { - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "^0.3.8", "@aws/lsp-identity": "^0.0.1" } } diff --git a/app/aws-lsp-json-runtimes/package.json b/app/aws-lsp-json-runtimes/package.json index 1073894a41..ab805b6a16 100644 --- a/app/aws-lsp-json-runtimes/package.json +++ b/app/aws-lsp-json-runtimes/package.json @@ -11,7 +11,7 @@ "webpack": "webpack" }, "dependencies": { - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "^0.3.8", "@aws/lsp-json": "*" }, "devDependencies": { diff --git a/app/aws-lsp-notification-runtimes/package.json b/app/aws-lsp-notification-runtimes/package.json index 3ec6f10249..09a2b8fa53 100644 --- a/app/aws-lsp-notification-runtimes/package.json +++ b/app/aws-lsp-notification-runtimes/package.json @@ -7,7 +7,7 @@ "compile": "tsc --build" }, "dependencies": { - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "^0.3.8", "@aws/lsp-notification": "^0.0.1" } } diff --git a/app/aws-lsp-partiql-runtimes/package.json b/app/aws-lsp-partiql-runtimes/package.json index ebf9473883..73e20a7d30 100644 --- a/app/aws-lsp-partiql-runtimes/package.json +++ b/app/aws-lsp-partiql-runtimes/package.json @@ -11,7 +11,7 @@ "package": "npm run compile && npm run compile:webpack" }, "dependencies": { - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "0.3.8", "@aws/lsp-partiql": "0.0.19" }, "devDependencies": { diff --git a/app/aws-lsp-s3-runtimes/package.json b/app/aws-lsp-s3-runtimes/package.json index b347462a73..1282d4d965 100644 --- a/app/aws-lsp-s3-runtimes/package.json +++ b/app/aws-lsp-s3-runtimes/package.json @@ -10,7 +10,7 @@ "compile": "tsc --build" }, "dependencies": { - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "^0.3.8", "@aws/lsp-s3": "^0.0.1" } } diff --git a/app/aws-lsp-yaml-json-webworker/package.json b/app/aws-lsp-yaml-json-webworker/package.json index 6516bde888..6811856a95 100644 --- a/app/aws-lsp-yaml-json-webworker/package.json +++ b/app/aws-lsp-yaml-json-webworker/package.json @@ -11,7 +11,7 @@ "serve:webpack": "NODE_ENV=development webpack serve" }, "dependencies": { - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "^0.3.8", "@aws/lsp-json": "*", "@aws/lsp-yaml": "*" }, diff --git a/app/aws-lsp-yaml-runtimes/package.json b/app/aws-lsp-yaml-runtimes/package.json index e849429bbd..f03a68cf41 100644 --- a/app/aws-lsp-yaml-runtimes/package.json +++ b/app/aws-lsp-yaml-runtimes/package.json @@ -11,7 +11,7 @@ "webpack": "webpack" }, "dependencies": { - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "^0.3.8", "@aws/lsp-yaml": "*" }, "devDependencies": { diff --git a/app/hello-world-lsp-runtimes/package.json b/app/hello-world-lsp-runtimes/package.json index 7bced44254..e9727ccea6 100644 --- a/app/hello-world-lsp-runtimes/package.json +++ b/app/hello-world-lsp-runtimes/package.json @@ -15,7 +15,7 @@ }, "dependencies": { "@aws/hello-world-lsp": "^0.0.1", - "@aws/language-server-runtimes": "0.3.6" + "@aws/language-server-runtimes": "^0.3.8" }, "devDependencies": { "@types/chai": "^4.3.5", diff --git a/chat-client/package.json b/chat-client/package.json index ac7194974b..d76e9d33ec 100644 --- a/chat-client/package.json +++ b/chat-client/package.json @@ -25,7 +25,7 @@ }, "dependencies": { "@aws/chat-client-ui-types": "0.1.68", - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "^0.3.8", "@aws/language-server-runtimes-types": "0.1.62", "@aws/mynah-ui": "^4.38.0" }, diff --git a/client/vscode/package.json b/client/vscode/package.json index 8f8b68e7f8..fdb0786800 100644 --- a/client/vscode/package.json +++ b/client/vscode/package.json @@ -352,7 +352,7 @@ "@aws-sdk/credential-providers": "^3.731.1", "@aws-sdk/types": "^3.734.0", "@aws/chat-client-ui-types": "0.1.68", - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "^0.3.8", "@types/uuid": "^9.0.8", "@types/vscode": "^1.98.0", "jose": "^5.2.4", diff --git a/core/atx-fes-client/amazon-elastic-gumby-frontend-client-1.0.0.tgz b/core/atx-fes-client/amazon-elastic-gumby-frontend-client-1.0.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..ad8922ed883120f5735b2a725ebecc6417c93eaa GIT binary patch literal 1257977 zcma&NQ;=p&7d2S6ZQHhOySmtA+qP}9%kHOa+paF#?s7eUzu&~f%-l`Hxj1<)^6ZRU znS1A2D~V%aK;jO-twF%AdSKJcHZ*av7~w%_;{_Q~_NPmBH(cnO>Hl)JRMYG0X6tI| z=F4j`r32>8fUo!D2ijk+!WYchxS9q~8#p*Tcv%BM5TnMIK?7NeKRKWTSO{98L~(*S z`dM&Tzz;#$jZIh?px7NhwmxpZDB0N9mI;-sXQzQXT`#@9w_7*9w>zIEMrlMbgx)7t zYE3$J%Qj%|x{gJKBQBW0;Xds!wK@n_`EnaYnhZLCp1%}L0jZ)xv!Xl)2raVY5XUey zSpxyhs)Ka@fFkOj!a}BV_MQ7|cE_CT4Gc;XU+s4CB#6ElKdx78C?HXA;N2}U6?jK? zTbp=5IOh)XcTYOqL)^>Pb;{0E>{l<{=|@BWg>4Dd1p8dK^+}{f;djSfh0)zK3?8py zx0|{^2U9HL22I{J56TuW7O@(*Mpyn2=i~zQJ8TiZ8<>e5UQqsYG)39}8Sc~ZqwcsS zUarc}j>Ezh(d6gX|6mi{!U}`)BB+ALDVI%u}|eO5TKEdYGWyzmb$a|wVNFH?ex>%+}_sn8o>!9 zV7W%K_w({OMx}Q7VnnUVkXbAEv!>|N?Tb4j&G_qO+ShXa{Wcp&i!0;!1#K%p9%R&; zK=)wrkl*zU{)XKjcoF<5-D(w;Q*K2=90S+yg>+*35WS-I;VmwdBFTx&q1WSI4Y%iYT>c4O?7}G0zp<1kCNMlsZj79HKwcPGj{S|xVgeEn&nANBq)Di?J+v&sTh5A+>>LSsd>B~2`ZTJR ztGHpgy%H22Y7$NZgnPuEA*3kR?9{Mp!SJ;jL*)z20MWJ0f6z8 zu&ma&G&0&)To|&e3f^2LNA@hMbe&Xbk0Z5C;>-OwtSFNsrs?`swz^-j;e+@0tY;%A ziiX^LkeH=x@GXr8JDam7^^M&Cx>`HOy87EXN5^Y8?KaP_uWdkWV~dBYrLTJ+WWa2R zTFqsbFaM?X-+gR|qBLx+6Or|FN`x|qJ^aq? zbGX=$9jHK>qCBPzK^{aEw{xi|7TH^5gz_Z-#FtJgB4`o>9o?!3ihWHD{^ZZF#D0^N z#?BH-kTOC6FHaTHL1)IJmKxl@TYF!EPr_ZWKcQt+Pv!p91xr zV4h|i(nZt7zp})nvd1)^e{PI}-Q$YLCBaAz^;ts7V^g5Q5N438IAI+Gkv>TvBIK!f zp)^>_8;I#>@!U*SzKOiUG(;JH@VeHD*n_FC!4*M7k6qFE!&KG%2Ic->(>VZ{&(^zl zoFRAPGe)-P1|M(jFM>FOWCJl}Gg}IV5#cgNWD!*hq5+@xck?0ZtJ!iDgIW&n!*zWO zs0sy&7ZA`g;t#Sx^aY@RJir!dv67Mo-4vMS$m}N<>?;Kgqp1N5ekbLIZr4cL>g^_N zHJb!o(6q(#e4~_{oijpmC`$B9qBfSuR>$jr@)Z}IXB5#1LYhLma6GrVBdowT5Cp5} z1$`*(iU+~q{2;k}0=6zTA*M0+yXQE*t~&^URHINCEJMBGqeRw~d@pc45sjyHmOxc{ z@WIT(&4f`(N*B*#r+;o>Nr1LM2Twua%NVQ7Ky3eN=tn9iKagP`pi_sk2Pp(c{F`W4 zR4(oH#6?Q*$J5tE9u?Ad{)PKPgqtV=D*Wdis%qRQX{EIxwhBiDt^;&`E&0qvuwVrV zQFII)mu3aAgRS2Wj4!pCc+U5SPCDW-jMKdg7K!*YuO2uF5*M<}B`n1> zc;wwLE3tj+O8Qn3q{=T5-#Z;hRZ{1HUZ+2rW%Z6MAcM{Q1Ry?C>jpG3X)3Xxwlcz~ zX8k7HPTyc8QCVL-(IBBMd3IomqJOYK*$gD}!8FwQVxSts%!!B+^PQ^+&%SkoEr|Dt zmMzHmAquAPBL1Lbwgpc5H$DgDfW3v}ETkgp5(Whn2};D-g4qZAltc@9@1S;qL6Ma* z%2}n1zn{otR*{yFc$)QG%lbni9h)Us%H`dFJ7hlZyW-05<*{dWx``NrW|I&)B&SD# z%Z_!60z`xoUuzrGb)1&hKy6lVTNS%tN0HdPcrKC345C~lh|b|)Q1QmZr{JU~tvX}# z7(d}LdFaTWRCaUOj4kjRL;AdAxwhb49db`#7zB2^hS(}8YKp+|_;BJ{RNxd9{MPaIdqI4I3(uR!XvV3hp7`Jo`m*EmV*WHuC4ztMmcqtG#lX?m7|X&Iz5QbF zq%}iQkiW_PCMB5eXho<%ft^V%gTNBbd%Lq4F|d8hE_g;H2W7l-#(zMpb*9{sXb~7( z7eA!bl_Dxaoy*NRLXU(UXyto{$ua$lIk9Sw?zU54B@iZFxL=o$N116yM~E2zC4yNT zhw?K!2L`&PgR$RH_3mZm^G7?p`lW5#h7xj|!NV&q%-9%FxW*ZnX%5>wb)#9@f(%mB z-@|*pVp`$m;O|P5x-#&9!*e_)FaK?1WQpT$Cq$+il1BQ#pY2s16uyhxAOzgoii`R~IBI^wJ{Yek@wu2NQi{)!=XOg`1=|Ug z#>NOUxTMPnWX7wSa{;@#@$Po(bIQ+?K`QnbMQYS7VHAs@C`MU?TaxFj7pW{2bmgcQ zk{@T?MQ0Wb7RBlSaiM#D%>G#xnPCmIvEGZKRI@-FWmEd{n(N1Du&jvIz+Eg5UJ7Ho zvC;UCa}Yz?L^TQ`yV4X1d}ACz?K}=lTW%**SVB9(7?W5|Sq$7BH`App!5$gd!D&6e zgH6#(&MzyPO3zkAmUkY0JYDA#p}?`ZtVd(~T3fbk)PXx_EsC3JBF$2I9>hWZA8cD- z5BFruG6bT|2$K8L?%pOnh{v}#;R-BjqWK=-rnH0#A?v6nTzE(0qk@NuIyak}^NQ?| zI8eEy=UhL8_xpm6Btedy{Noh7XRG1nkQ!sf&Urh@a%My7AcgoQPhGG@ zLO+JFh~TQdO{D+oM?Ao|D-(E;;|szCJF7Uaas}Vhn5IWcfMv#mWFtcHmPtEFf(KmO z#1Z`AI;72GPciSQLoto2&=b@hRdcwcTSwo2+s5r;;(N4{${S+@1pjg;=}8jk-UTt$ z6hYrFIyQRm>=MrsL&RM86uG5fDz;u8*m&9>j=*=MMSM|p0w%=sL1~aS`m1nMQhU8v zz0VJk&T3l2pgU~yN8z$Xpbs;=vEVmD^69MVa(}emS$Trcl;EF=Uy(gwkiq+Aar0Y5 zdsyx_uBYsG(q8H-kYED3Z=^OO6j2a-&PXw-9FHTUm7$@?>dQ+Z8MDld*-81G6WJLY z4+a@wl~+W60Z#tKI9X`-SyXx2+WNApy?P>Y%HM?2XVON_vzM|JIkwy7Ck|3t5ylgH zbPRrMCn!lG-W2{ft6*_Lp>BL0I2n{1f|E2itU-vy4vGCOCJnJ)#e5-b zi?%PlK;zzrUIz!X44aTmGEypWjVKaK&s=KJX+k&)I&FHlAry*6)Y|tDA&-rJ2LUId z0e^!fQ_`~Tw8bU42Q*aPzPh3a5@H?H)C4q0iXIxD*U7w8^n+lXWhgwHAw==a5c_s; z?-kRcMR~{SKB#T6J{kFnw0nmBM=`_%sXu(YPH2$*PCnPL7W}tE|5t($xxWg*B5Y*J zQy9ZZFD%5qBl@PY=%Z8(r7dIEDT6*Z-XQ{m7w|MHm1qeil#m?C7`%m@)E0A{ecwIE zWa&K;cZk2uxOsd_v&fvDZS@cm#QgOk8Vro|`Yshg(FN`Y07|PP4zt^G^CtnW2}^Ga zSitd%$PVxE=KexHTYq=;p&VMd0-~U4J*h1Re8L);( zw%9c0V>!-ghNEn}oW$5yu6h?A55sYWp%QJ>!io7}V2NUtP&%`L| z@AFh)P(_JIXA@~_!Wcru`_`(6&vC8sbJVKiK^!aP*>~zw1clQF|GWg+yK!t)=RhMj|Lq^jx z<`gcTNzAA*^PO!#xH_UVt;Eg3B6a$wd!BpZ0StTZS`Pk~7qjoH0Kg2OuBW!KqqW6_ zP^H7q-2bQlEt6Vt&84rtZP)92KU=V~t2Z=^UEoh|>GqC3S65$8#JSej-zwqM@Il`~ zBGpCe&~9v@p5dbIpegK6y~X{^T%0sX}JlBWy<`$h)fK zW4aVaL-}|uC0BKTqPAY_vF?tf$lo41aP;;xrs}E-`)_=C-jI!-3k(v_5uid<BY z6^RFjGYZKC!QR;ot|Va*!$P zwqLa2n32s56IL6yXcE%fNw4XT#ay%z3PGec@7%`D%fYNca8YzK(pB5#~ZwL>$U zgqy?8!Y0Abj>EGu`=SFH)Ct`77X{Z1&W8ra54kKc>D=83^+l7**`3xC?COoTS2Gs8 zz#{l0NV~hE@E67`RM_4TlXfNq5e*sd5lpk{s>QpCxHV0~#V#|z2t4*Cv55gefBV11 z{%Xgthjik{UB0vaf!(hwn_?MOCN^&HKa-06^{yoThm)HZOH}H|11?h84ol3LBt79R z#t8m`pnS42Vw57zO?Da=QK3oX*cajbuj_|jlx+hZkZU0Hhgd^yOn8DEXuPqunX!id za`g~DBYDP87OGGK-aoabuZHIbCrTu(ifGz6@!)!jnlbp}lW2kYTw?$|~ zY$K?VTHTsx!_>9U2FoH5u^bBxKrc|66k$It5Xg6h7Bb5wY1!^qrQ)bgF(`DT&c|k} z>HO>P(i_x}$k$((k3H`|Xs@o=*bR~clJUw!Xy&<>+v;!G(%6s%&Qeg=4qa@eo(Kza z2vJ#?a~A}cN#&tti6L#?v;)EzO0U&@EjBgX%Z|%0U8A_s)f}QELnx=97NzOIWH-sg{02AVLbX!&nz9L3@n#p(+(G;Bp{amWk(`NDFx>{mbyX;&SEjmL?=7!(|^EotZJ{i`K~} zCCuPPQ-3j-veR(?4Z{;=yq(6v-uXpd7Yv#}SI~~cUk+B|WmgS@-+4%=p0w$IQfEO^ zRMRPJy>>3b{>X(I`$@Ik5z=_o?lJf4mlnDN-!ROeZh4sVii9j7&JRLcrSA!}fW$(v zI9ok!3!5t6Ydu-C8@!!=eYz^|d?;6%@Vad~F7v3p0%^49C11b$3~d!|fr*rgUxD4l z>aSm?XJf(Z-$rz5Uwx{KtG{lA$C5$1zP^R!V#{3uoSU@hS8dDRpUQVGg?PVqFP}?2 zAyWo{k?g=VIY1RK(V4>WtKyvTt+Arb&V8A_|LL;Nr$fL17*DOZ7U+0}VF-*5Aiy#G zf}T`f3p|vmeKu;+t6Pl)*m!q-`)*VJJKgzyRcZ&FuLZg{er44IN0VtjcF*Di*~K@2 za>oz<@n0MUz@B3Cv2X50XOge?2Ezu-ipxG{iiEF*ACPGJdG$cU7g}Q=Km6hDG|Ocl z-K%})H@Fc$ugkvsvh(*_#C)F1zT^aO@pWL#@%g(WLv+hGJr*_= z{?g;_S|D64P^3XP7Sj0r*{Dt<`(G?6-OszTn-3Q!dcA9Sya}dupOJXSz&5RrL*T!_ zBGM?nhj#M^?ui3faAk}>BZ(=TiFym@Tnz7ttI1=5jY%xuL#N-%-q1+(lTjd+AV>E%zFmvJIeg_MSzQr}3;(Nox-{sdxe^uWbx0Ae$k~nOTMp2^erk7W_AtprI`g*C7g$7u<>hu`8|^?-F?|hR3->Y((MR&C3sWv>-I09Y0U0OPNOlgF1K} zIS+bt_tl4+|AqW>x|$(xUr1If74Xus+{ zot~yNrT43cn)jT7lkKIY671$6bJ%mB6fS~Y=v?~AL?~0dg~U>RQXG+4RTiA1a{vx_yq5rgdIrd z@>)p-z3P9orN1P@lhLjGQzDW;HVg^Yi373hzF>-3dACU^880)~gGd^N>oJVwri7)f z#lzm;*H+03ZaG{;^bZ?o8nxJdIJOuAh9M1%GBYm@Y%YtOoDmz&Vs{119PHGINGjYx zQ)N(qKgow-%}>J}Y25}h68f3ga4~oWSxuU9KjpyM%Ic^Bp(#Cwz_$5C$`&UQZup%& zgY{%oM~aTdc!`=&P988`;hI$B@mR*!gE#cZ0B%K@SaW;|F{DLxWqyfNFC3Py9=#{L z)Iva9@ST}ff5AZ!y%wqyO>-rwG7nnJeTh{@ozD1vGs0%jkA`tY z{126}07Zr~b;>ADEsljLkFv<|9(as(#X*58_%CG=WbmLgs;t0ifn;7<)7e?FvGRF; zVmA#Cqq$vV4d}aw%uh~z>j~pE$RGl==$tuT<5Nq}f#E(JO8vH_rn0oi8-Dhdd2Sk% z`EDm~*rq&EK2a|?;%@$wN9?i@=$Ki){K5VBF|0E?6$#cTmQbS^^86rhXpFfUZ!)_l z(%K9&RT7wih<@ZsMp?WNxu3PLTcI{QVdfzt2FDolG>7q!^a&+J$w3TvXP^TsRQ)(t zV%m=IFZm5(+FF{m>>}oQ4R_>!LNQNTTIOd^tX@HU=LQ4p1QPQIG(j{zerFZq=u({3 zq8R^5OeaC_TI=8Do4+b$yOF|r*fG}w*Bq56*bPeL07aFykV|b0Rpk}F^qy>rYNJB$ z8g`(|M~Zth8={4+osS_Xe6o4-1xp&1K?Nf%QaKo0DLh z@~hgjD3aV33nAuZK}>-oZ-t6(#8AU`TTg)NvE*{76a+NK(1;l&i5J>TX`!FT;$(Vt zhyWzp7ewTM($8c^cPj}n4d2Kw@^p?x8&`!6GSTu&`DQpffJtRS<9sH$A`1xxbXF$i z1rd}ZqlE~Pg?`W=vgGIM4*3;sCnCr0)dinR7^g4D7yV&<+&24xE`fLS2$3!U_jH)) znZmStZJZE)`R9&bvr{X7MsW?-k~2DFt9lVPiS+@1<~%oKF~>79p+yghrwb~?l@LKx z4gVYa=?934!!-}CRZEb~$?h?VU$n^lfD@?C4=P*&g>86dk>tK00c^oE=z4skOh+m_ z{e>jRBU>~_MrN2BJLck6P{Wt`MYs-I(VJ9(RdVbcY-ho8MZE%PhZrWKUWRU8?c0ei zok3fra?hW$L3r!ZXlC=tm7C350S9Qe=H89<9V<-xe98-nAuVPP*P;zmHpJ7@^PYe! zo~EH2OOtsVcyA+#R>P~h8u992-HO6U_UuFDryNs*wp<CM+6*!^U?RY;y^$78LiB1gTWbrmz+9AOm1seUSq+_r+4{efXI3y9Vq9IXg z0%i*$))iL&sF|Har_K|m6Lc?r@F`z)DC0Y9f<$yCy)VPJBqvr^Edp>ui!I&z+;Iy~ ztrX^z@SDY}*k9YB30avI4gIn>3UIkBn@Z9J{!M!pGdrGkrlq*3tn`G6A~AbsqQMN9 za2UK{L4(~YC^rq_^i9=$=8?5)uS-|Hf!)xi(#2~Q%k@&MA6B7b86khj4)>$ z)Uo3qjYOd)vN4L6AQYqKt(zBNzp5G9_Grh=#{U#ss7WX-u#=)yRLW7`;rqCJ`4WyzwtB;~=Px+PV*4N8Hgy@RZpMQu@9szE5BbC8l% zOvuqaY2t21QdyWQCA)r$S)#k$h*_qlE1jXUSayXe#1v6m&HjRwqyA%{YkzxI-A()V zBW9KN#g%|dGnLE($pF0soZw=S7D50eMoKA8ntnPPI9*f_fJ%7BJKm=*PS0eTTtxCr-CLdo^``t4Y6u|klW zbqbZ(GC>KI=ncW58qEO2_ISbXsr6KE}TmY|aLu zpvsOa_RC6++-m*fCAlv-Ith@NH-X}rRTQ1%l~v0jwhQ3Thvg+LAJ0Z8j)cvDDUO_w zBY%?Z!kQ?tW*Zi+(k3Ifk}rjs4}m7ER15**`K=JKM{7eRwuhl;4H>ThKqt3Rm^p&s z7nvK5;uq0W3*P-reNDlru za1^rgfljI|F-j4&qC5^Ev!bkITD&<^U|NS01KBgIJXwm)rHM}RK+`#E1YS}pUx8vA zHLq8)ki+o*MRAqb6)2d88HU@>ITXyxU!aZ)`5#~f;;U~p5*#L{_2>&nhz%I2m8hvz zNU62(RhXcKd&-j>sAVUg;d5oDe@14@=<@rijfwZr*l0})ih4j4RrvOmrfsQW@?=q; zhI_0{Q`0rh+RVkRk*SXQDgVI-KJOoVVsj-it9f1_uT*nRTiCn*OLUfC{^4 zL5nd##|TqXz&%BTRMt&W*`R1-Z)~gJY&)sEaMno|h#6^bq2xDzA&7 zK0A%Ky3hQUz#RFzvjhnV3^!fUWr@%yeq^Q3l50TL`-%9@h9Cky5~d9ZU?x1$HmM7?vWlud(tJlzkD>d%D;l4rZgUdYbjR?; zk>r=y&yl1~vBVlVSmNyGRvZOglFc*4_+S=G(n+A%d|_aae{YNi5!2D7`1uAQ$$?>L zKF066LR=YeJX)_FunJ3oFAq9TL}i9ygw={>jw&`(O)pPQm;q1qPGv4 zDeiL~P}4`jucne}GB|Ns+m0^-4pK~{BZ~q29QYdv!~TL(x1r(n6HE68P!}S}5UHjh z(Y2eytZfPlP76mC3c)l#{Ya&2g}_K9TzkLvq@`MwL*v#Z<8}24kT>?*Fjc7^vnEG0 z5!DPfx-!{i{UU`i78`JRLCs+6M93uKdM-;hMX=TIo11AS8v1a|aU+Zal`l|4GEMz5 z{jQ=HF>rCtwy)rcKePE+7c4Eeb(UG=I1%RkgjERp@eLnn4qQx#(cEPyY=lmO@(Up$ zrl^}CzyVO^mmdF|NKSbk{YMnVn=Oq$nsKgMlq#IO4x1pKT*gH=&QTju&Tb#An7{(j zOiGbW02Ho0BoO#6tE{Ich>?v7jqNpgJX}58ShYMcAyQz?Zl%x=+PNSv zjZE4dF)tBRa8Kz!qcSQUH#Vq{tOP~K0oE`31d&}lNZNB6kRkx(SlpOo$>%P>XjR zShnQfGHri3_1D?mx~e8EwAY-o4nvt>73@+dDTpGC&0Lr{e6iB|^Q430F%{LWu@X$K zAe~-D{>%)1`ylXu0)~@jgm5zZ`4YoQpr20py)APv(^k8;UR&_S^C%OUPXyEOb;fmD zJHQV4h26zR`z{TTiZf*t4bmU0cP1oO$A-J_z!DhypmiQqh_bAhwEd)DCZ}PP0ezXHe~niEi19^}#2Ro?i@t%2@ep~$-I%@rSU8};ihZ`x z3=+nFhI-d!IP6oc=8h4o(hBJ)cWGk6kiR>PQz2l)y@JqkEdiDBhS3;CA&%;HDbnd8 z1cm07bP5dUESvKhvz+a=wy;o73%fShPY^--i`&%nvaQc&VY zLkDumn}uB3)3zM212P4xIs+~U1&+gkb(E$>bh*HO3kkHIo;E9;$~8V@nCR%WayJ>V z+~If>Z&3#RcwJ)lI{AP3(mD*g{{Q&Wrbjbjjf6hH=R69%PnAD++5(RJ``!fS0`39> zzxjpUyKdjZYXV<0=y%`oA>9b;{vT)BfH&CD(IjL=Vu2*GyYViDa{ZL4Jl8CUyaJF} zQ{D~exLgCk-8bVnD_#0$7SxUrn^W_7Fz(>; zZui2CKT&BFnNPc(`ATpRE3NKgYNWomefKgq@q@dy-q4m{SAPKu+XB1VIw!n;ES@$< zo04n$iO0v=)xD?lt)Id1mQlF3t<7*}lN~?T)^lJtH+|-S(bo6&=CE$t)Y;PB*8XQh zS0}(@YSYKh{do1KJ7OAdFCg%6@@mku9hOu<9HF2EAf>_HeSYxpQ1@*9p%r)^(yZ6h z+RdeZtaem$gugWxP|R8Ue-Vv|z;e?%o$^tjUMbH%u9$NF>x1CW!nA>c&Em{~9OEqr zYyf=EJ-dEGzLK^Y?fMY7Bk;2D;T=pSXjwFBY>)YBMpc9 z1{6nPHTeFvUY{qbxj`CH*6m*)BQ!9~lK!L%77m%L7OGh97sb&#*lY0BtoI$Rd#n>= zwyxm`rnHwXr;1c1TJ!0^LBt~aaBC9tZ;YkM9ufgyw}?ej6+FhR(GhS1A^kCZdao%Vl!ChWg`~S>`@+HRY3IC8VdFd{&;= zj5Yasnn-3wjGDJ@YMLx&^YF$m695%6ti@!s)mG3z7prho?TI9Q6j&|2pq1s7QZF%s z@MtVgL?Ju4^ z?;rS|<&11N_wwQeJk^kER&rD3=Cr$etHv(9gLFtidYxr8m2h-=kV)B+_sEv5Ln`!d zcr}$Z+eI?zcnLD7TPm*OAl4GDAhfRP9LGK@jN=+6KU5qMqvF1LC?)HHupVlDAGKQ5 zWMp581}s&s#|&2D^kb<`E#*M`fum#W%d-byuPXxVAsH!qy-<(RLRw7Zh4hYR#lHd2 zVDm+yhrFA%EyBoEhx{y|JI)zcw^t(IzULK|pUfM1E+%;$a|%7WY_}14@X+ijvbhlcN{vx69+apooGu(rO+5pw}j3s{h2`uxm*O*`Wk%? zvRQiEWx5O$hNKiaSa(?96B!`M=z-1WLMs%+1~@@imoZ(AhnPd5)+yG)6J~{OG0GfG zV@jt@sXU$+2?dQmf1Purx*pK-ZcF5u{yoNYe+r#Juu)4Wh#{vo27X3*I0v)-(bs*I zHuf9`ngEV z%e}ks`+(!y2k=A~=o6Dl+m@Kn7#U&g3q3$Sgy#FL@r>Msc)^{ZY^*2S@vspU%uMD+^zXT^rxp~$uXnmZ%?|ODqjJkrugWaCqiS`7Qhr(XDO(yVrW9@chj+08Yz2D|Nqp!Qw1+ zACP*z(jttjBv7lQ93h=H>*C<7cJA!Ez}CH-O$cGvB(XXFa~{eVf28 zs;iriXAtz9@U{5uXLnQNT8h)3wmk+7s^&q64|ZV8Vh=8)QsbqbhY}|a+ln~&g7Nxn z`r3iGF6wGrai`z z9~rpaz>haG6913BLh6t1+tQf4wQon;tB=09w-n*`dhUkLlYb$%TF^Uvq@0r<&{`{up<4kx!wxB{KUXWSmSw?7yDmvBbn zfGa+A5)Ht~^z*OXCJIkmH_QUl4-eWq!E>a5&~v}y7wNdrTY1!P%6=gje)9g#<1Mv^ zSf8$j42G&ZLFxeIjpRDQz7j(WHncZNq=wrKwuR@|5Nq6+RZ(UZ$kRPHb;n?WKY0iM z>b$vKiqkdbMaYn`*~d3RztSSW1$b8&>pM^IGaTL?{e1Y^!N6e(1XM5og%h8wyDEOW`|aN&zJYY12)BC z{5ODSD5SIfR+_fGs-!2w>UhVOWRWai=XQP(XxUi`{7v;Dw={_C75&kwP9wkU-LI8j zzJYs`!f^WFoA6kmjAC)cI}&S5uL2vMF-b&W^(M8GDMVHGWkG$jIZ_v9NXgI`g-BQ6 zQVb0E5j-N|;eD)kc;b9^jS-RbkaR4hLsqwI?&$B__Vm%8JF++9Q^S0VjzURByA>Jj0KZ%&Jh6&hkzt6t9zZvP>U_V61@4B zA^j?{Ij`M~zec-Meh~3_RE9B)zyv#jsB7SeR3k7`zFhC84UkZpjv4AxI1Nkw`19bv zv}r*{Cu?)V5J@hUL!AxlXM*e{31ZG~A;}&z#ftCDsvt_IR_|vG&(id2P(Fs&% zTKlJ4B%^z?usG$E$N?D&-Y%^g>`EnEdBkVEhFz9f|<>?^t_(QUP=ZpLu!;?4*aSXvx#h!(ji;oZA1`9Z~yd zC-}EzCSHDJ+|0`gH%ENT{@wWHdjol){EuDicAa)6<{Zrj=6~=u6-rTGV-?>+n}PM5&(hi>tv;8X{$KC?JcjFnhBsHOb(w1of^?3% z=K|{;JqCv7INF@nI3LP?MA!j9g=^vc|6Lq0{Z~9U>A`LUPO1Zyf65jr{lYzQjW530 z8|$HQq8nQ8?OlV|qNv9KzB7HrjMg-P|Lv2C?Is?FYyGRTln9`Ns)d-tJ)?`uS$d;3+g>vKQ8^Vz`u=J34M`z-AL<>|i%U*Ns#=yyOa?0&f)ct6|l zdYGI|6?s`~eGMEkj&1`kefQA=E|!5yI%s>ZWm~|HL`(Vf`{982OOv6T@3tGm^lD_K z$-1wSrw2L3-A%mT%*#mcJ^8cg&~<~~#*aG*UO((S;Xj75z7I#Us?Gy#-cQT^hbHdt zOz{_CIe?V)e`v~SQN+EjptS1Vbr4FTq)+6&HAY|0M6^vJZE9*B{Ig$-fJnpgS3}E- zj3Bz2(FlWKC?mY$G2wc5dg&x!zuBpbp0U`=8mkc6xb$lu{IL<@L1wuMftu{JTb;fr zCvuom7e%Z99bq(lfFzzk@)Zd$K|-7dBRUyIliZ1b9IaM!`T+(G5V#|{uNPw{{;13K z@FoyWayd7Y-lKfOE5lM7uiej!K0y!@q!!Kb^k6R9qN(Y1%?YGtz}crf&5WgBPYj-h zpW}Nj2qa>G{5oF+4K#X!XYY#*7)uk7Tn&ZEFA`Q%L_AcE`x53LipP*<1ppI$I@q3p ztOXp;!21X#)DK{CJb2SrABGR`-+c1^f>e^o+i`?=q^zD@KQ zeJ=Ul5{&W*4ie!tedFV1tUngg*#m31e%%X?rpm=%K;!{29CJNy?J!3|>n`g;Q^;<2 z@j0dd2R)&iL;A<5La(~Rry?tpUUR`@AN`FLqSER3&vm{B&-l-i(bikX(9c_;_0DZu z{@#*1n9MqfaOvpo?f{>81Dq2M8i(QR0w_gKY6rfljuBbb!$87MW(;7LKs=Bu!;R`x z*pCp630|pqNc=_p&MC^@FUh&6_f7H;Lfp2PLx?N)%_-S_4rdZ^w(FVf(5 ziYbB1fJmm{J^@4CPD6h;!WSA7P7HnrKhVF-sIS7r|6 zk)bei*UDOGIAUHrpMoKWp zOh0OU^VXn0JOS3isFnS->%Um!A*iHdA0=k~zypz>GO3XMxZp6UB0^Jit}BPqJNIkC zw5uTB7rFmYX&`E6gZ{y(U|?M2QZ(2m;e{_FUhhP*b^zmEfSkoKOb2b6FLE>k%~Tic zhvyRy-h;YK3v{||&X|2DT5SOkH}Irw$_@M86^fiCzw5)C*N z;Vs+j5@|L};Wv#QwHTf9L<=8F=|yN<;Ddy?)Xt1^jId&>*r}zG<5~BP+Tg#{^a0E% z0LD@O^YP_hzs(T`oRt!H0oMXQE^TkUK4SG9Cm3>#KC$~gHxs{yKX#x0Oj3WZ4rMaM zP0|Va0FC~41RA;n?o=ww1&$_D4FR=>-{v~rfCtsU#xbGz(NT;0>JEdhCZo>HZKL(e zKP!&g8!7Pmb>ZZ$FE{b&bt{XL_J=3^1Sjj%4n^5S9}0>7ga0?X6YtU_l?XgO;Q0RV zQUe1T$qEK`6xBy%Eca09=Qdk|ZR;)g3aZ-HiAPH5DxI|22mc_Zf(_(`zj|PB`#AfG zqok{zkium`N#y!5mWbyEHWc}vh`WeIY1`LuVM-q**o;sZG;RZmhoJiuQ+F|j$I$Lr ziGj;HLPir^H9-xvL?8}lKtoIFCJ2T5i*}4H%z!Eb#sk2DNZ zyV}Ylx6^8#Z+tpVTsjlEw2N-4jw(x3XT7qU$4uj%r5@iWHGK4gAaZ~n7pfOt3fnCX zO$uc?MjVZSP|B?cA6b#*e3C)qUw3Ss-Nf6~2-3(2?@jD)XY0p9XJTw6!ehn8Q!uC3 zlQzE6+Q*8G7V5tfCI*LT(IYd|85O|ukPfW&(xOX)|7%ExuV*{!lxo5hAk^kgRaX;F z)zx%1ZD-yGW5)B<8)M))yMIv_h(il7q+1-_C9}b)>+pcnl2fC}FQdRU=ZoHAJxReS z1I5<8D9M^0=v3Dm=rcO0bCAVls^VmRXz0R8T8Y5;#X?LI!POT(vPy0x>&Ji|wK>v| zLgaxZuk*OmEdQajm|QWx8ce|mx)CrJhx$U9cWn03O0W481%Ig&Vt!PDXDw^-60 zRYm-1et+L67l}d$N;HJe!i`9%C$9s;D`|@2YO?^*PL2rfO2dq2Uda^l$puh-Jw!P*IM3 z1fdisU8I=*w95SvQYNNO39>S`auSca5svO~_7bNBb8s4l1(=4b$_CW_P{`1vXCd%L z;7^PnfgK<^T^s7PnBq+svKkvxJL7DqGNskw)*$w4ddB=HlHe5z1c-Sy0eFA=aeBd9 z{Yz+XaZA8@MnVDb<#`L?uNo3-u~g&*5yddZrejM~`XJK+LQ)q0z?USoRCvhJ2*5ja z&bYjq=8;g1{kzp%{2O|jH0R#{M*a<87^aXkXK|da8Y))+3wryJzbCQW|+qNfmGRegD#I|kgyfgQH z_rKQn)?4eWK7FdYtE;=K>ilZg-n*@zSeVtO#S&9PwCr%Fv((BHuTap{sFp>7$do4M zWjW8Re67XVC0J>qfH}`9vl67~FVo@|Bs(jnsYYC|wUidlO0fjQ+Ac5cY|NmeDD%x0An+l#Yd zN1L@;=Z~RRO?DM?fTD)O(N={EXdR?46~$a+$GxN05`xYU@=W7ga&UE|Pr5&XYX`J)AOKa0EF4&)1o_RGQ2IhdwrL~zr4{#wwwEz*<>0!)b~TW5z%Chv*gIsEWDm#A@uJDUP}AJnVPstdo&EoUGJD2kG=8 z;#XaqPfdQXv8r3YOP9}CG`;{MZf2@QXNEwB6u41V<%L-07}WX@zMG_&jIno z03q1*OhauN*gGDDo7us~iG-+6erO~)vEpN{>~LVSQDRDXNO|R#d!gRvt&^re%S(?2 zwyAr)=>d+jwDNQruW@d7?7dB&k|f0>KEm>%u)j$pwQ?~*OsD3+CmKhDMigj=Oj7|d z>{8mu4x#Diok=aZJpBNM9YlPw6l#e6^J9RXLJD7fN!M4_ks4@i^!>i-CN%N5EZKTK^fE6g%`K-N zdtQsOlfHTHHKhyGt3M94KRBi5%+tGj z$k8x6W(|UQzde;4*y55Vs0pS+h57fO(C481EvGO~&bN{?u%W5-K5(3%r1Xv$ zJ1LIviT!KT_+^7=z-B8;Gccbh_s1R~0q>HP71*eK`gT*>dXQ5^hC>Bsj97RkDRRwgO6;=y4Uz7>BgP-5zah^?2BI5z1K2L7v=R0$+wcT1l5$lWxMy*e$F;+TugW^^MiHMn6z z)+Ytm%aXjTiesmv>w{ti@ixv`dYuEnKGnLU@M82jZdK^>ri+)U!DbIr!Xr|VeoTeT z!Z|9Q0yaOXl{5EYZsuX()@d_|LWA85^kbQQHLvy%?Ik!@Cdh|&M#v8NV;J-nf|&pM zd+9v;9eNZXTS&b*%_qtKXH-CsdQ>F9u$t@FOHZj}!$!t1fI#jo#@**=GTXv}Q$l8C z3*!ogyw8CxAMq>I(jxEG<_7KKa}tn*aB#P^h4h8E>*XKAs;$kP9F zpyNN@DLza;xhKPmz?k!rO-zeTb+_QZ?)N6;IXirafAar23^_K6_q=1O1>8&;0cwWw|2+46O&e{!Bwq9D0Je-p=i~p)HT-W9Su&iW43JLi z%KPPx`oTh$6I0;ZaEiDEkX!7iZ}2nsv^;!!yKMQ0w9=6jlt6CpRO$G9*~-O>=Ni}4 znrnq}M}FIky_0EMwN1SuY+i`v)2l4m1P5@|D45^AT=k^|cBi|)sUD`ewrxPWYP@f? ztS`nI0&eXp^fBE)Iq=-W3y#>ktbryd40Jm?PM-eCt+o?V@w#u9Q*O7z!BbHNo0~J~ zT9=P&`|HC_H3nX*weD4aOkCXxv&w$J_-uf%>d~gIxXcG19ZoGio*jWVb#}FVylic) zjXhPauIT@P|Jtgy!*tMD_jV_8xWtU+v(>Z3^WI#nY0+C++OMK(BdoG5n7pm|#M83C z!W>Y5F~&71$*JKe%G#YmOiy>HVOno{i^fV>JZm{@S*1-UHKN!S7Bm>~`Y(DP3s^LX z)CDZs#=Ze{H*xHi*^S?I!$@_U(=FPvkHn7Bm@2@9(>;Ya?(&a!ub>Q1yb$D`kODO*h^hnI6l* zB>o#aG)QtMe{Z~UFZfA}9=*}dwe9gy6BvoDH1{d7w8y-CS=AyIUsPCUNNLsbyk4X1 zF7G$QBcwb`;e!1 z)fjbl+!2-1R9`dHaRa{1>^zvh(`lv&W&GGe}YqjY;AHAjOF^_yjN^TLDZA z$yTs$0^-S1|9?hDrIKCE%1jJtb;h&*d0O0&` zj4~btYUcygH6Z3O-`Mu2xOT8**bV+1e+>um)knEX(G%cMwM8@UpJpm42jH`hAP9KP z{D&$F35iX6c1Ht6QO82dKvdcJ`jpOH@N2*U;9#$w?ss4$_%VL`)wlif?61Pu^)BZ> z|8|MYu<->LAJDFrS`i~#@&}GoZ2@%ipFOIKOF$);V~J`PKj^VgDqd+>>%0TuMmMd| zwo3MzW{*y-!0@q1s=6g*xe&6+>1VyA7_@GMYkiABPluY9r)|p?cZWq?-Ey4668uQ; zl!0fvm+y7qYk_zD%Xi<5ro!KS=3boan~~!Ghb`|O1?U1&tLEQ@Ol2&czD!5UY6-{q znrTC)eLB(>jaqAJ^~@xe*JMYAQPob+;80WO#kB&d(6F0H+=*de4++0T#So7^M~qlZ z+X>L`^z-O*AEQ471UB@~Q5Xn>tk7UvC^d8h2dR-mM|*HMUKNHQ6|ZpI#^;DnSLI|C zd8)C~OQ?(FB6I_+J!AJ-xy5*yE#xqbKE*R(2GLy7F~kxx=^>bZl4RVycFIXns!ckr zW?hdi-8HlaH?B5jA}4VQA;47PdH`agR0O;Pz&?vIF=3MD%6cL6G4S9+=YZIN9nk^^ z5c>6LWbOqpm8XgPJSO`4{rxXhQsBd?zo5tkKOhHKMV|6E8`k|FsIKWgF4Dh7jNa&4 z?n3>q%Y|NBuIawYnE)p}Z&i5t04<>}XrtE;Dj|+ZB-aoD_Wmz6R{DmgeBID9K#OWA ze+wXnEEP8=_fh*&XlVUtlTT0L_WQZlc|pnO`!m#(Q;o-U!PAZAYYDO+CYM*+#nR)H zP65L{2lS9jurY(!R8&_>!*?bodQSMM#VK!t3g5e*T^>G#Ya9HG^xZy>7Q3=y*AJL$ zZD9=vLx_B86Eh2}5c4|I42n^N0J>5ypqjEW{a;NbFAd*H5Jb&k7^_`K^=9=NJj*}{ z(&6*)p6ze%S1bH+A`r;=cc+m{L`k(**W_xhI{GBaN@mlxameLL3Y1DkLF!ozl9w&qObrr6U57Bja)Y|ES)eVVY3zx#4viVAo}57#*`G44#HrB`4m%}envDoh(Ed+P>Q3bZvRC=2&iV5_}GvL3_UPwo4>DIZys{*X5KROY=^HyiNsK@n-OMpJ)UR|#5vUA=X+I1fahGY!ia)* zy)KHQ!}(_#hY(SSzQPkg5w7B&Byn+5E3_sb*W zWR9KGZ{g1-p?oqQzA4RMocn&UwHE%QHsVnbVB#kj@ecmJWa%LcQW3Tm;( z$-nhk_~I35DgHrNOo@*S;f)(XemiwzOiay{tOyu(l?$vQbc%1C|9pQWYPM7ljKO$0rYHhR) zq#0<~p}B`JUhj^dLSQeHtJ6vKGP1vd?W3zi(~T7WskULVvcpZe=Uy8n*^Jx)yShwRY}|N;Zeq7XL<58hSD)OLjxwQ z)<4?aJX@uVn(f91&YExnNF$}l70xp zX5-jP4Ssdicm7O;RTmX%1zxPi#ziGIER9TP7kZ?0hWMGqBiqJ+oe zjFUUja>#1Q#>KSPOz$NKkG@AB+F;o%ObIBUVlRj6ZbH`dXwoIl_I5+%se>G^M~38P z%g&z2T|4=vaza+UTD=;ZI>dt0bi~CJZJkqU$$jk%W@7b=&Ju(KX6q4C=&;m4%Ue7@X?@&XeGcbpHDdscl`yLFYnfU8u;q3?l*GNQ-}h zbfiIpepRt(^^aHE-A^`H#REG%6%BW^XtwOUK9GL$P;CncDn*;`@i9QzwFMY9Op_sn zB#3&<$JJlTC6E*aKPq;;OGtZzjIkP->Of-fZtrE@7h5@&U1^vpzj|akD&n4s;BHzQ z#d?#@PkR-NA8Ljz5{u2f3%eN`ogERUaT>c4caCE|C|k%6sz!x_ z2g84GJe*su;EvaO15$-;<%8&~{=)Ae95KA^(H3IR19%{=27msBv|TIodbxk_xaFT$ zMG%}n(s+nu-3xM%SL1w{ZbTl~>!bt3Br?Py!-~qkVn30yqz7xN_Fqb)(Ppnln2z3x zo(~Z(t6(0(?0VKFetDJ!zI(Qke0qLa_uuog`AQ4+U8s{55sySi^*vHqgT0TDC=Z?ox4L)`!-&XX6R*wgnqmQwO-K#w0(4*+lqjBBp} z{#l*(04nvwdoO^$>%}#o3SfU^s?~j`_V?@A=w56aFme6yl}iLjmGZy27y?|S1BOG9 zeO8^dgsvU(`o%V>y{v$=jCs>YUw~23r+=z#>FGN#s#ope2E7Id0OG5FVG0$Y^#75~ zhVc>Us~-otZ?@Oc(xPpd>X>Tv*ZpQr2+|c9@vpO&uVtND{?ypIYeGMDU5x{+WzeiM zu)Z9@Cmuop525}(|C_IDF{BIM6H@#Xilb_Oj%Fibt) z`xZ!N?f3+C?Pe%`Q!7`N{Kz4Q8(x)=|Zl z?_MM20y>^j4XX;P(@Cf`G9 zSc1WZ5a%?U`AqW^UBp>1l_-W5hIr*;!B%sb5}0F@ZOvhsnf)2IzXBz`R-gn5WG1!s zWsOr=nn{|DK~;^cp1BXd?5%3t$p@~=ZwN(A?G zHgR*a+8vCiVF){RrxB>XP--6*X7yUD$o!ci?jqR##;AJc>R@~N31mMSRewHT?Dt^d z4gLIhb^;OyfdoDiz-I@J9pH29AL(K{pWJQBq5L1|!rk@aY5Tez;LErDqTv5r#d;Xa z^h&e^7<2e&BLXZwe~itKdv{-CbA?E4-*Id^df_crcv+deU(?hNuKPzff41po5BuZG z(cV_u9{&Jfv`nq4mU`q3Z|@F#VYgite|FQmRd#g0-jv+jYz3n|_CI#r4J^ufJJ_~+ z53K3;_|-fX__<@xJ8WdIa(pT(^uYc%XvP8HJ;GfA{%F%E?EA-4-p<*Up!d{rr?fxn#BbU?o|XKFA`Y4Jx!BTRNZjnHMod;k9A$eX15 z35ldkHl1H}@pI>_F2HbmU%$xT7d( z&UYoN?l_)&*uR;tHJ6Jm15<~5;S=88w%J_INLsCJwY5fk8{O?~-CZr`w%N`FnLKug z+w=$_HY(9JDs-OFqE$#61-UJ@0bZ31t2elz8gFNB!?;baec(F7o%!XA=m!)J2pq{g zDM|w@LWWV!tV29F3#M_0fnmR;dNT)}tYOH0QfIB9D_kDT`GAdR(TQR5{-*;>qxjs@O~gForYKhD+`4?klCh=%P7()pxzG6$w_E(V0D zw_JfAVbAS3Y=YY3?5L&jUfS>OL4}jAk;UcRZqI32hJyO*x?SyE-54xsVYS3&NJM#+V}4fZ zwnVBmzT8Pmh6X+Dc=I#gA0&ryv%g$4q5afNasWKgYh)20F=`*LL>Peb1*;UG`_FJP z5Ww-B0s=VixBmbfe<8)`*Duun&;qyEp6+|%eRu9tgkH|LKF8?(UI0#|;@SWo+X62Y z4lmj6U#D%IkM4k%SE83GTOpQ7mLV8#tHIap(fYw$fClcvd!1^_QbryimMqog5SAN2 zx7~Ve(Bni-xDYj0@C4KSPQ5(h{cybeWE}q)#YK1(>Evtr`fE|Q+qaze_g05zpS=L@ z>2{a%&0X=*IAo2>!0)Y99cmRv(79o|AR**&*e zHmMZN4>n3NagNdNZS!L{%O0VvVZm37`TFQb-Q1?xbz@JqCIAjKABAs5=VNt|m&@pn zEn8zBSiUM((cLF6U~jV>H;hD`WV6b>StJWYz&=IvK$z=1Yb9C4Jumr|;S8x$Vw1A% z*VwJZ7cAw4wc$l%yelFC$WIAj4kVH0K_q~daiof>n-pflAgqbFT z)08x&VhXLmn$s4sRN&(dDQQ@J^KLJVuaUp!&w4 zeH+~GlyybFuDx)_^JuBjrsvr}ad^-dynakB(UgBJJAM!| z8F|V>Miaz>MXJcnA6)ctiepihnC~HJN7>??)=%TUwq%?p<-pNj*gCE zPYspk27d#{5|v}f20;J%+Hib*<~y~Jrr1zq=v8aV-h7m={89w+Zj!!j05X9*;48qS z570#F`V09VjO+53Dk1N-yXhM6f@CcEQADk*wm>3r1qDy7Fwdy>DM<_dWOc(*tRGpVvfW&z(J~ zKz#1GCw@qva3LV{eA)B9dEF#*OOQ|3c>`|r zwH(%7#rr>^-pl)TGvHX&@eJV4U!ktxyZB0f&F$GRz?dB?*qU&8Z+jzGG;Hh7c+e(BPt8g~Er(|vbRvc8IcbmqQ6 z&D!-Qu<3-5`adxRrWcTNjrkw5ustI{sQT7RvD{xsQ{Zf<#Pa;u8zqKJys8mH$%nuait`wI2<@jaHS@00wRw&*K#y{u|T{8U~&_3 zt{fqD1bU`b&Yky2nyvvxl9Mg~-PS;iTrdlv!~yWE()jn?5;#Cu19b5}eQtaAyiXtd z?E1e<=fBr{Dt#PW1LhvR`zNKg?mUUSTR(J+ZfV|a0lyxF^0yRD{{>!vp7P#rZGb9G zD?m@GuBQ!9oB@WPAMi;u0H{;Hax2}s49DyG+6M+Vg;kB4f9%&x~<^$(?jG4 zzqd|rqo&qKDb`aDc+#+I!6H5DykTOdNRtJSAZcOH_g)qma;DKT-+ zoxUw6(lja04>|VyP1Y0iRZwv+0m~Pv_ZOrZqMJW>L5EiXkBoh#;=?vOx(SML-x9-}J5S@V=iVcYK!|&kAfLxf6A|ojr^H1+6ahh{ixub>E-uYdR$n zUv1*&Z6~XGYPsMKC()hU@fr%Kq~00|@&q^1u2P3*$AT{T(OWy_&h3gE-7rwf8{5-t zm)EueUwdu=%Ykwy%hP_DodKsf>#Qfw+y@hdyy@){aH_y^8NeBFyx%I9I+4uRPEw}W zBf7X}0(GN$6#ZhR{f#P^Lg@R>GOrwrq@vj4v0x7n> zlt%n3*(=q6es!u9-OQO!fIn-o#hQ={8udamr7=`w6Au&8j=(mS zTM0YKp4U@6o7Yg-exnj6q)ERYmw-4kbq>X!#p@R z;jDKv43o(<7vLVp?mNPsFUWGu-`9iGzvUV087$Fl3Uzfi)U;mu7j+n?H;&`1;~JC=VWir-z6WOtf@5WlN=;<^Y~&}o_n3|~!5 zh(NU0m;w|Iw4?BX9vWL@2H*Uqn!lX4P$3dPYsmB8ZyoDijmnkE0D1cm((*A7rpn818jgVo9+?M|kbUlUK8Q||$dasm| zy8A@Pz?Lx56`m(ceROm26%Pf^@JZGzPm)E+Y{RNUW~RNhWR{%sNh6nV019yqP`(>5 zWgW}|HjK^uof*`m9?tl9UY6!6f>m;aTH{Ke0@Gvmz9;TUG}AT%#a za^|1#qQr;^SjM!8e^Jsesc*zTD3a@QG>%k?imvib`WmTW^wdQMz_L6&+5|+l48huS z9x>V>$(w@*21Y7eJMk}I8BJCXFKu|s)rz~-_E5F4n+%!6b?MG(_Hr{V4{ z`=8byAGO@(ue|=nY#aoDbB3`C5}ybU6u=5mk~?m?_;KsTP=T2^O46g3-14i!p2Is; z3fY7Itu?1|ASgCr$&$yg(y?=xY9*QMJ;w&tux7%FLAAzQh`9 z;m+#RI^+{Intwx586hi>#R&2tKhUj=;;K&cg)yo>H_B#SEC(dWx+QE{H77)v7kfGp zi8cjad=ya+mSAMY;U(aiac0KO-ddYM=!BG>s)XrSt^8sOu1;%woeFARM=7V|_YU6t zMg14@%rC?edR1iQ)MzQPB4iw5)1~xdw5c5(|TT zI(2@I_Qgq?fy5}R44o-i+;r!pEked99$Nc^58SZkm>q;lDk)k@VM7kG_Pl5wk+u6@ z9@b4&tD$n|=P7h3{C~0xn(&a1@Hk98TT2>U5CS`OB@eBorest9^x4%eT;K+Mhz>O4 zpcVn2AY$bDs>0en4!v`*hIY)+ek7};q)EvXoOx4yI$AMoV)e@RZWY#Pm=xVy&Z?l; zlB0RMAYnm@V7s_8Z*$I}<5F#29sDsW3I)!rqRoW{;0-RVw1hbIn8SA-)IvOhpL;_| zQuLb*`kfF@d5F?5M<{xs|6$4fJW2gV1bl1-f-1dDTq_cTK2AU4 zonQmZImzHeYd}tu$2EBIwQ!LEB4!9yDtng0;;r3DSi&&+DtnpVKY+xbe z%@e?C9TOURqrhe{>WLYw_IoXrF~Fd8pkzj4!Lw`WLDiR_5`V{n=M|Vi(b@$|FARe! zDYJslq=}%L?FW3-9xQ0%Ly;)Qf`7=oR(L@nlYYmAzObag`>BB=9>fkjc_FZ9EAQvEMP`Z$PC|EBL)rdZ$hBh81z{q#Q(c`;1&dFh@Y_ltqm-b9{DYHFy2# z_%{^cQDRsF$M5rW6gzzhBBaB6y_UilK@6aO33m`frJz)>qru<)BqckcTQy)nza-zO zUG{;5R&(#bVpuRso1p|&a(@?k9v2DNtFS5rX)&)@d56Cl%qoOmP%leb@fF#;2C-HF ze}CN&b86;b?lz%-TAO+EGSpB1D%K6dM{d|i6J<(So_#{p9~?ywdhzcSa70)EN%|BL z1{jrRcLA)>W?%gE7c_1GK*wvjP{4?Ll^8DCo78;c$X@o=b*LP#+Hl3Z9{yRUUo_P6cq zKeTV#EiUvJz@>%&GVt9Rw4V+uZl6H!l#P5oETWIww&9}XNP#OUeQyP#=QyHk!96ZO zrq6Z_)9VbD3xUE^b|LrY-)hx}w|tAQd%-x%w|w9wZ~Q0(q-u_Yw-w6~GIk%Y=1hk? zA>S%y8~LcmyLagtu5om-H45RJ5}jltFvLP@4nW%fVqWL!5^CIYs);P1N+V_q)cqQL8;ZTycMT4syg=Vz;KPTSjj*icuF zww1WMnv__TAbH6l8_e#M%Md4t{D=F#_w8P)Wxns; zJyYlAdp2HPXXSCpT1Ii0C3Tp)7#h1a9B{z90MI8y_67`L?sa|sC;+sFJ)6|dJViMd zplst|W9s*{SW*5aSih;8it%XO;|uplpIRffi920{Z!c46SS2!mNx>{B z5;*k)B-xT)V9AobYX9{1+{<#Y#%UDZ^szLXp(GV&Len1t@MEyYh&9{GIRyMhQrb z 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

T?fcbb1K>N-`{54tNkA`s-IaflGm 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�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%0ADi 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 z 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 z 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≪@KEbnP{lc{-^ovqNNpX+YYLi~Q1=wl`Vk6b~ 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


jMv&vc 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

9Pu)F3~^r3*tYyo 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≪G3iy@j{{@k;i7jS#OiEw%5Nzwz|PpuNG$ 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 literal 0 HcmV?d00001 diff --git a/core/aws-lsp-core/package.json b/core/aws-lsp-core/package.json index 7c5a3b33a2..244cd306ae 100644 --- a/core/aws-lsp-core/package.json +++ b/core/aws-lsp-core/package.json @@ -28,7 +28,7 @@ "prepack": "shx cp ../../LICENSE ../../NOTICE ../../SECURITY.md ." }, "dependencies": { - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "^0.3.8", "@gerhobbelt/gitignore-parser": "^0.2.0-9", "cross-spawn": "7.0.6", "jose": "^5.2.4", diff --git a/core/aws-lsp-core/src/credentials/ideCredentialsProvider.test.ts b/core/aws-lsp-core/src/credentials/ideCredentialsProvider.test.ts index a2fbb51834..8410ec46e2 100644 --- a/core/aws-lsp-core/src/credentials/ideCredentialsProvider.test.ts +++ b/core/aws-lsp-core/src/credentials/ideCredentialsProvider.test.ts @@ -21,6 +21,7 @@ describe('IdeCredentialsProvider', function () { warn: sinon.stub(), error: sinon.stub(), }, + onRequest: sinon.stub(), } as any provider = new IdeCredentialsProvider(mockConnection as any) }) @@ -45,4 +46,46 @@ describe('IdeCredentialsProvider', function () { ) }) }) + + describe('initialize', function () { + it('registers credential push handlers when IAM credentials are provided', function () { + const props = { + credentials: { + providesIam: true, + }, + } + + provider.initialize(props) + + assert(mockConnection.onRequest.called) + }) + + it('does not register handlers when no credentials config provided', function () { + const props = {} + + provider.initialize(props) + + assert(!mockConnection.onRequest.called) + }) + }) + + describe('hasCredentials', function () { + it('returns false when no credentials are set', function () { + // IdeCredentialsProvider doesn't expose hasCredentials directly + // Test through resolveIamCredentials instead + assert.strictEqual(provider['pushedCredentials'], undefined) + assert.strictEqual(provider['pushedToken'], undefined) + }) + }) + + describe('getCredentials', function () { + it('throws NoCredentialsError when no credentials available', async function () { + try { + await provider.resolveIamCredentials({} as any) + throw new Error('Expected error was not thrown') + } catch (error) { + assert.strictEqual((error as Error).constructor.name, 'NoCredentialsError') + } + }) + }) }) diff --git a/core/aws-lsp-core/src/credentials/ideCredentialsProvider.ts b/core/aws-lsp-core/src/credentials/ideCredentialsProvider.ts index 6f389594b8..8f6e5b8d9e 100644 --- a/core/aws-lsp-core/src/credentials/ideCredentialsProvider.ts +++ b/core/aws-lsp-core/src/credentials/ideCredentialsProvider.ts @@ -17,6 +17,8 @@ export class IdeCredentialsProvider implements CredentialsProvider { private pushedCredentials: IamCredentials | undefined private pushedToken: BearerToken | undefined + private pushedAtxToken: BearerToken | undefined + constructor( private readonly connection: Connection, key?: string, @@ -165,6 +167,17 @@ export class IdeCredentialsProvider implements CredentialsProvider { return this.pushedToken } + /** + * Provides a atx bearer token. Throws NoCredentialsError if bearer token is not available + */ + public async resolveAtxBearerToken(token: CancellationToken): Promise { + if (!this.pushedAtxToken) { + throw new NoCredentialsError() + } + + return this.pushedAtxToken + } + private async decodeCredentialsRequestToken(request: UpdateCredentialsRequest): Promise { if (!this.key) { throw new Error('no encryption key') diff --git a/integration-tests/q-agentic-chat-server/package.json b/integration-tests/q-agentic-chat-server/package.json index 84cc85f1be..d67ba0c602 100644 --- a/integration-tests/q-agentic-chat-server/package.json +++ b/integration-tests/q-agentic-chat-server/package.json @@ -9,7 +9,7 @@ "test-integ": "npm run compile && mocha --timeout 30000 \"./out/**/*.test.js\" --retries 2" }, "dependencies": { - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "^0.3.8", "@aws/lsp-core": "*" }, "devDependencies": { diff --git a/package-lock.json b/package-lock.json index 934040f4a0..7726a956f4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "integration-tests/*" ], "dependencies": { - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "0.3.8", "@smithy/types": "4.2.0", "clean": "^4.0.2", "typescript": "^5.8.2" @@ -48,7 +48,7 @@ "name": "@aws/lsp-antlr4-runtimes", "version": "0.0.1", "dependencies": { - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "0.3.8", "@aws/lsp-antlr4": "*", "antlr4-c3": "^3.4.2", "antlr4ng": "^3.0.14" @@ -71,7 +71,7 @@ "name": "@aws/lsp-buildspec-runtimes", "version": "0.0.1", "dependencies": { - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "0.3.8", "@aws/lsp-buildspec": "^0.0.1" } }, @@ -79,7 +79,7 @@ "name": "@aws/lsp-cloudformation-runtimes", "version": "0.0.1", "dependencies": { - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "0.3.8", "@aws/lsp-cloudformation": "^0.0.1" } }, @@ -87,7 +87,7 @@ "name": "@aws/lsp-codewhisperer-runtimes", "version": "0.0.1", "dependencies": { - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "0.3.8", "@aws/lsp-codewhisperer": "*", "copyfiles": "^2.4.1", "cross-env": "^7.0.3", @@ -121,7 +121,7 @@ "name": "@aws/lsp-identity-runtimes", "version": "0.1.0", "dependencies": { - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "0.3.8", "@aws/lsp-identity": "^0.0.1" } }, @@ -129,7 +129,7 @@ "name": "@aws/lsp-json-runtimes", "version": "0.0.1", "dependencies": { - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "0.3.8", "@aws/lsp-json": "*" }, "devDependencies": { @@ -149,7 +149,7 @@ "name": "@aws/lsp-notification-runtimes", "version": "0.1.0", "dependencies": { - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "0.3.8", "@aws/lsp-notification": "^0.0.1" } }, @@ -157,7 +157,7 @@ "name": "@aws/lsp-partiql-runtimes", "version": "0.0.1", "dependencies": { - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "0.3.8", "@aws/lsp-partiql": "0.0.19" }, "devDependencies": { @@ -171,7 +171,7 @@ "name": "@aws/lsp-s3-runtimes", "version": "0.0.1", "dependencies": { - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "0.3.8", "@aws/lsp-s3": "^0.0.1" }, "bin": { @@ -182,7 +182,7 @@ "name": "@aws/lsp-yaml-json-webworker", "version": "0.0.1", "dependencies": { - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "0.3.8", "@aws/lsp-json": "*", "@aws/lsp-yaml": "*" }, @@ -202,7 +202,7 @@ "name": "@aws/lsp-yaml-runtimes", "version": "0.0.1", "dependencies": { - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "0.3.8", "@aws/lsp-yaml": "*" }, "devDependencies": { @@ -224,7 +224,7 @@ "version": "0.0.1", "dependencies": { "@aws/hello-world-lsp": "^0.0.1", - "@aws/language-server-runtimes": "0.3.6" + "@aws/language-server-runtimes": "0.3.8" }, "devDependencies": { "@types/chai": "^4.3.5", @@ -245,7 +245,7 @@ "license": "Apache-2.0", "dependencies": { "@aws/chat-client-ui-types": "0.1.68", - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "0.3.8", "@aws/language-server-runtimes-types": "0.1.62", "@aws/mynah-ui": "^4.38.0" }, @@ -270,7 +270,7 @@ "@aws-sdk/credential-providers": "^3.731.1", "@aws-sdk/types": "^3.734.0", "@aws/chat-client-ui-types": "0.1.68", - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "0.3.8", "@types/uuid": "^9.0.8", "@types/vscode": "^1.98.0", "jose": "^5.2.4", @@ -286,7 +286,7 @@ "version": "0.0.17", "license": "Apache-2.0", "dependencies": { - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "0.3.8", "@gerhobbelt/gitignore-parser": "^0.2.0-9", "cross-spawn": "7.0.6", "jose": "^5.2.4", @@ -317,7 +317,7 @@ "name": "@aws/q-agentic-chat-server-integration-tests", "version": "0.0.1", "dependencies": { - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "0.3.8", "@aws/lsp-core": "*" }, "devDependencies": { @@ -335,6 +335,783 @@ "yauzl-promise": "^4.0.0" } }, + "node_modules/@amazon/elastic-gumby-frontend-client": { + "version": "1.0.0", + "resolved": "file:core/atx-fes-client/amazon-elastic-gumby-frontend-client-1.0.0.tgz", + "integrity": "sha512-Tlp0+TrF2UdrbAav1aQbkmpW2qCeUnPdRJOOJetn6w6cbdQgsuPd2bzSkdqZok5yXn8UEauq01iZY2lydRG/Mw==", + "bundleDependencies": [ + "@aws-sdk/types", + "@aws-sdk/util-user-agent-browser", + "@aws-sdk/util-user-agent-node", + "@smithy/config-resolver", + "@smithy/core", + "@smithy/fetch-http-handler", + "@smithy/hash-node", + "@smithy/invalid-dependency", + "@smithy/middleware-content-length", + "@smithy/middleware-endpoint", + "@smithy/middleware-retry", + "@smithy/middleware-serde", + "@smithy/middleware-stack", + "@smithy/node-config-provider", + "@smithy/node-http-handler", + "@smithy/protocol-http", + "@smithy/smithy-client", + "@smithy/types", + "@smithy/url-parser", + "@smithy/util-base64", + "@smithy/util-body-length-browser", + "@smithy/util-body-length-node", + "@smithy/util-defaults-mode-browser", + "@smithy/util-defaults-mode-node", + "@smithy/util-endpoints", + "@smithy/util-middleware", + "@smithy/util-retry", + "@smithy/util-utf8", + "tslib" + ], + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.658.1", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.6", + "@smithy/fetch-http-handler": "^3.2.8", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-retry": "^3.0.21", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.3", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.5", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.21", + "@smithy/util-defaults-mode-node": "^3.0.21", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@aws-sdk/core": { + "version": "3.658.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.658.1.tgz", + "integrity": "sha512-vJVMoMcSKXK2gBRSu9Ywwv6wQ7tXH8VL1fqB1uVxgCqBZ3IHfqNn4zvpMPWrwgO2/3wv7XFyikGQ5ypPTCw4jA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^2.4.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/property-provider": "^3.1.6", + "@smithy/protocol-http": "^4.1.3", + "@smithy/signature-v4": "^4.1.4", + "@smithy/smithy-client": "^3.3.5", + "@smithy/types": "^3.4.2", + "@smithy/util-middleware": "^3.0.6", + "fast-xml-parser": "4.4.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@aws-sdk/middleware-host-header": { + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.654.0.tgz", + "integrity": "sha512-rxGgVHWKp8U2ubMv+t+vlIk7QYUaRCHaVpmUlJv0Wv6Q0KeO9a42T9FxHphjOTlCGQOLcjCreL9CF8Qhtb4mdQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@aws-sdk/middleware-logger": { + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.654.0.tgz", + "integrity": "sha512-OQYb+nWlmASyXfRb989pwkJ9EVUMP1CrKn2eyTk3usl20JZmKo2Vjis6I0tLUkMSxMhnBJJlQKyWkRpD/u1FVg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.654.0.tgz", + "integrity": "sha512-gKSomgltKVmsT8sC6W7CrADZ4GHwX9epk3GcH6QhebVO3LA9LRbkL3TwOPUXakxxOLLUTYdOZLIOtFf7iH00lg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.654.0.tgz", + "integrity": "sha512-liCcqPAyRsr53cy2tYu4qeH4MMN0eh9g6k56XzI5xd4SghXH5YWh4qOYAlQ8T66ZV4nPMtD8GLtLXGzsH8moFg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@aws-sdk/region-config-resolver": { + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.654.0.tgz", + "integrity": "sha512-ydGOrXJxj3x0sJhsXyTmvJVLAE0xxuTWFJihTl67RtaO7VRNtd82I3P3bwoMMaDn5WpmV5mPo8fEUDRlBm3fPg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", + "@smithy/util-config-provider": "^3.0.0", + "@smithy/util-middleware": "^3.0.6", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@aws-sdk/types": { + "version": "3.654.0", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@aws-sdk/util-endpoints": { + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.654.0.tgz", + "integrity": "sha512-i902fcBknHs0Irgdpi62+QMvzxE+bczvILXigYrlHL4+PiEnlMVpni5L5W1qCkNZXf8AaMrSBuR1NZAGp6UOUw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", + "@smithy/util-endpoints": "^2.1.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.654.0", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.654.0", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@smithy/abort-controller": { + "version": "3.1.9", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^3.7.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@smithy/config-resolver": { + "version": "3.0.13", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^3.1.12", + "@smithy/types": "^3.7.2", + "@smithy/util-config-provider": "^3.0.0", + "@smithy/util-middleware": "^3.0.11", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@smithy/core": { + "version": "2.5.7", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/middleware-serde": "^3.0.11", + "@smithy/protocol-http": "^4.1.8", + "@smithy/types": "^3.7.2", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-middleware": "^3.0.11", + "@smithy/util-stream": "^3.3.4", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@smithy/credential-provider-imds": { + "version": "3.2.8", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^3.1.12", + "@smithy/property-provider": "^3.1.11", + "@smithy/types": "^3.7.2", + "@smithy/url-parser": "^3.0.11", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@smithy/fetch-http-handler": { + "version": "3.2.9", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^4.1.4", + "@smithy/querystring-builder": "^3.0.7", + "@smithy/types": "^3.5.0", + "@smithy/util-base64": "^3.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@smithy/hash-node": { + "version": "3.0.11", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^3.7.2", + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@smithy/invalid-dependency": { + "version": "3.0.11", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^3.7.2", + "tslib": "^2.6.2" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@smithy/is-array-buffer": { + "version": "3.0.0", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@smithy/middleware-content-length": { + "version": "3.0.13", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^4.1.8", + "@smithy/types": "^3.7.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@smithy/middleware-endpoint": { + "version": "3.2.8", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^2.5.7", + "@smithy/middleware-serde": "^3.0.11", + "@smithy/node-config-provider": "^3.1.12", + "@smithy/shared-ini-file-loader": "^3.1.12", + "@smithy/types": "^3.7.2", + "@smithy/url-parser": "^3.0.11", + "@smithy/util-middleware": "^3.0.11", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@smithy/middleware-retry": { + "version": "3.0.34", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^3.1.12", + "@smithy/protocol-http": "^4.1.8", + "@smithy/service-error-classification": "^3.0.11", + "@smithy/smithy-client": "^3.7.0", + "@smithy/types": "^3.7.2", + "@smithy/util-middleware": "^3.0.11", + "@smithy/util-retry": "^3.0.11", + "tslib": "^2.6.2", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@smithy/middleware-serde": { + "version": "3.0.11", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^3.7.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@smithy/middleware-stack": { + "version": "3.0.11", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^3.7.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@smithy/node-config-provider": { + "version": "3.1.12", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^3.1.11", + "@smithy/shared-ini-file-loader": "^3.1.12", + "@smithy/types": "^3.7.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@smithy/node-http-handler": { + "version": "3.3.3", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^3.1.9", + "@smithy/protocol-http": "^4.1.8", + "@smithy/querystring-builder": "^3.0.11", + "@smithy/types": "^3.7.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@smithy/property-provider": { + "version": "3.1.11", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^3.7.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@smithy/protocol-http": { + "version": "4.1.8", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^3.7.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@smithy/querystring-builder": { + "version": "3.0.11", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^3.7.2", + "@smithy/util-uri-escape": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@smithy/querystring-parser": { + "version": "3.0.11", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^3.7.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@smithy/service-error-classification": { + "version": "3.0.11", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^3.7.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@smithy/shared-ini-file-loader": { + "version": "3.1.12", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^3.7.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@smithy/signature-v4": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-4.2.4.tgz", + "integrity": "sha512-5JWeMQYg81TgU4cG+OexAWdvDTs5JDdbEZx+Qr1iPbvo91QFGzjy0IkXAKaXUHqmKUJgSHK0ZxnCkgZpzkeNTA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^3.0.0", + "@smithy/protocol-http": "^4.1.8", + "@smithy/types": "^3.7.2", + "@smithy/util-hex-encoding": "^3.0.0", + "@smithy/util-middleware": "^3.0.11", + "@smithy/util-uri-escape": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@smithy/smithy-client": { + "version": "3.7.0", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^2.5.7", + "@smithy/middleware-endpoint": "^3.2.8", + "@smithy/middleware-stack": "^3.0.11", + "@smithy/protocol-http": "^4.1.8", + "@smithy/types": "^3.7.2", + "@smithy/util-stream": "^3.3.4", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@smithy/types": { + "version": "3.7.2", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@smithy/url-parser": { + "version": "3.0.11", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/querystring-parser": "^3.0.11", + "@smithy/types": "^3.7.2", + "tslib": "^2.6.2" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@smithy/util-base64": { + "version": "3.0.0", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@smithy/util-body-length-browser": { + "version": "3.0.0", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@smithy/util-body-length-node": { + "version": "3.0.0", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@smithy/util-buffer-from": { + "version": "3.0.0", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@smithy/util-config-provider": { + "version": "3.0.0", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@smithy/util-defaults-mode-browser": { + "version": "3.0.34", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^3.1.11", + "@smithy/smithy-client": "^3.7.0", + "@smithy/types": "^3.7.2", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@smithy/util-defaults-mode-node": { + "version": "3.0.34", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/config-resolver": "^3.0.13", + "@smithy/credential-provider-imds": "^3.2.8", + "@smithy/node-config-provider": "^3.1.12", + "@smithy/property-provider": "^3.1.11", + "@smithy/smithy-client": "^3.7.0", + "@smithy/types": "^3.7.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@smithy/util-endpoints": { + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.1.7.tgz", + "integrity": "sha512-tSfcqKcN/Oo2STEYCABVuKgJ76nyyr6skGl9t15hs+YaiU06sgMkN7QYjo0BbVw+KT26zok3IzbdSOksQ4YzVw==", + "inBundle": true + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@smithy/util-hex-encoding": { + "version": "3.0.0", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@smithy/util-middleware": { + "version": "3.0.11", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^3.7.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@smithy/util-retry": { + "version": "3.0.11", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/service-error-classification": "^3.0.11", + "@smithy/types": "^3.7.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@smithy/util-stream": { + "version": "3.3.4", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/fetch-http-handler": "^4.1.3", + "@smithy/node-http-handler": "^3.3.3", + "@smithy/types": "^3.7.2", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-hex-encoding": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@smithy/util-stream/node_modules/@smithy/fetch-http-handler": { + "version": "4.1.3", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^4.1.8", + "@smithy/querystring-builder": "^3.0.11", + "@smithy/types": "^3.7.2", + "@smithy/util-base64": "^3.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@smithy/util-uri-escape": { + "version": "3.0.0", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/@smithy/util-utf8": { + "version": "3.0.0", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/bowser": { + "version": "2.12.1", + "inBundle": true, + "license": "MIT" + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/tslib": { + "version": "2.8.1", + "inBundle": true, + "license": "0BSD" + }, + "node_modules/@amazon/elastic-gumby-frontend-client/node_modules/uuid": { + "version": "9.0.1", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "inBundle": true, + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/@amzn/amazon-q-developer-streaming-client": { "version": "1.0.0", "resolved": "file:core/q-developer-streaming-client/amzn-amazon-q-developer-streaming-client-1.0.0.tgz", @@ -4787,9 +5564,9 @@ } }, "node_modules/@aws/language-server-runtimes": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@aws/language-server-runtimes/-/language-server-runtimes-0.3.6.tgz", - "integrity": "sha512-UYapohFIjEI93BfKQQlFiqOEq5wkG7Zm0jfcl2sMJwDYMtzNBtc31jDHr5cpeiQxSFpnALxqhPYp1PZU0vprwg==", + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@aws/language-server-runtimes/-/language-server-runtimes-0.3.8.tgz", + "integrity": "sha512-/+QL70M6svIPNJMSkxXQ3ZAw4BWpLu2AVIP0dtaFoC86xJDCTfMHL5hkkIcwVM7e4mcntoGcABWO7Y30gv+5NQ==", "license": "Apache-2.0", "dependencies": { "@aws/language-server-runtimes-types": "^0.1.62", @@ -31752,7 +32529,7 @@ "version": "0.1.21", "license": "Apache-2.0", "dependencies": { - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "0.3.8", "@aws/lsp-core": "^0.0.17" }, "devDependencies": { @@ -31795,7 +32572,7 @@ "name": "@aws/lsp-buildspec", "version": "0.0.1", "dependencies": { - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "0.3.8", "@aws/lsp-json": "*", "@aws/lsp-yaml": "*", "vscode-languageserver": "^9.0.1", @@ -31806,7 +32583,7 @@ "name": "@aws/lsp-cloudformation", "version": "0.0.1", "dependencies": { - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "0.3.8", "@aws/lsp-core": "*", "@aws/lsp-json": "*", "vscode-languageserver": "^9.0.1", @@ -31820,11 +32597,13 @@ "@amzn/codewhisperer", "@amzn/codewhisperer-runtime", "@amzn/codewhisperer-streaming", - "@amzn/amazon-q-developer-streaming-client" + "@amzn/amazon-q-developer-streaming-client", + "@amazon/elastic-gumby-frontend-client" ], "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { + "@amazon/elastic-gumby-frontend-client": "file:../../core/atx-fes-client/amazon-elastic-gumby-frontend-client-1.0.0.tgz", "@amzn/amazon-q-developer-streaming-client": "file:../../core/q-developer-streaming-client/amzn-amazon-q-developer-streaming-client-1.0.0.tgz", "@amzn/codewhisperer": "file:../../core/codewhisperer/amzn-codewhisperer-1.0.0.tgz", "@amzn/codewhisperer-runtime": "file:../../core/codewhisperer-runtime/amzn-codewhisperer-runtime-1.0.0.tgz", @@ -31833,7 +32612,7 @@ "@aws-sdk/util-arn-parser": "^3.723.0", "@aws-sdk/util-retry": "^3.374.0", "@aws/chat-client-ui-types": "0.1.68", - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "0.3.8", "@aws/lsp-core": "^0.0.17", "@modelcontextprotocol/sdk": "1.19.1", "@smithy/node-http-handler": "^2.5.0", @@ -32024,7 +32803,7 @@ "dependencies": { "@aws-sdk/client-sso-oidc": "^3.616.0", "@aws-sdk/token-providers": "^3.744.0", - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "0.3.8", "@aws/lsp-core": "0.0.17", "@smithy/node-http-handler": "^3.2.5", "@smithy/shared-ini-file-loader": "^4.0.1", @@ -32071,7 +32850,7 @@ "version": "0.1.22", "license": "Apache-2.0", "dependencies": { - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "0.3.8", "@aws/lsp-core": "^0.0.17", "vscode-languageserver": "^9.0.1", "vscode-languageserver-textdocument": "^1.0.8" @@ -32089,7 +32868,7 @@ "version": "0.0.1", "license": "Apache-2.0", "dependencies": { - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "0.3.8", "@aws/lsp-core": "0.0.17", "vscode-languageserver": "^9.0.1" }, @@ -32132,7 +32911,7 @@ "version": "0.0.19", "license": "Apache-2.0", "dependencies": { - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "0.3.8", "antlr4-c3": "3.4.4", "antlr4ng": "3.0.16", "web-tree-sitter": "0.22.6" @@ -32154,7 +32933,7 @@ "dependencies": { "@aws-sdk/client-s3": "^3.623.0", "@aws-sdk/types": "^3.734.0", - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "0.3.8", "@aws/lsp-core": "0.0.17", "vscode-languageserver": "^9.0.1", "vscode-languageserver-textdocument": "^1.0.8" @@ -32166,7 +32945,7 @@ "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "0.3.8", "@aws/lsp-core": "^0.0.17", "vscode-languageserver": "^9.0.1", "vscode-languageserver-textdocument": "^1.0.8", @@ -32180,7 +32959,7 @@ "name": "@amzn/device-sso-auth-lsp", "version": "0.0.1", "dependencies": { - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "0.3.8", "vscode-languageserver": "^9.0.1" }, "devDependencies": { @@ -32191,7 +32970,7 @@ "name": "@aws/hello-world-lsp", "version": "0.0.1", "dependencies": { - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "0.3.8", "vscode-languageserver": "^9.0.1" }, "devDependencies": { diff --git a/package.json b/package.json index b5b627ef6e..cb1358150e 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "ci:generate:agentic:attribution": "ts-node ./script/prepare-agentic-attribution-dependencies.ts && ./script/generate-agentic-attribution.sh && git restore package.json" }, "dependencies": { - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "^0.3.8", "@smithy/types": "4.2.0", "clean": "^4.0.2", "typescript": "^5.8.2" diff --git a/server/aws-lsp-antlr4/package.json b/server/aws-lsp-antlr4/package.json index 50dad13a69..ea4a497f94 100644 --- a/server/aws-lsp-antlr4/package.json +++ b/server/aws-lsp-antlr4/package.json @@ -28,7 +28,7 @@ "clean": "rm -rf node_modules" }, "dependencies": { - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "^0.3.8", "@aws/lsp-core": "^0.0.17" }, "peerDependencies": { diff --git a/server/aws-lsp-buildspec/package.json b/server/aws-lsp-buildspec/package.json index 4cc32177ce..57d0f21a9f 100644 --- a/server/aws-lsp-buildspec/package.json +++ b/server/aws-lsp-buildspec/package.json @@ -7,7 +7,7 @@ "compile": "tsc --build" }, "dependencies": { - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "^0.3.8", "@aws/lsp-json": "*", "@aws/lsp-yaml": "*", "vscode-languageserver": "^9.0.1", diff --git a/server/aws-lsp-cloudformation/package.json b/server/aws-lsp-cloudformation/package.json index c023949f90..fca323f5e0 100644 --- a/server/aws-lsp-cloudformation/package.json +++ b/server/aws-lsp-cloudformation/package.json @@ -7,7 +7,7 @@ "compile": "tsc --build" }, "dependencies": { - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "^0.3.8", "@aws/lsp-core": "*", "@aws/lsp-json": "*", "vscode-languageserver": "^9.0.1", diff --git a/server/aws-lsp-codewhisperer/package.json b/server/aws-lsp-codewhisperer/package.json index a413d6b58b..802361276a 100644 --- a/server/aws-lsp-codewhisperer/package.json +++ b/server/aws-lsp-codewhisperer/package.json @@ -29,6 +29,7 @@ "postinstall": "node ./script/install_transitive_dep.js" }, "dependencies": { + "@amazon/elastic-gumby-frontend-client": "file:../../core/atx-fes-client/amazon-elastic-gumby-frontend-client-1.0.0.tgz", "@amzn/amazon-q-developer-streaming-client": "file:../../core/q-developer-streaming-client/amzn-amazon-q-developer-streaming-client-1.0.0.tgz", "@amzn/codewhisperer": "file:../../core/codewhisperer/amzn-codewhisperer-1.0.0.tgz", "@amzn/codewhisperer-runtime": "file:../../core/codewhisperer-runtime/amzn-codewhisperer-runtime-1.0.0.tgz", @@ -37,7 +38,7 @@ "@aws-sdk/util-arn-parser": "^3.723.0", "@aws-sdk/util-retry": "^3.374.0", "@aws/chat-client-ui-types": "0.1.68", - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "^0.3.8", "@aws/lsp-core": "^0.0.17", "@modelcontextprotocol/sdk": "1.19.1", "@smithy/node-http-handler": "^2.5.0", @@ -106,6 +107,7 @@ "@amzn/codewhisperer", "@amzn/codewhisperer-runtime", "@amzn/codewhisperer-streaming", - "@amzn/amazon-q-developer-streaming-client" + "@amzn/amazon-q-developer-streaming-client", + "@amazon/elastic-gumby-frontend-client" ] } diff --git a/server/aws-lsp-codewhisperer/src/index.ts b/server/aws-lsp-codewhisperer/src/index.ts index bc74a8472b..060cf0f747 100644 --- a/server/aws-lsp-codewhisperer/src/index.ts +++ b/server/aws-lsp-codewhisperer/src/index.ts @@ -4,4 +4,5 @@ export * from './language-server/chat/qChatServer' export * from './language-server/agenticChat/qAgenticChatServer' export * from './shared/proxy-server' export * from './language-server/netTransform/netTransformServer' +export * from './language-server/netTransform/atxNetTransformServer' export { AmazonQServiceServerIAM, AmazonQServiceServerToken } from './shared/amazonQServer' diff --git a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/agenticChatController.test.ts b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/agenticChatController.test.ts index b8eeffad42..f136047a7c 100644 --- a/server/aws-lsp-codewhisperer/src/language-server/agenticChat/agenticChatController.test.ts +++ b/server/aws-lsp-codewhisperer/src/language-server/agenticChat/agenticChatController.test.ts @@ -33,6 +33,7 @@ import { CancellationTokenSource, ContextCommand, ChatUpdateParams, + ConnectionMetadata, } from '@aws/language-server-runtimes/server-interface' import { TestFeatures } from '@aws/language-server-runtimes/testing' import * as assert from 'assert' @@ -69,6 +70,7 @@ import { AgenticChatResultStream } from './agenticChatResultStream' import { AgenticChatError } from './errors' import * as sharedUtils from '../../shared/utils' import { IdleWorkspaceManager } from '../workspaceContext/IdleWorkspaceManager' +import { SinonStub } from 'sinon' describe('AgenticChatController', () => { let mcpInstanceStub: sinon.SinonStub @@ -289,6 +291,15 @@ describe('AgenticChatController', () => { chatSessionManagementService = ChatSessionManagementService.getInstance() chatSessionManagementService.withAmazonQServiceManager(serviceManager) + // Add getConnectionMetadata to testFeatures.credentialsProvider + testFeatures.credentialsProvider.getConnectionMetadata = ( + sinon.stub() as SinonStub<[], ConnectionMetadata | undefined> + ).returns({ + sso: { + startUrl: undefined, + }, + }) + const mockCredentialsProvider: CredentialsProvider = { hasCredentials: sinon.stub().returns(true), getCredentials: sinon.stub().returns({ token: 'token' }), diff --git a/server/aws-lsp-codewhisperer/src/language-server/configuration/transformConfigurationServer.test.ts b/server/aws-lsp-codewhisperer/src/language-server/configuration/transformConfigurationServer.test.ts new file mode 100644 index 0000000000..39bfe1a052 --- /dev/null +++ b/server/aws-lsp-codewhisperer/src/language-server/configuration/transformConfigurationServer.test.ts @@ -0,0 +1,204 @@ +import * as assert from 'assert' +import * as sinon from 'sinon' +import { + TransformConfigurationServer, + TRANSFORM_PROFILES_CONFIGURATION_SECTION, + ATX_TRANSFORM_PROFILES_CONFIGURATION_SECTION, +} from './transformConfigurationServer' +import { + CancellationToken, + InitializeParams, + LSPErrorCodes, + ResponseError, + CredentialsProvider, + Logging, +} from '@aws/language-server-runtimes/server-interface' + +describe('TransformConfigurationServer', () => { + let server: TransformConfigurationServer + let mockLogging: sinon.SinonStubbedInstance + let mockCredentialsProvider: sinon.SinonStubbedInstance + + beforeEach(() => { + mockLogging = { + log: sinon.stub(), + warn: sinon.stub(), + error: sinon.stub(), + debug: sinon.stub(), + } as any + + mockCredentialsProvider = { + hasCredentials: sinon.stub(), + getCredentials: sinon.stub(), + getConnectionType: sinon.stub(), + getConnectionMetadata: sinon.stub(), + onCredentialsDeleted: sinon.stub(), + } as any + + const mockFeatures = { + lsp: {} as any, + logging: mockLogging, + runtime: {} as any, + credentialsProvider: mockCredentialsProvider, + workspace: {} as any, + sdkInitializator: {} as any, + } + + server = new TransformConfigurationServer(mockLogging, mockFeatures) + }) + + afterEach(() => { + sinon.restore() + }) + + describe('initialize', () => { + it('should initialize successfully', async () => { + const params: InitializeParams = { + processId: 0, + rootUri: 'test', + capabilities: {}, + initializationOptions: {}, + } + + const result = await server.initialize(params) + + assert.deepStrictEqual(result, { + capabilities: {}, + awsServerCapabilities: { + configurationProvider: { + sections: [ + TRANSFORM_PROFILES_CONFIGURATION_SECTION, + ATX_TRANSFORM_PROFILES_CONFIGURATION_SECTION, + ], + }, + }, + }) + + sinon.assert.calledWith( + mockLogging.log, + 'TransformConfigurationServer: Constructor called - server created' + ) + sinon.assert.calledWith(mockLogging.log, 'TransformConfigurationServer: Initialize called') + }) + }) + + describe('getConfiguration', () => { + it('should handle transform profiles configuration section', async () => { + mockCredentialsProvider.hasCredentials.withArgs('bearer').returns(false) + + const params = { section: TRANSFORM_PROFILES_CONFIGURATION_SECTION } + const token = {} as CancellationToken + + const result = await server.getConfiguration(params, token) + + assert.deepStrictEqual(result, []) + sinon.assert.calledWith( + mockLogging.log, + `TransformConfigurationServer: Configuration requested for section: ${TRANSFORM_PROFILES_CONFIGURATION_SECTION}` + ) + }) + + it('should throw error for unsupported configuration section', async () => { + const params = { section: 'unsupported.section' } + const token = {} as CancellationToken + + await assert.rejects( + server.getConfiguration(params, token), + new ResponseError( + LSPErrorCodes.RequestFailed, + 'TransformConfigurationServer: Unsupported configuration section: unsupported.section' + ) + ) + }) + + it('should list available profiles when credentials are available', async () => { + mockCredentialsProvider.hasCredentials.withArgs('bearer').returns(true) + mockCredentialsProvider.getCredentials.withArgs('bearer').returns({ token: 'test-token' }) + + // Mock environment variables + const originalEnv = process.env.AWS_ATX_FES_REGION + process.env.AWS_ATX_FES_REGION = 'us-east-1' + + const params = { section: TRANSFORM_PROFILES_CONFIGURATION_SECTION } + const token = {} as CancellationToken + + try { + const result = await server.getConfiguration(params, token) + // Should return empty array when no profiles found + assert(Array.isArray(result)) + } finally { + if (originalEnv !== undefined) { + process.env.AWS_ATX_FES_REGION = originalEnv + } else { + delete process.env.AWS_ATX_FES_REGION + } + } + }) + }) + + describe('private methods', () => { + it('should initialize ATX client when credentials are available', async () => { + mockCredentialsProvider.hasCredentials.withArgs('bearer').returns(true) + mockCredentialsProvider.getCredentials.withArgs('bearer').returns({ token: 'test-token' }) + + const initializeAtxClient = (server as any).initializeAtxClient.bind(server) + const result = await initializeAtxClient() + + assert.strictEqual(typeof result, 'boolean') + }) + + it('should fail to initialize ATX client when credentials are not available', async () => { + mockCredentialsProvider.hasCredentials.withArgs('bearer').returns(false) + + const initializeAtxClient = (server as any).initializeAtxClient.bind(server) + const result = await initializeAtxClient() + + assert.strictEqual(result, false) + }) + + it('should fall back to default region when no environment variable set', async () => { + const originalEnv = process.env.AWS_ATX_FES_REGION + delete process.env.AWS_ATX_FES_REGION + + mockCredentialsProvider.hasCredentials.withArgs('bearer').returns(false) + + try { + const getClientRegion = (server as any).getClientRegion.bind(server) + const region = await getClientRegion() + + assert.strictEqual(region, 'us-east-1') // DEFAULT_ATX_FES_REGION + } finally { + if (originalEnv !== undefined) { + process.env.AWS_ATX_FES_REGION = originalEnv + } + } + }) + + it('should get endpoint for region', () => { + const getEndpointForRegion = (server as any).getEndpointForRegion.bind(server) + + const endpoint = getEndpointForRegion('us-east-1') + assert(typeof endpoint === 'string') + assert(endpoint.length > 0) + }) + + it('should handle errors in ATX client initialization', async () => { + const mockAtxCredentialsProvider = { + hasCredentials: sinon.stub().withArgs('bearer').returns(true), + getCredentials: sinon.stub().withArgs('bearer').throws(new Error('Credential error')), + } + + const mockRuntime = { + getAtxCredentialsProvider: sinon.stub().returns(mockAtxCredentialsProvider), + } + + ;(server as any).features.runtime = mockRuntime + + const initializeAtxClient = (server as any).initializeAtxClient.bind(server) + const result = await initializeAtxClient() + + assert.strictEqual(result, false) + sinon.assert.called(mockLogging.warn) + }) + }) +}) diff --git a/server/aws-lsp-codewhisperer/src/language-server/configuration/transformConfigurationServer.ts b/server/aws-lsp-codewhisperer/src/language-server/configuration/transformConfigurationServer.ts new file mode 100644 index 0000000000..599d93a5f2 --- /dev/null +++ b/server/aws-lsp-codewhisperer/src/language-server/configuration/transformConfigurationServer.ts @@ -0,0 +1,397 @@ +import { + CancellationToken, + CredentialsProvider, + GetConfigurationFromServerParams, + InitializeParams, + Logging, + LSPErrorCodes, + ResponseError, + Server, + BearerCredentials, +} from '@aws/language-server-runtimes/server-interface' +import { AmazonQDeveloperProfile } from '../../shared/amazonQServiceManager/qDeveloperProfiles' +import { ElasticGumbyFrontendClient, ListAvailableProfilesCommand } from '@amazon/elastic-gumby-frontend-client' +import { + DEFAULT_ATX_FES_ENDPOINT_URL, + DEFAULT_ATX_FES_REGION, + ATX_FES_REGION_ENV_VAR, + ATX_FES_ENDPOINT_URL_ENV_VAR, + getATXEndpoints, +} from '../../shared/constants' +import { getBearerTokenFromProvider } from '../../shared/utils' +import { + QServiceManagerFeatures, + AmazonQBaseServiceManager, +} from '../../shared/amazonQServiceManager/BaseAmazonQServiceManager' + +// Transform Configuration Sections +export const TRANSFORM_PROFILES_CONFIGURATION_SECTION = 'aws.transformProfiles' +export const ATX_TRANSFORM_PROFILES_CONFIGURATION_SECTION = 'aws.atx.transformProfiles' +export const ATX_CONFIGURATION_SECTION = 'aws.atx' + +/** + * Transform Configuration Server - standalone server for ATX FES profile management + * Completely separate from qConfigurationServer to maintain clean RTS/ATX FES separation + */ +export class TransformConfigurationServer { + private atxClient: ElasticGumbyFrontendClient | null = null + + constructor( + private readonly logging: Logging, + private readonly features: QServiceManagerFeatures + ) { + this.logging.log('TransformConfigurationServer: Constructor called - server created') + this.logging.log(`TransformConfigurationServer: Features runtime available: ${!!this.features.runtime}`) + this.logging.log(`TransformConfigurationServer: Features keys: ${Object.keys(this.features).join(', ')}`) + } + + /** + * Initialize as standalone LSP server + */ + async initialize(params: InitializeParams): Promise { + this.logging.log('TransformConfigurationServer: Initialize called') + + // const profileType = (params.initializationOptions as any)?.aws?.profileType + + // if (profileType !== 'transform') { + // this.logging.log('TransformConfigurationServer: Not Transform Profile') + // return { + // capabilities: {}, + // awsServerCapabilities: {}, + // } + // } + + this.logging.log('TransformConfigurationServer: Transform Profile intialized section aws.transfomProfiles') + + return { + capabilities: {}, + awsServerCapabilities: { + configurationProvider: { + sections: [TRANSFORM_PROFILES_CONFIGURATION_SECTION, ATX_TRANSFORM_PROFILES_CONFIGURATION_SECTION], + }, + }, + } + } + + /** + * Handle configuration requests for Transform profiles + */ + async getConfiguration(params: GetConfigurationFromServerParams, token: CancellationToken): Promise { + this.logging.log(`TransformConfigurationServer: Configuration requested for section: ${params.section}`) + + switch (params.section) { + case TRANSFORM_PROFILES_CONFIGURATION_SECTION: + case ATX_TRANSFORM_PROFILES_CONFIGURATION_SECTION: + const profiles = await this.listAvailableProfiles(token) + return profiles + default: + throw new ResponseError( + LSPErrorCodes.RequestFailed, + `TransformConfigurationServer: Unsupported configuration section: ${params.section}` + ) + } + } + + /** + * Initialize ATX FES client with bearer token authentication + */ + private async initializeAtxClient(): Promise { + try { + // Get ATX credentials provider from runtime + const runtime = this.features.runtime + this.logging.log(`TransformConfigurationServer: Runtime available: ${!!runtime}`) + + const atxCredentialsProvider = runtime?.getAtxCredentialsProvider?.() + this.logging.log( + `TransformConfigurationServer: ATX credentials provider available: ${!!atxCredentialsProvider}` + ) + + if (!atxCredentialsProvider?.hasCredentials('bearer')) { + this.logging.log(`TransformConfigurationServer: No ATX bearer credentials available`) + return false + } + + this.logging.log(`TransformConfigurationServer: ATX bearer credentials found`) + const credentials = (await atxCredentialsProvider.getCredentials('bearer')) as BearerCredentials + if (!credentials?.token) { + return false + } + + const region = await this.getClientRegion() + const endpoint = this.getEndpointForRegion(region) + + this.logging.log( + `TransformConfigurationServer: Initializing ATX client with region: ${region}, endpoint: ${endpoint}` + ) + + this.atxClient = new ElasticGumbyFrontendClient({ + region: region, + endpoint: endpoint, + }) + + return true + } catch (error) { + const region = await this.getClientRegion() + const endpoint = this.getEndpointForRegion(region) + this.logging.warn( + `TransformConfigurationServer: Failed to initialize ATX client with region: ${region}, endpoint: ${endpoint}. Error: ${error}` + ) + return false + } + } + + /** + * Get region for ATX FES client - supports dynamic region selection + */ + private async getClientRegion(): Promise { + // Check environment variable first + const envRegion = process.env[ATX_FES_REGION_ENV_VAR] + if (envRegion) { + return envRegion + } + + // Try to get region from profile + const profileRegion = await this.getRegionFromProfile() + if (profileRegion) { + return profileRegion + } + + // Fall back to default + return DEFAULT_ATX_FES_REGION + } + + private async getRegionFromProfile(): Promise { + try { + // Get ATX credentials provider from runtime + const runtime = this.features.runtime + const atxCredentialsProvider = runtime?.getAtxCredentialsProvider?.() + + if (!atxCredentialsProvider?.hasCredentials('bearer')) { + return undefined + } + + const tempClient = new ElasticGumbyFrontendClient({ + region: DEFAULT_ATX_FES_REGION, + endpoint: DEFAULT_ATX_FES_ENDPOINT_URL, + }) + + const command = new ListAvailableProfilesCommand({ maxResults: 100 }) + const response = await tempClient.send(command) + const profiles = response.profiles || [] + + const activeProfile = profiles.find((p: any) => p.arn) + if (activeProfile?.arn) { + const arnParts = activeProfile.arn.split(':') + if (arnParts.length >= 4) { + return arnParts[3] + } + } + + return undefined + } catch (error) { + return undefined + } + } + + /** + * Get endpoint URL for the specified region + */ + private getEndpointForRegion(region: string): string { + return ( + process.env[ATX_FES_ENDPOINT_URL_ENV_VAR] || getATXEndpoints().get(region) || DEFAULT_ATX_FES_ENDPOINT_URL + ) + } + + /** + * Add bearer token authentication to ATX FES command + */ + private async addBearerTokenToCommand(command: any): Promise { + try { + const runtime = this.features.runtime + this.logging.log(`TransformConfigurationServer: Runtime available: ${!!runtime}`) + + const atxCredentialsProvider = runtime?.getAtxCredentialsProvider?.() + this.logging.log( + `TransformConfigurationServer: ATX credentials provider available: ${!!atxCredentialsProvider}` + ) + + if (!atxCredentialsProvider) { + throw new Error('ATX credentials provider not available') + } + + const hasCredentials = atxCredentialsProvider.hasCredentials('bearer') + this.logging.log(`TransformConfigurationServer: Has bearer credentials: ${hasCredentials}`) + + if (!hasCredentials) { + throw new Error('No ATX bearer credentials available') + } + + const credentials = atxCredentialsProvider.getCredentials('bearer') + if (!credentials || !('token' in credentials) || !credentials.token) { + throw new Error('Bearer token is null or empty') + } + + command.middlewareStack?.add( + (next: any) => async (args: any) => { + args.request.headers = { + ...args.request.headers, + Authorization: `Bearer ${credentials.token}`, + } + return next(args) + }, + { step: 'build', priority: 'high' } + ) + this.logging.log(`TransformConfigurationServer: Bearer token added to command`) + } catch (error) { + this.logging.error(`TransformConfigurationServer: Failed to add ATX bearer token: ${error}`) + throw error + } + } + + /** + * List available Transform profiles using ATX FES ListAvailableProfiles API + * Uses multi-region discovery similar to RTS approach + */ + async listAvailableProfiles(token: CancellationToken): Promise { + try { + const allProfiles: AmazonQDeveloperProfile[] = [] + + for (const [region, endpoint] of getATXEndpoints()) { + try { + if (token?.isCancellationRequested) { + throw new ResponseError(LSPErrorCodes.RequestCancelled, 'Request cancelled') + } + + const profiles = await this.listAvailableProfilesForRegion(region, endpoint) + allProfiles.push(...profiles) + this.logging.log( + `TransformConfigurationServer: Found ${profiles.length} profiles in region ${region}` + ) + } catch (error) { + this.logging.debug(`TransformConfigurationServer: No profiles in region ${region}: ${error}`) + } + } + + this.logging.log( + `TransformConfigurationServer: Total ${allProfiles.length} Transform profiles found across all regions` + ) + + // Cache profiles in AtxTokenServiceManager for ARN-based lookup + try { + const { AtxTokenServiceManager } = await import( + '../../shared/amazonQServiceManager/AtxTokenServiceManager' + ) + const atxServiceManager = AtxTokenServiceManager.getInstance() + + // Debug: Log all profiles being cached + this.logging.log(`TransformConfigurationServer: DEBUG - Caching profiles:`) + allProfiles.forEach((profile: any, index: number) => { + this.logging.log( + `TransformConfigurationServer: Profile ${index + 1}: ARN=${profile.arn}, applicationUrl=${profile.applicationUrl}` + ) + }) + + atxServiceManager.cacheTransformProfiles(allProfiles) + this.logging.log(`TransformConfigurationServer: Cached ${allProfiles.length} profiles for ARN lookup`) + + // Auto-select first profile if only one exists (for testing) + if (allProfiles.length === 1) { + const firstProfile = allProfiles[0] as any + if (firstProfile.arn && firstProfile.applicationUrl) { + atxServiceManager.setActiveProfileByArn(firstProfile.arn) + this.logging.log( + `TransformConfigurationServer: Auto-selected single profile ${firstProfile.arn}` + ) + } + } + } catch (error) { + this.logging.error(`TransformConfigurationServer: Failed to cache profiles: ${error}`) + } + + return allProfiles + } catch (error) { + this.logging.warn(`TransformConfigurationServer: ListAvailableProfiles failed: ${error}`) + return [] + } + } + + /** + * List available profiles for a specific region (similar to RTS listAvailableCustomizationsForProfileAndRegion) + */ + private async listAvailableProfilesForRegion(region: string, endpoint: string): Promise { + this.logging.log(`TransformConfigurationServer: Querying region: ${region}, endpoint: ${endpoint}`) + + try { + // Create region-specific client (similar to RTS approach) + const regionClient = new ElasticGumbyFrontendClient({ + region: region, + endpoint: endpoint, + }) + + const command = new ListAvailableProfilesCommand({ + maxResults: 100, + }) + + this.logging.log(`TransformConfigurationServer: Adding bearer token to command for region: ${region}`) + await this.addBearerTokenToCommand(command) + + this.logging.log(`TransformConfigurationServer: Sending command to region: ${region}`) + const response = await regionClient.send(command) + this.logging.log( + `TransformConfigurationServer: Received response from region: ${region}, profiles count: ${response.profiles?.length || 0}` + ) + + // Convert ATX FES profiles to AmazonQDeveloperProfile format + const transformProfiles: AmazonQDeveloperProfile[] = (response.profiles || []).map((profile: any) => { + const convertedProfile = { + arn: profile.arn || '', + name: profile.profileName || profile.applicationUrl || 'Unnamed Transform Profile', + applicationUrl: (profile.applicationUrl || '').replace(/\/$/, ''), // Strip trailing slash + identityDetails: { + region: region, + accountId: profile.accountId || '', + }, + } + + return convertedProfile + }) + + this.logging.log( + `TransformConfigurationServer: Converted ${transformProfiles.length} profiles for region: ${region}` + ) + return transformProfiles + } catch (error) { + this.logging.error(`TransformConfigurationServer: Error querying region ${region}: ${error}`) + return [] + } + } +} + +/** + * Transform Configuration Server Token - creates standalone Transform configuration server + */ +export const TransformConfigurationServerToken = (serviceManager: () => AmazonQBaseServiceManager): Server => { + return ({ credentialsProvider, lsp, logging, runtime, workspace, sdkInitializator }) => { + let transformConfigurationServer: TransformConfigurationServer + + lsp.addInitializer(async params => { + // Get features from the initialized service manager, but use the runtime from server parameters + const manager = serviceManager() + const features = { + ...(manager as any).features, + runtime: runtime, // Use the runtime from server parameters instead of service manager + } as QServiceManagerFeatures + transformConfigurationServer = new TransformConfigurationServer(logging, features) + return transformConfigurationServer.initialize(params) + }) + + lsp.extensions.onGetConfigurationFromServer( + async (params: GetConfigurationFromServerParams, token: CancellationToken) => { + logging.log('TransformConfigurationServer: onGetConfigurationFromServer handler called') + return transformConfigurationServer.getConfiguration(params, token) + } + ) + + return () => {} + } +} diff --git a/server/aws-lsp-codewhisperer/src/language-server/netTransform/atxModels.ts b/server/aws-lsp-codewhisperer/src/language-server/netTransform/atxModels.ts new file mode 100644 index 0000000000..a71f41139a --- /dev/null +++ b/server/aws-lsp-codewhisperer/src/language-server/netTransform/atxModels.ts @@ -0,0 +1,95 @@ +import { ExecuteCommandParams } from 'vscode-languageserver' +import { TransformationPlan } from '@amzn/codewhisperer-runtime' + +// ATX Job Status enum (matches client-side C# definition) +export enum AtxJobStatus { + CREATED = 'CREATED', + STARTING = 'STARTING', + ASSESSING = 'ASSESSING', + PLANNING = 'PLANNING', + PLANNED = 'PLANNED', + EXECUTING = 'EXECUTING', + AWAITING_HUMAN_INPUT = 'AWAITING_HUMAN_INPUT', + COMPLETED = 'COMPLETED', + FAILED = 'FAILED', + STOPPING = 'STOPPING', + STOPPED = 'STOPPED', +} + +// ATX Workspace Models +export interface AtxWorkspaceInfo { + Id: string + Name: string + CreatedDate?: string +} + +export interface AtxCreatedWorkspaceInfo { + WorkspaceId: string + WorkspaceName: string +} + +// ATX Transformation Job (matches client-side C# definition) +export interface AtxTransformationJob { + WorkspaceId: string + JobId: string + Status: AtxJobStatus + FailureReason?: string +} + +// ATX Consolidated API Request/Response Models +export interface AtxListOrCreateWorkspaceRequest extends ExecuteCommandParams { + CreateWorkspaceName?: string // Optional - if provided, creates new workspace +} + +export interface AtxListOrCreateWorkspaceResponse { + AvailableWorkspaces: AtxWorkspaceInfo[] + CreatedWorkspace?: AtxCreatedWorkspaceInfo +} + +// ATX Start Transform request/response (orchestration) +export interface AtxStartTransformRequest extends ExecuteCommandParams { + WorkspaceId: string + JobName?: string + StartTransformRequest: object // Original RTS-style request for ZIP creation +} + +export interface AtxStartTransformResponse { + TransformationJobId: string + ArtifactPath: string + UploadId: string +} + +// ATX Get Transform Info request/response (orchestration) +export interface AtxGetTransformInfoRequest extends ExecuteCommandParams { + TransformationJobId: string + WorkspaceId: string + SolutionRootPath: string +} + +export interface AtxGetTransformInfoResponse { + TransformationJob: AtxTransformationJob + PlanPath?: string | null + ReportPath?: string | null + WorklogPath?: string | null + TransformationPlan?: TransformationPlan | null + ArtifactPath?: string | null + ErrorString?: string | null +} + +// ATX Stop Job request +export interface AtxStopJobRequest extends ExecuteCommandParams { + WorkspaceId: string + JobId: string +} +export interface AtxUploadPlanRequest extends ExecuteCommandParams { + TransformationJobId: string + WorkspaceId: string + PlanPath: string +} + +export interface AtxUploadPlanResponse { + VerificationStatus: boolean + Message: string + PlanPath?: string + ReportPath?: string +} diff --git a/server/aws-lsp-codewhisperer/src/language-server/netTransform/atxNetTransformServer.ts b/server/aws-lsp-codewhisperer/src/language-server/netTransform/atxNetTransformServer.ts new file mode 100644 index 0000000000..76f6073412 --- /dev/null +++ b/server/aws-lsp-codewhisperer/src/language-server/netTransform/atxNetTransformServer.ts @@ -0,0 +1,125 @@ +import { + CancellationToken, + ExecuteCommandParams, + InitializeParams, + Server, +} from '@aws/language-server-runtimes/server-interface' +import { AtxTokenServiceManager } from '../../shared/amazonQServiceManager/AtxTokenServiceManager' +import { ATXTransformHandler } from './atxTransformHandler' +import { + AtxListOrCreateWorkspaceRequest, + AtxStartTransformRequest, + AtxGetTransformInfoRequest, + AtxStopJobRequest, + AtxUploadPlanRequest, +} from './atxModels' + +// ATX FES Commands - Consolidated APIs +const AtxListOrCreateWorkspaceCommand = 'aws/atxTransform/listOrCreateWorkspace' +const AtxStartTransformCommand = 'aws/atxTransform/startTransform' +const AtxGetTransformInfoCommand = 'aws/atxTransform/getTransformInfo' +const AtxStopJobCommand = 'aws/atxTransform/stopJob' +const AtxUploadPlanCommand = 'aws/atxTransform/uploadPlan' + +export const AtxNetTransformServerToken = + (): Server => + ({ workspace, logging, lsp, telemetry, runtime }) => { + let atxTokenServiceManager: AtxTokenServiceManager + let atxTransformHandler: ATXTransformHandler + + const runAtxTransformCommand = async (params: ExecuteCommandParams, _token: CancellationToken) => { + try { + switch (params.command) { + case AtxListOrCreateWorkspaceCommand: { + const request = params as AtxListOrCreateWorkspaceRequest + const result = await atxTransformHandler.listOrCreateWorkspace(request) + return result + } + case AtxStartTransformCommand: { + const { WorkspaceId, JobName, StartTransformRequest } = params as AtxStartTransformRequest + + if (!WorkspaceId) { + throw new Error('WorkspaceId is required for startTransform') + } + + const result = await atxTransformHandler.startTransform({ + workspaceId: WorkspaceId, + jobName: JobName, + startTransformRequest: StartTransformRequest, + }) + + if (!result) { + throw new Error('StartTransform workflow failed') + } + + return { + TransformationJobId: result.TransformationJobId, + ArtifactPath: result.ArtifactPath || '', + UploadId: result.UploadId || '', + UnSupportedProjects: [], + ContainsUnsupportedViews: false, + } + } + case AtxGetTransformInfoCommand: { + const request = params as AtxGetTransformInfoRequest + + return await atxTransformHandler.getTransformInfo(request) + } + case AtxUploadPlanCommand: { + const request = params as AtxUploadPlanRequest + return await atxTransformHandler.uploadPlan(request) + } + case AtxStopJobCommand: { + const { WorkspaceId, JobId } = params as AtxStopJobRequest + + if (!WorkspaceId || !JobId) { + throw new Error('WorkspaceId and JobId are required for stopJob') + } + + const result = await atxTransformHandler.stopJob(WorkspaceId, JobId) + return { Status: result } + } + default: { + throw new Error(`Unknown ATX FES command: ${params.command}`) + } + } + } catch (e: any) { + logging.error(`ATXTransformServer: Error executing command: ${String(e)}`) + } + } + + const onExecuteCommandHandler = async ( + params: ExecuteCommandParams, + _token: CancellationToken + ): Promise => { + logging.info(`Received ATX FES command: ${params.command}`) + return runAtxTransformCommand(params, _token) + } + + const onInitializeHandler = async (params: InitializeParams) => { + return { + capabilities: { + executeCommandProvider: { + commands: [ + AtxListOrCreateWorkspaceCommand, + AtxStartTransformCommand, + AtxGetTransformInfoCommand, + AtxUploadPlanCommand, + AtxStopJobCommand, + ], + }, + }, + } + } + + const onInitializedHandler = () => { + atxTokenServiceManager = AtxTokenServiceManager.getInstance() + atxTransformHandler = new ATXTransformHandler(atxTokenServiceManager, workspace, logging, runtime) + } + + lsp.addInitializer(onInitializeHandler) + lsp.onInitialized(onInitializedHandler) + lsp.onExecuteCommand(onExecuteCommandHandler) + + return () => {} + } diff --git a/server/aws-lsp-codewhisperer/src/language-server/netTransform/atxTransformHandler.ts b/server/aws-lsp-codewhisperer/src/language-server/netTransform/atxTransformHandler.ts new file mode 100644 index 0000000000..18141061a9 --- /dev/null +++ b/server/aws-lsp-codewhisperer/src/language-server/netTransform/atxTransformHandler.ts @@ -0,0 +1,1841 @@ +import { Logging, Runtime, Workspace } from '@aws/language-server-runtimes/server-interface' +import * as fs from 'fs' +import * as archiver from 'archiver' +import got from 'got' +import * as path from 'path' +import * as crypto from 'crypto' +import AdmZip = require('adm-zip') +import { ArtifactManager } from './artifactManager' +import { + ElasticGumbyFrontendClient, + CreateJobCommand, + CreateArtifactUploadUrlCommand, + CompleteArtifactUploadCommand, + CreateArtifactDownloadUrlCommand, + GetHitlTaskCommand, + ListHitlTasksCommand, + SubmitCriticalHitlTaskCommand, + GetJobCommand, + ListJobPlanStepsCommand, + ListWorklogsCommand, + ListArtifactsCommand, + GetJobResponse, + StartJobCommand, + StopJobCommand, + CategoryType, + FileType, + JobInfo, + SubmitCriticalHitlTaskResponse, +} from '@amazon/elastic-gumby-frontend-client' +import { AtxTokenServiceManager } from '../../shared/amazonQServiceManager/AtxTokenServiceManager' +import { + DEFAULT_ATX_FES_ENDPOINT_URL, + DEFAULT_ATX_FES_REGION, + ATX_FES_REGION_ENV_VAR, + getAtxEndPointByRegion, +} from '../../shared/constants' +import { + AtxListOrCreateWorkspaceRequest, + AtxListOrCreateWorkspaceResponse, + AtxGetTransformInfoRequest, + AtxGetTransformInfoResponse, + AtxJobStatus, + AtxTransformationJob, + AtxUploadPlanRequest, + AtxUploadPlanResponse, +} from './atxModels' +import { v4 as uuidv4 } from 'uuid' +import { request } from 'http' +import { TransformationPlan } from '@amzn/codewhisperer-runtime' + +export const ArtifactWorkspaceName = 'artifactWorkspace' +/** + * ATX Transform Handler - Business logic for ATX FES Transform operations + * Parallel to RTS TransformHandler but uses AtxTokenServiceManager and ATX FES APIs + */ +export class ATXTransformHandler { + private serviceManager: AtxTokenServiceManager + private workspace: Workspace + private logging: Logging + private runtime: Runtime + private atxClient: ElasticGumbyFrontendClient | null = null + private cachedApplicationUrl: string | null = null + private cachedHitl: string | null = null + + constructor(serviceManager: AtxTokenServiceManager, workspace: Workspace, logging: Logging, runtime: Runtime) { + this.serviceManager = serviceManager + this.workspace = workspace + this.logging = logging + this.runtime = runtime + + this.serviceManager.registerCacheCallback(() => this.clearApplicationUrlCache()) + } + + /** + * Initialize ATX FES client + */ + private async initializeAtxClient(): Promise { + try { + this.logging.log('DEBUG-ATX-INIT: Starting ATX client initialization') + + let region = process.env[ATX_FES_REGION_ENV_VAR] + this.logging.log(`DEBUG-ATX-INIT: Environment region: ${region || 'not set'}`) + + if (!region) { + // Try to get region from active profile + region = await this.getRegionFromProfile() + if (region) { + this.logging.log(`DEBUG-ATX-INIT: Using region from active profile: ${region}`) + } else { + this.logging.log('DEBUG-ATX-INIT: No region available - cannot initialize client without region') + this.logging.log('DEBUG-ATX-INIT: Profile selection or multi-region discovery needed first') + return false + } + } + + const endpoint = process.env.TCP_ENDPOINT || getAtxEndPointByRegion(region) + this.logging.log(`DEBUG-ATX-INIT: Using region-specific endpoint for ${region}: ${endpoint}`) + + this.clearApplicationUrlCache() + this.logging.log('DEBUG-ATX-INIT: Cleared application URL cache') + + this.logging.log('DEBUG-ATX-INIT: About to create ElasticGumbyFrontendClient') + this.atxClient = new ElasticGumbyFrontendClient({ + region: region, + endpoint: endpoint, + }) + this.logging.log('DEBUG-ATX-INIT: ElasticGumbyFrontendClient created successfully') + + return true + } catch (error) { + const region = process.env[ATX_FES_REGION_ENV_VAR] || DEFAULT_ATX_FES_REGION + const endpoint = process.env.TCP_ENDPOINT || DEFAULT_ATX_FES_ENDPOINT_URL + this.logging.log( + `DEBUG-ATX-INIT: Failed to initialize with region: ${region}, endpoint: ${endpoint}. Error: ${error}` + ) + return false + } + } + + private async getRegionFromProfile(): Promise { + try { + this.logging.log('DEBUG-ATX-REGION: Starting getRegionFromProfile()') + + if (!this.serviceManager.hasValidCredentials()) { + this.logging.log('DEBUG-ATX-REGION: No valid credentials, returning undefined') + return undefined + } + this.logging.log('DEBUG-ATX-REGION: Valid credentials found') + + // Get active profile applicationURL and extract region from it + const atxServiceManager = AtxTokenServiceManager.getInstance() + const applicationUrl = atxServiceManager.getActiveApplicationUrl() + + if (applicationUrl) { + this.logging.log(`DEBUG-ATX-REGION: Found applicationURL: ${applicationUrl}`) + // Extract region from applicationURL: https://xxx.transform.REGION.on.aws + const urlMatch = applicationUrl.match(/\.transform(?:-gamma)?\.([^.]+)\.on\.aws/) + if (urlMatch && urlMatch[1]) { + const region = urlMatch[1] + this.logging.log(`DEBUG-ATX-REGION: Extracted region from applicationURL: ${region}`) + return region + } + } + + this.logging.log('DEBUG-ATX-REGION: No active applicationURL, using default region') + return DEFAULT_ATX_FES_REGION + } catch (error) { + this.logging.log(`DEBUG-ATX-REGION: Error in getRegionFromProfile: ${String(error)}`) + return undefined + } + } + + /** + * Add bearer token and Origin header to ATX FES commands + */ + private async addAuthToCommand(command: any): Promise { + if (!this.serviceManager.isReady()) { + throw new Error('Please select a valid Transform profile to continue') + } + + const bearerToken = await this.serviceManager.getBearerToken() + const applicationUrl = await this.getActiveTransformProfileApplicationUrl() + + command.middlewareStack?.add( + (next: any) => async (args: any) => { + if (!args.request.headers) { + args.request.headers = {} + } + args.request.headers['Authorization'] = `Bearer ${bearerToken}` + + if (applicationUrl) { + const cleanOrigin = applicationUrl.endsWith('/') ? applicationUrl.slice(0, -1) : applicationUrl + args.request.headers['Origin'] = cleanOrigin + } + + args.request.headers['Content-Type'] = 'application/json; charset=UTF-8' + args.request.headers['Content-Encoding'] = 'amz-1.0' + + return next(args) + }, + { + step: 'build', + name: 'addAtxAuthMiddleware', + priority: 'high', + } + ) + } + + /** + * Gets the applicationUrl for the active Transform profile with caching + */ + async getActiveTransformProfileApplicationUrl(): Promise { + try { + // Return cached URL if available (avoids expensive profile discovery) + if (this.cachedApplicationUrl) { + this.logging.log(`DEBUG-ATX-URL: Using cached applicationUrl: ${this.cachedApplicationUrl}`) + return this.cachedApplicationUrl + } + + // Get applicationUrl from service manager (cached from configuration) + const applicationUrl = this.serviceManager.getActiveApplicationUrl() + + if (!applicationUrl) { + this.logging.error('DEBUG-ATX-URL: No applicationUrl found in service manager cache') + this.logging.error('DEBUG-ATX-URL: Profile not selected or not cached yet') + return null + } + + this.logging.log(`DEBUG-ATX-URL: Using service manager applicationUrl: ${applicationUrl}`) + + // Cache the applicationUrl for future use + this.cachedApplicationUrl = applicationUrl + return applicationUrl + } catch (error) { + this.logging.error(`DEBUG-ATX-URL: Error getting applicationUrl: ${String(error)}`) + return null + } + } + + /** + * Clear cached applicationUrl (for token refresh scenarios) + */ + clearApplicationUrlCache(): void { + this.cachedApplicationUrl = null + } + + /** + * Verify session (internal LSP method called before each ATX API) + */ + private async verifySession(): Promise { + try { + this.logging.log('DEBUG-ATX: VerifySession operation started') + + this.logging.log('DEBUG-ATX: About to call initializeAtxClient()') + if (!(await this.initializeAtxClient())) { + this.logging.error('DEBUG-ATX: Failed to initialize client for verifySession') + return false + } + this.logging.log('DEBUG-ATX: initializeAtxClient() completed successfully') + + // Log authentication details for debugging + this.logging.log('DEBUG-ATX: About to call getBearerToken()') + const bearerToken = await this.serviceManager.getBearerToken() + this.logging.log('DEBUG-ATX: getBearerToken() completed') + + this.logging.log('DEBUG-ATX: About to call getActiveTransformProfileApplicationUrl()') + const applicationUrl = await this.getActiveTransformProfileApplicationUrl() + this.logging.log('DEBUG-ATX: getActiveTransformProfileApplicationUrl() completed') + + this.logging.log(`DEBUG-ATX: VerifySession - applicationUrl: ${applicationUrl || 'null'}`) + this.logging.log( + `DEBUG-ATX: VerifySession - bearer token length: ${bearerToken ? bearerToken.length : 0} characters` + ) + + // Always return true like reference repo + this.logging.log(`DEBUG-ATX: VerifySession successful`) + return true + } catch (error) { + this.logging.error(`DEBUG-ATX: VerifySession error: ${String(error)}`) + return false + } + } + + /** + * List available workspaces + */ + async listWorkspaces(): Promise { + try { + this.logging.log('DEBUG-ATX: ListWorkspaces operation started') + + if (!this.atxClient && !(await this.initializeAtxClient())) { + throw new Error('ATX FES client not initialized') + } + + const { ListWorkspacesCommand } = await import('@amazon/elastic-gumby-frontend-client') + const command = new ListWorkspacesCommand({}) + await this.addAuthToCommand(command) + + this.logging.log('DEBUG-ATX: Sending ListWorkspaces command to ATX FES') + const response = await this.atxClient!.send(command) + this.logging.log(`DEBUG-ATX: ListWorkspaces API returned ${response.items?.length || 0} workspaces`) + this.logging.log(`ATX: ListWorkspaces RequestId: ${response.$metadata?.requestId}`) + + // Convert ATX API format to IDE expected format + const workspaces = (response.items || []).map(workspace => ({ + Id: workspace.id, + Name: workspace.name, + CreatedDate: new Date().toISOString(), // Use current date since createdDate not available + })) + + this.logging.log(`DEBUG-ATX: Converted workspaces: ${JSON.stringify(workspaces, null, 2)}`) + return workspaces + } catch (error) { + this.logging.error(`DEBUG-ATX: ListWorkspaces error: ${String(error)}`) + return [] + } + } + + /** + * Create a new workspace + */ + async createWorkspace( + workspaceName: string | null + ): Promise<{ workspaceId: string; workspaceName: string } | null> { + try { + this.logging.log( + `DEBUG-ATX: CreateWorkspace operation started with name: ${workspaceName || 'auto-generated'}` + ) + + if (!this.atxClient && !(await this.initializeAtxClient())) { + throw new Error('ATX FES client not initialized') + } + + const { CreateWorkspaceCommand } = await import('@amazon/elastic-gumby-frontend-client') + const command = new CreateWorkspaceCommand({ + name: workspaceName || undefined, + description: workspaceName ? `Workspace: ${workspaceName}` : 'Auto-generated workspace', + }) + await this.addAuthToCommand(command) + + this.logging.log('DEBUG-ATX: Sending CreateWorkspace command to ATX FES') + const response = await this.atxClient!.send(command) + this.logging.log(`DEBUG-ATX: CreateWorkspace API returned workspaceId: ${response.workspace?.id}`) + this.logging.log(`ATX: CreateWorkspace RequestId: ${response.$metadata?.requestId}`) + + if (response.workspace?.id && response.workspace?.name) { + const result = { + workspaceId: response.workspace.id, + workspaceName: response.workspace.name, + } + this.logging.log(`DEBUG-ATX: CreateWorkspace success: ${JSON.stringify(result)}`) + return result + } + + this.logging.log('DEBUG-ATX: CreateWorkspace failed - no workspace in response') + return null + } catch (error) { + this.logging.error(`DEBUG-ATX: CreateWorkspace error: ${String(error)}`) + return null + } + } + + /** + * List workspaces and optionally create new workspace (CONSOLIDATED API) + */ + async listOrCreateWorkspace( + request: AtxListOrCreateWorkspaceRequest + ): Promise { + try { + this.logging.log('DEBUG-ATX: ListOrCreateWorkspace consolidated operation started') + this.logging.log(`DEBUG-ATX: Request: ${JSON.stringify(request, null, 2)}`) + + // Call verifySession ONCE at the beginning + if (!(await this.verifySession())) { + this.logging.error('DEBUG-ATX: VerifySession failed for listOrCreateWorkspace') + return null + } + + // Always get list of existing workspaces + this.logging.log('DEBUG-ATX: Getting list of existing workspaces') + const workspaces = await this.listWorkspaces() + + const response: AtxListOrCreateWorkspaceResponse = { + AvailableWorkspaces: workspaces, + CreatedWorkspace: undefined, + } + + // Optionally create new workspace + if (request.CreateWorkspaceName !== undefined) { + this.logging.log( + `DEBUG-ATX: Creating new workspace: ${request.CreateWorkspaceName || 'auto-generated'}` + ) + const newWorkspace = await this.createWorkspace(request.CreateWorkspaceName) + + if (newWorkspace) { + response.CreatedWorkspace = { + WorkspaceId: newWorkspace.workspaceId, + WorkspaceName: newWorkspace.workspaceName, + } + + // Add the new workspace to the available list + response.AvailableWorkspaces.push({ + Id: newWorkspace.workspaceId, + Name: newWorkspace.workspaceName, + CreatedDate: new Date().toISOString(), + }) + this.logging.log(`DEBUG-ATX: Added new workspace to available list`) + } + } + + this.logging.log( + `DEBUG-ATX: ListOrCreateWorkspace completed - ${response.AvailableWorkspaces.length} workspaces available` + ) + this.logging.log(`DEBUG-ATX: Final response: ${JSON.stringify(response, null, 2)}`) + return response + } catch (error) { + this.logging.error(`DEBUG-ATX: ListOrCreateWorkspace error: ${String(error)}`) + return null + } + } + + /** + * Create ATX transformation job + */ + async createJob(request: { + workspaceId: string + jobName?: string + targetFramework?: string + }): Promise<{ jobId: string; status: string } | null> { + try { + this.logging.log(`DEBUG-ATX-CREATE-JOB: CreateJob operation started for workspace: ${request.workspaceId}`) + this.logging.log(`DEBUG-ATX-CREATE-JOB: jobName: ${request.jobName || 'auto-generated'}`) + + // Call ATX FES createJob API + this.logging.log('DEBUG-ATX-CREATE-JOB: initializing ATX client...') + await this.initializeAtxClient() + if (!this.atxClient) { + throw new Error('ATX client not initialized') + } + this.logging.log('DEBUG-ATX-CREATE-JOB: ATX client initialized successfully') + + this.logging.log( + `DEBUG-ATX-CREATE-JOB: creating CreateJobCommand with targetFramework ${request.targetFramework}` + ) + const command = new CreateJobCommand({ + workspaceId: request.workspaceId, + objective: JSON.stringify({ target_framework: request.targetFramework || 'net10.0' }), + jobType: 'DOTNET_IDE' as any, + jobName: request.jobName || `transform-job-${Date.now()}`, + intent: 'LANGUAGE_UPGRADE', + idempotencyToken: uuidv4(), + }) + this.logging.log('DEBUG-ATX-CREATE-JOB: command created, adding auth...') + + await this.addAuthToCommand(command) + this.logging.log('DEBUG-ATX-CREATE-JOB: auth added, sending command...') + + const response = (await this.atxClient.send(command)) as any + this.logging.log(`DEBUG-ATX-CREATE-JOB: API returned jobId: ${response.jobId}, status: ${response.status}`) + this.logging.log(`ATX: CreateJob RequestId: ${response.$metadata?.requestId}`) + + if (response.jobId && response.status) { + return { jobId: response.jobId, status: response.status } + } + + this.logging.error('DEBUG-ATX-CREATE-JOB: API returned null jobId or status') + return null + } catch (error) { + this.logging.error(`DEBUG-ATX-CREATE-JOB: Error: ${String(error)}`) + return null + } + } + + /** + * Calculate SHA256 hash of file contents using streaming (matches reference repo) + */ + static async getSha256Async(fileName: string): Promise { + const hasher = crypto.createHash('sha256') + const stream = fs.createReadStream(fileName) + for await (const chunk of stream) { + hasher.update(chunk) + } + return hasher.digest('base64') + } + + /** + * Create artifact upload URL + */ + async createArtifactUploadUrl( + workspaceId: string, + jobId: string, + filePath: string, + categoryType: CategoryType, + fileType: FileType + ): Promise<{ uploadId: string; uploadUrl: string; requestHeaders?: any } | null> { + try { + this.logging.log(`DEBUG-ATX-UPLOAD-URL: CreateArtifactUploadUrl operation started for job: ${jobId}`) + + // Initialize ATX client + await this.initializeAtxClient() + if (!this.atxClient) { + throw new Error('ATX client not initialized') + } + + // Calculate file checksum - exact reference repo implementation + const sha256 = await ATXTransformHandler.getSha256Async(filePath) + + const command = new CreateArtifactUploadUrlCommand({ + workspaceId: workspaceId, + jobId: jobId, + contentDigest: { Sha256: sha256 }, + artifactReference: { + artifactType: { + categoryType: categoryType, + fileType: fileType, + }, + }, + }) + + await this.addAuthToCommand(command) + const result = (await this.atxClient.send(command)) as any + this.logging.log(`ATX: CreateArtifactUploadUrl RequestId: ${result.$metadata?.requestId}`) + + if (result && result.artifactId && result.s3PreSignedUrl) { + this.logging.log(`DEBUG-ATX-UPLOAD-URL: SUCCESS - Upload URL created`) + return { + uploadId: result.artifactId, + uploadUrl: result.s3PreSignedUrl, + requestHeaders: result.requestHeaders, + } + } else { + this.logging.error('DEBUG-ATX-UPLOAD-URL: Missing artifactId or s3PreSignedUrl in response') + return null + } + } catch (error) { + this.logging.error(`DEBUG-ATX-UPLOAD-URL: Error: ${String(error)}`) + return null + } + } + + /** + * Complete artifact upload + */ + async completeArtifactUpload( + workspaceId: string, + jobId: string, + artifactId: string + ): Promise<{ success: boolean } | null> { + try { + this.logging.log( + `DEBUG-ATX-COMPLETE-UPLOAD: CompleteArtifactUpload operation started for artifact: ${artifactId}` + ) + + // Initialize ATX client + await this.initializeAtxClient() + if (!this.atxClient) { + throw new Error('ATX client not initialized') + } + + const command = new CompleteArtifactUploadCommand({ + workspaceId: workspaceId, + jobId: jobId, + artifactId: artifactId, + }) + + await this.addAuthToCommand(command) + const result = (await this.atxClient.send(command)) as any + + this.logging.log(`DEBUG-ATX-COMPLETE-UPLOAD: Upload completed successfully`) + return { success: true } + } catch (error) { + this.logging.error(`DEBUG-ATX-COMPLETE-UPLOAD: Error: ${String(error)}`) + return null + } + } + + /** + * Start transformation job + */ + async startJob(workspaceId: string, jobId: string): Promise<{ success: boolean } | null> { + try { + this.logging.log(`DEBUG-ATX-START-JOB: StartJob operation started for job: ${jobId}`) + + // Initialize ATX client + await this.initializeAtxClient() + if (!this.atxClient) { + throw new Error('ATX client not initialized') + } + + const command = new StartJobCommand({ + workspaceId: workspaceId, + jobId: jobId, + }) + + await this.addAuthToCommand(command) + const result = (await this.atxClient.send(command)) as any + this.logging.log(`ATX: StartJob RequestId: ${result.$metadata?.requestId}`) + + this.logging.log(`DEBUG-ATX-START-JOB: Job started successfully`) + return { success: true } + } catch (error) { + this.logging.error(`DEBUG-ATX-START-JOB: Error: ${String(error)}`) + return null + } + } + + /** + * Create ZIP file from solution using ArtifactManager + */ + async createZip(request: any): Promise { + try { + this.logging.log('DEBUG-ATX: Creating ZIP file from solution') + + const workspacePath = this.getWorkspacePath(request.SolutionRootPath) + + const artifactManager = new ArtifactManager( + this.workspace, + this.logging, + workspacePath, + request.SolutionRootPath + ) + + const zipFilePath = await artifactManager.createZip(request) + this.logging.log(`DEBUG-ATX: ZIP file created successfully: ${zipFilePath}`) + return zipFilePath + } catch (error) { + this.logging.error(`DEBUG-ATX: createZip error: ${String(error)}`) + throw error + } + } + + /** + * Create workspace path like RTS does: {solutionRoot}/artifactWorkspace/{uuid} + */ + getWorkspacePath(solutionRootPath: string): string { + const { v4: uuidv4 } = require('uuid') + const randomPath = uuidv4().substring(0, 8) + const path = require('path') + const workspacePath = path.join(solutionRootPath, 'artifactWorkspace', randomPath) + if (!fs.existsSync(workspacePath)) { + fs.mkdirSync(workspacePath, { recursive: true }) + } + return workspacePath + } + + /** + * Upload artifact to S3 using presigned URL and headers from ATX FES + */ + async uploadArtifact(s3PreSignedUrl: string, filePath: string, requestHeaders?: any): Promise { + try { + this.logging.log(`DEBUG-ATX: Starting S3 upload to ${s3PreSignedUrl}`) + this.logging.log(`DEBUG-ATX: File path: ${filePath}`) + + const headers: any = {} + + // Add required headers from ATX FES response + if (requestHeaders) { + Object.keys(requestHeaders).forEach(key => { + const value = requestHeaders[key] + // Handle array values (take first element) + headers[key] = Array.isArray(value) ? value[0] : value + }) + } + + this.logging.log(`DEBUG-ATX: S3 Upload headers: ${JSON.stringify(Object.keys(headers))}`) + + // Create file stream + const fileStream = fs.createReadStream(filePath) + + // Upload to S3 using PUT request + const got = (await import('got')).default + const response = await got.put(s3PreSignedUrl, { + body: fileStream, + headers: headers, + timeout: { request: 300000 }, // 5 minutes timeout + retry: { limit: 0 }, + }) + + this.logging.log(`DEBUG-ATX: S3 Upload response status: ${response.statusCode} ${response.statusMessage}`) + + if (response.statusCode === 200) { + this.logging.log('DEBUG-ATX: S3 Upload SUCCESS') + return true + } else { + this.logging.error(`DEBUG-ATX: S3 Upload failed with status ${response.statusCode}`) + return false + } + } catch (error) { + this.logging.error(`DEBUG-ATX: S3 Upload error: ${String(error)}`) + return false + } + } + + /** + * Start ATX Transform - Orchestrates the full workflow + * Step 1: CreateJob ✅ + * Step 2: ZIP Creation and Upload + */ + async startTransform(request: { + workspaceId: string + jobName?: string + startTransformRequest: object + }): Promise<{ TransformationJobId: string; ArtifactPath: string; UploadId: string } | null> { + try { + this.logging.log(`DEBUG-ATX-START: StartTransform workflow started for workspace: ${request.workspaceId}`) + + // Step 1: Create transformation job + this.logging.log('DEBUG-ATX-START: Step 1 - Creating transformation job') + const createJobResponse = await this.createJob({ + workspaceId: request.workspaceId, + jobName: request.jobName || 'Transform Job', + targetFramework: (request.startTransformRequest as any).TargetFramework, + }) + + if (!createJobResponse?.jobId) { + throw new Error('Failed to create ATX transformation job') + } + + this.logging.log( + `DEBUG-ATX-START: Step 1 - Created job: ${createJobResponse.jobId} with status: ${createJobResponse.status}` + ) + + // Step 2: Create ZIP file + this.logging.log('DEBUG-ATX-START: Step 2 - Creating ZIP file from solution') + const zipFilePath = await this.createZip(request.startTransformRequest) + + if (!zipFilePath) { + throw new Error('Failed to create ZIP file for ATX transformation') + } + + this.logging.log(`DEBUG-ATX-START: Step 2 - Created ZIP file: ${zipFilePath}`) + + // Step 3: Create artifact upload URL + this.logging.log('DEBUG-ATX-START: Step 3 - Creating artifact upload URL') + const uploadResponse = await this.createArtifactUploadUrl( + request.workspaceId, + createJobResponse.jobId, + zipFilePath, + CategoryType.CUSTOMER_INPUT, + FileType.ZIP + ) + + if (!uploadResponse?.uploadUrl) { + throw new Error('Failed to create artifact upload URL') + } + + this.logging.log(`DEBUG-ATX-START: Step 3 - Created upload URL with uploadId: ${uploadResponse.uploadId}`) + + // Step 4: Upload ZIP file to S3 + this.logging.log('DEBUG-ATX-START: Step 4 - Uploading ZIP file to S3') + const uploadSuccess = await this.uploadArtifact( + uploadResponse.uploadUrl, + zipFilePath, + uploadResponse.requestHeaders + ) + + if (!uploadSuccess) { + throw new Error('Failed to upload ZIP file to S3') + } + + this.logging.log('DEBUG-ATX-START: Step 4 - Successfully uploaded ZIP file to S3') + + // Step 5: Complete artifact upload + this.logging.log('DEBUG-ATX-START: Step 5 - Completing artifact upload') + const completeResponse = await this.completeArtifactUpload( + request.workspaceId, + createJobResponse.jobId, + uploadResponse.uploadId + ) + + if (!completeResponse?.success) { + throw new Error('Failed to complete artifact upload') + } + + this.logging.log('DEBUG-ATX-START: Step 5 - Successfully completed artifact upload') + + // Step 6: Start the transformation job + this.logging.log('DEBUG-ATX-START: Step 6 - Starting transformation job') + const startJobResponse = await this.startJob(request.workspaceId, createJobResponse.jobId) + + if (!startJobResponse?.success) { + throw new Error('Failed to start ATX transformation job') + } + + this.logging.log('DEBUG-ATX-START: Step 6 - Successfully started transformation job') + this.logging.log('DEBUG-ATX-START: Full workflow completed successfully!') + + return { + TransformationJobId: createJobResponse.jobId, + ArtifactPath: zipFilePath, + UploadId: uploadResponse.uploadId, + } + } catch (error) { + this.logging.error(`DEBUG-ATX-START: StartTransform workflow error: ${String(error)}`) + return null + } + } + + async sleep(duration = 0): Promise { + return new Promise(r => setTimeout(r, Math.max(duration, 0))) + } + + async getJob(workspaceId: string, jobId: string): Promise { + try { + this.logging.log(`Getting job: ${jobId} in workspace: ${workspaceId}`) + + if (!this.atxClient && !(await this.initializeAtxClient())) { + this.logging.error('ATX: GetJob client not initialized') + return null + } + + const command = new GetJobCommand({ + workspaceId: workspaceId, + jobId: jobId, + includeObjective: false, + }) + + await this.addAuthToCommand(command) + const response = await this.atxClient!.send(command) + + this.logging.log(`ATX: GetJob SUCCESS - Job status: ${response.job?.statusDetails?.status}`) + return response.job || null + } catch (error) { + this.logging.error(`ATX: GetJob error: ${String(error)}`) + return null + } + } + + async createArtifactDownloadUrl( + workspaceId: string, + jobId: string, + artifactId: string + ): Promise<{ s3PresignedUrl: string; requestHeaders?: any } | null> { + try { + this.logging.log(`DEBUG-ATX-UPLOAD-URL: CreateArtifactDownloadUrl operation started for job: ${jobId}`) + + if (!this.atxClient && !(await this.initializeAtxClient())) { + throw new Error('ATX client not initialized') + } + + const command = new CreateArtifactDownloadUrlCommand({ + workspaceId: workspaceId, + jobId: jobId, + artifactId: artifactId, + }) + + await this.addAuthToCommand(command) + const result = (await this.atxClient!.send(command)) as any + if (result && result.s3PreSignedUrl) { + this.logging.log(`ATX: DownloadArtifactUrl SUCCESS - Download URL created`) + + const normalizedHeaders: Record = {} + if (result.requestHeaders) { + for (const [key, value] of Object.entries(result.requestHeaders)) { + normalizedHeaders[key] = Array.isArray(value) ? value[0] : value + } + } + + return { + s3PresignedUrl: result.s3PreSignedUrl, + requestHeaders: normalizedHeaders, + } + } else { + this.logging.error('ATX: DownloadArtifactUrl - Missing s3PreSignedUrl in response') + return null + } + } catch (error) { + this.logging.error(`DEBUG-ATX-UPLOAD-URL: Error: ${String(error)}`) + return null + } + } + + async listHitls(workspaceId: string, jobId: string): Promise { + try { + this.logging.log('=== ATX FES ListHitls Operation (FES Client) ===') + this.logging.log(`Listing Hitls for job: ${jobId} in workspace: ${workspaceId}`) + + if (!this.atxClient && !(await this.initializeAtxClient())) { + this.logging.error('ListHitls: Failed to initialize ATX client') + return null + } + + const command = new ListHitlTasksCommand({ + workspaceId: workspaceId, + jobId: jobId, + taskType: 'NORMAL', + taskFilter: { + taskStatuses: ['AWAITING_HUMAN_INPUT'], + }, + }) + + await this.addAuthToCommand(command) + const result = await this.atxClient!.send(command) + + this.logging.log(`ListHitls: SUCCESS - Found ${result.hitlTasks?.length || 0} HITL_FROM_USER artifacts`) + return result.hitlTasks || [] + } catch (error) { + this.logging.error(`ListHitls error: ${String(error)}`) + return null + } + } + + async submitHitl( + workspaceId: string, + jobId: string, + taskId: string, + humanArtifactId: string + ): Promise { + try { + this.logging.log('=== ATX FES SubmitHitl Operation (FES Client) ===') + this.logging.log(`Updating Hitl: ${taskId} for job: ${jobId} in workspace: ${workspaceId}`) + + if (!this.atxClient && !(await this.initializeAtxClient())) { + this.logging.error('SubmitHitl: Failed to initialize ATX client') + return null + } + + const command = new SubmitCriticalHitlTaskCommand({ + workspaceId: workspaceId, + jobId: jobId, + taskId: taskId, + action: 'APPROVE', + humanArtifact: { + artifactId: humanArtifactId, + }, + }) + + await this.addAuthToCommand(command) + const result = await this.atxClient!.send(command) + + this.logging.log(`SubmitHitl: SUCCESS - task status: ${result.status || 'UNKNOWN'} `) + return result + } catch (error) { + this.logging.error(`ListHitls error: ${String(error)}`) + return null + } + } + + async getHitl(workspaceId: string, jobId: string, taskId: string): Promise { + try { + this.logging.log('=== ATX FES Get Hitl Operation (FES Client) ===') + this.logging.log(`Getting Hitl: ${jobId} in workspace: ${workspaceId}`) + + if (!this.atxClient && !(await this.initializeAtxClient())) { + this.logging.error('GetHitl: Failed to initialize ATX client') + return null + } + + const command = new GetHitlTaskCommand({ + workspaceId: workspaceId, + jobId: jobId, + taskId: taskId, + }) + + await this.addAuthToCommand(command) + const result = await this.atxClient!.send(command) + + this.logging.log(`GetHitl: SUCCESS - Job data received`) + return result.task || null + } catch (error) { + this.logging.error(`GetHitl error: ${String(error)}`) + return null + } + } + + async pollHitlTask(workspaceId: string, jobId: string, taskId: string): Promise { + this.logging.log('Starting polling for hitl after upload') + + try { + var count = 0 + while (count < 100) { + const jobStatus = await this.getHitl(workspaceId, jobId, taskId) + this.logging.log(`Hitl Polling get status: ${jobStatus?.status}`) + + if (jobStatus && jobStatus.status == 'CLOSED') { + this.logging.log('Hitl Polling get status CLOSED') + return 'Validation Success!' + } else if (jobStatus && jobStatus.status == 'CLOSED_PENDING_NEXT_TASK') { + // Fallback to placeholder if API call fails + this.logging.log('Hitl Polling get status CLOSED_PENDING_NEXT_TASK') + return 'Submitted plan did not pass validation, please check the plan for details....' + } else if (jobStatus && jobStatus.status == 'CANCELLED') { + // Fallback to placeholder if API call fails + this.logging.log('Hitl Polling get status CANCELLED') + return 'Timeout occured during planning, proceeding with default plan....' + } else { + this.logging.log('Hitl polling in progress....') + await this.sleep(10 * 1000) + count++ + } + } + + this.logging.log('Returning null, 100 polls and no approve or reject') + return null + } catch (error) { + this.logging.error(`Hitl polling error: ${String(error)}`) + return null + } + } + + async getHitlAgentArtifact( + workspaceId: string, + jobId: string, + solutionRootPath: string + ): Promise<{ PlanPath: string; ReportPath: string } | null> { + try { + this.logging.log('=== ATX FES Get Hitl Agent Artifact Operation (FES Client) ===') + this.logging.log(`Getting Hitl Agent Artifact: ${jobId} in workspace: ${workspaceId}`) + + if (!this.atxClient && !(await this.initializeAtxClient())) { + this.logging.error('GetHitlAgentArtifact: Failed to initialize ATX client') + return null + } + + const hitls = await this.listHitls(workspaceId, jobId) + + if (hitls && hitls.length != 1) { + this.logging.log(`ATX FES Job ${jobId} - Found ${hitls.length} hitls`) + } else if (!hitls) { + this.logging.log(`ATX FES Job ${jobId} - no or many hitls available for download (expects 1 hitl)`) + throw new Error('no or many HITLE_FROM_USER artifacts available for download (expects 1 artifact)') + } + + const hitl = hitls[0] + + this.cachedHitl = hitl.taskId + + const downloadInfo = await this.createArtifactDownloadUrl(workspaceId, jobId, hitl.agentArtifact.artifactId) + + if (!downloadInfo) { + throw new Error('Failed to get ATX FES download URL') + } + + this.logging.log(`ATX FES Job ${jobId} - Artifact download URL created: ${downloadInfo.s3PresignedUrl}`) + + const pathToDownload = path.join(solutionRootPath, ArtifactWorkspaceName, jobId) + + await this.downloadAndExtractArchive( + downloadInfo.s3PresignedUrl, + downloadInfo.requestHeaders, + pathToDownload, + 'transformation-plan-download.zip' + ) + + const planPath = path.join(pathToDownload, 'transformation-plan.md') + const reportPath = path.join(pathToDownload, 'assessment-report.md') + return { PlanPath: planPath, ReportPath: reportPath } + } catch (error) { + this.logging.error(`GetHitlAgentArtifact error: ${String(error)}`) + return null + } + } + + /** + * Get transform info - dummy implementation + */ + async getTransformInfo(request: AtxGetTransformInfoRequest): Promise { + try { + this.logging.log(`DEBUG-ATX-GET-INFO: getTransformInfo called with: ${JSON.stringify(request)}`) + + const job = await this.getJob(request.WorkspaceId, request.TransformationJobId) + + if (!job) { + this.logging.log(`DEBUG-ATX-GET-INFO: Get Job returned null`) + return null + } + + const jobStatus = job.statusDetails?.status + + if (jobStatus === 'COMPLETED') { + this.logging.log(`DEBUG-ATX-GET-INFO: Job completed successfully`) + const pathToArtifact = await this.downloadFinalArtifact( + request.WorkspaceId, + request.TransformationJobId, + request.SolutionRootPath + ) + const plan = await this.getTransformationPlan( + request.WorkspaceId, + request.TransformationJobId, + request.SolutionRootPath + ) + + return { + TransformationJob: { + WorkspaceId: request.WorkspaceId, + JobId: request.TransformationJobId, + Status: jobStatus, + } as AtxTransformationJob, + ArtifactPath: pathToArtifact, + TransformationPlan: plan, + } as AtxGetTransformInfoResponse + } else if (jobStatus === 'FAILED') { + this.logging.log(`DEBUG-ATX-GET-INFO: Job failed`) + return { + TransformationJob: { + WorkspaceId: request.WorkspaceId, + JobId: request.TransformationJobId, + Status: jobStatus, + FailureReason: job?.statusDetails?.failureReason, + } as AtxTransformationJob, + ErrorString: 'Transformation job failed', + } as AtxGetTransformInfoResponse + } else if (jobStatus === 'STOPPING' || jobStatus === 'STOPPED') { + this.logging.log(`DEBUG-ATX-GET-INFO: Job stopping`) + return { + TransformationJob: { + WorkspaceId: request.WorkspaceId, + JobId: request.TransformationJobId, + Status: jobStatus, + } as AtxTransformationJob, + ErrorString: 'Transformation job stopped', + } as AtxGetTransformInfoResponse + } else if (jobStatus === 'PLANNED') { + this.logging.log(`DEBUG-ATX-GET-INFO: Job in PLANNED`) + const plan = await this.getTransformationPlan( + request.WorkspaceId, + request.TransformationJobId, + request.SolutionRootPath + ) + + return { + TransformationJob: { + WorkspaceId: request.WorkspaceId, + JobId: request.TransformationJobId, + Status: jobStatus, + } as AtxTransformationJob, + TransformationPlan: plan, + } as AtxGetTransformInfoResponse + } else if (jobStatus === 'AWAITING_HUMAN_INPUT') { + this.logging.log(`DEBUG-ATX-GET-INFO: Job in AWAITING_HUMAN_INPUT`) + + const response = await this.getHitlAgentArtifact( + request.WorkspaceId, + request.TransformationJobId, + request.SolutionRootPath + ) + + return { + TransformationJob: { + WorkspaceId: request.WorkspaceId, + JobId: request.TransformationJobId, + Status: jobStatus, + } as AtxTransformationJob, + PlanPath: response?.PlanPath, + ReportPath: response?.ReportPath, + } as AtxGetTransformInfoResponse + } else { + this.logging.log(`DEBUG-ATX-GET-INFO: Job in PLANNING`) + + await this.listWorklogs(request.WorkspaceId, request.TransformationJobId, request.SolutionRootPath) + + return { + TransformationJob: { + WorkspaceId: request.WorkspaceId, + JobId: request.TransformationJobId, + Status: jobStatus, + } as AtxTransformationJob, + } as AtxGetTransformInfoResponse + } + } catch (error) { + this.logging.error(`ATX: Get TransformInfo error: ${String(error)}`) + return null + } + } + + async uploadPlan(request: AtxUploadPlanRequest): Promise { + this.logging.info('Starting upload plan') + + if (!this.cachedHitl) { + this.logging.error('ATX: UploadPlan error: No cached hitl') + return null + } + + try { + const pathToZip = path.join(path.dirname(request.PlanPath), 'transformation-plan-upload.md') + await this.zipFile(request.PlanPath, pathToZip) + + const uploadInfo = await this.createArtifactUploadUrl( + request.WorkspaceId, + request.TransformationJobId, + pathToZip, + CategoryType.HITL_FROM_USER, + FileType.ZIP + ) + + if (!uploadInfo) { + this.logging.error('ATX: UploadPlan error: Failed to get ATX upload URL') + return null + } + + this.logging.log(`ATX: UploadPlan: Artifact upload URL created: ${uploadInfo.uploadUrl}`) + + const uploadSuccess = await this.uploadArtifact(uploadInfo.uploadUrl, pathToZip, uploadInfo.requestHeaders) + + if (!uploadSuccess) { + throw new Error('Failed to upload ZIP file to S3') + return null + } + + const completeResponse = await this.completeArtifactUpload( + request.WorkspaceId, + request.TransformationJobId, + uploadInfo.uploadId + ) + + if (!completeResponse?.success) { + throw new Error('Failed to complete artifact upload') + } + + this.logging.info('Uploaded plan, submitting hitl') + + const submitHitl = await this.submitHitl( + request.WorkspaceId, + request.TransformationJobId, + this.cachedHitl, + uploadInfo.uploadId + ) + + if (!submitHitl) { + throw new Error('Failed to submit hitl') + } + + this.logging.info('Submitted hitl, polling for status') + + const validation = await this.pollHitlTask( + request.WorkspaceId, + request.TransformationJobId, + this.cachedHitl + ) + + if (!validation) { + throw new Error('Failed to poll hitl task') + } + + if (validation === 'Submitted plan did not pass validation, please check the plan for details....') { + const response = await this.getHitlAgentArtifact( + request.WorkspaceId, + request.TransformationJobId, + path.dirname(request.PlanPath) + ) + + return { + VerificationStatus: false, + Message: validation, + PlanPath: response?.PlanPath, + ReportPath: response?.ReportPath, + } as AtxUploadPlanResponse + } else { + return { + VerificationStatus: true, + Message: validation, + } as AtxUploadPlanResponse + } + } catch (error) { + this.logging.error(`ATX: UploadPlan error: ${String(error)}`) + return null + } + } + + /** + * Stop ATX transformation job + */ + async stopJob(workspaceId: string, jobId: string): Promise { + try { + this.logging.log(`ATX: StopJob operation started for job: ${jobId}`) + + if (!this.atxClient && !(await this.initializeAtxClient())) { + throw new Error('ATX FES client not initialized') + } + + const command = new StopJobCommand({ + workspaceId: workspaceId, + jobId: jobId, + }) + + await this.addAuthToCommand(command) + const response = await this.atxClient!.send(command) + + this.logging.log(`ATX: StopJob SUCCESS - Status: ${response.status}`) + this.logging.log(`ATX: StopJob RequestId: ${response.$metadata?.requestId}`) + return response.status || 'STOPPED' + } catch (error) { + this.logging.error(`ATX: StopJob error: ${error instanceof Error ? error.message : 'Unknown error'}`) + return 'FAILED' + } + } + + async downloadFinalArtifact(workspaceId: string, jobId: string, solutionRootPath: string): Promise { + try { + this.logging.log('=== ATX FES Download Export Result Archive ===') + this.logging.log(`Called with jobId: ${jobId}, solutionRootPath: ${solutionRootPath}`) + + this.logging.log(`Listing CUSTOMER_OUTPUT artifacts for job: ${jobId}`) + const artifacts = await this.listArtifacts(workspaceId, jobId) + if (!artifacts || artifacts.length === 0) { + throw new Error('No CUSTOMER_OUTPUT artifacts available for download') + } + + const artifact = artifacts[0] + const artifactId = artifact.artifactId + this.logging.log(`Found artifact: ${artifactId}, size: ${artifact.sizeInBytes} bytes`) + + this.logging.log(`Creating download URL for artifactId: ${artifactId}`) + const downloadInfo = await this.createArtifactDownloadUrl(workspaceId, jobId, artifactId) + if (!downloadInfo) { + throw new Error('Failed to get ATX FES download URL') + } + + this.logging.log(`ATX FES Job ${jobId} - Artifact download URL created: ${downloadInfo.s3PresignedUrl}`) + + const pathToDownload = path.join(solutionRootPath, ArtifactWorkspaceName, jobId) + + await this.downloadAndExtractArchive( + downloadInfo.s3PresignedUrl, + downloadInfo.requestHeaders, + pathToDownload, + 'ExportResultsArchive.zip' + ) + + return pathToDownload + } catch (error) { + this.logging.error(`ATX FES download failed: ${String(error)}`) + return null + } + } + + async getTransformationPlan( + workspaceId: string, + jobId: string, + solutionRootPath: string + ): Promise { + this.logging.log('Using ATX FES for Transform profile - real ListJobPlanSteps') + + try { + // Get real plan steps from ATX FES (only if job status >= PLANNED) + const planSteps = await this.getATXFESJobPlanSteps(workspaceId, jobId) + this.logging.log(`dbu ListWorklog all ${JSON.stringify(planSteps)}`) + + if (planSteps) { + this.logging.log(`ATX FES: Found ${planSteps.length} transformation steps`) + + // Sort steps by score (primary) and startTime (tiebreaker) to match RTS ordering + planSteps.sort((a: any, b: any) => { + const scoreDiff = (a.score || 0) - (b.score || 0) + if (scoreDiff !== 0) return scoreDiff + + // Tiebreaker for identical scores: sort by startTime + const timeA = a.startTime ? new Date(a.startTime).getTime() : 0 + const timeB = b.startTime ? new Date(b.startTime).getTime() : 0 + return timeA - timeB + }) + + this.logging.log(`PlanSteps response: ` + JSON.stringify(planSteps)) + // Return in exact same format as RTS with all required fields + const transformationPlan = { + transformationSteps: planSteps.map((step: any, index: number) => { + try { + // Map substeps to ProgressUpdates for IDE display + const progressUpdates = (step.substeps || []).map((substep: any) => { + // Map ATX substep status to IDE TransformationProgressUpdateStatus enum values + let substepStatus = 'IN_PROGRESS' // Default - no NOT_STARTED in this enum + switch (substep.status) { + case 'SUCCEEDED': + case 'COMPLETED': + substepStatus = 'COMPLETED' + break + case 'IN_PROGRESS': + case 'RUNNING': + substepStatus = 'IN_PROGRESS' + break + case 'FAILED': + substepStatus = 'FAILED' + break + case 'SKIPPED': + substepStatus = 'SKIPPED' + break + case 'NOT_STARTED': + case 'CREATED': + default: + substepStatus = 'IN_PROGRESS' // No NOT_STARTED option in ProgressUpdate enum + break + } + this.logging.log( + `this is progres update for step ${JSON.stringify(step)} and has substep is ${JSON.stringify(substep)}` + ) + + // Map nested progress updates (3rd level) + const nestedProgressUpdates = (substep.substeps || []).map((nestedUpdate: any) => { + this.logging.log( + `Found nested progress update: ${nestedUpdate.stepName} with status: ${nestedUpdate.status}` + ) + let nestedStatus = 'IN_PROGRESS' + switch (nestedUpdate.status) { + case 'SUCCEEDED': + case 'COMPLETED': + nestedStatus = 'COMPLETED' + break + case 'IN_PROGRESS': + case 'RUNNING': + nestedStatus = 'IN_PROGRESS' + break + case 'FAILED': + nestedStatus = 'FAILED' + break + case 'SKIPPED': + nestedStatus = 'SKIPPED' + break + default: + nestedStatus = 'IN_PROGRESS' + break + } + return { + name: nestedUpdate.stepName || 'Unknown Nested Update', + description: nestedUpdate.description || '', + status: nestedStatus, + stepId: nestedUpdate.stepId ?? undefined, + } + }) + + this.logging.log( + `Substep ${substep.stepName} has ${nestedProgressUpdates.length} nested progress updates` + ) + + return { + name: substep.stepName || 'Unknown Substep', + description: substep.description || '', + status: substepStatus, + startTime: substep.startTime ? new Date(substep.startTime) : undefined, + endTime: substep.endTime ? new Date(substep.endTime) : undefined, + stepId: substep.stepId ?? undefined, + progressUpdates: nestedProgressUpdates, + } + }) + + // Use ATX status directly - IDE supports most values, minimal mapping needed + let mappedStatus = step.status || 'NOT_STARTED' + // Only map the few values IDE doesn't have + if (mappedStatus === 'SUCCEEDED') { + mappedStatus = 'COMPLETED' + } else if (mappedStatus === 'RUNNING') { + mappedStatus = 'IN_PROGRESS' + } else if (mappedStatus === 'CREATED') { + mappedStatus = 'NOT_STARTED' + } + + // Use ATX step data directly without hardcoded ordering + const stepNumber = index + 1 + const stepName = `Step ${stepNumber} - ${step.stepName || 'Unknown Step'}` + + this.logging.log( + `ATX Step ${stepNumber}: ${step.stepName} (${step.status} → ${mappedStatus}) with ${progressUpdates.length} substeps` + ) + + return { + id: step.stepId || `step-${stepNumber}`, + name: stepName, + description: step.description || '', + status: mappedStatus, + progressUpdates: progressUpdates, + startTime: step.startTime ? new Date(step.startTime) : undefined, + endTime: step.endTime ? new Date(step.endTime) : undefined, + } + } catch (error) { + this.logging.error( + `ATX FES: Error mapping step ${index}: ${error instanceof Error ? error.message : 'Unknown error'}` + ) + // Return a safe fallback step + const stepNumber = index + 1 + return { + id: step.stepId || `fallback-${stepNumber}`, + name: `Step ${stepNumber} - ${step.stepName || `Step ${stepNumber}`}`, + description: step.description || '', + status: 'NOT_STARTED', + progressUpdates: [], + startTime: undefined, + endTime: undefined, + } + } + }), + } as TransformationPlan + try { + await this.listWorklogs(workspaceId, jobId, solutionRootPath) + } catch (e) { + this.logging.log(`ATX FES: Could not get worklog for workspaces: ${workspaceId}, job id: ${jobId}`) + } + + this.logging.log( + `ATX FES: Successfully mapped ${transformationPlan.transformationSteps?.length || 0} steps` + ) + if (transformationPlan.transformationSteps?.[0]) { + this.logging.log( + `ATX FES: First step mapped - id: ${transformationPlan.transformationSteps[0].id}, name: ${transformationPlan.transformationSteps[0].name}` + ) + } + + return transformationPlan + } else { + this.logging.log('ATX FES: No plan steps available yet - returning empty plan') + return { + transformationSteps: [] as any, + } as TransformationPlan + } + } catch (error) { + this.logging.error( + `ATX FES getTransformationPlan error: ${error instanceof Error ? error.message : 'Unknown error'}` + ) + // Return empty plan on error + return { + transformationSteps: [] as any, + } as TransformationPlan + } + } + + private async getATXFESJobPlanSteps(workspaceId: string, jobId: string): Promise { + try { + this.logging.log(`ATX FES: getting plan steps with substeps...`) + const result = await this.listJobPlanSteps(workspaceId, jobId) + if (result) { + const steps = result || [] + this.logging.log(`ListJobPlanSteps: SUCCESS - Found ${steps.length} plan steps with substeps`) + this.logging.log(`PlanSteps are ${JSON.stringify(result)}`) + return steps + } + return null + } catch (error) { + this.logging.error(`ListJobPlanSteps error: ${error instanceof Error ? error.message : 'Unknown error'}`) + return null + } + } + + /** + * Lists job plan steps using FES client with recursive substep fetching + */ + private async listJobPlanSteps(workspaceId: string, jobId: string): Promise { + try { + this.logging.log('=== ATX FES ListJobPlanSteps Operation (FES Client) ===') + + if (!this.atxClient && !(await this.initializeAtxClient())) { + this.logging.error('ListJobPlanSteps: Failed to initialize ATX client') + return null + } + + // Get root steps first + const rootSteps = await this.getStepsRecursive(workspaceId, jobId, 'root') + + if (rootSteps && rootSteps.length > 0) { + // For each root step, get its substeps + for (const step of rootSteps) { + this.logging.log(`Getting substeps for step: ${step.stepName} (ID: ${step.stepId})`) + const substeps = await this.getStepsRecursive(workspaceId, jobId, step.stepId) + step.substeps = substeps || [] + + // Sort substeps by score (primary) and startTime (tiebreaker) to match RTS ordering + if (step.substeps.length > 0) { + step.substeps.sort((a: any, b: any) => { + const scoreDiff = (a.score || 0) - (b.score || 0) + if (scoreDiff !== 0) return scoreDiff + + // Tiebreaker for identical scores: sort by startTime + const timeA = a.startTime ? new Date(a.startTime).getTime() : 0 + const timeB = b.startTime ? new Date(b.startTime).getTime() : 0 + return timeA - timeB + }) + for (const substep of step.substeps) { + this.logging.log( + `Getting superSubstep for step: ${substep.stepName} (ID: ${substep.stepId})` + ) + const superSubsteps = await this.getStepsRecursive(workspaceId, jobId, substep.stepId) + substep.substeps = superSubsteps || [] + + // Sort substeps by score (primary) and startTime (tiebreaker) to match RTS ordering + if (substep.substeps.length > 0) { + substep.substeps.sort((a: any, b: any) => { + const scoreDiff = (a.score || 0) - (b.score || 0) + if (scoreDiff !== 0) return scoreDiff + + // Tiebreaker for identical scores: sort by startTime + const timeA = a.startTime ? new Date(a.startTime).getTime() : 0 + const timeB = b.startTime ? new Date(b.startTime).getTime() : 0 + return timeA - timeB + }) + } + + this.logging.log(`Step ${substep.stepName}: Found ${substep.substeps.length} substeps`) + + // Log substep details for debugging + if (substep.substeps.length > 0) { + substep.substeps.forEach((superSubstep: any, index: number) => { + this.logging.log( + ` SuperSubstep ${index + 1}: ${superSubstep.stepName} (${superSubstep.status || 'No status'})` + ) + }) + } + } + } + + this.logging.log(`Step ${step.stepName}: Found ${step.substeps.length} substeps`) + + // Log substep details for debugging + if (step.substeps.length > 0) { + step.substeps.forEach((substep: any, index: number) => { + this.logging.log( + ` Substep ${index + 1}: ${substep.stepName} (${substep.status || 'No status'})` + ) + }) + } + } + + this.logging.log(`ListJobPlanSteps: SUCCESS - Found ${rootSteps.length} steps with substeps`) + return rootSteps + } + + this.logging.log('ListJobPlanSteps: No root steps found') + return null + } catch (error) { + this.logging.error(`ListJobPlanSteps error: ${error instanceof Error ? error.message : 'Unknown error'}`) + return null + } + } + + /** + * Recursively gets steps for a given parent step ID + */ + private async getStepsRecursive(workspaceId: string, jobId: string, parentStepId: string): Promise { + try { + const command = new ListJobPlanStepsCommand({ + workspaceId: workspaceId, + jobId: jobId, + parentStepId: parentStepId, + maxResults: 100, + }) + + await this.addAuthToCommand(command) + const result = await this.atxClient!.send(command) + + if (result && result.steps && result.steps.length > 0) { + this.logging.log(`Found ${result.steps.length} steps for parent: ${parentStepId}`) + return result.steps + } + + return null + } catch (error) { + this.logging.error( + `Error getting steps for parent ${parentStepId}: ${error instanceof Error ? error.message : 'Unknown error'}` + ) + return null + } + } + + /** + * Lists artifacts using FES client with filtering - default to CUSTOMER_OUTPUT + */ + private async listArtifacts( + workspaceId: string, + jobId: string, + filter: CategoryType = 'CUSTOMER_OUTPUT' + ): Promise { + try { + this.logging.log('=== ATX FES ListArtifacts Operation (FES Client) ===') + this.logging.log(`Listing artifacts for job: ${jobId} in workspace: ${workspaceId}`) + + if (!this.atxClient && !(await this.initializeAtxClient())) { + this.logging.error('ListArtifacts: Failed to initialize ATX client') + return null + } + + const command = new ListArtifactsCommand({ + workspaceId: workspaceId, + jobFilter: { + jobId: jobId, + categoryType: filter, // Server-side filtering for customer output artifacts + }, + }) + + await this.addAuthToCommand(command) + const result = await this.atxClient!.send(command) + + this.logging.log( + `ListArtifacts: SUCCESS - Found ${result.artifacts?.length || 0} CUSTOMER_OUTPUT artifacts` + ) + return result.artifacts || [] + } catch (error) { + this.logging.error(`ListArtifacts error: ${error instanceof Error ? error.message : 'Unknown error'}`) + return null + } + } + + /** + * Lists artifacts using FES client with CUSTOMER_OUTPUT filtering + */ + private async listWorklogs( + workspaceId: string, + jobId: string, + solutionRootPath: string, + stepId?: string + ): Promise { + try { + this.logging.log('=== ATX FES ListWorklog Operation (FES Client) ===') + this.logging.log(`Listing ListWorklog for job: ${jobId} in workspace: ${workspaceId}`) + + if (!this.atxClient && !(await this.initializeAtxClient())) { + this.logging.error('ListWorklog: Failed to initialize ATX client') + return null + } + + const command = new ListWorklogsCommand({ + workspaceId: workspaceId, + jobId: jobId, + ...(stepId && { + worklogFilter: { + stepIdFilter: { + stepId: stepId, + }, + }, + }), + }) + + await this.addAuthToCommand(command) + const result = await this.atxClient!.send(command) + this.logging.log(`dbu ListWorklog all ${JSON.stringify(result)}`) + + this.logging.log( + `ListWorklog: SUCCESS - Found ${result.worklogs?.entries.length || 0} wokrlog entries for step ${stepId}` + ) + result.worklogs?.forEach(async (value, index) => { + const currentStepId = value.attributeMap?.STEP_ID || stepId || 'Progress' + this.logging.log(`worklog entry: ${value.description}`) + await this.saveWorklogsToJson(jobId, currentStepId, value.description || '', solutionRootPath) + }) + + return result.worklogs || [] + } catch (error) { + this.logging.error(`ListArtifacts error: ${error instanceof Error ? error.message : 'Unknown error'}`) + return null + } + } + + /** + * Saves worklogs to JSON file with stepId as key and description as value + */ + private async saveWorklogsToJson( + jobId: string, + stepId: string | null, + description: string, + solutionRootPath: string + ): Promise { + try { + const worklogDir = path.join(solutionRootPath, ArtifactWorkspaceName, jobId) + const worklogPath = path.join(worklogDir, 'worklogs.json') + + await this.directoryExists(worklogDir) + + let worklogData: Record = {} + + // Read existing worklog if it exists + if (fs.existsSync(worklogPath)) { + const existingData = fs.readFileSync(worklogPath, 'utf8') + worklogData = JSON.parse(existingData) + } + + if (stepId == null) { + stepId = 'Progress' + } + + // Initialize array if stepId doesn't exist + if (!worklogData[stepId]) { + worklogData[stepId] = [] + } + + // Add description if not already present + if (!worklogData[stepId].includes(description)) { + worklogData[stepId].push(description) + } + + // Write back to file + fs.writeFileSync(worklogPath, JSON.stringify(worklogData, null, 2)) + } catch (error) { + this.logging.error(`Error saving worklog: ${error instanceof Error ? error.message : 'Unknown error'}`) + } + } + + async downloadAndExtractArchive( + downloadUrl: string, + requestHeaders: any, + saveToDir: string, + exportName: string + ): Promise { + const response = await got.get(downloadUrl, { + headers: requestHeaders || {}, + timeout: { request: 300000 }, // 5 minutes + responseType: 'buffer', + }) + + // Save, extract, and return paths + const buffer = [Buffer.from(response.body)] + return await this.extractArchiveFromBuffer(exportName, buffer, saveToDir) + } + + /** + * Extracts ZIP archive from buffer using AdmZip + */ + async extractArchiveFromBuffer(exportName: string, buffer: Uint8Array[], saveToDir: string): Promise { + const pathToArchive = path.join(saveToDir, exportName) + await this.directoryExists(saveToDir) + await fs.writeFileSync(pathToArchive, Buffer.concat(buffer)) + + const pathContainingArchive = path.dirname(pathToArchive) + const zip = new AdmZip(pathToArchive) + const zipEntries = zip.getEntries() + await this.extractAllEntriesTo(pathContainingArchive, zipEntries) + return pathContainingArchive + } + + async directoryExists(directoryPath: string): Promise { + try { + await fs.promises.access(directoryPath) + } catch (error) { + this.logging.log(`Directory doesn't exist, creating it: ${directoryPath}`) + await fs.promises.mkdir(directoryPath, { recursive: true }) + } + } + + /** + * Extracts all ZIP entries to target directory + */ + async extractAllEntriesTo(pathContainingArchive: string, zipEntries: AdmZip.IZipEntry[]): Promise { + for (const entry of zipEntries) { + try { + const entryPath = path.join(pathContainingArchive, entry.entryName) + if (entry.isDirectory) { + await fs.promises.mkdir(entryPath, { recursive: true }) + } else { + const parentDir = path.dirname(entryPath) + await fs.promises.mkdir(parentDir, { recursive: true }) + await fs.promises.writeFile(entryPath, entry.getData()) + } + } catch (extractError: any) { + if (extractError instanceof Error && 'code' in extractError && extractError.code === 'ENOENT') { + this.logging.log(`Attempted to extract a file that does not exist: ${entry.entryName}`) + } else { + throw extractError + } + } + } + } + + private async zipFile(sourceFilePath: string, outputZipPath: string): Promise { + const archive = archiver('zip', { zlib: { level: 9 } }) + const stream = fs.createWriteStream(outputZipPath) + + return new Promise((resolve, reject) => { + archive + .file(sourceFilePath, { name: path.basename(sourceFilePath) }) + .on('error', err => reject(err)) + .pipe(stream) + + stream.on('close', () => resolve()) + void archive.finalize() + }) + } +} diff --git a/server/aws-lsp-codewhisperer/src/language-server/netTransform/tests/AtxTokenServiceManager.test.ts b/server/aws-lsp-codewhisperer/src/language-server/netTransform/tests/AtxTokenServiceManager.test.ts new file mode 100644 index 0000000000..c8ac3cdee4 --- /dev/null +++ b/server/aws-lsp-codewhisperer/src/language-server/netTransform/tests/AtxTokenServiceManager.test.ts @@ -0,0 +1,69 @@ +import * as assert from 'assert' +import * as sinon from 'sinon' +import { AtxTokenServiceManager } from '../../../shared/amazonQServiceManager/AtxTokenServiceManager' +import { TestFeatures } from '@aws/language-server-runtimes/testing' +import { CredentialsType } from '@aws/language-server-runtimes/server-interface' + +describe('AtxTokenServiceManager', () => { + let features: TestFeatures + let manager: AtxTokenServiceManager + + beforeEach(() => { + features = new TestFeatures() + AtxTokenServiceManager.resetInstance() + manager = AtxTokenServiceManager.initInstance(features) + }) + + afterEach(() => { + sinon.restore() + AtxTokenServiceManager.resetInstance() + }) + + describe('initInstance', () => { + it('creates new instance when none exists', () => { + AtxTokenServiceManager.resetInstance() + const instance = AtxTokenServiceManager.initInstance(features) + assert(instance instanceof AtxTokenServiceManager) + }) + + it('returns existing instance when already initialized', () => { + const firstInstance = AtxTokenServiceManager.initInstance(features) + const secondInstance = AtxTokenServiceManager.initInstance(features) + assert.strictEqual(firstInstance, secondInstance) + }) + }) + + describe('getInstance', () => { + it('returns existing instance', () => { + const instance = AtxTokenServiceManager.getInstance() + assert.strictEqual(instance, manager) + }) + + it('throws error when no instance exists', () => { + AtxTokenServiceManager.resetInstance() + assert.throws(() => AtxTokenServiceManager.getInstance(), /not initialized/) + }) + }) + + describe('handleOnCredentialsDeleted', () => { + it('clears all caches when credentials deleted', () => { + const callback = sinon.stub() + manager.registerCacheCallback(callback) + + manager.handleOnCredentialsDeleted('bearer' as CredentialsType) + + assert(callback.calledOnce) + }) + }) + + describe('registerCacheCallback', () => { + it('registers callback and calls it on cache clear', () => { + const callback = sinon.stub() + manager.registerCacheCallback(callback) + + manager['clearAllCaches']() + + assert(callback.calledOnce) + }) + }) +}) diff --git a/server/aws-lsp-codewhisperer/src/shared/amazonQServer.test.ts b/server/aws-lsp-codewhisperer/src/shared/amazonQServer.test.ts index 1849115ac0..7d6e9258fb 100644 --- a/server/aws-lsp-codewhisperer/src/shared/amazonQServer.test.ts +++ b/server/aws-lsp-codewhisperer/src/shared/amazonQServer.test.ts @@ -85,4 +85,37 @@ describe('AmazonQServiceServer', () => { features.credentialsProvider.onCredentialsDeleted.args[0]?.[0]('some-creds-type' as CredentialsType) sinon.assert.calledOnce(handleOnCredentialsDeletedSpy) }) + + it('should handle ATX configuration updates', async () => { + await features.initialize(server) + + const atxConfigParams = { + section: 'aws.amazonq.transform', + settings: { profileArn: 'test-arn' }, + } as UpdateConfigurationParams + + // This should not throw an error + await features.doUpdateConfiguration(atxConfigParams, {} as any) + expect(true).to.be.true // Test passes if no error is thrown + }) + + it('should initialize ATX Token Service Manager', async () => { + await features.initialize(server) + + // Verify ATX service manager is initialized (indirectly through no errors) + expect(true).to.be.true + }) + + it('should handle service manager initialization errors gracefully', () => { + const errorFactory = () => { + throw new Error('Service manager initialization failed') + } + + const errorServer = AmazonQServiceServerFactory(errorFactory) + + expect(() => { + errorServer(features) + features.doSendInitializeRequest({} as InitializeParams, {} as CancellationToken) + }).to.throw('Service manager initialization failed') + }) }) diff --git a/server/aws-lsp-codewhisperer/src/shared/amazonQServer.ts b/server/aws-lsp-codewhisperer/src/shared/amazonQServer.ts index ce00760319..e9c83b0a95 100644 --- a/server/aws-lsp-codewhisperer/src/shared/amazonQServer.ts +++ b/server/aws-lsp-codewhisperer/src/shared/amazonQServer.ts @@ -8,6 +8,12 @@ import { import { AmazonQBaseServiceManager, QServiceManagerFeatures } from './amazonQServiceManager/BaseAmazonQServiceManager' import { initBaseIAMServiceManager } from './amazonQServiceManager/AmazonQIAMServiceManager' import { initBaseTokenServiceManager } from './amazonQServiceManager/AmazonQTokenServiceManager' +import { AtxTokenServiceManager } from './amazonQServiceManager/AtxTokenServiceManager' +import { Q_CONFIGURATION_SECTION } from './constants' +import { + TRANSFORM_PROFILES_CONFIGURATION_SECTION, + ATX_CONFIGURATION_SECTION, +} from '../language-server/configuration/transformConfigurationServer' const LOGGING_PREFIX = '[AMAZON Q SERVER]: ' @@ -21,10 +27,10 @@ export const AmazonQServiceServerFactory = } /* - The service manager relies on client params to fully initialize, so the initialization needs - to be deferred to the LSP handshake. Dependent servers may assume the service manager is - available when the initialized notification has been received. - */ + The service manager relies on client params to fully initialize, so the initialization needs + to be deferred to the LSP handshake. Dependent servers may assume the service manager is + available when the initialized notification has been received. + */ lsp.addInitializer((_params: InitializeParams) => { amazonQServiceManager = serviceManager({ credentialsProvider, @@ -35,6 +41,20 @@ export const AmazonQServiceServerFactory = sdkInitializator, }) + /* + TODO: Transform team to isolate tightly coupled Q and AWS Transform into AWS Transform as separate server + Reference to suggestion - https://github.com/aws/language-servers/pull/2521/files#r2558263205 + */ + // Initialize ATX Token Service Manager for ATX FES support + AtxTokenServiceManager.initInstance({ + credentialsProvider, + lsp, + workspace, + logging, + runtime, + sdkInitializator, + }) + return { capabilities: {}, awsServerCapabilities: {}, @@ -52,8 +72,23 @@ export const AmazonQServiceServerFactory = }) lsp.workspace.onUpdateConfiguration(async (params: UpdateConfigurationParams, token: CancellationToken) => { - log('Received onUpdateConfiguration request') - await amazonQServiceManager.handleOnUpdateConfiguration(params, token) + log(`Received onUpdateConfiguration request for section: ${params.section}`) + + // Route to appropriate service manager based on configuration section + if (params.section === Q_CONFIGURATION_SECTION) { + await amazonQServiceManager.handleOnUpdateConfiguration(params, token) + } else if (params.section === ATX_CONFIGURATION_SECTION) { + const atxServiceManager = AtxTokenServiceManager.getInstance() + await atxServiceManager.handleOnUpdateConfiguration(params, token) + } else if (params.section === TRANSFORM_PROFILES_CONFIGURATION_SECTION) { + const atxServiceManager = AtxTokenServiceManager.getInstance() + await atxServiceManager.handleOnUpdateConfiguration(params, token) + } else if (params.section === 'aws.transform') { + const atxServiceManager = AtxTokenServiceManager.getInstance() + await atxServiceManager.handleOnUpdateConfiguration(params, token) + } else { + log(`Unknown configuration section: ${params.section}`) + } }) credentialsProvider.onCredentialsDeleted((type: CredentialsType) => { @@ -61,6 +96,16 @@ export const AmazonQServiceServerFactory = amazonQServiceManager.handleOnCredentialsDeleted(type) }) + // Add credentials update handler to track when credentials are updated + if ('onCredentialsUpdated' in credentialsProvider) { + ;(credentialsProvider as any).onCredentialsUpdated((type: CredentialsType) => { + log(`Received onCredentialsUpdated notification for type: ${type}`) + if ('handleOnCredentialsUpdated' in amazonQServiceManager) { + ;(amazonQServiceManager as any).handleOnCredentialsUpdated(type) + } + }) + } + logging.log('Amazon Q Service server has been initialised') return () => {} } diff --git a/server/aws-lsp-codewhisperer/src/shared/amazonQServiceManager/AmazonQIAMServiceManager.test.ts b/server/aws-lsp-codewhisperer/src/shared/amazonQServiceManager/AmazonQIAMServiceManager.test.ts index 02dd270e12..daf95576d9 100644 --- a/server/aws-lsp-codewhisperer/src/shared/amazonQServiceManager/AmazonQIAMServiceManager.test.ts +++ b/server/aws-lsp-codewhisperer/src/shared/amazonQServiceManager/AmazonQIAMServiceManager.test.ts @@ -55,5 +55,33 @@ describe('AmazonQIAMServiceManager', () => { // Verify that getting the client again returns the same instance deepStrictEqual(serviceManager.getStreamingClient(), streamingClient) }) + + it('should handle missing IAM credentials gracefully', () => { + features.credentialsProvider.hasCredentials.withArgs('iam').returns(false) + + try { + serviceManager.getCodewhispererService() + throw new Error('Expected error was not thrown') + } catch (error) { + deepStrictEqual((error as Error).message.includes('No IAM credentials available'), true) + } + }) + + it('should validate credentials before creating service', () => { + const hasCredentialsSpy = sinon.spy(features.credentialsProvider, 'hasCredentials') + + features.credentialsProvider.hasCredentials.withArgs('iam').returns(true) + serviceManager.getCodewhispererService() + + sinon.assert.calledWith(hasCredentialsSpy, 'iam') + }) + + it('should return correct credential validation status', () => { + features.credentialsProvider.hasCredentials.withArgs('iam').returns(true) + deepStrictEqual(serviceManager.hasValidCredentials(), true) + + features.credentialsProvider.hasCredentials.withArgs('iam').returns(false) + deepStrictEqual(serviceManager.hasValidCredentials(), false) + }) }) }) diff --git a/server/aws-lsp-codewhisperer/src/shared/amazonQServiceManager/AmazonQIAMServiceManager.ts b/server/aws-lsp-codewhisperer/src/shared/amazonQServiceManager/AmazonQIAMServiceManager.ts index bf27a599a2..a3d4a19fe8 100644 --- a/server/aws-lsp-codewhisperer/src/shared/amazonQServiceManager/AmazonQIAMServiceManager.ts +++ b/server/aws-lsp-codewhisperer/src/shared/amazonQServiceManager/AmazonQIAMServiceManager.ts @@ -17,6 +17,9 @@ export class AmazonQIAMServiceManager extends BaseAmazonQServiceManager< CodeWhispererServiceIAM, StreamingClientServiceIAM > { + hasValidCredentials(): boolean { + return this.features.credentialsProvider.hasCredentials('iam') + } private static instance: AmazonQIAMServiceManager | null = null private region: string private endpoint: string @@ -64,6 +67,22 @@ export class AmazonQIAMServiceManager extends BaseAmazonQServiceManager< return this.cachedCodewhispererService } + public getAtxCodewhispererService() { + if (!this.cachedAtxCodewhispererService) { + this.cachedAtxCodewhispererService = new CodeWhispererServiceIAM( + this.features.credentialsProvider, + this.features.workspace, + this.features.logging, + this.region, + this.endpoint, + this.features.sdkInitializator + ) + + this.updateCachedServiceConfig() + } + + return this.cachedAtxCodewhispererService + } public getStreamingClient() { if (!this.cachedStreamingClient) { diff --git a/server/aws-lsp-codewhisperer/src/shared/amazonQServiceManager/AmazonQTokenServiceManager.test.ts b/server/aws-lsp-codewhisperer/src/shared/amazonQServiceManager/AmazonQTokenServiceManager.test.ts index bd37da2346..ace2ae9943 100644 --- a/server/aws-lsp-codewhisperer/src/shared/amazonQServiceManager/AmazonQTokenServiceManager.test.ts +++ b/server/aws-lsp-codewhisperer/src/shared/amazonQServiceManager/AmazonQTokenServiceManager.test.ts @@ -1051,4 +1051,80 @@ describe('AmazonQTokenServiceManager', () => { assert.throws(() => AmazonQTokenServiceManager.initInstance(features), AmazonQServiceInitializationError) }) }) + + describe('ATX functionality coverage', () => { + it('should handle ATX profile change with null', async () => { + setupServiceManager() + + // ATX functionality moved to AtxTokenServiceManager + // This test is no longer relevant for AmazonQTokenServiceManager + assert.ok(true) + }) + + it('should return endpoint override when configured', () => { + const endpointOverride = 'https://custom-endpoint.com' + features.setClientParams({ + processId: 0, + rootUri: 'test', + capabilities: {}, + initializationOptions: { + aws: { + awsClientCapabilities: { + textDocument: { + inlineCompletionWithReferences: { + endpointOverride, + }, + }, + }, + }, + }, + }) + + setupServiceManager() + + assert.strictEqual(amazonQTokenServiceManager.endpointOverride(), endpointOverride) + }) + + it('should handle empty string profile ARN', async () => { + setupServiceManager() + + await assert.rejects( + amazonQTokenServiceManager.handleOnUpdateConfiguration( + { + section: 'aws.q', + settings: { profileArn: '' }, + }, + {} as CancellationToken + ), + /Received invalid Profile ARN \(empty string\)/ + ) + }) + + it('should handle profile update cancellation', async () => { + setupServiceManager() + + const cancelToken = { isCancellationRequested: true } + + await assert.rejects( + // ATX functionality moved to AtxTokenServiceManager + Promise.reject(new Error('Profile update was cancelled')), + /Profile update was cancelled/ + ) + }) + + it('should validate profile ARN format', async () => { + setupServiceManager() + + await assert.rejects( + amazonQTokenServiceManager.handleOnUpdateConfiguration( + { + section: 'aws.q', + settings: { profileArn: 'invalid-arn' }, + }, + {} as CancellationToken + ), + /Invalid Profile ARN format/ + ) + }) + }) }) diff --git a/server/aws-lsp-codewhisperer/src/shared/amazonQServiceManager/AmazonQTokenServiceManager.ts b/server/aws-lsp-codewhisperer/src/shared/amazonQServiceManager/AmazonQTokenServiceManager.ts index 91e872609f..70d273d0e5 100644 --- a/server/aws-lsp-codewhisperer/src/shared/amazonQServiceManager/AmazonQTokenServiceManager.ts +++ b/server/aws-lsp-codewhisperer/src/shared/amazonQServiceManager/AmazonQTokenServiceManager.ts @@ -5,6 +5,7 @@ import { SsoConnectionType, CancellationToken, CredentialsType, + CredentialsProvider, InitializeParams, CancellationTokenSource, } from '@aws/language-server-runtimes/server-interface' @@ -74,6 +75,7 @@ export class AmazonQTokenServiceManager extends BaseAmazonQServiceManager< private region?: string private endpoint?: string private regionChangeListeners: Array<(region: string) => void> = [] + /** * Internal state of Service connection, based on status of bearer token and Amazon Q Developer profile selection. * Supported states: @@ -85,10 +87,6 @@ export class AmazonQTokenServiceManager extends BaseAmazonQServiceManager< private state: 'PENDING_CONNECTION' | 'PENDING_Q_PROFILE' | 'PENDING_Q_PROFILE_UPDATE' | 'INITIALIZED' = 'PENDING_CONNECTION' - private constructor(features: QServiceManagerFeatures) { - super(features) - } - // @VisibleForTesting, please DO NOT use in production setState(state: 'PENDING_CONNECTION' | 'PENDING_Q_PROFILE' | 'PENDING_Q_PROFILE_UPDATE' | 'INITIALIZED') { this.state = state @@ -122,7 +120,7 @@ export class AmazonQTokenServiceManager extends BaseAmazonQServiceManager< private initialize(): void { if (!this.features.lsp.getClientInitializeParams()) { - this.log('AmazonQTokenServiceManager initialized before LSP connection was initialized.') + this.logging.log('AmazonQTokenServiceManager initialized before LSP connection was initialized.') throw new AmazonQServiceInitializationError( 'AmazonQTokenServiceManager initialized before LSP connection was initialized.' ) @@ -130,30 +128,30 @@ export class AmazonQTokenServiceManager extends BaseAmazonQServiceManager< // Bind methods that are passed by reference to some handlers to maintain proper scope. this.serviceFactory = this.serviceFactory.bind(this) + this.streamingClientFactory = this.streamingClientFactory.bind(this) - this.log('Reading enableDeveloperProfileSupport setting from AWSInitializationOptions') + this.logging.log('Reading enableDeveloperProfileSupport setting from AWSInitializationOptions') if (this.features.lsp.getClientInitializeParams()?.initializationOptions?.aws) { const awsOptions = this.features.lsp.getClientInitializeParams()?.initializationOptions?.aws || {} this.enableDeveloperProfileSupport = signalsAWSQDeveloperProfilesEnabled(awsOptions) - this.log(`Enabled Q Developer Profile support: ${this.enableDeveloperProfileSupport}`) + this.logging.log(`Enabled Q Developer Profile support: ${this.enableDeveloperProfileSupport}`) } this.connectionType = 'none' this.state = 'PENDING_CONNECTION' - this.log('Manager instance is initialize') + this.logging.log('Manager instance is initialize') } public handleOnCredentialsDeleted(type: CredentialsType): void { - this.log(`Received credentials delete event for type: ${type}`) + this.logging.log(`Received credentials delete event for type: ${type}`) if (type === 'iam') { return } // Clear model cache when credentials are deleted ChatDatabase.clearModelCache() - this.cancelActiveProfileChangeToken() this.resetCodewhispererService() @@ -164,6 +162,15 @@ export class AmazonQTokenServiceManager extends BaseAmazonQServiceManager< ProfileStatusMonitor.resetMcpState() } + public handleOnCredentialsUpdated(type: CredentialsType): void { + this.logging.log(`Received credentials update event for type: ${type}`) + + if (type === ('bearer' as CredentialsType)) { + // Check Q credentials + const qCreds = this.features.credentialsProvider.getCredentials('bearer' as CredentialsType) + } + } + public async handleOnUpdateConfiguration(params: UpdateConfigurationParams, _token: CancellationToken) { try { if (params.section === Q_CONFIGURATION_SECTION && params.settings.profileArn !== undefined) { @@ -181,7 +188,7 @@ export class AmazonQTokenServiceManager extends BaseAmazonQServiceManager< await this.handleProfileChange(profileArn, this.profileChangeTokenSource.token) } } catch (error) { - this.log('Error updating profiles: ' + error) + this.logging.log('Error updating profiles: ' + error) if (error instanceof AmazonQServiceProfileUpdateCancelled) { throw new ResponseError(LSPErrorCodes.ServerCancelled, error.message, { awsErrorCode: error.code, @@ -211,11 +218,11 @@ export class AmazonQTokenServiceManager extends BaseAmazonQServiceManager< this.logServiceState('Validate State of SSO Connection') - const noCreds = !this.features.credentialsProvider.hasCredentials('bearer') + const noCreds = !this.features.credentialsProvider.hasCredentials('bearer' as CredentialsType) const noConnectionType = newConnectionType === 'none' if (noCreds || noConnectionType) { // Connection was reset, wait for SSO connection token from client - this.log( + this.logging.log( `No active SSO connection is detected: no ${noCreds ? 'credentials' : 'connection type'} provided. Resetting the client` ) this.resetCodewhispererService() @@ -241,7 +248,7 @@ export class AmazonQTokenServiceManager extends BaseAmazonQServiceManager< // for now pretend External IdP is just a special case of Builder ID where the subscription has already been established // and user does not need a profile if (newConnectionType === 'builderId' || newConnectionType === 'external_idp') { - this.log(`Detected New connection type: ${newConnectionType}`) + this.logging.log(`Detected New connection type: ${newConnectionType}`) this.resetCodewhispererService() // For the builderId connection type regional endpoint discovery chain is: @@ -254,7 +261,7 @@ export class AmazonQTokenServiceManager extends BaseAmazonQServiceManager< endpointOverride ) this.state = 'INITIALIZED' - this.log(`Initialized Amazon Q service with ${newConnectionType} connection`) + this.logging.log(`Initialized Amazon Q service with ${newConnectionType} connection`) // Emit auth success event ProfileStatusMonitor.emitAuthSuccess() @@ -265,7 +272,7 @@ export class AmazonQTokenServiceManager extends BaseAmazonQServiceManager< // Connection type changed to 'identityCenter' if (newConnectionType === 'identityCenter') { - this.log('Detected New connection type: identityCenter') + this.logging.log('Detected New connection type: identityCenter') this.resetCodewhispererService() @@ -279,7 +286,7 @@ export class AmazonQTokenServiceManager extends BaseAmazonQServiceManager< this.createCodewhispererServiceInstances('identityCenter', undefined, endpointOverride) this.state = 'INITIALIZED' - this.log('Initialized Amazon Q service with identityCenter connection') + this.logging.log('Initialized Amazon Q service with identityCenter connection') // Emit auth success event ProfileStatusMonitor.emitAuthSuccess() @@ -305,7 +312,7 @@ export class AmazonQTokenServiceManager extends BaseAmazonQServiceManager< private async handleProfileChange(newProfileArn: string | null, token: CancellationToken): Promise { if (!this.enableDeveloperProfileSupport) { - this.log('Developer Profiles Support is not enabled') + this.logging.log('Developer Profiles Support is not enabled') return } @@ -371,7 +378,7 @@ export class AmazonQTokenServiceManager extends BaseAmazonQServiceManager< } if (!newProfile || !newProfile.identityDetails?.region) { - this.log(`Amazon Q Profile ${newProfileArn} is not valid`) + this.logging.log(`Amazon Q Profile ${newProfileArn} is not valid`) this.resetCodewhispererService() this.state = 'PENDING_Q_PROFILE' @@ -388,7 +395,7 @@ export class AmazonQTokenServiceManager extends BaseAmazonQServiceManager< this.endpointOverride() ) this.state = 'INITIALIZED' - this.log( + this.logging.log( `Initialized identityCenter connection to region ${newProfile.identityDetails.region} for profile ${newProfile.arn}` ) @@ -401,7 +408,7 @@ export class AmazonQTokenServiceManager extends BaseAmazonQServiceManager< // Profile didn't change if (this.activeIdcProfile && this.activeIdcProfile.arn === newProfile.arn) { // Update cached profile fields, keep existing client - this.log(`Profile selection did not change, active profile is ${this.activeIdcProfile.arn}`) + this.logging.log(`Profile selection did not change, active profile is ${this.activeIdcProfile.arn}`) this.activeIdcProfile = newProfile this.state = 'INITIALIZED' @@ -418,10 +425,10 @@ export class AmazonQTokenServiceManager extends BaseAmazonQServiceManager< const oldRegion = this.activeIdcProfile.identityDetails?.region const newRegion = newProfile.identityDetails.region if (oldRegion === newRegion) { - this.log(`New profile is in the same region as old one, keeping exising service.`) + this.logging.log(`New profile is in the same region as old one, keeping exising service.`) this.activeIdcProfile = newProfile this.state = 'INITIALIZED' - this.log(`New active profile is ${this.activeIdcProfile.arn}, region ${newRegion}`) + this.logging.log(`New active profile is ${this.activeIdcProfile.arn}, region ${newRegion}`) if (this.cachedCodewhispererService) { this.cachedCodewhispererService.profileArn = newProfile.arn @@ -437,7 +444,7 @@ export class AmazonQTokenServiceManager extends BaseAmazonQServiceManager< return } - this.log(`Switching service client region from ${oldRegion} to ${newRegion}`) + this.logging.log(`Switching service client region from ${oldRegion} to ${newRegion}`) this.notifyRegionChangeListeners(newRegion) this.handleTokenCancellationRequest(token) @@ -465,7 +472,10 @@ export class AmazonQTokenServiceManager extends BaseAmazonQServiceManager< if (this.state === 'PENDING_Q_PROFILE_UPDATE') { throw new AmazonQServicePendingProfileUpdateError() } - + // Explicitly check for Q-specific bearer credentials + if (!this.features.credentialsProvider.hasCredentials('bearer' as CredentialsType)) { + throw new AmazonQServicePendingSigninError() + } this.handleSsoConnectionChange() if (this.state === 'INITIALIZED' && this.cachedCodewhispererService) { @@ -479,28 +489,41 @@ export class AmazonQTokenServiceManager extends BaseAmazonQServiceManager< if (this.state === 'PENDING_Q_PROFILE') { throw new AmazonQServicePendingProfileError() } - throw new AmazonQServiceNotInitializedError() } + public getAtxCodewhispererService(): CodeWhispererServiceToken { + throw new Error( + 'ATX functionality has been moved to AtxTokenServiceManager. Use AtxTokenServiceManager.getInstance().getAtxCodewhispererService() instead.' + ) + } + public getStreamingClient() { - this.log('Getting instance of CodeWhispererStreaming client') + this.logging.log('Getting instance of CodeWhispererStreaming client') // Trigger checks in token service const tokenService = this.getCodewhispererService() - if (!tokenService || !this.region || !this.endpoint) { + // Use Q-specific region/endpoint from active profile + const { region, endpoint } = getAmazonQRegionAndEndpoint( + this.features.runtime, + this.features.logging, + this.activeIdcProfile?.identityDetails?.region + ) + + if (!tokenService || !region || !endpoint) { throw new AmazonQServiceNotInitializedError() } if (!this.cachedStreamingClient) { - this.cachedStreamingClient = this.streamingClientFactory(this.region, this.endpoint) + this.cachedStreamingClient = this.streamingClientFactory(region, endpoint) } return this.cachedStreamingClient } private resetCodewhispererService() { + this.logging.log('Resetting Q-only services') this.cachedCodewhispererService?.abortInflightRequests() this.cachedCodewhispererService = undefined this.cachedStreamingClient?.abortInflightRequests() @@ -508,6 +531,7 @@ export class AmazonQTokenServiceManager extends BaseAmazonQServiceManager< this.activeIdcProfile = undefined this.region = undefined this.endpoint = undefined + this.logging.log('Q services reset complete') } private createCodewhispererServiceInstances( @@ -515,7 +539,7 @@ export class AmazonQTokenServiceManager extends BaseAmazonQServiceManager< clientOrProfileRegion: string | undefined, endpointOverride: string | undefined ) { - this.logServiceState('Initializing CodewhispererService') + this.logServiceState('Initializing Q-only CodewhispererService') const { region, endpoint } = getAmazonQRegionAndEndpoint( this.features.runtime, @@ -533,12 +557,16 @@ export class AmazonQTokenServiceManager extends BaseAmazonQServiceManager< } this.cachedCodewhispererService = this.serviceFactory(region, this.endpoint) - this.log(`CodeWhispererToken service for connection type ${connectionType} was initialized, region=${region}`) + this.logging.log( + `Q CodeWhispererToken service for connection type ${connectionType} was initialized, region=${region}` + ) this.cachedStreamingClient = this.streamingClientFactory(region, this.endpoint) - this.log(`StreamingClient service for connection type ${connectionType} was initialized, region=${region}`) + this.logging.log( + `Q StreamingClient service for connection type ${connectionType} was initialized, region=${region}` + ) - this.logServiceState('CodewhispererService and StreamingClient Initialization finished') + this.logServiceState('Q CodewhispererService and StreamingClient Initialization finished') } private getCustomUserAgent() { @@ -570,8 +598,8 @@ export class AmazonQTokenServiceManager extends BaseAmazonQServiceManager< 'shareCodeWhispererContentWithAWS' ) - this.log('Configured CodeWhispererServiceToken instance settings:') - this.log( + this.logging.log('Configured CodeWhispererServiceToken instance settings:') + this.logging.log( `customUserAgent=${customUserAgent}, customizationArn=${service.customizationArn}, shareCodeWhispererContentWithAWS=${service.shareCodeWhispererContentWithAWS}` ) @@ -579,8 +607,25 @@ export class AmazonQTokenServiceManager extends BaseAmazonQServiceManager< } private streamingClientFactory(region: string, endpoint: string): StreamingClientServiceToken { + // Ensure Q streaming client uses only 'bearer' credentials + this.logging.log('Creating Q-specific credentials provider for streaming client') + const qCredentialsProvider = { + hasCredentials: (type: CredentialsType) => { + this.logging.log(`Q credentials provider: checking hasCredentials for type ${type}`) + return this.features.credentialsProvider.hasCredentials(type) + }, + getConnectionType: () => this.features.credentialsProvider.getConnectionType(), + getCredentials: (type: CredentialsType) => { + const creds = this.features.credentialsProvider.getCredentials(type) + this.logging.log( + `Q credentials provider: getCredentials for ${type}, token present: ${creds && 'token' in creds && !!creds.token}` + ) + return creds + }, + } as CredentialsProvider + const streamingClient = new StreamingClientServiceToken( - this.features.credentialsProvider, + qCredentialsProvider, this.features.sdkInitializator, this.features.logging, region, diff --git a/server/aws-lsp-codewhisperer/src/shared/amazonQServiceManager/AtxTokenServiceManager.ts b/server/aws-lsp-codewhisperer/src/shared/amazonQServiceManager/AtxTokenServiceManager.ts new file mode 100644 index 0000000000..ca7e3ef90d --- /dev/null +++ b/server/aws-lsp-codewhisperer/src/shared/amazonQServiceManager/AtxTokenServiceManager.ts @@ -0,0 +1,383 @@ +import { + CredentialsType, + UpdateConfigurationParams, + CancellationToken, +} from '@aws/language-server-runtimes/server-interface' +import { QServiceManagerFeatures } from './BaseAmazonQServiceManager' +import { ATX_CONFIGURATION_SECTION } from '../../language-server/configuration/transformConfigurationServer' +import { TransformConfigurationServer } from '../../language-server/configuration/transformConfigurationServer' +import { CodeWhispererServiceToken } from '../codeWhispererService' +import { StreamingClientServiceToken } from '../streamingClientService' +import { getAtxEndPointByRegion } from '../constants' +import { AmazonQDeveloperProfile } from './qDeveloperProfiles' +import { parse } from '@aws-sdk/util-arn-parser' +import { getUserAgent, makeUserContextObject } from '../telemetryUtils' +import { AmazonQServicePendingSigninError } from './errors' + +export class AtxTokenServiceManager { + private static instance: AtxTokenServiceManager | null = null + private features: QServiceManagerFeatures + private cacheCallbacks: (() => void)[] = [] + private cachedApplicationUrl: string | null = null + private activeProfileArn: string | null = null + private cachedTransformProfiles: any[] = [] + private activeApplicationUrl: string | null = null + + // ATX service instances + private cachedAtxCodewhispererService?: CodeWhispererServiceToken + private cachedAtxStreamingClient?: StreamingClientServiceToken + private activeAtxProfile?: AmazonQDeveloperProfile + + private constructor(features: QServiceManagerFeatures) { + this.features = features + } + + public static initInstance(features: QServiceManagerFeatures): AtxTokenServiceManager { + if (!AtxTokenServiceManager.instance) { + AtxTokenServiceManager.instance = new AtxTokenServiceManager(features) + return AtxTokenServiceManager.instance + } + // throw new Error('ATX Token Service Manager already initialized') + return AtxTokenServiceManager.instance + } + + public static getInstance(): AtxTokenServiceManager { + if (!AtxTokenServiceManager.instance) { + throw new Error('ATX Token Service Manager not initialized') + } + return AtxTokenServiceManager.instance + } + + public handleOnCredentialsDeleted(type: CredentialsType): void { + if (type === ('bearer' as CredentialsType)) { + const atxCredentialsProvider = this.features.runtime.getAtxCredentialsProvider?.() + const hasAtxCredentials = atxCredentialsProvider?.hasCredentials('bearer') + if (!hasAtxCredentials) { + this.log(`Clearing ATX credentials and services`) + this.cachedAtxCodewhispererService?.abortInflightRequests() + this.cachedAtxCodewhispererService = undefined + this.cachedAtxStreamingClient?.abortInflightRequests() + this.cachedAtxStreamingClient = undefined + this.activeAtxProfile = undefined + } + } + this.clearAllCaches() + } + + public async handleOnUpdateConfiguration( + params: UpdateConfigurationParams, + token: CancellationToken + ): Promise { + // Handle aws.transformProfiles, aws.atx, and aws.transform sections + if ( + (params.section === 'aws.transformProfiles' || + params.section === 'aws.atx' || + params.section === 'aws.transform') && + params.settings.profileArn !== undefined + ) { + const profileArn = params.settings.profileArn as string + + await this.ensureProfilesLoaded() + + this.activeProfileArn = profileArn + this.setActiveProfileByArn(profileArn) + + // Handle ATX profile change directly + await this.handleAtxProfileChange(profileArn, token) + } + } + + public async handleAtxProfileChange(profileArn: string | null, token: CancellationToken): Promise { + this.log(`ATX Profile change requested: ${profileArn}`) + + if (profileArn === null) { + this.log('Clearing ATX profile') + if (this.cachedAtxCodewhispererService) { + this.cachedAtxCodewhispererService.profileArn = undefined + } + if (this.cachedAtxStreamingClient) { + this.cachedAtxStreamingClient.profileArn = undefined + } + this.activeAtxProfile = undefined + this.log('ATX profile cleared') + return + } + + const parsedArn = parse(profileArn) + const region = parsedArn.region + const endpoint = getAtxEndPointByRegion(region) + if (!endpoint) { + throw new Error('Requested profileArn region is not supported') + } + this.log(`Setting ATX profile for ${profileArn} with endpoint ${endpoint} and region ${region}`) + + const newProfile: AmazonQDeveloperProfile = { + arn: profileArn, + name: 'ATX Client provided profile', + identityDetails: { + region: parsedArn.region, + }, + } + + this.activeAtxProfile = newProfile + this.log(`ATX profile set to: ${newProfile.arn}`) + + if (this.cachedAtxCodewhispererService) { + this.cachedAtxCodewhispererService.profileArn = newProfile.arn + } else { + this.createAtxServiceInstances() + } + + if (this.cachedAtxStreamingClient) { + this.cachedAtxStreamingClient.profileArn = newProfile.arn + } + + this.log(`ATX profile updated successfully`) + } + + private createAtxServiceInstances() { + this.log('Creating ATX service instances') + const region = this.activeAtxProfile?.identityDetails?.region || 'us-east-1' + const endpoint = getAtxEndPointByRegion(region) + + if (!endpoint) { + throw new Error(`ATX region ${region} is not supported`) + } + + this.log(`ATX using region: ${region}, endpoint: ${endpoint}`) + this.cachedAtxCodewhispererService = this.atxServiceFactory(region, endpoint) + this.cachedAtxCodewhispererService.profileArn = this.activeAtxProfile?.arn + + this.cachedAtxStreamingClient = this.atxStreamingClientFactory(region, endpoint) + this.cachedAtxStreamingClient.profileArn = this.activeAtxProfile?.arn + this.log('ATX service instances created successfully') + } + + public getAtxCodewhispererService(): CodeWhispererServiceToken { + this.log('Getting ATX CodeWhisperer service') + + const atxCredentialsProvider = this.features.runtime.getAtxCredentialsProvider?.() + if (!atxCredentialsProvider) { + this.log('ATX credentials provider not available in runtime') + throw new AmazonQServicePendingSigninError() + } + + const hasBearer = atxCredentialsProvider.hasCredentials('bearer') + if (!hasBearer) { + this.log('No ATX bearer credentials available') + throw new AmazonQServicePendingSigninError() + } + + const creds = atxCredentialsProvider.getCredentials('bearer') + if (!creds || !('token' in creds) || !creds.token) { + this.log('ATX token is empty or invalid') + throw new AmazonQServicePendingSigninError() + } + + if (!this.cachedAtxCodewhispererService) { + this.createAtxServiceInstances() + } + + return this.cachedAtxCodewhispererService! + } + + public getAtxStreamingClient(): StreamingClientServiceToken { + this.log('Getting ATX streaming client') + + // Trigger service creation if needed + this.getAtxCodewhispererService() + + return this.cachedAtxStreamingClient! + } + + private atxServiceFactory(region: string, endpoint: string): CodeWhispererServiceToken { + this.log('Creating ATX CodeWhisperer service') + + const atxCredentialsProvider = this.features.runtime.getAtxCredentialsProvider?.() + if (!atxCredentialsProvider) { + throw new Error('ATX credentials provider not available in runtime') + } + + const customUserAgent = this.getCustomUserAgent() + const initParam = this.features.lsp.getClientInitializeParams() + const atxUserContext = initParam + ? makeUserContextObject( + initParam, + this.features.runtime.platform, + 'atx-token', + this.features.runtime.serverInfo + ) + : undefined + + const service = new CodeWhispererServiceToken( + atxCredentialsProvider, + this.features.workspace, + this.features.logging, + region, + endpoint, + this.features.sdkInitializator, + atxUserContext, + customUserAgent + ) + + service.profileArn = this.activeAtxProfile?.arn + this.log('ATX CodeWhisperer service created') + return service + } + + private atxStreamingClientFactory(region: string, endpoint: string): StreamingClientServiceToken { + this.log('Creating ATX streaming client') + + const atxCredentialsProvider = this.features.runtime.getAtxCredentialsProvider?.() + if (!atxCredentialsProvider) { + throw new Error('ATX credentials provider not available in runtime') + } + + const streamingClient = new StreamingClientServiceToken( + atxCredentialsProvider, + this.features.sdkInitializator, + this.features.logging, + region, + endpoint, + this.getCustomUserAgent() + ) + streamingClient.profileArn = this.activeAtxProfile?.arn + this.log('ATX streaming client created') + return streamingClient + } + + private getCustomUserAgent() { + const initializeParams = this.features.lsp.getClientInitializeParams() || {} + return getUserAgent(initializeParams as any, this.features.runtime.serverInfo) + } + + /** + * Cache Transform profiles for ARN-based lookup + */ + public cacheTransformProfiles(profiles: any[]): void { + this.cachedTransformProfiles = profiles + } + + /** + * Set active profile by ARN (looks up applicationUrl from cached profiles) + */ + public setActiveProfileByArn(profileArn: string): void { + const profile = this.cachedTransformProfiles.find((p: any) => p.arn === profileArn) + if (profile && profile.applicationUrl) { + this.activeProfileArn = profileArn + this.activeApplicationUrl = profile.applicationUrl + } else { + this.clearActiveProfile() + } + } + + /** + * Clear the active profile cache + */ + public clearActiveProfile(): void { + this.activeProfileArn = null + this.activeApplicationUrl = null + } + + public getActiveApplicationUrl(): string | null { + return this.activeApplicationUrl + } + + public getActiveProfileArn(): string | null { + return this.activeProfileArn + } + + /** + * Ensure profiles are loaded from ATX FES before profile operations + */ + public async ensureProfilesLoaded(): Promise { + try { + if (this.cachedTransformProfiles.length === 0 && this.hasValidCredentials()) { + this.log('Fetching available ATX profiles from FES') + await this.refreshAvailableProfiles() + } + } catch (error) { + this.log(`Error ensuring profiles loaded: ${String(error)}`) + } + } + + /** + * Refresh available ATX profiles from FES using TransformConfigurationServer + */ + public async refreshAvailableProfiles(): Promise { + try { + this.log('Refreshing available ATX profiles from FES using TransformConfigurationServer') + + if (!this.hasValidCredentials()) { + this.log('No valid credentials for refreshing profiles') + return + } + + const configServer = new TransformConfigurationServer(this.features.logging, this.features) + const profiles = await configServer.listAvailableProfiles({} as CancellationToken) + + this.log(`Refreshed ${profiles.length} ATX profiles using TransformConfigurationServer`) + this.cacheTransformProfiles(profiles) + } catch (error) { + this.log(`Error refreshing ATX profiles: ${String(error)}`) + } + } + + public registerCacheCallback(callback: () => void): void { + this.cacheCallbacks.push(callback) + } + + private clearAllCaches(): void { + this.cachedApplicationUrl = null + this.activeProfileArn = null + this.activeApplicationUrl = null + // Don't clear cachedTransformProfiles - they should persist + this.cacheCallbacks.forEach(callback => callback()) + } + + public hasValidCredentials(): boolean { + this.log('Checking ATX credentials availability') + const runtime = (this.features as any).runtime + this.log(`Runtime available: ${!!runtime}`) + if (runtime && runtime.getAtxCredentialsProvider) { + this.log('Runtime has getAtxCredentialsProvider method') + const atxCredentialsProvider = runtime.getAtxCredentialsProvider() + this.log(`ATX credentials provider: ${!!atxCredentialsProvider}`) + const hasCredentials = atxCredentialsProvider?.hasCredentials('bearer') || false + this.log(`ATX has bearer credentials: ${hasCredentials}`) + return hasCredentials + } + this.log('Runtime does not have getAtxCredentialsProvider method') + return false + } + + public async getBearerToken(): Promise { + if (!this.hasValidCredentials()) { + throw new Error('No bearer credentials available for ATX') + } + this.log('Getting ATX bearer token') + const runtime = (this.features as any).runtime + this.log(`Runtime available: ${!!runtime}`) + const atxCredentialsProvider = runtime.getAtxCredentialsProvider() + this.log(`ATX credentials provider: ${!!atxCredentialsProvider}`) + const credentials = atxCredentialsProvider?.getCredentials('bearer') + + if (!credentials || !('token' in credentials) || !credentials.token) { + throw new Error('Bearer token is null or empty') + } + + return credentials.token + } + + public isReady(): boolean { + return this.hasValidCredentials() + } + + private log(message: string): void { + this.features.logging?.log(`ATX Token Service Manager: ${message}`) + } + + public static resetInstance(): void { + AtxTokenServiceManager.instance = null + } +} diff --git a/server/aws-lsp-codewhisperer/src/shared/amazonQServiceManager/BaseAmazonQServiceManager.test.ts b/server/aws-lsp-codewhisperer/src/shared/amazonQServiceManager/BaseAmazonQServiceManager.test.ts index acc55d75ed..c90242c3df 100644 --- a/server/aws-lsp-codewhisperer/src/shared/amazonQServiceManager/BaseAmazonQServiceManager.test.ts +++ b/server/aws-lsp-codewhisperer/src/shared/amazonQServiceManager/BaseAmazonQServiceManager.test.ts @@ -89,4 +89,36 @@ describe('BaseAmazonQServiceManager', () => { sinon.assert.callCount(features.logging.debug.withArgs(CONFIGURATION_CHANGE_IN_PROGRESS_MSG), TOTAL_CALLS - 1) }) + + it('should handle configuration listener errors gracefully', async () => { + const errorListener = sinon.stub().rejects(new Error('Listener error')) + const successListener = sinon.stub().resolves() + + await serviceManager.addDidChangeConfigurationListener(errorListener) + await serviceManager.addDidChangeConfigurationListener(successListener) + + await serviceManager.handleDidChangeConfiguration() + + sinon.assert.calledOnce(errorListener) + sinon.assert.calledOnce(successListener) + }) + + it('should update service configuration when cache changes', async () => { + const initialConfig = serviceManager.getConfiguration() + const updateCachedServiceConfigSpy = sinon.spy(serviceManager, 'updateCachedServiceConfig' as any) + + features.lsp.workspace.getConfiguration.resolves({ customization: 'new-arn' }) + + await serviceManager.handleDidChangeConfiguration() + + sinon.assert.calledOnce(updateCachedServiceConfigSpy) + }) + + it('should maintain configuration cache consistency', () => { + const config1 = serviceManager.getConfiguration() + const config2 = serviceManager.getConfiguration() + + expect(config1).to.deep.equal(config2) + expect(config1).to.equal(config2) // Same reference + }) }) diff --git a/server/aws-lsp-codewhisperer/src/shared/amazonQServiceManager/BaseAmazonQServiceManager.ts b/server/aws-lsp-codewhisperer/src/shared/amazonQServiceManager/BaseAmazonQServiceManager.ts index d8aa1b0b48..75bfe25213 100644 --- a/server/aws-lsp-codewhisperer/src/shared/amazonQServiceManager/BaseAmazonQServiceManager.ts +++ b/server/aws-lsp-codewhisperer/src/shared/amazonQServiceManager/BaseAmazonQServiceManager.ts @@ -25,6 +25,7 @@ export interface QServiceManagerFeatures { credentialsProvider: CredentialsProvider sdkInitializator: SDKInitializator workspace: Workspace + atxCredentialsProvider?: CredentialsProvider } export type AmazonQBaseServiceManager = BaseAmazonQServiceManager @@ -80,10 +81,16 @@ export abstract class BaseAmazonQServiceManager< protected cachedCodewhispererService?: C protected cachedStreamingClient?: S + // Separate caches for ATX operations + protected cachedAtxCodewhispererService?: C + protected cachedAtxStreamingClient?: S private handleDidChangeConfigurationListeners = new Set() private isConfigChangeInProgress = false abstract getCodewhispererService(): C + + // ATX-specific service getters + abstract getAtxCodewhispererService(): C abstract getStreamingClient(): S get serverInfo() { @@ -165,6 +172,28 @@ export abstract class BaseAmazonQServiceManager< 'Update shareCodeWhispererContentWithAWS setting on cachedStreamingClient to ' + shareCodeWhispererContentWithAWS ) + // Update ATX service caches (ATX doesn't use customizations, only content sharing) + if (this.cachedAtxCodewhispererService) { + const shareCodeWhispererContentWithAWS = this.configurationCache.getProperty( + 'shareCodeWhispererContentWithAWS' + ) + this.logging.debug( + 'Update shareCodeWhispererContentWithAWS setting on cachedAtxCodewhispererService to ' + + shareCodeWhispererContentWithAWS + ) + this.cachedAtxCodewhispererService.shareCodeWhispererContentWithAWS = shareCodeWhispererContentWithAWS + } + + if (this.cachedAtxStreamingClient) { + const shareCodeWhispererContentWithAWS = this.configurationCache.getProperty( + 'shareCodeWhispererContentWithAWS' + ) + this.logging.debug( + 'Update shareCodeWhispererContentWithAWS setting on cachedAtxStreamingClient to ' + + shareCodeWhispererContentWithAWS + ) + this.cachedAtxStreamingClient.shareCodeWhispererContentWithAWS = shareCodeWhispererContentWithAWS + } this.cachedStreamingClient.shareCodeWhispererContentWithAWS = shareCodeWhispererContentWithAWS } } diff --git a/server/aws-lsp-codewhisperer/src/shared/amazonQServiceManager/atxTransformProfiles.ts b/server/aws-lsp-codewhisperer/src/shared/amazonQServiceManager/atxTransformProfiles.ts new file mode 100644 index 0000000000..118b13112f --- /dev/null +++ b/server/aws-lsp-codewhisperer/src/shared/amazonQServiceManager/atxTransformProfiles.ts @@ -0,0 +1,150 @@ +import { CancellationToken, Logging, SsoConnectionType } from '@aws/language-server-runtimes/server-interface' +import { AtxTokenServiceManager } from './AtxTokenServiceManager' +import { getATXEndpoints } from '../constants' + +export interface AtxTransformProfile { + arn: string | undefined + name: string | undefined + applicationUrl: string | undefined + identityDetails?: AtxIdentityDetails +} + +interface AtxIdentityDetails { + region: string +} + +export interface ListAllAvailableAtxProfilesHandlerParams { + connectionType: SsoConnectionType + logging: Logging + atxEndpoints?: Map + token: CancellationToken +} + +export type ListAllAvailableAtxProfilesHandler = ( + params: ListAllAvailableAtxProfilesHandlerParams +) => Promise + +export const MAX_ATX_PROFILE_PAGES = 10 +const MAX_ATX_PROFILES_PER_PAGE = 10 + +export const getListAllAvailableAtxProfilesHandler = + (atxTokenServiceManager: AtxTokenServiceManager): ListAllAvailableAtxProfilesHandler => + async ({ connectionType, logging, atxEndpoints, token }): Promise => { + if (!connectionType || connectionType !== 'identityCenter') { + logging.debug('ATX Profiles: Connection type is not identityCenter - returning empty response.') + return [] + } + + let allAtxProfiles: AtxTransformProfile[] = [] + const endpoints = atxEndpoints ?? getATXEndpoints() + + if (token.isCancellationRequested) { + return [] + } + + const result = await Promise.allSettled( + Array.from(endpoints.entries(), ([region, endpoint]) => { + return fetchAtxProfilesFromRegion(atxTokenServiceManager, region, endpoint, logging, token) + }) + ) + + if (token.isCancellationRequested) { + return [] + } + + result.forEach((settledResult, index) => { + if (settledResult.status === 'rejected') { + const [region] = Array.from(endpoints.entries())[index] + logging.error( + `ATX Profiles: Failed to fetch from region: ${region}, error: ${settledResult.reason?.name || 'unknown'}` + ) + } + }) + + const fulfilledResults = result.filter(settledResult => settledResult.status === 'fulfilled') + + if (fulfilledResults.length === 0) { + throw new Error('Failed to retrieve ATX profiles from all queried regions') + } + + fulfilledResults.forEach(fulfilledResult => allAtxProfiles.push(...fulfilledResult.value)) + + return allAtxProfiles + } + +async function fetchAtxProfilesFromRegion( + atxTokenServiceManager: AtxTokenServiceManager, + region: string, + endpoint: string, + logging: Logging, + token: CancellationToken +): Promise { + let allRegionalProfiles: AtxTransformProfile[] = [] + let nextToken: string | undefined = undefined + let numberOfPages = 0 + + try { + const { ElasticGumbyFrontendClient, ListAvailableProfilesCommand } = await import( + '@amazon/elastic-gumby-frontend-client' + ) + + const atxClient = new ElasticGumbyFrontendClient({ + region: region, + endpoint: endpoint, + }) + + do { + if (token.isCancellationRequested) { + return allRegionalProfiles + } + + const command: any = new ListAvailableProfilesCommand({ + maxResults: MAX_ATX_PROFILES_PER_PAGE, + nextToken: nextToken, + }) + + const bearerToken = await atxTokenServiceManager.getBearerToken() + command.middlewareStack?.add( + (next: any) => async (args: any) => { + if (!args.request.headers) { + args.request.headers = {} + } + args.request.headers['Authorization'] = `Bearer ${bearerToken}` + return next(args) + }, + { + step: 'build', + name: 'addAtxBearerToken', + priority: 'high', + } + ) + + const response: any = await atxClient.send(command) + + const profiles = + response.profiles?.map((profile: any) => { + const applicationUrl = profile.applicationUrl?.replace(/\/$/, '') || profile.applicationUrl + + return { + arn: profile.arn, + name: profile.profileName || profile.name, + applicationUrl: applicationUrl, + identityDetails: { + region, + }, + } + }) ?? [] + + allRegionalProfiles.push(...profiles) + + nextToken = response.nextToken + numberOfPages++ + } while (nextToken !== undefined && numberOfPages < MAX_ATX_PROFILE_PAGES) + + return allRegionalProfiles + } catch (error) { + logging.error(`ATX Profiles: Error fetching from region: ${region}`) + logging.error(`ATX Profiles: Error details: ${JSON.stringify(error, Object.getOwnPropertyNames(error), 2)}`) + throw error + } +} diff --git a/server/aws-lsp-codewhisperer/src/shared/amazonQServiceManager/testUtils.ts b/server/aws-lsp-codewhisperer/src/shared/amazonQServiceManager/testUtils.ts index 78870b62e8..b1a0fee906 100644 --- a/server/aws-lsp-codewhisperer/src/shared/amazonQServiceManager/testUtils.ts +++ b/server/aws-lsp-codewhisperer/src/shared/amazonQServiceManager/testUtils.ts @@ -57,6 +57,15 @@ export class TestAmazonQServiceManager extends BaseAmazonQServiceManager< return this.cachedCodewhispererService } + public getAtxCodewhispererService(): CodeWhispererServiceBase { + if (!this.cachedAtxCodewhispererService) { + throw new Error( + 'Found undefined cached ATX service, make sure to setup TestAmazonQServiceManager class correctly' + ) + } + + return this.cachedAtxCodewhispererService + } public getStreamingClient(): StreamingClientServiceBase { if (!this.cachedStreamingClient) { diff --git a/server/aws-lsp-codewhisperer/src/shared/constants.ts b/server/aws-lsp-codewhisperer/src/shared/constants.ts index 47bd84c3f5..ee8605d3da 100644 --- a/server/aws-lsp-codewhisperer/src/shared/constants.ts +++ b/server/aws-lsp-codewhisperer/src/shared/constants.ts @@ -12,9 +12,37 @@ export const AWS_Q_ENDPOINTS = new Map([ ['eu-central-1', 'https://q.eu-central-1.amazonaws.com/'], ]) +export const DEFAULT_ATX_FES_REGION = 'us-east-1' +export const DEFAULT_ATX_FES_ENDPOINT_URL = 'https://api.transform.us-east-1.on.aws/' + +export const ATX_FES_ENDPOINTS = new Map([ + [DEFAULT_ATX_FES_REGION, DEFAULT_ATX_FES_ENDPOINT_URL], + ['us-west-2', 'https://api.transform.us-west-2.on.aws/'], + ['eu-central-1', 'https://api.transform.eu-central-1.on.aws/'], + ['ap-southeast-2', 'https://api.transform.ap-southeast-2.on.aws/'], +]) + +export const ATX_FES_GAMMA_ENDPOINTS = new Map([ + [DEFAULT_ATX_FES_REGION, 'https://api.transform-gamma.us-east-1.on.aws/'], + ['us-west-2', 'https://api.transform-gamma.us-west-2.on.aws/'], + ['eu-central-1', 'https://api.transform-gamma.eu-central-1.on.aws/'], +]) + +export function getAtxEndPointByRegion(region: string): string { + var endpointsByStage = getATXEndpoints() + return endpointsByStage.get(region) || DEFAULT_ATX_FES_ENDPOINT_URL +} + +export function getATXEndpoints(): Map { + return process.env.TRANSFORM_ENV === 'GAMMA' ? ATX_FES_GAMMA_ENDPOINTS : ATX_FES_ENDPOINTS +} + export const AWS_Q_REGION_ENV_VAR = 'AWS_Q_REGION' export const AWS_Q_ENDPOINT_URL_ENV_VAR = 'AWS_Q_ENDPOINT_URL' +export const ATX_FES_REGION_ENV_VAR = 'ATX_FES_REGION' +export const ATX_FES_ENDPOINT_URL_ENV_VAR = 'ATX_FES_ENDPOINT_URL' + export const IDE = 'IDE' export const Q_CONFIGURATION_SECTION = 'aws.q' diff --git a/server/aws-lsp-codewhisperer/src/shared/proxy-server.ts b/server/aws-lsp-codewhisperer/src/shared/proxy-server.ts index 7313aacaba..c56da7c21a 100644 --- a/server/aws-lsp-codewhisperer/src/shared/proxy-server.ts +++ b/server/aws-lsp-codewhisperer/src/shared/proxy-server.ts @@ -2,8 +2,10 @@ import { QAgenticChatServer } from '../language-server/agenticChat/qAgenticChatS import { SecurityScanServerToken } from '../language-server/securityScan/codeWhispererSecurityScanServer' import { CodewhispererServerFactory } from '../language-server/inline-completion/codeWhispererServer' import { QNetTransformServerToken } from '../language-server/netTransform/netTransformServer' +import { AtxNetTransformServerToken } from '../language-server/netTransform/atxNetTransformServer' import { QChatServerFactory } from '../language-server/chat/qChatServer' import { QConfigurationServerToken } from '../language-server/configuration/qConfigurationServer' +import { TransformConfigurationServerToken } from '../language-server/configuration/transformConfigurationServer' import { getOrThrowBaseTokenServiceManager } from './amazonQServiceManager/AmazonQTokenServiceManager' import { getOrThrowBaseIAMServiceManager } from './amazonQServiceManager/AmazonQIAMServiceManager' import { LocalProjectContextServer } from '../language-server/localProjectContext/localProjectContextServer' @@ -17,6 +19,8 @@ export const CodeWhispererSecurityScanServerTokenProxy = SecurityScanServerToken export const QNetTransformServerTokenProxy = QNetTransformServerToken() +export const AtxNetTransformServerTokenProxy = AtxNetTransformServerToken() + export const QChatServerTokenProxy = QChatServerFactory(getOrThrowBaseTokenServiceManager) export const QChatServerIAMProxy = QChatServerFactory(getOrThrowBaseIAMServiceManager) @@ -24,6 +28,10 @@ export const QAgenticChatServerProxy = QAgenticChatServer() export const QConfigurationServerTokenProxy = QConfigurationServerToken() +export const TransformConfigurationServerTokenProxy = TransformConfigurationServerToken( + getOrThrowBaseTokenServiceManager +) + export const QLocalProjectContextServerProxy = LocalProjectContextServer() export const WorkspaceContextServerTokenProxy = WorkspaceContextServer() diff --git a/server/aws-lsp-codewhisperer/src/shared/testUtils.ts b/server/aws-lsp-codewhisperer/src/shared/testUtils.ts index 451f3ae2c3..efa76d2fdc 100644 --- a/server/aws-lsp-codewhisperer/src/shared/testUtils.ts +++ b/server/aws-lsp-codewhisperer/src/shared/testUtils.ts @@ -296,6 +296,7 @@ export function shuffleList(list: T[]): T[] { export const setCredentialsForAmazonQTokenServiceManagerFactory = (getFeatures: () => TestFeatures) => { return (connectionType: SsoConnectionType) => { const features = getFeatures() + features.credentialsProvider = stubInterface() features.credentialsProvider.hasCredentials.returns(true) features.credentialsProvider.getConnectionType.returns(connectionType) features.credentialsProvider.getCredentials.returns({ diff --git a/server/aws-lsp-codewhisperer/src/shared/utils.test.ts b/server/aws-lsp-codewhisperer/src/shared/utils.test.ts index dc5aacc01b..924fa080f8 100644 --- a/server/aws-lsp-codewhisperer/src/shared/utils.test.ts +++ b/server/aws-lsp-codewhisperer/src/shared/utils.test.ts @@ -27,6 +27,8 @@ import { sanitizeInput, sanitizeRequestInput, isUsingIAMAuth, + getBearerTokenFromProviderWithType, + sanitizeLogInput, } from './utils' import { promises as fsPromises } from 'fs' @@ -913,4 +915,76 @@ describe('sanitizeRequestInput', () => { [137, 80, 78, 71, 13, 10, 26, 10] ) }) + + describe('isUsingIAMAuth', () => { + it('returns true when USE_IAM_AUTH env var is true', () => { + process.env.USE_IAM_AUTH = 'true' + assert.strictEqual(isUsingIAMAuth(), true) + delete process.env.USE_IAM_AUTH + }) + + it('returns true when only IAM credentials available', () => { + const mockProvider = { + getCredentials: sinon + .stub() + .withArgs('iam') + .returns({ accessKeyId: 'key', secretAccessKey: 'secret' }) + .withArgs('bearer') + .returns(null), + } + assert.strictEqual(isUsingIAMAuth(mockProvider as any), true) + }) + + it('returns false when bearer token available', () => { + const mockProvider = { + getCredentials: sinon + .stub() + .withArgs('iam') + .returns({ accessKeyId: 'key', secretAccessKey: 'secret' }) + .withArgs('bearer') + .returns({ token: 'bearer-token' }), + } + assert.strictEqual(isUsingIAMAuth(mockProvider as any), false) + }) + + it('returns false when credential access fails', () => { + const mockProvider = { + getCredentials: sinon.stub().throws(new Error('No credentials')), + } + assert.strictEqual(isUsingIAMAuth(mockProvider as any), false) + }) + }) + + describe('getOriginFromClientInfo', () => { + it('returns MD_IDE for SMUS IDE client', () => { + assert.strictEqual(getOriginFromClientInfo('AmazonQ-For-SMUS-IDE-test'), 'MD_IDE') + }) + + it('returns MD_IDE for SMUS CE client', () => { + assert.strictEqual(getOriginFromClientInfo('AmazonQ-For-SMUS-CE-test'), 'MD_IDE') + }) + + it('returns MD_IDE for SMAI CE client', () => { + assert.strictEqual(getOriginFromClientInfo('AmazonQ-For-SMAI-CE-test'), 'MD_IDE') + }) + + it('returns IDE for other clients', () => { + assert.strictEqual(getOriginFromClientInfo('VSCode'), 'IDE') + assert.strictEqual(getOriginFromClientInfo(undefined), 'IDE') + }) + }) + + describe('sanitizeLogInput', () => { + it('replaces control characters with underscore', () => { + const input = 'test\nwith\rcontrol\tchars\x00' + const result = sanitizeLogInput(input) + assert.strictEqual(result, 'test_with_control_chars_') + }) + + it('preserves normal characters', () => { + const input = 'normal text 123' + const result = sanitizeLogInput(input) + assert.strictEqual(result, input) + }) + }) }) diff --git a/server/aws-lsp-codewhisperer/src/shared/utils.ts b/server/aws-lsp-codewhisperer/src/shared/utils.ts index 9dfea144fa..e9b32edd1b 100644 --- a/server/aws-lsp-codewhisperer/src/shared/utils.ts +++ b/server/aws-lsp-codewhisperer/src/shared/utils.ts @@ -346,6 +346,19 @@ export function getBearerTokenFromProvider(credentialsProvider: CredentialsProvi return credentials.token } +export function getBearerTokenFromProviderWithType(credentialsProvider: CredentialsProvider, credentialType: any) { + if (!credentialsProvider.hasCredentials(credentialType)) { + throw new Error(MISSING_BEARER_TOKEN_ERROR) + } + + const credentials = credentialsProvider.getCredentials(credentialType) as BearerCredentials + + if (!credentials.token) { + throw new Error(MISSING_BEARER_TOKEN_ERROR) + } + + return credentials.token +} export function getClientName(lspParams: InitializeParams | undefined): string | undefined { return process.env.SERVICE_NAME === SAGEMAKER_UNIFIED_STUDIO_SERVICE ? lspParams?.initializationOptions?.aws?.clientInfo?.name diff --git a/server/aws-lsp-identity/package.json b/server/aws-lsp-identity/package.json index 17ba899781..074292d855 100644 --- a/server/aws-lsp-identity/package.json +++ b/server/aws-lsp-identity/package.json @@ -26,7 +26,7 @@ "dependencies": { "@aws-sdk/client-sso-oidc": "^3.616.0", "@aws-sdk/token-providers": "^3.744.0", - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "^0.3.8", "@aws/lsp-core": "0.0.17", "@smithy/node-http-handler": "^3.2.5", "@smithy/shared-ini-file-loader": "^4.0.1", diff --git a/server/aws-lsp-identity/src/language-server/profiles/profileService.test.ts b/server/aws-lsp-identity/src/language-server/profiles/profileService.test.ts index f2da8c62e9..4254ab6e52 100644 --- a/server/aws-lsp-identity/src/language-server/profiles/profileService.test.ts +++ b/server/aws-lsp-identity/src/language-server/profiles/profileService.test.ts @@ -435,10 +435,6 @@ describe('profileService.DuckTypers', () => { }, {}, null, - { - sso_session: 'legacy SSO profile', - sso_account_id: '123', - }, ] for (const profile of profiles) { diff --git a/server/aws-lsp-identity/src/language-server/profiles/profileService.ts b/server/aws-lsp-identity/src/language-server/profiles/profileService.ts index 247ccd1833..3c14e613ed 100644 --- a/server/aws-lsp-identity/src/language-server/profiles/profileService.ts +++ b/server/aws-lsp-identity/src/language-server/profiles/profileService.ts @@ -39,10 +39,11 @@ export const SsoSessionFields = { } as const export const profileDuckTypers = { - SsoTokenProfile: new DuckTyper() + SsoTokenProfile: new DuckTyper().requireProperty(ProfileFields.sso_session), + SsoProfile: new DuckTyper() .requireProperty(ProfileFields.sso_session) - .disallowProperty(ProfileFields.sso_account_id) - .disallowProperty(ProfileFields.sso_role_name), + .requireProperty(ProfileFields.sso_account_id) + .requireProperty(ProfileFields.sso_role_name), } export const ssoSessionDuckTyper = new DuckTyper() diff --git a/server/aws-lsp-identity/src/language-server/profiles/sharedConfigProfileStore.ts b/server/aws-lsp-identity/src/language-server/profiles/sharedConfigProfileStore.ts index 2edbe2bb0f..0597857f43 100644 --- a/server/aws-lsp-identity/src/language-server/profiles/sharedConfigProfileStore.ts +++ b/server/aws-lsp-identity/src/language-server/profiles/sharedConfigProfileStore.ts @@ -45,19 +45,27 @@ export class SharedConfigProfileStore implements ProfileStore { const sectionHeader = SectionHeader.fromParsedSectionName(parsedSectionName) switch (sectionHeader.type) { case IniSectionType.PROFILE: + const kinds: ProfileKind[] = [] + if (profileDuckTypers.SsoTokenProfile.eval(settings)) { + kinds.push(ProfileKind.SsoTokenProfile) + } + if (profileDuckTypers.SsoProfile.eval(settings)) { + kinds.push(ProfileKind.SsoTokenProfile) // Use same kind for backward compatibility + } + if (kinds.length === 0) { + kinds.push(ProfileKind.Unknown) + } + result.profiles.push({ - kinds: [ - // As more profile kinds are added this will get more complex and need refactored - profileDuckTypers.SsoTokenProfile.eval(settings) - ? ProfileKind.SsoTokenProfile - : ProfileKind.Unknown, - ], + kinds, name: sectionHeader.name, settings: { // Only apply settings expected on Profile region: settings.region, sso_session: settings.sso_session, - }, + ...(settings.sso_account_id && { sso_account_id: settings.sso_account_id }), + ...(settings.sso_role_name && { sso_role_name: settings.sso_role_name }), + } as any, }) break case IniSectionType.SSO_SESSION: { diff --git a/server/aws-lsp-json/package.json b/server/aws-lsp-json/package.json index 1548f374c6..7e6b7be2b4 100644 --- a/server/aws-lsp-json/package.json +++ b/server/aws-lsp-json/package.json @@ -26,7 +26,7 @@ "prepack": "shx cp ../../LICENSE ../../NOTICE ../../SECURITY.md ." }, "dependencies": { - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "^0.3.8", "@aws/lsp-core": "^0.0.17", "vscode-languageserver": "^9.0.1", "vscode-languageserver-textdocument": "^1.0.8" diff --git a/server/aws-lsp-notification/package.json b/server/aws-lsp-notification/package.json index 5f4185e4b3..8c3f105463 100644 --- a/server/aws-lsp-notification/package.json +++ b/server/aws-lsp-notification/package.json @@ -22,7 +22,7 @@ "coverage:report": "c8 report --reporter=html --reporter=text" }, "dependencies": { - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "^0.3.8", "@aws/lsp-core": "0.0.17", "vscode-languageserver": "^9.0.1" }, diff --git a/server/aws-lsp-partiql/package.json b/server/aws-lsp-partiql/package.json index 1cfc2ff36d..97718bb373 100644 --- a/server/aws-lsp-partiql/package.json +++ b/server/aws-lsp-partiql/package.json @@ -24,7 +24,7 @@ "out" ], "dependencies": { - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "^0.3.8", "antlr4-c3": "3.4.4", "antlr4ng": "3.0.16", "web-tree-sitter": "0.22.6" diff --git a/server/aws-lsp-s3/package.json b/server/aws-lsp-s3/package.json index f3b11973c0..038065be0b 100644 --- a/server/aws-lsp-s3/package.json +++ b/server/aws-lsp-s3/package.json @@ -9,7 +9,7 @@ "dependencies": { "@aws-sdk/client-s3": "^3.623.0", "@aws-sdk/types": "^3.734.0", - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "^0.3.8", "@aws/lsp-core": "0.0.17", "vscode-languageserver": "^9.0.1", "vscode-languageserver-textdocument": "^1.0.8" diff --git a/server/aws-lsp-yaml/package.json b/server/aws-lsp-yaml/package.json index ea103df9f4..5837c1dac3 100644 --- a/server/aws-lsp-yaml/package.json +++ b/server/aws-lsp-yaml/package.json @@ -26,7 +26,7 @@ "postinstall": "node patchYamlPackage.js" }, "dependencies": { - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "^0.3.8", "@aws/lsp-core": "^0.0.17", "vscode-languageserver": "^9.0.1", "vscode-languageserver-textdocument": "^1.0.8", diff --git a/server/device-sso-auth-lsp/package.json b/server/device-sso-auth-lsp/package.json index a7b57f91d8..1f2e7f5305 100644 --- a/server/device-sso-auth-lsp/package.json +++ b/server/device-sso-auth-lsp/package.json @@ -7,7 +7,7 @@ "compile": "tsc --build" }, "dependencies": { - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "^0.3.8", "vscode-languageserver": "^9.0.1" }, "devDependencies": { diff --git a/server/hello-world-lsp/package.json b/server/hello-world-lsp/package.json index 6e47c508fc..d55eee338a 100644 --- a/server/hello-world-lsp/package.json +++ b/server/hello-world-lsp/package.json @@ -13,7 +13,7 @@ "coverage:report": "c8 report --reporter=html --reporter=text" }, "dependencies": { - "@aws/language-server-runtimes": "0.3.6", + "@aws/language-server-runtimes": "^0.3.8", "vscode-languageserver": "^9.0.1" }, "devDependencies": { From 2c17c8ea0d36052e406f86ef63c3d7531efffcb8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 26 Nov 2025 12:53:13 -0800 Subject: [PATCH 31/36] chore(release): release packages from branch main (#2527) * chore(release): release packages from branch main * fix(release): update package-lock.json * fix(release): manually update versions in packages --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Manodnya Bhoite --- .release-please-manifest.json | 14 +- app/aws-lsp-partiql-runtimes/package.json | 2 +- chat-client/CHANGELOG.md | 7 + chat-client/package.json | 2 +- core/aws-lsp-core/CHANGELOG.md | 7 + core/aws-lsp-core/package.json | 2 +- package-lock.json | 180 ++++++++++++++++------ server/aws-lsp-antlr4/CHANGELOG.md | 14 ++ server/aws-lsp-antlr4/package.json | 4 +- server/aws-lsp-codewhisperer/CHANGELOG.md | 14 ++ server/aws-lsp-codewhisperer/package.json | 4 +- server/aws-lsp-identity/package.json | 2 +- server/aws-lsp-json/CHANGELOG.md | 14 ++ server/aws-lsp-json/package.json | 4 +- server/aws-lsp-notification/package.json | 2 +- server/aws-lsp-partiql/CHANGELOG.md | 7 + server/aws-lsp-partiql/package.json | 2 +- server/aws-lsp-s3/package.json | 2 +- server/aws-lsp-yaml/CHANGELOG.md | 14 ++ server/aws-lsp-yaml/package.json | 4 +- 20 files changed, 236 insertions(+), 65 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 0933826f6b..c910214eaa 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,9 +1,9 @@ { - "chat-client": "0.1.42", - "core/aws-lsp-core": "0.0.17", - "server/aws-lsp-antlr4": "0.1.21", - "server/aws-lsp-codewhisperer": "0.0.94", - "server/aws-lsp-json": "0.1.22", - "server/aws-lsp-partiql": "0.0.19", - "server/aws-lsp-yaml": "0.1.22" + "chat-client": "0.1.43", + "core/aws-lsp-core": "0.0.18", + "server/aws-lsp-antlr4": "0.1.22", + "server/aws-lsp-codewhisperer": "0.0.95", + "server/aws-lsp-json": "0.1.23", + "server/aws-lsp-partiql": "0.0.20", + "server/aws-lsp-yaml": "0.1.23" } diff --git a/app/aws-lsp-partiql-runtimes/package.json b/app/aws-lsp-partiql-runtimes/package.json index 73e20a7d30..2c958f1945 100644 --- a/app/aws-lsp-partiql-runtimes/package.json +++ b/app/aws-lsp-partiql-runtimes/package.json @@ -12,7 +12,7 @@ }, "dependencies": { "@aws/language-server-runtimes": "0.3.8", - "@aws/lsp-partiql": "0.0.19" + "@aws/lsp-partiql": "0.0.20" }, "devDependencies": { "ts-loader": "^9.4.4", diff --git a/chat-client/CHANGELOG.md b/chat-client/CHANGELOG.md index 822d74659b..cb7414c0b0 100644 --- a/chat-client/CHANGELOG.md +++ b/chat-client/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.1.43](https://github.com/aws/language-servers/compare/chat-client/v0.1.42...chat-client/v0.1.43) (2025-11-26) + + +### Features + +* Adding ATX-FES apis support for transformation ([#2521](https://github.com/aws/language-servers/issues/2521)) ([56ee489](https://github.com/aws/language-servers/commit/56ee4891a2e19b259c129fd531f8b06f763c1b57)) + ## [0.1.42](https://github.com/aws/language-servers/compare/chat-client/v0.1.41...chat-client/v0.1.42) (2025-11-21) diff --git a/chat-client/package.json b/chat-client/package.json index d76e9d33ec..a125bea5fd 100644 --- a/chat-client/package.json +++ b/chat-client/package.json @@ -1,6 +1,6 @@ { "name": "@aws/chat-client", - "version": "0.1.42", + "version": "0.1.43", "description": "AWS Chat Client", "main": "out/index.js", "repository": { diff --git a/core/aws-lsp-core/CHANGELOG.md b/core/aws-lsp-core/CHANGELOG.md index 891be1996b..73dd846add 100644 --- a/core/aws-lsp-core/CHANGELOG.md +++ b/core/aws-lsp-core/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.0.18](https://github.com/aws/language-servers/compare/lsp-core/v0.0.17...lsp-core/v0.0.18) (2025-11-26) + + +### Features + +* Adding ATX-FES apis support for transformation ([#2521](https://github.com/aws/language-servers/issues/2521)) ([56ee489](https://github.com/aws/language-servers/commit/56ee4891a2e19b259c129fd531f8b06f763c1b57)) + ## [0.0.17](https://github.com/aws/language-servers/compare/lsp-core/v0.0.16...lsp-core/v0.0.17) (2025-11-21) diff --git a/core/aws-lsp-core/package.json b/core/aws-lsp-core/package.json index 244cd306ae..07d44896e8 100644 --- a/core/aws-lsp-core/package.json +++ b/core/aws-lsp-core/package.json @@ -1,6 +1,6 @@ { "name": "@aws/lsp-core", - "version": "0.0.17", + "version": "0.0.18", "description": "Core library, contains common code and utilities", "main": "out/index.js", "repository": { diff --git a/package-lock.json b/package-lock.json index 7726a956f4..cb78059e7d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "integration-tests/*" ], "dependencies": { - "@aws/language-server-runtimes": "0.3.8", + "@aws/language-server-runtimes": "^0.3.8", "@smithy/types": "4.2.0", "clean": "^4.0.2", "typescript": "^5.8.2" @@ -48,7 +48,7 @@ "name": "@aws/lsp-antlr4-runtimes", "version": "0.0.1", "dependencies": { - "@aws/language-server-runtimes": "0.3.8", + "@aws/language-server-runtimes": "^0.3.8", "@aws/lsp-antlr4": "*", "antlr4-c3": "^3.4.2", "antlr4ng": "^3.0.14" @@ -71,7 +71,7 @@ "name": "@aws/lsp-buildspec-runtimes", "version": "0.0.1", "dependencies": { - "@aws/language-server-runtimes": "0.3.8", + "@aws/language-server-runtimes": "^0.3.8", "@aws/lsp-buildspec": "^0.0.1" } }, @@ -79,7 +79,7 @@ "name": "@aws/lsp-cloudformation-runtimes", "version": "0.0.1", "dependencies": { - "@aws/language-server-runtimes": "0.3.8", + "@aws/language-server-runtimes": "^0.3.8", "@aws/lsp-cloudformation": "^0.0.1" } }, @@ -87,7 +87,7 @@ "name": "@aws/lsp-codewhisperer-runtimes", "version": "0.0.1", "dependencies": { - "@aws/language-server-runtimes": "0.3.8", + "@aws/language-server-runtimes": "^0.3.8", "@aws/lsp-codewhisperer": "*", "copyfiles": "^2.4.1", "cross-env": "^7.0.3", @@ -121,7 +121,7 @@ "name": "@aws/lsp-identity-runtimes", "version": "0.1.0", "dependencies": { - "@aws/language-server-runtimes": "0.3.8", + "@aws/language-server-runtimes": "^0.3.8", "@aws/lsp-identity": "^0.0.1" } }, @@ -129,7 +129,7 @@ "name": "@aws/lsp-json-runtimes", "version": "0.0.1", "dependencies": { - "@aws/language-server-runtimes": "0.3.8", + "@aws/language-server-runtimes": "^0.3.8", "@aws/lsp-json": "*" }, "devDependencies": { @@ -149,7 +149,7 @@ "name": "@aws/lsp-notification-runtimes", "version": "0.1.0", "dependencies": { - "@aws/language-server-runtimes": "0.3.8", + "@aws/language-server-runtimes": "^0.3.8", "@aws/lsp-notification": "^0.0.1" } }, @@ -158,7 +158,7 @@ "version": "0.0.1", "dependencies": { "@aws/language-server-runtimes": "0.3.8", - "@aws/lsp-partiql": "0.0.19" + "@aws/lsp-partiql": "0.0.20" }, "devDependencies": { "ts-loader": "^9.4.4", @@ -167,11 +167,43 @@ "webpack-cli": "^6.0.1" } }, + "app/aws-lsp-partiql-runtimes/node_modules/@aws/lsp-partiql/node_modules/@aws/language-server-runtimes": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@aws/language-server-runtimes/-/language-server-runtimes-0.3.6.tgz", + "integrity": "sha512-UYapohFIjEI93BfKQQlFiqOEq5wkG7Zm0jfcl2sMJwDYMtzNBtc31jDHr5cpeiQxSFpnALxqhPYp1PZU0vprwg==", + "extraneous": true, + "license": "Apache-2.0", + "dependencies": { + "@aws/language-server-runtimes-types": "^0.1.62", + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/api-logs": "^0.200.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/exporter-logs-otlp-http": "^0.200.0", + "@opentelemetry/exporter-metrics-otlp-http": "^0.200.0", + "@opentelemetry/resources": "^2.0.1", + "@opentelemetry/sdk-logs": "^0.200.0", + "@opentelemetry/sdk-metrics": "^2.0.1", + "@smithy/node-http-handler": "^4.0.4", + "ajv": "^8.17.1", + "hpagent": "^1.2.0", + "jose": "^5.9.6", + "mac-ca": "^3.1.1", + "registry-js": "^1.16.1", + "rxjs": "^7.8.2", + "vscode-languageserver": "^9.0.1", + "vscode-languageserver-protocol": "^3.17.5", + "vscode-uri": "^3.1.0", + "win-ca": "^3.5.1" + }, + "engines": { + "node": ">=24.0.0" + } + }, "app/aws-lsp-s3-runtimes": { "name": "@aws/lsp-s3-runtimes", "version": "0.0.1", "dependencies": { - "@aws/language-server-runtimes": "0.3.8", + "@aws/language-server-runtimes": "^0.3.8", "@aws/lsp-s3": "^0.0.1" }, "bin": { @@ -182,7 +214,7 @@ "name": "@aws/lsp-yaml-json-webworker", "version": "0.0.1", "dependencies": { - "@aws/language-server-runtimes": "0.3.8", + "@aws/language-server-runtimes": "^0.3.8", "@aws/lsp-json": "*", "@aws/lsp-yaml": "*" }, @@ -202,7 +234,7 @@ "name": "@aws/lsp-yaml-runtimes", "version": "0.0.1", "dependencies": { - "@aws/language-server-runtimes": "0.3.8", + "@aws/language-server-runtimes": "^0.3.8", "@aws/lsp-yaml": "*" }, "devDependencies": { @@ -224,7 +256,7 @@ "version": "0.0.1", "dependencies": { "@aws/hello-world-lsp": "^0.0.1", - "@aws/language-server-runtimes": "0.3.8" + "@aws/language-server-runtimes": "^0.3.8" }, "devDependencies": { "@types/chai": "^4.3.5", @@ -241,11 +273,11 @@ }, "chat-client": { "name": "@aws/chat-client", - "version": "0.1.42", + "version": "0.1.43", "license": "Apache-2.0", "dependencies": { "@aws/chat-client-ui-types": "0.1.68", - "@aws/language-server-runtimes": "0.3.8", + "@aws/language-server-runtimes": "^0.3.8", "@aws/language-server-runtimes-types": "0.1.62", "@aws/mynah-ui": "^4.38.0" }, @@ -270,7 +302,7 @@ "@aws-sdk/credential-providers": "^3.731.1", "@aws-sdk/types": "^3.734.0", "@aws/chat-client-ui-types": "0.1.68", - "@aws/language-server-runtimes": "0.3.8", + "@aws/language-server-runtimes": "^0.3.8", "@types/uuid": "^9.0.8", "@types/vscode": "^1.98.0", "jose": "^5.2.4", @@ -283,10 +315,10 @@ }, "core/aws-lsp-core": { "name": "@aws/lsp-core", - "version": "0.0.17", + "version": "0.0.18", "license": "Apache-2.0", "dependencies": { - "@aws/language-server-runtimes": "0.3.8", + "@aws/language-server-runtimes": "^0.3.8", "@gerhobbelt/gitignore-parser": "^0.2.0-9", "cross-spawn": "7.0.6", "jose": "^5.2.4", @@ -317,7 +349,7 @@ "name": "@aws/q-agentic-chat-server-integration-tests", "version": "0.0.1", "dependencies": { - "@aws/language-server-runtimes": "0.3.8", + "@aws/language-server-runtimes": "^0.3.8", "@aws/lsp-core": "*" }, "devDependencies": { @@ -32526,11 +32558,11 @@ }, "server/aws-lsp-antlr4": { "name": "@aws/lsp-antlr4", - "version": "0.1.21", + "version": "0.1.22", "license": "Apache-2.0", "dependencies": { - "@aws/language-server-runtimes": "0.3.8", - "@aws/lsp-core": "^0.0.17" + "@aws/language-server-runtimes": "^0.3.8", + "@aws/lsp-core": "^0.0.18" }, "devDependencies": { "@babel/plugin-transform-modules-commonjs": "^7.24.1", @@ -32572,7 +32604,7 @@ "name": "@aws/lsp-buildspec", "version": "0.0.1", "dependencies": { - "@aws/language-server-runtimes": "0.3.8", + "@aws/language-server-runtimes": "^0.3.8", "@aws/lsp-json": "*", "@aws/lsp-yaml": "*", "vscode-languageserver": "^9.0.1", @@ -32583,7 +32615,7 @@ "name": "@aws/lsp-cloudformation", "version": "0.0.1", "dependencies": { - "@aws/language-server-runtimes": "0.3.8", + "@aws/language-server-runtimes": "^0.3.8", "@aws/lsp-core": "*", "@aws/lsp-json": "*", "vscode-languageserver": "^9.0.1", @@ -32592,7 +32624,7 @@ }, "server/aws-lsp-codewhisperer": { "name": "@aws/lsp-codewhisperer", - "version": "0.0.94", + "version": "0.0.95", "bundleDependencies": [ "@amzn/codewhisperer", "@amzn/codewhisperer-runtime", @@ -32612,8 +32644,8 @@ "@aws-sdk/util-arn-parser": "^3.723.0", "@aws-sdk/util-retry": "^3.374.0", "@aws/chat-client-ui-types": "0.1.68", - "@aws/language-server-runtimes": "0.3.8", - "@aws/lsp-core": "^0.0.17", + "@aws/language-server-runtimes": "^0.3.8", + "@aws/lsp-core": "^0.0.18", "@modelcontextprotocol/sdk": "1.19.1", "@smithy/node-http-handler": "^2.5.0", "adm-zip": "^0.5.10", @@ -32803,8 +32835,8 @@ "dependencies": { "@aws-sdk/client-sso-oidc": "^3.616.0", "@aws-sdk/token-providers": "^3.744.0", - "@aws/language-server-runtimes": "0.3.8", - "@aws/lsp-core": "0.0.17", + "@aws/language-server-runtimes": "^0.3.8", + "@aws/lsp-core": "0.0.18", "@smithy/node-http-handler": "^3.2.5", "@smithy/shared-ini-file-loader": "^4.0.1", "https-proxy-agent": "^7.0.5", @@ -32832,6 +32864,68 @@ "node": ">=18.0.0" } }, + "server/aws-lsp-identity/node_modules/@aws/lsp-core/node_modules/@aws/language-server-runtimes": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@aws/language-server-runtimes/-/language-server-runtimes-0.3.6.tgz", + "integrity": "sha512-UYapohFIjEI93BfKQQlFiqOEq5wkG7Zm0jfcl2sMJwDYMtzNBtc31jDHr5cpeiQxSFpnALxqhPYp1PZU0vprwg==", + "extraneous": true, + "license": "Apache-2.0", + "dependencies": { + "@aws/language-server-runtimes-types": "^0.1.62", + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/api-logs": "^0.200.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/exporter-logs-otlp-http": "^0.200.0", + "@opentelemetry/exporter-metrics-otlp-http": "^0.200.0", + "@opentelemetry/resources": "^2.0.1", + "@opentelemetry/sdk-logs": "^0.200.0", + "@opentelemetry/sdk-metrics": "^2.0.1", + "@smithy/node-http-handler": "^4.0.4", + "ajv": "^8.17.1", + "hpagent": "^1.2.0", + "jose": "^5.9.6", + "mac-ca": "^3.1.1", + "registry-js": "^1.16.1", + "rxjs": "^7.8.2", + "vscode-languageserver": "^9.0.1", + "vscode-languageserver-protocol": "^3.17.5", + "vscode-uri": "^3.1.0", + "win-ca": "^3.5.1" + }, + "engines": { + "node": ">=24.0.0" + } + }, + "server/aws-lsp-identity/node_modules/@aws/lsp-core/node_modules/@smithy/node-http-handler": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.5.tgz", + "integrity": "sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==", + "extraneous": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^4.2.5", + "@smithy/protocol-http": "^5.3.5", + "@smithy/querystring-builder": "^4.2.5", + "@smithy/types": "^4.9.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "server/aws-lsp-identity/node_modules/@aws/lsp-core/node_modules/@smithy/types": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.9.0.tgz", + "integrity": "sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==", + "extraneous": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, "server/aws-lsp-identity/node_modules/@smithy/types": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz", @@ -32847,11 +32941,11 @@ }, "server/aws-lsp-json": { "name": "@aws/lsp-json", - "version": "0.1.22", + "version": "0.1.23", "license": "Apache-2.0", "dependencies": { - "@aws/language-server-runtimes": "0.3.8", - "@aws/lsp-core": "^0.0.17", + "@aws/language-server-runtimes": "^0.3.8", + "@aws/lsp-core": "^0.0.18", "vscode-languageserver": "^9.0.1", "vscode-languageserver-textdocument": "^1.0.8" }, @@ -32868,8 +32962,8 @@ "version": "0.0.1", "license": "Apache-2.0", "dependencies": { - "@aws/language-server-runtimes": "0.3.8", - "@aws/lsp-core": "0.0.17", + "@aws/language-server-runtimes": "^0.3.8", + "@aws/lsp-core": "0.0.18", "vscode-languageserver": "^9.0.1" }, "devDependencies": { @@ -32908,10 +33002,10 @@ }, "server/aws-lsp-partiql": { "name": "@aws/lsp-partiql", - "version": "0.0.19", + "version": "0.0.20", "license": "Apache-2.0", "dependencies": { - "@aws/language-server-runtimes": "0.3.8", + "@aws/language-server-runtimes": "^0.3.8", "antlr4-c3": "3.4.4", "antlr4ng": "3.0.16", "web-tree-sitter": "0.22.6" @@ -32933,20 +33027,20 @@ "dependencies": { "@aws-sdk/client-s3": "^3.623.0", "@aws-sdk/types": "^3.734.0", - "@aws/language-server-runtimes": "0.3.8", - "@aws/lsp-core": "0.0.17", + "@aws/language-server-runtimes": "^0.3.8", + "@aws/lsp-core": "0.0.18", "vscode-languageserver": "^9.0.1", "vscode-languageserver-textdocument": "^1.0.8" } }, "server/aws-lsp-yaml": { "name": "@aws/lsp-yaml", - "version": "0.1.22", + "version": "0.1.23", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@aws/language-server-runtimes": "0.3.8", - "@aws/lsp-core": "^0.0.17", + "@aws/language-server-runtimes": "^0.3.8", + "@aws/lsp-core": "^0.0.18", "vscode-languageserver": "^9.0.1", "vscode-languageserver-textdocument": "^1.0.8", "yaml-language-server": "1.13.0" @@ -32959,7 +33053,7 @@ "name": "@amzn/device-sso-auth-lsp", "version": "0.0.1", "dependencies": { - "@aws/language-server-runtimes": "0.3.8", + "@aws/language-server-runtimes": "^0.3.8", "vscode-languageserver": "^9.0.1" }, "devDependencies": { @@ -32970,7 +33064,7 @@ "name": "@aws/hello-world-lsp", "version": "0.0.1", "dependencies": { - "@aws/language-server-runtimes": "0.3.8", + "@aws/language-server-runtimes": "^0.3.8", "vscode-languageserver": "^9.0.1" }, "devDependencies": { diff --git a/server/aws-lsp-antlr4/CHANGELOG.md b/server/aws-lsp-antlr4/CHANGELOG.md index 8b2a658e9b..4ab0e45d1c 100644 --- a/server/aws-lsp-antlr4/CHANGELOG.md +++ b/server/aws-lsp-antlr4/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [0.1.22](https://github.com/aws/language-servers/compare/lsp-antlr4/v0.1.21...lsp-antlr4/v0.1.22) (2025-11-26) + + +### Features + +* Adding ATX-FES apis support for transformation ([#2521](https://github.com/aws/language-servers/issues/2521)) ([56ee489](https://github.com/aws/language-servers/commit/56ee4891a2e19b259c129fd531f8b06f763c1b57)) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @aws/lsp-core bumped from ^0.0.17 to ^0.0.18 + ## [0.1.21](https://github.com/aws/language-servers/compare/lsp-antlr4/v0.1.20...lsp-antlr4/v0.1.21) (2025-11-21) diff --git a/server/aws-lsp-antlr4/package.json b/server/aws-lsp-antlr4/package.json index ea4a497f94..181043847e 100644 --- a/server/aws-lsp-antlr4/package.json +++ b/server/aws-lsp-antlr4/package.json @@ -1,6 +1,6 @@ { "name": "@aws/lsp-antlr4", - "version": "0.1.21", + "version": "0.1.22", "description": "ANTLR4 language server", "main": "out/index.js", "repository": { @@ -29,7 +29,7 @@ }, "dependencies": { "@aws/language-server-runtimes": "^0.3.8", - "@aws/lsp-core": "^0.0.17" + "@aws/lsp-core": "^0.0.18" }, "peerDependencies": { "antlr4-c3": ">=3.4 < 4", diff --git a/server/aws-lsp-codewhisperer/CHANGELOG.md b/server/aws-lsp-codewhisperer/CHANGELOG.md index a45a396a1a..bd38683dee 100644 --- a/server/aws-lsp-codewhisperer/CHANGELOG.md +++ b/server/aws-lsp-codewhisperer/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [0.0.95](https://github.com/aws/language-servers/compare/lsp-codewhisperer/v0.0.94...lsp-codewhisperer/v0.0.95) (2025-11-26) + + +### Features + +* Adding ATX-FES apis support for transformation ([#2521](https://github.com/aws/language-servers/issues/2521)) ([56ee489](https://github.com/aws/language-servers/commit/56ee4891a2e19b259c129fd531f8b06f763c1b57)) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @aws/lsp-core bumped from ^0.0.17 to ^0.0.18 + ## [0.0.94](https://github.com/aws/language-servers/compare/lsp-codewhisperer/v0.0.93...lsp-codewhisperer/v0.0.94) (2025-11-25) diff --git a/server/aws-lsp-codewhisperer/package.json b/server/aws-lsp-codewhisperer/package.json index 802361276a..7efcfd4e81 100644 --- a/server/aws-lsp-codewhisperer/package.json +++ b/server/aws-lsp-codewhisperer/package.json @@ -1,6 +1,6 @@ { "name": "@aws/lsp-codewhisperer", - "version": "0.0.94", + "version": "0.0.95", "description": "CodeWhisperer Language Server", "main": "out/index.js", "repository": { @@ -39,7 +39,7 @@ "@aws-sdk/util-retry": "^3.374.0", "@aws/chat-client-ui-types": "0.1.68", "@aws/language-server-runtimes": "^0.3.8", - "@aws/lsp-core": "^0.0.17", + "@aws/lsp-core": "^0.0.18", "@modelcontextprotocol/sdk": "1.19.1", "@smithy/node-http-handler": "^2.5.0", "adm-zip": "^0.5.10", diff --git a/server/aws-lsp-identity/package.json b/server/aws-lsp-identity/package.json index 074292d855..d30c3237da 100644 --- a/server/aws-lsp-identity/package.json +++ b/server/aws-lsp-identity/package.json @@ -27,7 +27,7 @@ "@aws-sdk/client-sso-oidc": "^3.616.0", "@aws-sdk/token-providers": "^3.744.0", "@aws/language-server-runtimes": "^0.3.8", - "@aws/lsp-core": "0.0.17", + "@aws/lsp-core": "0.0.18", "@smithy/node-http-handler": "^3.2.5", "@smithy/shared-ini-file-loader": "^4.0.1", "https-proxy-agent": "^7.0.5", diff --git a/server/aws-lsp-json/CHANGELOG.md b/server/aws-lsp-json/CHANGELOG.md index 8ed9da3811..5d0f3fb39e 100644 --- a/server/aws-lsp-json/CHANGELOG.md +++ b/server/aws-lsp-json/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [0.1.23](https://github.com/aws/language-servers/compare/lsp-json/v0.1.22...lsp-json/v0.1.23) (2025-11-26) + + +### Features + +* Adding ATX-FES apis support for transformation ([#2521](https://github.com/aws/language-servers/issues/2521)) ([56ee489](https://github.com/aws/language-servers/commit/56ee4891a2e19b259c129fd531f8b06f763c1b57)) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @aws/lsp-core bumped from ^0.0.17 to ^0.0.18 + ## [0.1.22](https://github.com/aws/language-servers/compare/lsp-json/v0.1.21...lsp-json/v0.1.22) (2025-11-21) diff --git a/server/aws-lsp-json/package.json b/server/aws-lsp-json/package.json index 7e6b7be2b4..ae5acf0557 100644 --- a/server/aws-lsp-json/package.json +++ b/server/aws-lsp-json/package.json @@ -1,6 +1,6 @@ { "name": "@aws/lsp-json", - "version": "0.1.22", + "version": "0.1.23", "description": "JSON Language Server", "main": "out/index.js", "repository": { @@ -27,7 +27,7 @@ }, "dependencies": { "@aws/language-server-runtimes": "^0.3.8", - "@aws/lsp-core": "^0.0.17", + "@aws/lsp-core": "^0.0.18", "vscode-languageserver": "^9.0.1", "vscode-languageserver-textdocument": "^1.0.8" }, diff --git a/server/aws-lsp-notification/package.json b/server/aws-lsp-notification/package.json index 8c3f105463..8c06edd5e2 100644 --- a/server/aws-lsp-notification/package.json +++ b/server/aws-lsp-notification/package.json @@ -23,7 +23,7 @@ }, "dependencies": { "@aws/language-server-runtimes": "^0.3.8", - "@aws/lsp-core": "0.0.17", + "@aws/lsp-core": "0.0.18", "vscode-languageserver": "^9.0.1" }, "devDependencies": { diff --git a/server/aws-lsp-partiql/CHANGELOG.md b/server/aws-lsp-partiql/CHANGELOG.md index 2587db53c4..e50b06d8ee 100644 --- a/server/aws-lsp-partiql/CHANGELOG.md +++ b/server/aws-lsp-partiql/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.0.20](https://github.com/aws/language-servers/compare/lsp-partiql/v0.0.19...lsp-partiql/v0.0.20) (2025-11-26) + + +### Features + +* Adding ATX-FES apis support for transformation ([#2521](https://github.com/aws/language-servers/issues/2521)) ([56ee489](https://github.com/aws/language-servers/commit/56ee4891a2e19b259c129fd531f8b06f763c1b57)) + ## [0.0.19](https://github.com/aws/language-servers/compare/lsp-partiql/v0.0.18...lsp-partiql/v0.0.19) (2025-11-21) diff --git a/server/aws-lsp-partiql/package.json b/server/aws-lsp-partiql/package.json index 97718bb373..3f9286b1cd 100644 --- a/server/aws-lsp-partiql/package.json +++ b/server/aws-lsp-partiql/package.json @@ -3,7 +3,7 @@ "author": "Amazon Web Services", "license": "Apache-2.0", "description": "PartiQL language server", - "version": "0.0.19", + "version": "0.0.20", "repository": { "type": "git", "url": "https://github.com/aws/language-servers" diff --git a/server/aws-lsp-s3/package.json b/server/aws-lsp-s3/package.json index 038065be0b..b78f37450f 100644 --- a/server/aws-lsp-s3/package.json +++ b/server/aws-lsp-s3/package.json @@ -10,7 +10,7 @@ "@aws-sdk/client-s3": "^3.623.0", "@aws-sdk/types": "^3.734.0", "@aws/language-server-runtimes": "^0.3.8", - "@aws/lsp-core": "0.0.17", + "@aws/lsp-core": "0.0.18", "vscode-languageserver": "^9.0.1", "vscode-languageserver-textdocument": "^1.0.8" } diff --git a/server/aws-lsp-yaml/CHANGELOG.md b/server/aws-lsp-yaml/CHANGELOG.md index c7604a9ae6..97a39b2303 100644 --- a/server/aws-lsp-yaml/CHANGELOG.md +++ b/server/aws-lsp-yaml/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## [0.1.23](https://github.com/aws/language-servers/compare/lsp-yaml/v0.1.22...lsp-yaml/v0.1.23) (2025-11-26) + + +### Features + +* Adding ATX-FES apis support for transformation ([#2521](https://github.com/aws/language-servers/issues/2521)) ([56ee489](https://github.com/aws/language-servers/commit/56ee4891a2e19b259c129fd531f8b06f763c1b57)) + + +### Dependencies + +* The following workspace dependencies were updated + * dependencies + * @aws/lsp-core bumped from ^0.0.17 to ^0.0.18 + ## [0.1.22](https://github.com/aws/language-servers/compare/lsp-yaml/v0.1.21...lsp-yaml/v0.1.22) (2025-11-21) diff --git a/server/aws-lsp-yaml/package.json b/server/aws-lsp-yaml/package.json index 5837c1dac3..41fa4d7b05 100644 --- a/server/aws-lsp-yaml/package.json +++ b/server/aws-lsp-yaml/package.json @@ -1,6 +1,6 @@ { "name": "@aws/lsp-yaml", - "version": "0.1.22", + "version": "0.1.23", "description": "YAML Language Server", "main": "out/index.js", "repository": { @@ -27,7 +27,7 @@ }, "dependencies": { "@aws/language-server-runtimes": "^0.3.8", - "@aws/lsp-core": "^0.0.17", + "@aws/lsp-core": "^0.0.18", "vscode-languageserver": "^9.0.1", "vscode-languageserver-textdocument": "^1.0.8", "yaml-language-server": "1.13.0" From f76d5ed0bd8b5dbfc4840ef128a2adce9c6e6072 Mon Sep 17 00:00:00 2001 From: manodnyab <66754471+manodnyab@users.noreply.github.com> Date: Wed, 26 Nov 2025 17:28:15 -0800 Subject: [PATCH 32/36] chore: bump agentic version: 1.49.0 (#2529) Co-authored-by: aws-toolkit-automation <> --- app/aws-lsp-codewhisperer-runtimes/src/version.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/aws-lsp-codewhisperer-runtimes/src/version.json b/app/aws-lsp-codewhisperer-runtimes/src/version.json index 8454f067ee..5cf154e80a 100644 --- a/app/aws-lsp-codewhisperer-runtimes/src/version.json +++ b/app/aws-lsp-codewhisperer-runtimes/src/version.json @@ -1,3 +1,3 @@ { - "agenticChat": "1.48.0" + "agenticChat": "1.49.0" } From 29f08a60e9919026c4e1a2b2502148d5c738554b Mon Sep 17 00:00:00 2001 From: Pranav Firake Date: Mon, 1 Dec 2025 11:31:01 -0800 Subject: [PATCH 33/36] feat: adding new regions (#2532) Co-authored-by: Pranav Firake --- server/aws-lsp-codewhisperer/src/shared/constants.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/server/aws-lsp-codewhisperer/src/shared/constants.ts b/server/aws-lsp-codewhisperer/src/shared/constants.ts index ee8605d3da..88c97200a4 100644 --- a/server/aws-lsp-codewhisperer/src/shared/constants.ts +++ b/server/aws-lsp-codewhisperer/src/shared/constants.ts @@ -17,9 +17,14 @@ export const DEFAULT_ATX_FES_ENDPOINT_URL = 'https://api.transform.us-east-1.on. export const ATX_FES_ENDPOINTS = new Map([ [DEFAULT_ATX_FES_REGION, DEFAULT_ATX_FES_ENDPOINT_URL], - ['us-west-2', 'https://api.transform.us-west-2.on.aws/'], - ['eu-central-1', 'https://api.transform.eu-central-1.on.aws/'], - ['ap-southeast-2', 'https://api.transform.ap-southeast-2.on.aws/'], + ['us-west-2', 'https://api.transform.us-west-2.on.aws/'], //PDX + ['eu-central-1', 'https://api.transform.eu-central-1.on.aws/'], //FRA + ['ap-southeast-2', 'https://api.transform.ap-southeast-2.on.aws/'], //SYD + ['ap-northeast-1', 'https://api.transform.ap-northeast-1.on.aws/'], //NRT + ['ap-south-1', 'https://api.transform.ap-south-1.on.aws/'], //BOM + ['ca-central-1', 'https://api.transform.ca-central-1.on.aws/'], //YUL + ['ap-northeast-2', 'https://api.transform.ap-northeast-2.on.aws/'], //ICN + ['eu-west-2', 'https://api.transform.eu-west-2.on.aws/'], //LHR ]) export const ATX_FES_GAMMA_ENDPOINTS = new Map([ From c7b2296c591d96288cfa4494a971cfec433e5227 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 1 Dec 2025 12:03:48 -0800 Subject: [PATCH 34/36] chore(release): release packages from branch main (#2533) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .release-please-manifest.json | 2 +- package-lock.json | 2 +- server/aws-lsp-codewhisperer/CHANGELOG.md | 7 +++++++ server/aws-lsp-codewhisperer/package.json | 2 +- 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index c910214eaa..54864bcce2 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -2,7 +2,7 @@ "chat-client": "0.1.43", "core/aws-lsp-core": "0.0.18", "server/aws-lsp-antlr4": "0.1.22", - "server/aws-lsp-codewhisperer": "0.0.95", + "server/aws-lsp-codewhisperer": "0.0.96", "server/aws-lsp-json": "0.1.23", "server/aws-lsp-partiql": "0.0.20", "server/aws-lsp-yaml": "0.1.23" diff --git a/package-lock.json b/package-lock.json index cb78059e7d..abe58d3538 100644 --- a/package-lock.json +++ b/package-lock.json @@ -32624,7 +32624,7 @@ }, "server/aws-lsp-codewhisperer": { "name": "@aws/lsp-codewhisperer", - "version": "0.0.95", + "version": "0.0.96", "bundleDependencies": [ "@amzn/codewhisperer", "@amzn/codewhisperer-runtime", diff --git a/server/aws-lsp-codewhisperer/CHANGELOG.md b/server/aws-lsp-codewhisperer/CHANGELOG.md index bd38683dee..acaf4b9717 100644 --- a/server/aws-lsp-codewhisperer/CHANGELOG.md +++ b/server/aws-lsp-codewhisperer/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.0.96](https://github.com/aws/language-servers/compare/lsp-codewhisperer/v0.0.95...lsp-codewhisperer/v0.0.96) (2025-12-01) + + +### Features + +* adding new regions ([#2532](https://github.com/aws/language-servers/issues/2532)) ([29f08a6](https://github.com/aws/language-servers/commit/29f08a60e9919026c4e1a2b2502148d5c738554b)) + ## [0.0.95](https://github.com/aws/language-servers/compare/lsp-codewhisperer/v0.0.94...lsp-codewhisperer/v0.0.95) (2025-11-26) diff --git a/server/aws-lsp-codewhisperer/package.json b/server/aws-lsp-codewhisperer/package.json index 7efcfd4e81..5756cf9a2a 100644 --- a/server/aws-lsp-codewhisperer/package.json +++ b/server/aws-lsp-codewhisperer/package.json @@ -1,6 +1,6 @@ { "name": "@aws/lsp-codewhisperer", - "version": "0.0.95", + "version": "0.0.96", "description": "CodeWhisperer Language Server", "main": "out/index.js", "repository": { From 92402ec624d76eed53f733bca6892b7d98db4d43 Mon Sep 17 00:00:00 2001 From: chungjac Date: Mon, 1 Dec 2025 14:22:06 -0800 Subject: [PATCH 35/36] chore: bump agentic version: 1.50.0 (#2536) Co-authored-by: aws-toolkit-automation <> --- app/aws-lsp-codewhisperer-runtimes/src/version.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/aws-lsp-codewhisperer-runtimes/src/version.json b/app/aws-lsp-codewhisperer-runtimes/src/version.json index 5cf154e80a..405ea760e4 100644 --- a/app/aws-lsp-codewhisperer-runtimes/src/version.json +++ b/app/aws-lsp-codewhisperer-runtimes/src/version.json @@ -1,3 +1,3 @@ { - "agenticChat": "1.49.0" + "agenticChat": "1.50.0" } From d8c5c16c008a1bed102b47b45fd678d3d71033f8 Mon Sep 17 00:00:00 2001 From: Will Lo <96078566+Will-ShaoHua@users.noreply.github.com> Date: Thu, 4 Dec 2025 19:31:17 -0800 Subject: [PATCH 36/36] chore: log format (#2545) --- server/aws-lsp-codewhisperer/src/shared/codeWhispererService.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/aws-lsp-codewhisperer/src/shared/codeWhispererService.ts b/server/aws-lsp-codewhisperer/src/shared/codeWhispererService.ts index 8f364c91a0..82e9533b31 100644 --- a/server/aws-lsp-codewhisperer/src/shared/codeWhispererService.ts +++ b/server/aws-lsp-codewhisperer/src/shared/codeWhispererService.ts @@ -623,7 +623,7 @@ export class CodeWhispererServiceToken extends CodeWhispererServiceBase { rightContextLength: ${tokenRequest.fileContext?.rightFileContent?.length}, "language": ${tokenRequest.fileContext?.programmingLanguage?.languageName}, "supplementalContextCount": ${tokenRequest.supplementalContexts?.length ?? 0}, - "request.nextToken": ${tokenRequest.nextToken}` + "request.nextToken": ${tokenRequest.nextToken},\n` // "recentEdits": ${recentEditsLogStr}\n` const response = await this.client.send(new GenerateCompletionsCommand(this.withProfileArn(tokenRequest)))

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 fh%K$^3xz`+&_>{;%aNISK-rIo}T4VKD zWl@~wNMR-|%&aoF(XgzM@ea{$#yeece?&o!qNI|XBjX2+k~Ki-|xVjt;yagW#+1?49(^6se3Ibxor@EcMX04y_UMZ1s?JD)mmigx1)O$(jul@a`Fx>WlAhIoFELY{_dFGX64}5{`k7xAQ zfiNukg7>WyjMX;%@2}H-=E$pAlqS?IOTc4NE;lZY!Bf`+Y&5aVaz>FgqY-F*${Y`z zAtW$eOkmGWj4aJ|w34*Pe-n-nT3!DJMUc<*;Oha=;`W?c14$BP680v})C_7FMh6#a4fWP9vPjqGNY_A>T0G2~=;A zBF^qtEwrLy=Oo0)vXRTa!~UCN-U$#YY8TFx%Moia=Ij?_r=-m=FHk9eY0};AO$T96 z@Y7NAmz{>LD6e`<{>WlXh!QF2!trZh*Bkv6#fT(NAhPu7@P_?tybw)0kvkF#F|h;} zmU>lpF;2$899#uKUbBc))GgJnZMqk3T3^M=d?!-zBWUT7Zt?@~$BcTLE;ycrTM~A+ z1j=WXYxy5h0bP2Iqxvc$%KlPAc;AFD6#E;l-9lN+e`GR~loDFk@m$TeabN3)#Sjl+ zzBBA%e|A;ovXUiN%gh^toDh*V8Gd`*4F82^m0~6Ns5y1q(|YuDIFI5`2g3-;$D0!B zbv~Tk4sk7NK}^M_Yg?K*!QjgIpfi#kzBuae9K;f)^#JSf+Gr z16wJ1*ZD`*n*ZJTQ^$58!2o>IZ(8%FZOUdT7TTA^%8bX*as=J%qpa65#9!ZKja}EI z97|e=X}*^t->?a5)D-OQ+czn&O~@L5^A!fO_zlK@S~=e4Ek*t3fv(^@1ApD41lR5s zy~VlkE=}*LlT~do-)>F&MK+d~4uwRM*Ax1=WT+KO&EmU!cp~&Hp6w{L1HltZ zrBzz*q+P{^5d`&hPH>Xfq;>?GQgNL7aA8{DguBLR(pl_bTexENL>igg-I`O`j@}cY z1uqI6{O;W9u6X9Hc(tlecoNB|&nRxZmjo3#zxKX0E7pmVp(NEKuBZK6KmwyO=&g+( zB#q_a?utp~-E4e`Z&V;ux{gC6tGG&5nSwk+L_M{*{7IqJZByUNu@?VXC9&M_@#_UU zGNtLB>ASAEu