diff --git a/package-lock.json b/package-lock.json index 1d7ededed09..efd4569bc34 100644 --- a/package-lock.json +++ b/package-lock.json @@ -144,8 +144,6 @@ }, "node_modules/@aws-sdk/client-api-gateway": { "version": "3.693.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-api-gateway/-/client-api-gateway-3.693.0.tgz", - "integrity": "sha512-6Fz0YF4aQc1mrW5rGYYwXGntUDILsIkWgZvUkTDIVT5Hwyz9CmSeKOJCh8oESucEX6/N0UzVWnpW+Z36pElQUQ==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", @@ -197,6 +195,486 @@ } }, "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/client-sso": { + "version": "3.693.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.693.0", + "@aws-sdk/middleware-host-header": "3.693.0", + "@aws-sdk/middleware-logger": "3.693.0", + "@aws-sdk/middleware-recursion-detection": "3.693.0", + "@aws-sdk/middleware-user-agent": "3.693.0", + "@aws-sdk/region-config-resolver": "3.693.0", + "@aws-sdk/types": "3.692.0", + "@aws-sdk/util-endpoints": "3.693.0", + "@aws-sdk/util-user-agent-browser": "3.693.0", + "@aws-sdk/util-user-agent-node": "3.693.0", + "@smithy/config-resolver": "^3.0.11", + "@smithy/core": "^2.5.2", + "@smithy/fetch-http-handler": "^4.1.0", + "@smithy/hash-node": "^3.0.9", + "@smithy/invalid-dependency": "^3.0.9", + "@smithy/middleware-content-length": "^3.0.11", + "@smithy/middleware-endpoint": "^3.2.2", + "@smithy/middleware-retry": "^3.0.26", + "@smithy/middleware-serde": "^3.0.9", + "@smithy/middleware-stack": "^3.0.9", + "@smithy/node-config-provider": "^3.1.10", + "@smithy/node-http-handler": "^3.3.0", + "@smithy/protocol-http": "^4.1.6", + "@smithy/smithy-client": "^3.4.3", + "@smithy/types": "^3.7.0", + "@smithy/url-parser": "^3.0.9", + "@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.26", + "@smithy/util-defaults-mode-node": "^3.0.26", + "@smithy/util-endpoints": "^2.1.5", + "@smithy/util-middleware": "^3.0.9", + "@smithy/util-retry": "^3.0.9", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/client-sso-oidc": { + "version": "3.693.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.693.0", + "@aws-sdk/credential-provider-node": "3.693.0", + "@aws-sdk/middleware-host-header": "3.693.0", + "@aws-sdk/middleware-logger": "3.693.0", + "@aws-sdk/middleware-recursion-detection": "3.693.0", + "@aws-sdk/middleware-user-agent": "3.693.0", + "@aws-sdk/region-config-resolver": "3.693.0", + "@aws-sdk/types": "3.692.0", + "@aws-sdk/util-endpoints": "3.693.0", + "@aws-sdk/util-user-agent-browser": "3.693.0", + "@aws-sdk/util-user-agent-node": "3.693.0", + "@smithy/config-resolver": "^3.0.11", + "@smithy/core": "^2.5.2", + "@smithy/fetch-http-handler": "^4.1.0", + "@smithy/hash-node": "^3.0.9", + "@smithy/invalid-dependency": "^3.0.9", + "@smithy/middleware-content-length": "^3.0.11", + "@smithy/middleware-endpoint": "^3.2.2", + "@smithy/middleware-retry": "^3.0.26", + "@smithy/middleware-serde": "^3.0.9", + "@smithy/middleware-stack": "^3.0.9", + "@smithy/node-config-provider": "^3.1.10", + "@smithy/node-http-handler": "^3.3.0", + "@smithy/protocol-http": "^4.1.6", + "@smithy/smithy-client": "^3.4.3", + "@smithy/types": "^3.7.0", + "@smithy/url-parser": "^3.0.9", + "@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.26", + "@smithy/util-defaults-mode-node": "^3.0.26", + "@smithy/util-endpoints": "^2.1.5", + "@smithy/util-middleware": "^3.0.9", + "@smithy/util-retry": "^3.0.9", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.693.0" + } + }, + "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/client-sts": { + "version": "3.693.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/client-sso-oidc": "3.693.0", + "@aws-sdk/core": "3.693.0", + "@aws-sdk/credential-provider-node": "3.693.0", + "@aws-sdk/middleware-host-header": "3.693.0", + "@aws-sdk/middleware-logger": "3.693.0", + "@aws-sdk/middleware-recursion-detection": "3.693.0", + "@aws-sdk/middleware-user-agent": "3.693.0", + "@aws-sdk/region-config-resolver": "3.693.0", + "@aws-sdk/types": "3.692.0", + "@aws-sdk/util-endpoints": "3.693.0", + "@aws-sdk/util-user-agent-browser": "3.693.0", + "@aws-sdk/util-user-agent-node": "3.693.0", + "@smithy/config-resolver": "^3.0.11", + "@smithy/core": "^2.5.2", + "@smithy/fetch-http-handler": "^4.1.0", + "@smithy/hash-node": "^3.0.9", + "@smithy/invalid-dependency": "^3.0.9", + "@smithy/middleware-content-length": "^3.0.11", + "@smithy/middleware-endpoint": "^3.2.2", + "@smithy/middleware-retry": "^3.0.26", + "@smithy/middleware-serde": "^3.0.9", + "@smithy/middleware-stack": "^3.0.9", + "@smithy/node-config-provider": "^3.1.10", + "@smithy/node-http-handler": "^3.3.0", + "@smithy/protocol-http": "^4.1.6", + "@smithy/smithy-client": "^3.4.3", + "@smithy/types": "^3.7.0", + "@smithy/url-parser": "^3.0.9", + "@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.26", + "@smithy/util-defaults-mode-node": "^3.0.26", + "@smithy/util-endpoints": "^2.1.5", + "@smithy/util-middleware": "^3.0.9", + "@smithy/util-retry": "^3.0.9", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/core": { + "version": "3.693.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.692.0", + "@smithy/core": "^2.5.2", + "@smithy/node-config-provider": "^3.1.10", + "@smithy/property-provider": "^3.1.9", + "@smithy/protocol-http": "^4.1.6", + "@smithy/signature-v4": "^4.2.2", + "@smithy/smithy-client": "^3.4.3", + "@smithy/types": "^3.7.0", + "@smithy/util-middleware": "^3.0.9", + "fast-xml-parser": "4.4.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/credential-provider-http": { + "version": "3.693.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.693.0", + "@aws-sdk/types": "3.692.0", + "@smithy/fetch-http-handler": "^4.1.0", + "@smithy/node-http-handler": "^3.3.0", + "@smithy/property-provider": "^3.1.9", + "@smithy/protocol-http": "^4.1.6", + "@smithy/smithy-client": "^3.4.3", + "@smithy/types": "^3.7.0", + "@smithy/util-stream": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.693.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.693.0", + "@aws-sdk/credential-provider-env": "3.693.0", + "@aws-sdk/credential-provider-http": "3.693.0", + "@aws-sdk/credential-provider-process": "3.693.0", + "@aws-sdk/credential-provider-sso": "3.693.0", + "@aws-sdk/credential-provider-web-identity": "3.693.0", + "@aws-sdk/types": "3.692.0", + "@smithy/credential-provider-imds": "^3.2.6", + "@smithy/property-provider": "^3.1.9", + "@smithy/shared-ini-file-loader": "^3.1.10", + "@smithy/types": "^3.7.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.693.0" + } + }, + "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/credential-provider-node": { + "version": "3.693.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.693.0", + "@aws-sdk/credential-provider-http": "3.693.0", + "@aws-sdk/credential-provider-ini": "3.693.0", + "@aws-sdk/credential-provider-process": "3.693.0", + "@aws-sdk/credential-provider-sso": "3.693.0", + "@aws-sdk/credential-provider-web-identity": "3.693.0", + "@aws-sdk/types": "3.692.0", + "@smithy/credential-provider-imds": "^3.2.6", + "@smithy/property-provider": "^3.1.9", + "@smithy/shared-ini-file-loader": "^3.1.10", + "@smithy/types": "^3.7.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.693.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/client-sso": "3.693.0", + "@aws-sdk/core": "3.693.0", + "@aws-sdk/token-providers": "3.693.0", + "@aws-sdk/types": "3.692.0", + "@smithy/property-provider": "^3.1.9", + "@smithy/shared-ini-file-loader": "^3.1.10", + "@smithy/types": "^3.7.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.693.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.693.0", + "@aws-sdk/types": "3.692.0", + "@smithy/property-provider": "^3.1.9", + "@smithy/types": "^3.7.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.693.0" + } + }, + "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/middleware-host-header": { + "version": "3.693.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.692.0", + "@smithy/protocol-http": "^4.1.6", + "@smithy/types": "^3.7.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/middleware-logger": { + "version": "3.693.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.692.0", + "@smithy/types": "^3.7.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.693.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.692.0", + "@smithy/protocol-http": "^4.1.6", + "@smithy/types": "^3.7.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.693.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.693.0", + "@aws-sdk/types": "3.692.0", + "@aws-sdk/util-endpoints": "3.693.0", + "@smithy/core": "^2.5.2", + "@smithy/protocol-http": "^4.1.6", + "@smithy/types": "^3.7.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/region-config-resolver": { + "version": "3.693.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.692.0", + "@smithy/node-config-provider": "^3.1.10", + "@smithy/types": "^3.7.0", + "@smithy/util-config-provider": "^3.0.0", + "@smithy/util-middleware": "^3.0.9", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/token-providers": { + "version": "3.693.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.692.0", + "@smithy/property-provider": "^3.1.9", + "@smithy/shared-ini-file-loader": "^3.1.10", + "@smithy/types": "^3.7.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sso-oidc": "^3.693.0" + } + }, + "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/util-endpoints": { + "version": "3.693.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.692.0", + "@smithy/types": "^3.7.0", + "@smithy/util-endpoints": "^2.1.5", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.693.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.692.0", + "@smithy/types": "^3.7.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.693.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/middleware-user-agent": "3.693.0", + "@aws-sdk/types": "3.692.0", + "@smithy/node-config-provider": "^3.1.10", + "@smithy/types": "^3.7.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } + } + }, + "node_modules/@aws-sdk/client-api-gateway/node_modules/@smithy/is-array-buffer": { + "version": "3.0.0", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/client-api-gateway/node_modules/@smithy/util-buffer-from": { + "version": "3.0.0", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/client-api-gateway/node_modules/@smithy/util-utf8": { + "version": "3.0.0", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/client-apprunner": { + "version": "3.693.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-apprunner/-/client-apprunner-3.693.0.tgz", + "integrity": "sha512-6q3yxzp+1fZ2+O7NC8skDz7GSRH6fCcRfT9UU1nX3+kIx/C9cbutnM/WxU35vqJrnT4hq45cUoWj52xZgxFgAA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/client-sso-oidc": "3.693.0", + "@aws-sdk/client-sts": "3.693.0", + "@aws-sdk/core": "3.693.0", + "@aws-sdk/credential-provider-node": "3.693.0", + "@aws-sdk/middleware-host-header": "3.693.0", + "@aws-sdk/middleware-logger": "3.693.0", + "@aws-sdk/middleware-recursion-detection": "3.693.0", + "@aws-sdk/middleware-user-agent": "3.693.0", + "@aws-sdk/region-config-resolver": "3.693.0", + "@aws-sdk/types": "3.692.0", + "@aws-sdk/util-endpoints": "3.693.0", + "@aws-sdk/util-user-agent-browser": "3.693.0", + "@aws-sdk/util-user-agent-node": "3.693.0", + "@smithy/config-resolver": "^3.0.11", + "@smithy/core": "^2.5.2", + "@smithy/fetch-http-handler": "^4.1.0", + "@smithy/hash-node": "^3.0.9", + "@smithy/invalid-dependency": "^3.0.9", + "@smithy/middleware-content-length": "^3.0.11", + "@smithy/middleware-endpoint": "^3.2.2", + "@smithy/middleware-retry": "^3.0.26", + "@smithy/middleware-serde": "^3.0.9", + "@smithy/middleware-stack": "^3.0.9", + "@smithy/node-config-provider": "^3.1.10", + "@smithy/node-http-handler": "^3.3.0", + "@smithy/protocol-http": "^4.1.6", + "@smithy/smithy-client": "^3.4.3", + "@smithy/types": "^3.7.0", + "@smithy/url-parser": "^3.0.9", + "@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.26", + "@smithy/util-defaults-mode-node": "^3.0.26", + "@smithy/util-endpoints": "^2.1.5", + "@smithy/util-middleware": "^3.0.9", + "@smithy/util-retry": "^3.0.9", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/client-apprunner/node_modules/@aws-sdk/client-sso": { "version": "3.693.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.693.0.tgz", "integrity": "sha512-QEynrBC26x6TG9ZMzApR/kZ3lmt4lEIs2D+cHuDxt6fDGzahBUsQFBwJqhizzsM97JJI5YvmJhmihoYjdSSaXA==", @@ -245,7 +723,7 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/client-sso-oidc": { + "node_modules/@aws-sdk/client-apprunner/node_modules/@aws-sdk/client-sso-oidc": { "version": "3.693.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.693.0.tgz", "integrity": "sha512-UEDbYlYtK/e86OOMyFR4zEPyenIxDzO2DRdz3fwVW7RzZ94wfmSwBh/8skzPTuY1G7sI064cjHW0b0QG01Sdtg==", @@ -298,7 +776,7 @@ "@aws-sdk/client-sts": "^3.693.0" } }, - "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/client-sts": { + "node_modules/@aws-sdk/client-apprunner/node_modules/@aws-sdk/client-sts": { "version": "3.693.0", "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.693.0.tgz", "integrity": "sha512-4S2y7VEtvdnjJX4JPl4kDQlslxXEZFnC50/UXVUYSt/AMc5A/GgspFNA5FVz4E3Gwpfobbf23hR2NBF8AGvYoQ==", @@ -349,7 +827,7 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/core": { + "node_modules/@aws-sdk/client-apprunner/node_modules/@aws-sdk/core": { "version": "3.693.0", "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.693.0.tgz", "integrity": "sha512-v6Z/kWmLFqRLDPEwl9hJGhtTgIFHjZugSfF1Yqffdxf4n1AWgtHS7qSegakuMyN5pP4K2tvUD8qHJ+gGe2Bw2A==", @@ -371,7 +849,7 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/credential-provider-http": { + "node_modules/@aws-sdk/client-apprunner/node_modules/@aws-sdk/credential-provider-http": { "version": "3.693.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.693.0.tgz", "integrity": "sha512-sL8MvwNJU7ZpD7/d2VVb3by1GknIJUxzTIgYtVkDVA/ojo+KRQSSHxcj0EWWXF5DTSh2Tm+LrEug3y1ZyKHsDA==", @@ -392,7 +870,7 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/credential-provider-ini": { + "node_modules/@aws-sdk/client-apprunner/node_modules/@aws-sdk/credential-provider-ini": { "version": "3.693.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.693.0.tgz", "integrity": "sha512-kvaa4mXhCCOuW7UQnBhYqYfgWmwy7WSBSDClutwSLPZvgrhYj2l16SD2lN4IfYdxARYMJJ1lFYp3/jJG/9Yk4Q==", @@ -418,7 +896,7 @@ "@aws-sdk/client-sts": "^3.693.0" } }, - "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/credential-provider-node": { + "node_modules/@aws-sdk/client-apprunner/node_modules/@aws-sdk/credential-provider-node": { "version": "3.693.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.693.0.tgz", "integrity": "sha512-42WMsBjTNnjYxYuM3qD/Nq+8b7UdMopUq5OduMDxoM3mFTV6PXMMnfI4Z1TNnR4tYRvPXAnuNltF6xmjKbSJRA==", @@ -441,7 +919,7 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/credential-provider-sso": { + "node_modules/@aws-sdk/client-apprunner/node_modules/@aws-sdk/credential-provider-sso": { "version": "3.693.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.693.0.tgz", "integrity": "sha512-479UlJxY+BFjj3pJFYUNC0DCMrykuG7wBAXfsvZqQxKUa83DnH5Q1ID/N2hZLkxjGd4ZW0AC3lTOMxFelGzzpQ==", @@ -460,7 +938,7 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/credential-provider-web-identity": { + "node_modules/@aws-sdk/client-apprunner/node_modules/@aws-sdk/credential-provider-web-identity": { "version": "3.693.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.693.0.tgz", "integrity": "sha512-8LB210Pr6VeCiSb2hIra+sAH4KUBLyGaN50axHtIgufVK8jbKIctTZcVY5TO9Se+1107TsruzeXS7VeqVdJfFA==", @@ -479,7 +957,7 @@ "@aws-sdk/client-sts": "^3.693.0" } }, - "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/middleware-host-header": { + "node_modules/@aws-sdk/client-apprunner/node_modules/@aws-sdk/middleware-host-header": { "version": "3.693.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.693.0.tgz", "integrity": "sha512-BCki6sAZ5jYwIN/t3ElCiwerHad69ipHwPsDCxJQyeiOnJ8HG+lEpnVIfrnI8A0fLQNSF3Gtx6ahfBpKiv1Oug==", @@ -494,7 +972,7 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/middleware-logger": { + "node_modules/@aws-sdk/client-apprunner/node_modules/@aws-sdk/middleware-logger": { "version": "3.693.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.693.0.tgz", "integrity": "sha512-dXnXDPr+wIiJ1TLADACI1g9pkSB21KkMIko2u4CJ2JCBoxi5IqeTnVoa6YcC8GdFNVRl+PorZ3Zqfmf1EOTC6w==", @@ -508,7 +986,7 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/middleware-recursion-detection": { + "node_modules/@aws-sdk/client-apprunner/node_modules/@aws-sdk/middleware-recursion-detection": { "version": "3.693.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.693.0.tgz", "integrity": "sha512-0LDmM+VxXp0u3rG0xQRWD/q6Ubi7G8I44tBPahevD5CaiDZTkmNTrVUf0VEJgVe0iCKBppACMBDkLB0/ETqkFw==", @@ -523,7 +1001,7 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/middleware-user-agent": { + "node_modules/@aws-sdk/client-apprunner/node_modules/@aws-sdk/middleware-user-agent": { "version": "3.693.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.693.0.tgz", "integrity": "sha512-/KUq/KEpFFbQmNmpp7SpAtFAdViquDfD2W0QcG07zYBfz9MwE2ig48ALynXm5sMpRmnG7sJXjdvPtTsSVPfkiw==", @@ -541,7 +1019,7 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/region-config-resolver": { + "node_modules/@aws-sdk/client-apprunner/node_modules/@aws-sdk/region-config-resolver": { "version": "3.693.0", "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.693.0.tgz", "integrity": "sha512-YLUkMsUY0GLW/nfwlZ69cy1u07EZRmsv8Z9m0qW317/EZaVx59hcvmcvb+W4bFqj5E8YImTjoGfE4cZ0F9mkyw==", @@ -558,7 +1036,7 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/token-providers": { + "node_modules/@aws-sdk/client-apprunner/node_modules/@aws-sdk/token-providers": { "version": "3.693.0", "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.693.0.tgz", "integrity": "sha512-nDBTJMk1l/YmFULGfRbToOA2wjf+FkQT4dMgYCv+V9uSYsMzQj8A7Tha2dz9yv4vnQgYaEiErQ8d7HVyXcVEoA==", @@ -577,7 +1055,7 @@ "@aws-sdk/client-sso-oidc": "^3.693.0" } }, - "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/util-endpoints": { + "node_modules/@aws-sdk/client-apprunner/node_modules/@aws-sdk/util-endpoints": { "version": "3.693.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.693.0.tgz", "integrity": "sha512-eo4F6DRQ/kxS3gxJpLRv+aDNy76DxQJL5B3DPzpr9Vkq0ygVoi4GT5oIZLVaAVIJmi6k5qq9dLsYZfWLUxJJSg==", @@ -592,7 +1070,7 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/util-user-agent-browser": { + "node_modules/@aws-sdk/client-apprunner/node_modules/@aws-sdk/util-user-agent-browser": { "version": "3.693.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.693.0.tgz", "integrity": "sha512-6EUfuKOujtddy18OLJUaXfKBgs+UcbZ6N/3QV4iOkubCUdeM1maIqs++B9bhCbWeaeF5ORizJw5FTwnyNjE/mw==", @@ -604,7 +1082,7 @@ "tslib": "^2.6.2" } }, - "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/util-user-agent-node": { + "node_modules/@aws-sdk/client-apprunner/node_modules/@aws-sdk/util-user-agent-node": { "version": "3.693.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.693.0.tgz", "integrity": "sha512-td0OVX8m5ZKiXtecIDuzY3Y3UZIzvxEr57Hp21NOwieqKCG2UeyQWWeGPv0FQaU7dpTkvFmVNI+tx9iB8V/Nhg==", @@ -628,7 +1106,7 @@ } } }, - "node_modules/@aws-sdk/client-api-gateway/node_modules/@smithy/is-array-buffer": { + "node_modules/@aws-sdk/client-apprunner/node_modules/@smithy/is-array-buffer": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", @@ -640,7 +1118,7 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-api-gateway/node_modules/@smithy/util-buffer-from": { + "node_modules/@aws-sdk/client-apprunner/node_modules/@smithy/util-buffer-from": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", @@ -653,7 +1131,7 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-api-gateway/node_modules/@smithy/util-utf8": { + "node_modules/@aws-sdk/client-apprunner/node_modules/@smithy/util-utf8": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", @@ -668,8 +1146,6 @@ }, "node_modules/@aws-sdk/client-cloudcontrol": { "version": "3.693.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudcontrol/-/client-cloudcontrol-3.693.0.tgz", - "integrity": "sha512-kD5uaXjZ7KCLg+JTU6c49Ic1LkM821RNVj82Tgjmx7hS1JpChmf/q0v3XxRQU9GzA4Ip+gDxH/je7dzL9OxBIQ==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", @@ -723,8 +1199,6 @@ }, "node_modules/@aws-sdk/client-cloudcontrol/node_modules/@aws-sdk/client-sso": { "version": "3.693.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.693.0.tgz", - "integrity": "sha512-QEynrBC26x6TG9ZMzApR/kZ3lmt4lEIs2D+cHuDxt6fDGzahBUsQFBwJqhizzsM97JJI5YvmJhmihoYjdSSaXA==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", @@ -772,8 +1246,6 @@ }, "node_modules/@aws-sdk/client-cloudcontrol/node_modules/@aws-sdk/client-sso-oidc": { "version": "3.693.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.693.0.tgz", - "integrity": "sha512-UEDbYlYtK/e86OOMyFR4zEPyenIxDzO2DRdz3fwVW7RzZ94wfmSwBh/8skzPTuY1G7sI064cjHW0b0QG01Sdtg==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", @@ -825,8 +1297,6 @@ }, "node_modules/@aws-sdk/client-cloudcontrol/node_modules/@aws-sdk/client-sts": { "version": "3.693.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.693.0.tgz", - "integrity": "sha512-4S2y7VEtvdnjJX4JPl4kDQlslxXEZFnC50/UXVUYSt/AMc5A/GgspFNA5FVz4E3Gwpfobbf23hR2NBF8AGvYoQ==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", @@ -876,8 +1346,6 @@ }, "node_modules/@aws-sdk/client-cloudcontrol/node_modules/@aws-sdk/core": { "version": "3.693.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.693.0.tgz", - "integrity": "sha512-v6Z/kWmLFqRLDPEwl9hJGhtTgIFHjZugSfF1Yqffdxf4n1AWgtHS7qSegakuMyN5pP4K2tvUD8qHJ+gGe2Bw2A==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.692.0", @@ -898,8 +1366,6 @@ }, "node_modules/@aws-sdk/client-cloudcontrol/node_modules/@aws-sdk/credential-provider-http": { "version": "3.693.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.693.0.tgz", - "integrity": "sha512-sL8MvwNJU7ZpD7/d2VVb3by1GknIJUxzTIgYtVkDVA/ojo+KRQSSHxcj0EWWXF5DTSh2Tm+LrEug3y1ZyKHsDA==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/core": "3.693.0", @@ -919,8 +1385,6 @@ }, "node_modules/@aws-sdk/client-cloudcontrol/node_modules/@aws-sdk/credential-provider-ini": { "version": "3.693.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.693.0.tgz", - "integrity": "sha512-kvaa4mXhCCOuW7UQnBhYqYfgWmwy7WSBSDClutwSLPZvgrhYj2l16SD2lN4IfYdxARYMJJ1lFYp3/jJG/9Yk4Q==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/core": "3.693.0", @@ -945,8 +1409,6 @@ }, "node_modules/@aws-sdk/client-cloudcontrol/node_modules/@aws-sdk/credential-provider-node": { "version": "3.693.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.693.0.tgz", - "integrity": "sha512-42WMsBjTNnjYxYuM3qD/Nq+8b7UdMopUq5OduMDxoM3mFTV6PXMMnfI4Z1TNnR4tYRvPXAnuNltF6xmjKbSJRA==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/credential-provider-env": "3.693.0", @@ -968,8 +1430,6 @@ }, "node_modules/@aws-sdk/client-cloudcontrol/node_modules/@aws-sdk/credential-provider-sso": { "version": "3.693.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.693.0.tgz", - "integrity": "sha512-479UlJxY+BFjj3pJFYUNC0DCMrykuG7wBAXfsvZqQxKUa83DnH5Q1ID/N2hZLkxjGd4ZW0AC3lTOMxFelGzzpQ==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/client-sso": "3.693.0", @@ -987,8 +1447,6 @@ }, "node_modules/@aws-sdk/client-cloudcontrol/node_modules/@aws-sdk/credential-provider-web-identity": { "version": "3.693.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.693.0.tgz", - "integrity": "sha512-8LB210Pr6VeCiSb2hIra+sAH4KUBLyGaN50axHtIgufVK8jbKIctTZcVY5TO9Se+1107TsruzeXS7VeqVdJfFA==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/core": "3.693.0", @@ -1006,8 +1464,6 @@ }, "node_modules/@aws-sdk/client-cloudcontrol/node_modules/@aws-sdk/middleware-host-header": { "version": "3.693.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.693.0.tgz", - "integrity": "sha512-BCki6sAZ5jYwIN/t3ElCiwerHad69ipHwPsDCxJQyeiOnJ8HG+lEpnVIfrnI8A0fLQNSF3Gtx6ahfBpKiv1Oug==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.692.0", @@ -1021,8 +1477,6 @@ }, "node_modules/@aws-sdk/client-cloudcontrol/node_modules/@aws-sdk/middleware-logger": { "version": "3.693.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.693.0.tgz", - "integrity": "sha512-dXnXDPr+wIiJ1TLADACI1g9pkSB21KkMIko2u4CJ2JCBoxi5IqeTnVoa6YcC8GdFNVRl+PorZ3Zqfmf1EOTC6w==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.692.0", @@ -1035,8 +1489,6 @@ }, "node_modules/@aws-sdk/client-cloudcontrol/node_modules/@aws-sdk/middleware-recursion-detection": { "version": "3.693.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.693.0.tgz", - "integrity": "sha512-0LDmM+VxXp0u3rG0xQRWD/q6Ubi7G8I44tBPahevD5CaiDZTkmNTrVUf0VEJgVe0iCKBppACMBDkLB0/ETqkFw==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.692.0", @@ -1050,8 +1502,6 @@ }, "node_modules/@aws-sdk/client-cloudcontrol/node_modules/@aws-sdk/middleware-user-agent": { "version": "3.693.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.693.0.tgz", - "integrity": "sha512-/KUq/KEpFFbQmNmpp7SpAtFAdViquDfD2W0QcG07zYBfz9MwE2ig48ALynXm5sMpRmnG7sJXjdvPtTsSVPfkiw==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/core": "3.693.0", @@ -1068,8 +1518,6 @@ }, "node_modules/@aws-sdk/client-cloudcontrol/node_modules/@aws-sdk/region-config-resolver": { "version": "3.693.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.693.0.tgz", - "integrity": "sha512-YLUkMsUY0GLW/nfwlZ69cy1u07EZRmsv8Z9m0qW317/EZaVx59hcvmcvb+W4bFqj5E8YImTjoGfE4cZ0F9mkyw==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.692.0", @@ -1085,8 +1533,6 @@ }, "node_modules/@aws-sdk/client-cloudcontrol/node_modules/@aws-sdk/token-providers": { "version": "3.693.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.693.0.tgz", - "integrity": "sha512-nDBTJMk1l/YmFULGfRbToOA2wjf+FkQT4dMgYCv+V9uSYsMzQj8A7Tha2dz9yv4vnQgYaEiErQ8d7HVyXcVEoA==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.692.0", @@ -1104,8 +1550,6 @@ }, "node_modules/@aws-sdk/client-cloudcontrol/node_modules/@aws-sdk/util-endpoints": { "version": "3.693.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.693.0.tgz", - "integrity": "sha512-eo4F6DRQ/kxS3gxJpLRv+aDNy76DxQJL5B3DPzpr9Vkq0ygVoi4GT5oIZLVaAVIJmi6k5qq9dLsYZfWLUxJJSg==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.692.0", @@ -1119,8 +1563,6 @@ }, "node_modules/@aws-sdk/client-cloudcontrol/node_modules/@aws-sdk/util-user-agent-browser": { "version": "3.693.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.693.0.tgz", - "integrity": "sha512-6EUfuKOujtddy18OLJUaXfKBgs+UcbZ6N/3QV4iOkubCUdeM1maIqs++B9bhCbWeaeF5ORizJw5FTwnyNjE/mw==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.692.0", @@ -1131,8 +1573,6 @@ }, "node_modules/@aws-sdk/client-cloudcontrol/node_modules/@aws-sdk/util-user-agent-node": { "version": "3.693.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.693.0.tgz", - "integrity": "sha512-td0OVX8m5ZKiXtecIDuzY3Y3UZIzvxEr57Hp21NOwieqKCG2UeyQWWeGPv0FQaU7dpTkvFmVNI+tx9iB8V/Nhg==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/middleware-user-agent": "3.693.0", @@ -1155,8 +1595,6 @@ }, "node_modules/@aws-sdk/client-cloudcontrol/node_modules/@smithy/is-array-buffer": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", - "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" @@ -1167,8 +1605,6 @@ }, "node_modules/@aws-sdk/client-cloudcontrol/node_modules/@smithy/util-buffer-from": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", - "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", "license": "Apache-2.0", "dependencies": { "@smithy/is-array-buffer": "^3.0.0", @@ -1180,8 +1616,6 @@ }, "node_modules/@aws-sdk/client-cloudcontrol/node_modules/@smithy/util-utf8": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", - "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", "license": "Apache-2.0", "dependencies": { "@smithy/util-buffer-from": "^3.0.0", @@ -9319,8 +9753,6 @@ }, "node_modules/@aws-sdk/middleware-sdk-api-gateway": { "version": "3.693.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-api-gateway/-/middleware-sdk-api-gateway-3.693.0.tgz", - "integrity": "sha512-SvvrnN1+hC0DmXBA/QA9aEEgf0+YIsGuydX43y3gej0wQGF6jrdMyOoBumKCmOmvnOqbDSrBCW9RhdLVPauQJw==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "3.692.0", @@ -10492,9 +10924,8 @@ }, "node_modules/@aws-toolkits/telemetry": { "version": "1.0.308", - "resolved": "https://registry.npmjs.org/@aws-toolkits/telemetry/-/telemetry-1.0.308.tgz", - "integrity": "sha512-cDyQABBXbfVyNpLBB7mcosH0sPuwGmCtFXToOdwHpxVTOcIUAlHtshhpaqDEoMbCO/jFAq28mAUYyk4xtBZogg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "ajv": "^6.12.6", "cross-spawn": "^7.0.6", @@ -10507,9 +10938,8 @@ }, "node_modules/@aws/mynah-ui": { "version": "4.25.1", - "resolved": "https://registry.npmjs.org/@aws/mynah-ui/-/mynah-ui-4.25.1.tgz", - "integrity": "sha512-CdOaaFzeG/f1PbqmTTG2xcYC/tIfvYC5RXKOyXswRGbL+Eh5Sec0DwYJQirhK2fpVC6FHsIni3t1o86PiOqFZg==", "hasInstallScript": true, + "license": "Apache License 2.0", "dependencies": { "escape-html": "^1.0.3", "highlight.js": "^11.11.0", @@ -22636,9 +23066,8 @@ }, "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", @@ -24314,6 +24743,7 @@ "@amzn/amazon-q-developer-streaming-client": "file:../../src.gen/@amzn/amazon-q-developer-streaming-client", "@amzn/codewhisperer-streaming": "file:../../src.gen/@amzn/codewhisperer-streaming", "@aws-sdk/client-api-gateway": "<3.696.0", + "@aws-sdk/client-apprunner": "<3.696.0", "@aws-sdk/client-cloudcontrol": "<3.696.0", "@aws-sdk/client-cloudformation": "<3.696.0", "@aws-sdk/client-cloudwatch-logs": "<3.696.0", @@ -28883,7 +29313,7 @@ } }, "src.gen/@amzn/codewhisperer-streaming/node_modules/downlevel-dts/node_modules/typescript": { - "version": "5.8.0-dev.20250214", + "version": "5.9.0-dev.20250314", "dev": true, "license": "Apache-2.0", "bin": { diff --git a/packages/core/package.json b/packages/core/package.json index 3223ca7e0c8..cfd56511826 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -510,6 +510,7 @@ "@aws-sdk/client-ssm": "<3.696.0", "@aws-sdk/client-sso": "<3.696.0", "@aws-sdk/client-sso-oidc": "<3.696.0", + "@aws-sdk/client-apprunner": "<3.696.0", "@aws-sdk/credential-provider-env": "<3.696.0", "@aws-sdk/credential-provider-process": "<3.696.0", "@aws-sdk/credential-provider-sso": "<3.696.0", diff --git a/packages/core/src/awsService/apprunner/commands/createServiceFromEcr.ts b/packages/core/src/awsService/apprunner/commands/createServiceFromEcr.ts index 52e847723c5..dfd2c3df099 100644 --- a/packages/core/src/awsService/apprunner/commands/createServiceFromEcr.ts +++ b/packages/core/src/awsService/apprunner/commands/createServiceFromEcr.ts @@ -8,13 +8,13 @@ import { EcrRepositoryNode } from '../../../awsService/ecr/explorer/ecrRepositor import { EcrTagNode } from '../../../awsService/ecr/explorer/ecrTagNode' import { CreateAppRunnerServiceWizard } from '../wizards/apprunnerCreateServiceWizard' -import { DefaultAppRunnerClient } from '../../../shared/clients/apprunnerClient' +import { AppRunnerClient } from '../../../shared/clients/apprunner' import { telemetry } from '../../../shared/telemetry/telemetry' import { Result } from '../../../shared/telemetry/telemetry' export async function createFromEcr( node: EcrTagNode | EcrRepositoryNode, - client = new DefaultAppRunnerClient(node.regionCode) + client = new AppRunnerClient(node.regionCode) ): Promise { let telemetryResult: Result = 'Failed' diff --git a/packages/core/src/awsService/apprunner/explorer/apprunnerNode.ts b/packages/core/src/awsService/apprunner/explorer/apprunnerNode.ts index 4eb3c4bcf5b..6e8bc496472 100644 --- a/packages/core/src/awsService/apprunner/explorer/apprunnerNode.ts +++ b/packages/core/src/awsService/apprunner/explorer/apprunnerNode.ts @@ -8,15 +8,13 @@ import { AWSTreeNodeBase } from '../../../shared/treeview/nodes/awsTreeNodeBase' import { AppRunnerServiceNode } from './apprunnerServiceNode' import { PlaceholderNode } from '../../../shared/treeview/nodes/placeholderNode' import * as nls from 'vscode-nls' -import { AppRunnerClient } from '../../../shared/clients/apprunnerClient' -import { getPaginatedAwsCallIter } from '../../../shared/utilities/collectionUtils' -import { AppRunner } from 'aws-sdk' +import { AppRunnerClient, CreateServiceRequest, ServiceSummary } from '../../../shared/clients/apprunner' import { PollingSet } from '../../../shared/utilities/pollingSet' const localize = nls.loadMessageBundle() export class AppRunnerNode extends AWSTreeNodeBase { - private readonly serviceNodes: Map = new Map() + private readonly serviceNodes: Map = new Map() private readonly pollingSet: PollingSet = new PollingSet(20000, this.refresh.bind(this)) public constructor( @@ -43,30 +41,10 @@ export class AppRunnerNode extends AWSTreeNodeBase { }) } - private async getServiceSummaries(request: AppRunner.ListServicesRequest = {}): Promise { - const iterator = getPaginatedAwsCallIter({ - awsCall: async (request) => await this.client.listServices(request), - nextTokenNames: { - request: 'NextToken', - response: 'NextToken', - }, - request, - }) - - const services: AppRunner.Service[] = [] - - while (true) { - const next = await iterator.next() - - // eslint-disable-next-line unicorn/no-array-for-each - next.value.ServiceSummaryList.forEach((summary: AppRunner.Service) => services.push(summary)) - - if (next.done) { - break - } - } - - return services + private async getServiceSummaries(): Promise { + // TODO: avoid resolving all services at once. + const serviceCollection = this.client.paginateServices({}) + return await serviceCollection.flatten().promise() } public async updateChildren(): Promise { @@ -107,7 +85,7 @@ export class AppRunnerNode extends AWSTreeNodeBase { this.pollingSet.delete(id) } - public async createService(request: AppRunner.CreateServiceRequest): Promise { + public async createService(request: CreateServiceRequest): Promise { await this.client.createService(request) this.refresh() } diff --git a/packages/core/src/awsService/apprunner/explorer/apprunnerServiceNode.ts b/packages/core/src/awsService/apprunner/explorer/apprunnerServiceNode.ts index 66d578ca0ee..7a50f6f53f4 100644 --- a/packages/core/src/awsService/apprunner/explorer/apprunnerServiceNode.ts +++ b/packages/core/src/awsService/apprunner/explorer/apprunnerServiceNode.ts @@ -4,8 +4,7 @@ */ import AsyncLock from 'async-lock' -import { AppRunnerClient } from '../../../shared/clients/apprunnerClient' -import { AppRunner } from 'aws-sdk' +import { AppRunnerClient, ServiceSummary } from '../../../shared/clients/apprunner' import { AppRunnerNode } from './apprunnerNode' import { toArrayAsync, toMap } from '../../../shared/utilities/collectionUtils' @@ -15,6 +14,7 @@ import { AWSResourceNode } from '../../../shared/treeview/nodes/awsResourceNode' import * as nls from 'vscode-nls' import { getLogger } from '../../../shared/logger/logger' import { getIcon } from '../../../shared/icons' +import * as AppRunner from '@aws-sdk/client-apprunner' import { CloudWatchLogsClient } from '../../../shared/clients/cloudWatchLogs' import { LogGroup } from '@aws-sdk/client-cloudwatch-logs' const localize = nls.loadMessageBundle() @@ -41,7 +41,7 @@ export class AppRunnerServiceNode extends CloudWatchLogsBase implements AWSResou constructor( public readonly parent: AppRunnerNode, private readonly client: AppRunnerClient, - private _info: AppRunner.Service, + private _info: ServiceSummary, private currentOperation: AppRunner.OperationSummary & { Type?: ServiceOperation } = {}, cloudwatchClient = new CloudWatchLogsClient(client.regionCode) ) { @@ -55,7 +55,7 @@ export class AppRunnerServiceNode extends CloudWatchLogsBase implements AWSResou this.update(_info) } - public get info(): Readonly { + public get info(): Readonly { return this._info } @@ -81,7 +81,7 @@ export class AppRunnerServiceNode extends CloudWatchLogsBase implements AWSResou this.label = `${this._info.ServiceName} [${displayStatus}]` } - public update(info: AppRunner.ServiceSummary | AppRunner.Service): void { + public update(info: ServiceSummary): void { // update can be called multiple times during an event loop // this would rarely cause the node's status to appear as 'Operation in progress' this.lock @@ -135,7 +135,7 @@ export class AppRunnerServiceNode extends CloudWatchLogsBase implements AWSResou }) } - private updateInfo(info: AppRunner.ServiceSummary | AppRunner.Service): void { + private updateInfo(info: ServiceSummary): void { if (info.Status === 'OPERATION_IN_PROGRESS' && this.currentOperation.Type === undefined) { // Asynchronous since it is not currently possible for race-conditions to occur with updating operations void this.updateOperation() @@ -171,13 +171,14 @@ export class AppRunnerServiceNode extends CloudWatchLogsBase implements AWSResou this.setOperation(this._info, resp.OperationId, 'START_DEPLOYMENT') } - public setOperation(info: AppRunner.Service, id?: string, type?: ServiceOperation): void { + // eslint-disable-next-line @typescript-eslint/no-duplicate-type-constituents + public setOperation(info: ServiceSummary, id?: string, type?: ServiceOperation): void { this.currentOperation.Id = id this.currentOperation.Type = type this.update(info) } - public async describe(): Promise { + public async describe(): Promise { const resp = await this.client.describeService({ ServiceArn: this.arn }) this.update(resp.Service) return this._info diff --git a/packages/core/src/awsService/apprunner/wizards/apprunnerCreateServiceWizard.ts b/packages/core/src/awsService/apprunner/wizards/apprunnerCreateServiceWizard.ts index 3f29d9b39cc..913fdf93bec 100644 --- a/packages/core/src/awsService/apprunner/wizards/apprunnerCreateServiceWizard.ts +++ b/packages/core/src/awsService/apprunner/wizards/apprunnerCreateServiceWizard.ts @@ -3,7 +3,6 @@ * SPDX-License-Identifier: Apache-2.0 */ -import { AppRunner } from 'aws-sdk' import * as nls from 'vscode-nls' import { createCommonButtons, QuickInputToggleButton } from '../../../shared/ui/buttons' import * as input from '../../../shared/ui/inputPrompter' @@ -17,8 +16,9 @@ import { makeDeploymentButton } from './deploymentButton' import { createExitPrompter } from '../../../shared/ui/common/exitPrompter' import { IamClient } from '../../../shared/clients/iam' import { DefaultEcrClient } from '../../../shared/clients/ecrClient' -import { DefaultAppRunnerClient } from '../../../shared/clients/apprunnerClient' +import { AppRunnerClient, CreateServiceRequest, SourceConfiguration } from '../../../shared/clients/apprunner' import { getAppRunnerCreateServiceDocUrl } from '../../../shared/extensionUtilities' +import * as AppRunner from '@aws-sdk/client-apprunner' const localize = nls.loadMessageBundle() @@ -74,10 +74,10 @@ function createInstanceStep(): Prompter { function createSourcePrompter( autoDeployButton: QuickInputToggleButton -): Prompter { +): Prompter { const ecrPath = { label: 'ECR', - data: { ImageRepository: {} } as AppRunner.SourceConfiguration, + data: { ImageRepository: {} } as SourceConfiguration, detail: localize( 'AWS.apprunner.createService.ecr.detail', 'Create a service from a public or private Elastic Container Registry repository' @@ -86,7 +86,7 @@ function createSourcePrompter( const repositoryPath = { label: 'Repository', - data: { CodeRepository: {} } as AppRunner.SourceConfiguration, + data: { CodeRepository: {} } as SourceConfiguration, detail: localize('AWS.apprunner.createService.repository.detail', 'Create a service from a GitHub repository'), } @@ -96,15 +96,15 @@ function createSourcePrompter( }) } -export class CreateAppRunnerServiceWizard extends Wizard { +export class CreateAppRunnerServiceWizard extends Wizard { public constructor( region: string, - initState: WizardState = {}, - implicitState: WizardState = {}, + initState: WizardState = {}, + implicitState: WizardState = {}, clients = { iam: new IamClient(region), ecr: new DefaultEcrClient(region), - apprunner: new DefaultAppRunnerClient(region), + apprunner: new AppRunnerClient(region), } ) { super({ diff --git a/packages/core/src/awsService/apprunner/wizards/codeRepositoryWizard.ts b/packages/core/src/awsService/apprunner/wizards/codeRepositoryWizard.ts index ef0fbf08b7c..04896648652 100644 --- a/packages/core/src/awsService/apprunner/wizards/codeRepositoryWizard.ts +++ b/packages/core/src/awsService/apprunner/wizards/codeRepositoryWizard.ts @@ -3,7 +3,6 @@ * SPDX-License-Identifier: Apache-2.0 */ -import { AppRunner } from 'aws-sdk' import * as nls from 'vscode-nls' import { createCommonButtons, createRefreshButton, QuickInputToggleButton } from '../../../shared/ui/buttons' import { Remote } from '../../../../types/git.d' @@ -11,14 +10,25 @@ import { GitExtension } from '../../../shared/extensions/git' import * as vscode from 'vscode' import { WizardForm } from '../../../shared/wizards/wizardForm' import { createVariablesPrompter } from '../../../shared/ui/common/variablesPrompter' -import { AppRunnerClient } from '../../../shared/clients/apprunnerClient' +import { + AppRunnerClient, + SourceConfiguration, + CodeRepository, + CodeConfigurationValues, +} from '../../../shared/clients/apprunner' import { makeDeploymentButton } from './deploymentButton' -import { createLabelQuickPick, createQuickPick, QuickPickPrompter } from '../../../shared/ui/pickerPrompter' +import { + createLabelQuickPick, + createQuickPick, + DataQuickPickItem, + QuickPickPrompter, +} from '../../../shared/ui/pickerPrompter' import { createInputBox, InputBoxPrompter } from '../../../shared/ui/inputPrompter' -import { apprunnerConnectionHelpUrl, apprunnerConfigHelpUrl, apprunnerRuntimeHelpUrl } from '../../../shared/constants' +import { apprunnerConfigHelpUrl, apprunnerConnectionHelpUrl, apprunnerRuntimeHelpUrl } from '../../../shared/constants' import { Wizard, WIZARD_BACK } from '../../../shared/wizards/wizard' import { openUrl } from '../../../shared/utilities/vsCodeUtils' import { getAppRunnerCreateServiceDocUrl } from '../../../shared/extensionUtilities' +import * as AppRunner from '@aws-sdk/client-apprunner' const localize = nls.loadMessageBundle() @@ -82,9 +92,9 @@ function createBranchPrompter( } function createRuntimePrompter(): QuickPickPrompter { - const items = [ - { label: 'python3', data: 'PYTHON_3' }, - { label: 'nodejs12', data: 'NODEJS_16' }, + const items: DataQuickPickItem[] = [ + { label: 'python3', data: AppRunner.Runtime.PYTHON_3 }, + { label: 'nodejs16', data: AppRunner.Runtime.NODEJS_16 }, ] return createQuickPick(items, { @@ -158,10 +168,12 @@ export function createConnectionPrompter(client: AppRunnerClient) { const getItems = async () => { const resp = await client.listConnections() - return resp.ConnectionSummaryList.filter((conn) => conn.Status === 'AVAILABLE').map((conn) => ({ - label: conn.ConnectionName!, - data: conn, - })) + return resp + .filter((conn) => conn.Status === 'AVAILABLE') + .map((conn) => ({ + label: conn.ConnectionName!, + data: conn, + })) } const refreshButton = createRefreshButton() @@ -184,21 +196,24 @@ function createSourcePrompter(): QuickPickPrompter = { + label: apiLabel, + data: AppRunner.ConfigurationSource.API, + } + const repoItem: DataQuickPickItem = { + label: repoLabel, + data: AppRunner.ConfigurationSource.REPOSITORY, + detail: configDetail, + } - return createQuickPick( - [ - { label: apiLabel, data: 'API' }, - { label: repoLabel, data: 'REPOSITORY', detail: configDetail }, - ], - { - title: localize('AWS.apprunner.createService.configSource.title', 'Choose configuration source'), - buttons: createCommonButtons(apprunnerConfigHelpUrl), - } - ) + return createQuickPick([apiItem, repoItem], { + title: localize('AWS.apprunner.createService.configSource.title', 'Choose configuration source'), + buttons: createCommonButtons(apprunnerConfigHelpUrl), + }) } -function createCodeRepositorySubForm(git: GitExtension): WizardForm { - const subform = new WizardForm() +function createCodeRepositorySubForm(git: GitExtension): WizardForm { + const subform = new WizardForm() const form = subform.body form.RepositoryUrl.bindPrompter(() => createRepoPrompter(git).transform((r) => r.fetchUrl!)) @@ -210,7 +225,7 @@ function createCodeRepositorySubForm(git: GitExtension): WizardForm 'BRANCH') - const codeConfigForm = new WizardForm() + const codeConfigForm = new WizardForm() codeConfigForm.body.Runtime.bindPrompter(createRuntimePrompter) codeConfigForm.body.BuildCommand.bindPrompter((state) => createBuildCommandPrompter(state.Runtime!)) codeConfigForm.body.StartCommand.bindPrompter((state) => createStartCommandPrompter(state.Runtime!)) @@ -227,7 +242,7 @@ function createCodeRepositorySubForm(git: GitExtension): WizardForm { +export class AppRunnerCodeRepositoryWizard extends Wizard { constructor( client: AppRunnerClient, git: GitExtension, diff --git a/packages/core/src/awsService/apprunner/wizards/imageRepositoryWizard.ts b/packages/core/src/awsService/apprunner/wizards/imageRepositoryWizard.ts index c3efdf6b2ff..e906e249e71 100644 --- a/packages/core/src/awsService/apprunner/wizards/imageRepositoryWizard.ts +++ b/packages/core/src/awsService/apprunner/wizards/imageRepositoryWizard.ts @@ -3,7 +3,6 @@ * SPDX-License-Identifier: Apache-2.0 */ -import { AppRunner } from 'aws-sdk' import { createCommonButtons, QuickInputButton, QuickInputToggleButton } from '../../../shared/ui/buttons' import { toArrayAsync } from '../../../shared/utilities/collectionUtils' import { EcrClient, EcrRepository } from '../../../shared/clients/ecrClient' @@ -22,6 +21,7 @@ import { createRolePrompter } from '../../../shared/ui/common/roles' import { getLogger } from '../../../shared/logger/logger' import { getAppRunnerCreateServiceDocUrl, isCloud9 } from '../../../shared/extensionUtilities' import { createExitPrompter } from '../../../shared/ui/common/exitPrompter' +import { ImageRepository, SourceConfiguration } from '../../../shared/clients/apprunner' const localize = nls.loadMessageBundle() @@ -223,8 +223,8 @@ export class ImageIdentifierForm extends WizardForm<{ repo: TaggedEcrRepository function createImageRepositorySubForm( ecrClient: EcrClient, autoDeployButton: QuickInputToggleButton -): WizardForm { - const subform = new WizardForm() +): WizardForm { + const subform = new WizardForm() const form = subform.body // note: this is intentionally initialized only once to preserve caches @@ -253,7 +253,7 @@ function createImageRepositorySubForm( return subform } -export class AppRunnerImageRepositoryWizard extends Wizard { +export class AppRunnerImageRepositoryWizard extends Wizard { constructor(ecrClient: EcrClient, iamClient: IamClient, autoDeployButton = makeDeploymentButton()) { super() const form = this.form diff --git a/packages/core/src/awsexplorer/regionNode.ts b/packages/core/src/awsexplorer/regionNode.ts index 62104d9b352..10e8d975fe8 100644 --- a/packages/core/src/awsexplorer/regionNode.ts +++ b/packages/core/src/awsexplorer/regionNode.ts @@ -22,7 +22,7 @@ import { ResourcesNode } from '../dynamicResources/explorer/nodes/resourcesNode' import { AppRunnerNode } from '../awsService/apprunner/explorer/apprunnerNode' import { DocumentDBNode } from '../docdb/explorer/docdbNode' import { DefaultDocumentDBClient } from '../shared/clients/docdbClient' -import { DefaultAppRunnerClient } from '../shared/clients/apprunnerClient' +import { AppRunnerClient } from '../shared/clients/apprunner' import { DefaultEcrClient } from '../shared/clients/ecrClient' import { DefaultRedshiftClient } from '../shared/clients/redshiftClient' import { DefaultIotClient } from '../shared/clients/iotClient' @@ -53,7 +53,7 @@ const serviceCandidates: ServiceNode[] = [ }, { serviceId: 'apprunner', - createFn: (regionCode: string) => new AppRunnerNode(regionCode, new DefaultAppRunnerClient(regionCode)), + createFn: (regionCode: string) => new AppRunnerNode(regionCode, new AppRunnerClient(regionCode)), }, { serviceId: 'cloudformation', diff --git a/packages/core/src/shared/clients/apprunner.ts b/packages/core/src/shared/clients/apprunner.ts new file mode 100644 index 00000000000..a2179167c26 --- /dev/null +++ b/packages/core/src/shared/clients/apprunner.ts @@ -0,0 +1,117 @@ +/*! + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0 + */ + +import * as AppRunner from '@aws-sdk/client-apprunner' +import { ClientWrapper } from './clientWrapper' +import { hasProps, RequiredProps } from '../utilities/tsUtils' +import { AsyncCollection } from '../utilities/asyncCollection' + +export type ServiceSummary = RequiredProps< + AppRunner.ServiceSummary, + 'ServiceName' | 'ServiceArn' | 'Status' | 'ServiceId' +> +export type ImageRepository = RequiredProps + +export type CodeConfigurationValues = RequiredProps +interface CodeConfiguration extends RequiredProps { + CodeConfigurationValues: CodeConfigurationValues +} +export interface CodeRepository extends RequiredProps { + SourceCodeVersion: RequiredProps + CodeConfiguration: CodeConfiguration +} +export interface SourceConfiguration extends AppRunner.SourceConfiguration { + CodeRepository?: CodeRepository + ImageRepository?: RequiredProps +} +export interface CreateServiceRequest extends RequiredProps { + SourceConfiguration: SourceConfiguration +} + +// Note: Many of the requests return a type of Service, but Service <: ServiceSummary. +type WithServiceSummary = Omit & { Service: ServiceSummary } +export class AppRunnerClient extends ClientWrapper { + public constructor(regionCode: string) { + super(regionCode, AppRunner.AppRunnerClient) + } + + public async createService( + request: CreateServiceRequest + ): Promise> { + return await this.makeRequest(AppRunner.CreateServiceCommand, request) + } + + public async listServices(request: AppRunner.ListServicesRequest): Promise { + return await this.makeRequest(AppRunner.ListServicesCommand, request) + } + + public paginateServices(request: AppRunner.ListServicesRequest): AsyncCollection { + return this.makePaginatedRequest( + AppRunner.paginateListServices, + request, + (page) => page.ServiceSummaryList + ).map((summaries) => summaries.filter(isServiceSummary)) + + function isServiceSummary(s: AppRunner.ServiceSummary): s is ServiceSummary { + return hasProps(s, 'ServiceName', 'ServiceArn', 'Status', 'ServiceId') + } + } + + public async pauseService( + request: AppRunner.PauseServiceRequest + ): Promise> { + return await this.makeRequest(AppRunner.PauseServiceCommand, request) + } + + public async resumeService( + request: AppRunner.ResumeServiceRequest + ): Promise> { + return await this.makeRequest(AppRunner.ResumeServiceCommand, request) + } + + public async updateService( + request: AppRunner.UpdateServiceRequest + ): Promise> { + return await this.makeRequest(AppRunner.UpdateServiceCommand, request) + } + + public async createConnection( + request: AppRunner.CreateConnectionRequest + ): Promise { + return await this.makeRequest(AppRunner.CreateConnectionCommand, request) + } + + public async listConnections( + request: AppRunner.ListConnectionsRequest = {} + ): Promise { + const result: AppRunner.ListConnectionsResponse = await this.makeRequest( + AppRunner.ListConnectionsCommand, + request + ) + return result.ConnectionSummaryList ?? [] + } + + public async describeService( + request: AppRunner.DescribeServiceRequest + ): Promise> { + return await this.makeRequest(AppRunner.DescribeServiceCommand, request) + } + + public async startDeployment( + request: AppRunner.StartDeploymentRequest + ): Promise { + return await this.makeRequest(AppRunner.StartDeploymentCommand, request) + } + + public async listOperations(request: AppRunner.ListOperationsRequest): Promise { + return await this.makeRequest(AppRunner.ListOperationsCommand, request) + } + + public async deleteService( + request: AppRunner.DeleteServiceRequest + ): Promise> { + return this.makeRequest(AppRunner.DeleteServiceCommand, request) + } +} diff --git a/packages/core/src/shared/clients/apprunnerClient.ts b/packages/core/src/shared/clients/apprunnerClient.ts deleted file mode 100644 index a04ca2d5bb8..00000000000 --- a/packages/core/src/shared/clients/apprunnerClient.ts +++ /dev/null @@ -1,71 +0,0 @@ -/*! - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * SPDX-License-Identifier: Apache-2.0 - */ - -import { AppRunner } from 'aws-sdk' -import globals from '../extensionGlobals' - -import { ClassToInterfaceType } from '../utilities/tsUtils' - -export type AppRunnerClient = ClassToInterfaceType - -export class DefaultAppRunnerClient { - public constructor(public readonly regionCode: string) {} - - public async createService(request: AppRunner.CreateServiceRequest): Promise { - return (await this.createSdkClient()).createService(request).promise() - } - - public async listServices(request: AppRunner.ListServicesRequest): Promise { - return (await this.createSdkClient()).listServices(request).promise() - } - - public async pauseService(request: AppRunner.PauseServiceRequest): Promise { - return (await this.createSdkClient()).pauseService(request).promise() - } - - public async resumeService(request: AppRunner.ResumeServiceRequest): Promise { - return (await this.createSdkClient()).resumeService(request).promise() - } - - public async updateService(request: AppRunner.UpdateServiceRequest): Promise { - return (await this.createSdkClient()).updateService(request).promise() - } - - public async createConnection( - request: AppRunner.CreateConnectionRequest - ): Promise { - return (await this.createSdkClient()).createConnection(request).promise() - } - - public async listConnections( - request: AppRunner.ListConnectionsRequest = {} - ): Promise { - return (await this.createSdkClient()).listConnections(request).promise() - } - - public async describeService( - request: AppRunner.DescribeServiceRequest - ): Promise { - return (await this.createSdkClient()).describeService(request).promise() - } - - public async startDeployment( - request: AppRunner.StartDeploymentRequest - ): Promise { - return (await this.createSdkClient()).startDeployment(request).promise() - } - - public async listOperations(request: AppRunner.ListOperationsRequest): Promise { - return (await this.createSdkClient()).listOperations(request).promise() - } - - public async deleteService(request: AppRunner.DeleteServiceRequest): Promise { - return (await this.createSdkClient()).deleteService(request).promise() - } - - protected async createSdkClient(): Promise { - return await globals.sdkClientBuilder.createAwsService(AppRunner, undefined, this.regionCode) - } -} diff --git a/packages/core/src/test/awsService/apprunner/explorer/apprunnerNode.test.ts b/packages/core/src/test/awsService/apprunner/explorer/apprunnerNode.test.ts index 8847536fd5f..96f405b1243 100644 --- a/packages/core/src/test/awsService/apprunner/explorer/apprunnerNode.test.ts +++ b/packages/core/src/test/awsService/apprunner/explorer/apprunnerNode.test.ts @@ -6,13 +6,13 @@ import assert from 'assert' import * as FakeTimers from '@sinonjs/fake-timers' import * as sinon from 'sinon' -import { AppRunner } from 'aws-sdk' import { AppRunnerNode } from '../../../../awsService/apprunner/explorer/apprunnerNode' import { AppRunnerServiceNode } from '../../../../awsService/apprunner/explorer/apprunnerServiceNode' -import { AppRunnerClient } from '../../../../shared/clients/apprunnerClient' +import { AppRunnerClient, ServiceSummary } from '../../../../shared/clients/apprunner' import { PlaceholderNode } from '../../../../shared/treeview/nodes/placeholderNode' import { AWSTreeNodeBase } from '../../../../shared/treeview/nodes/awsTreeNodeBase' import { installFakeClock } from '../../../testUtil' +import { intoCollection } from '../../../../shared/utilities/collectionUtils' describe('AppRunnerNode', function () { let mockApprunnerClient: AppRunnerClient @@ -20,11 +20,12 @@ describe('AppRunnerNode', function () { let clock: FakeTimers.InstalledClock let refreshStub: sinon.SinonStub<[], void> - const exampleSummaries: AppRunner.ServiceSummaryList = [ + const exampleSummaries: ServiceSummary[] = [ { ServiceName: 'test1', Status: 'RUNNING', ServiceArn: 'test-arn1', + ServiceId: 'Amazon', }, ] @@ -35,7 +36,7 @@ describe('AppRunnerNode', function () { beforeEach(function () { mockApprunnerClient = { - listServices: sinon.stub().resolves({ ServiceSummaryList: exampleSummaries }), + paginateServices: sinon.stub().returns(intoCollection([exampleSummaries])), listOperations: sinon.stub().resolves({ OperationSummaryList: [] }), } as any as AppRunnerClient node = new AppRunnerNode('', mockApprunnerClient) @@ -56,8 +57,8 @@ describe('AppRunnerNode', function () { const childNode = (await node.getChildren())[0] as AppRunnerServiceNode const updatedSummary = { ...exampleSummaries[0], Status: 'PAUSED' } - const serviceStub = sinon.stub().resolves({ ServiceSummaryList: [updatedSummary] }) - mockApprunnerClient.listServices = serviceStub + const serviceStub = sinon.stub().returns(intoCollection([[updatedSummary]])) + mockApprunnerClient.paginateServices = serviceStub await node.getChildren() assert.strictEqual(childNode.info.Status, 'PAUSED') @@ -65,8 +66,8 @@ describe('AppRunnerNode', function () { it('deletes AppRunnerServiceNodes', async function () { await node.getChildren() - const serviceStub = sinon.stub().resolves({ ServiceSummaryList: [] }) - mockApprunnerClient.listServices = serviceStub + const serviceStub = sinon.stub().returns(intoCollection([[]])) + mockApprunnerClient.paginateServices = serviceStub assert.ok((await node.getChildren())[0] instanceof PlaceholderNode) }) @@ -77,10 +78,10 @@ describe('AppRunnerNode', function () { const serviceStub = sinon .stub() .onFirstCall() - .resolves({ ServiceSummaryList: [transientService] }) + .returns(intoCollection([[transientService]])) .onSecondCall() - .resolves({ ServiceSummaryList: [pausedService] }) - mockApprunnerClient.listServices = serviceStub + .returns(intoCollection([[pausedService]])) + mockApprunnerClient.paginateServices = serviceStub const opStub = sinon.stub().resolves({ OperationSummaryList: [{ Id: 'test-id', Type: 'PAUSE_SERVICE' }], }) diff --git a/packages/core/src/test/awsService/apprunner/explorer/apprunnerServiceNode.test.ts b/packages/core/src/test/awsService/apprunner/explorer/apprunnerServiceNode.test.ts index 8a16cd2e5f0..6137797a54b 100644 --- a/packages/core/src/test/awsService/apprunner/explorer/apprunnerServiceNode.test.ts +++ b/packages/core/src/test/awsService/apprunner/explorer/apprunnerServiceNode.test.ts @@ -5,10 +5,9 @@ import assert from 'assert' import * as sinon from 'sinon' -import { AppRunner } from 'aws-sdk' import { AppRunnerNode } from '../../../../awsService/apprunner/explorer/apprunnerNode' import { AppRunnerServiceNode } from '../../../../awsService/apprunner/explorer/apprunnerServiceNode' -import { DefaultAppRunnerClient } from '../../../../shared/clients/apprunnerClient' +import { AppRunnerClient, ServiceSummary } from '../../../../shared/clients/apprunner' import { CloudWatchLogsClient } from '../../../../shared/clients/cloudWatchLogs' import { asyncGenerator } from '../../../../shared/utilities/collectionUtils' import { AWSTreeNodeBase } from '../../../../shared/treeview/nodes/awsTreeNodeBase' @@ -16,11 +15,11 @@ import { stub } from '../../../utilities/stubber' import { getLabel } from '../../../../shared/treeview/utils' describe('AppRunnerServiceNode', function () { - let mockApprunnerClient: ReturnType> + let mockApprunnerClient: ReturnType> let mockParentNode: AppRunnerNode let node: AppRunnerServiceNode - const exampleInfo: AppRunner.Service = { + const exampleInfo: ServiceSummary = { ServiceName: 'test1', Status: 'RUNNING', ServiceArn: 'test-arn1', @@ -36,8 +35,9 @@ describe('AppRunnerServiceNode', function () { const cloudwatchClient = stub(CloudWatchLogsClient, { regionCode: 'us-east-1' }) cloudwatchClient.describeLogGroups.returns(asyncGenerator([{ logGroupName: 'logs' }])) - mockApprunnerClient = stub(DefaultAppRunnerClient, { regionCode: 'us-east-1' }) + mockApprunnerClient = stub(AppRunnerClient, { regionCode: 'us-east-1' }) mockApprunnerClient.listOperations.resolves({ OperationSummaryList: [] }) + // jscpd:ignore-start mockParentNode = stub(AppRunnerNode, { regionCode: '', client: mockApprunnerClient, @@ -54,6 +54,7 @@ describe('AppRunnerServiceNode', function () { accessibilityInformation: undefined, checkboxState: undefined, }) + // jscpd:ignore-end node = new AppRunnerServiceNode(mockParentNode, mockApprunnerClient, exampleInfo, {}, cloudwatchClient) }) diff --git a/packages/core/src/test/awsService/apprunner/wizards/codeRepositoryWizard.test.ts b/packages/core/src/test/awsService/apprunner/wizards/codeRepositoryWizard.test.ts index 3c0c0c0eb2b..1021201fc1d 100644 --- a/packages/core/src/test/awsService/apprunner/wizards/codeRepositoryWizard.test.ts +++ b/packages/core/src/test/awsService/apprunner/wizards/codeRepositoryWizard.test.ts @@ -4,23 +4,21 @@ */ import assert from 'assert' -import { AppRunner } from 'aws-sdk' import { createWizardTester, WizardTester } from '../../../shared/wizards/wizardTestUtils' import { AppRunnerCodeRepositoryWizard, createConnectionPrompter, } from '../../../../awsService/apprunner/wizards/codeRepositoryWizard' -import { DefaultAppRunnerClient } from '../../../../shared/clients/apprunnerClient' -import { ConnectionSummary } from 'aws-sdk/clients/apprunner' +import { AppRunnerClient, CodeRepository, SourceConfiguration } from '../../../../shared/clients/apprunner' import { WIZARD_EXIT } from '../../../../shared/wizards/wizard' import { apprunnerConnectionHelpUrl } from '../../../../shared/constants' -import { createQuickPickPrompterTester, QuickPickPrompterTester } from '../../../shared/ui/testUtils' +import { createQuickPickPrompterTester } from '../../../shared/ui/testUtils' import { stub } from '../../../utilities/stubber' import { getOpenExternalStub } from '../../../globalSetup.test' describe('AppRunnerCodeRepositoryWizard', function () { - let tester: WizardTester - let repoTester: WizardTester + let tester: WizardTester + let repoTester: WizardTester beforeEach(async function () { // apprunner client and git api will never be called @@ -70,14 +68,14 @@ describe('createConnectionPrompter', function () { makeConnection('connection-name-2', 'connection-arn-2'), ] - function makeTester(connections = defaultConnections): QuickPickPrompterTester { - const client = stub(DefaultAppRunnerClient, { regionCode: '' }) - client.listConnections.resolves({ ConnectionSummaryList: connections }) + function makeTester(connections = defaultConnections) { + const client = stub(AppRunnerClient, { regionCode: '' }) + client.listConnections.resolves(connections) return createQuickPickPrompterTester(createConnectionPrompter(client)) } - function makeConnection(name: string, arn: string, status: ConnectionStatus = 'AVAILABLE'): ConnectionSummary { + function makeConnection(name: string, arn: string, status: ConnectionStatus = 'AVAILABLE') { return { ConnectionName: name, ConnectionArn: arn, diff --git a/packages/core/src/test/awsService/apprunner/wizards/createServiceWizard.test.ts b/packages/core/src/test/awsService/apprunner/wizards/createServiceWizard.test.ts index b9e9d510f14..28a38df79fc 100644 --- a/packages/core/src/test/awsService/apprunner/wizards/createServiceWizard.test.ts +++ b/packages/core/src/test/awsService/apprunner/wizards/createServiceWizard.test.ts @@ -4,15 +4,14 @@ */ import { createWizardTester, WizardTester } from '../../../shared/wizards/wizardTestUtils' -import { AppRunner } from 'aws-sdk' import { CreateAppRunnerServiceWizard } from '../../../../awsService/apprunner/wizards/apprunnerCreateServiceWizard' import { stub } from '../../../utilities/stubber' import { IamClient } from '../../../../shared/clients/iam' import { DefaultEcrClient } from '../../../../shared/clients/ecrClient' -import { DefaultAppRunnerClient } from '../../../../shared/clients/apprunnerClient' +import { AppRunnerClient, CreateServiceRequest } from '../../../../shared/clients/apprunner' describe('CreateServiceWizard', function () { - let tester: WizardTester + let tester: WizardTester beforeEach(async function () { const regionCode = 'us-east-1' @@ -23,7 +22,7 @@ describe('CreateServiceWizard', function () { { iam: stub(IamClient, { regionCode }), ecr: stub(DefaultEcrClient, { regionCode }), - apprunner: stub(DefaultAppRunnerClient, { regionCode }), + apprunner: stub(AppRunnerClient, { regionCode }), } ) diff --git a/packages/core/src/test/awsService/apprunner/wizards/imageRepositoryWizard.test.ts b/packages/core/src/test/awsService/apprunner/wizards/imageRepositoryWizard.test.ts index a06e4c6debd..28c54d03d73 100644 --- a/packages/core/src/test/awsService/apprunner/wizards/imageRepositoryWizard.test.ts +++ b/packages/core/src/test/awsService/apprunner/wizards/imageRepositoryWizard.test.ts @@ -3,17 +3,17 @@ * SPDX-License-Identifier: Apache-2.0 */ -import { AppRunner } from 'aws-sdk' import { createWizardTester, WizardTester } from '../../../shared/wizards/wizardTestUtils' import { AppRunnerImageRepositoryWizard, ImageIdentifierForm, TaggedEcrRepository, } from '../../../../awsService/apprunner/wizards/imageRepositoryWizard' +import { ImageRepository, SourceConfiguration } from '../../../../shared/clients/apprunner' describe('AppRunnerImageRepositoryWizard', function () { - let tester: WizardTester - let repoTester: WizardTester + let tester: WizardTester + let repoTester: WizardTester beforeEach(async function () { const wizard = new AppRunnerImageRepositoryWizard({} as any, {} as any) // the clients will never be called diff --git a/packages/core/src/test/ssmDocument/commands/updateDocumentVersion.test.ts b/packages/core/src/test/ssmDocument/commands/updateDocumentVersion.test.ts index 726eda20d1d..01a21a9ee41 100644 --- a/packages/core/src/test/ssmDocument/commands/updateDocumentVersion.test.ts +++ b/packages/core/src/test/ssmDocument/commands/updateDocumentVersion.test.ts @@ -57,6 +57,7 @@ describe('openDocumentItem', async function () { fakeDoc, ssmClient, fakeRegion, + // jscpd:ignore-start stub(RegistryItemNode, { documentType: '', regionCode: '', @@ -74,6 +75,7 @@ describe('openDocumentItem', async function () { accessibilityInformation: undefined, checkboxState: undefined, }) + // jscpd:ignore-end ) sinon.stub(documentNode, 'listSchemaVersion').resolves(fakeSchemaList) const updateVersionStub = sinon.stub(documentNode, 'updateDocumentVersion')