diff --git a/package-lock.json b/package-lock.json index 35a78618d4..b5249c15fd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -72,9 +72,9 @@ } }, "node_modules/@aws-cdk/asset-awscli-v1": { - "version": "2.2.30", - "resolved": "https://registry.npmjs.org/@aws-cdk/asset-awscli-v1/-/asset-awscli-v1-2.2.30.tgz", - "integrity": "sha512-mFRF5n1jxjKpX8ZZSCRhJc6Hj8BkeZFUPwK0j6jRcouQQZHsZyydbf4UuzMYQ4SZU6cCLM7DKmWO0Kx156ZSnw==", + "version": "2.2.36", + "resolved": "https://registry.npmjs.org/@aws-cdk/asset-awscli-v1/-/asset-awscli-v1-2.2.36.tgz", + "integrity": "sha512-q4jde7ZqXjOfnEPjfn/VNIKmTFBg4GWCn5KxB8EDny6FWhGE+TkJxTjyu4KgUvcRZCvNqsdWvxGMQOFTTsqaVA==", "dev": true }, "node_modules/@aws-cdk/asset-kubectl-v20": { @@ -90,9 +90,9 @@ "dev": true }, "node_modules/@aws-cdk/cfnspec": { - "version": "2.55.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/cfnspec/-/cfnspec-2.55.0.tgz", - "integrity": "sha512-lwBV4MxkIO0IIctyylsG+RkdgcMkUdogY34dx23bFuaxmchmGEsx++PyOS4Q/UQojc01JuOiIN5xT9iQBNQQvA==", + "version": "2.55.1", + "resolved": "https://registry.npmjs.org/@aws-cdk/cfnspec/-/cfnspec-2.55.1.tgz", + "integrity": "sha512-jJCaEV9pTLFft2eYkwmblfxUBQeJSH4KbMteiVQdp6wkYbzoj/sjyFInfKHgtfIOeqjNtPZ74Dhl5fRJsOpBDw==", "dev": true, "dependencies": { "fs-extra": "^9.1.0", @@ -100,9 +100,9 @@ } }, "node_modules/@aws-cdk/cloud-assembly-schema": { - "version": "2.55.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-2.55.0.tgz", - "integrity": "sha512-SZ1Ojl8lOm0X1TUWCR8dTuGMmEJwtZwfTo1S39BiF4RsUungksBj30Us8wtdgaPrWx455mUgbWaY9JQ4ZcEyJw==", + "version": "2.55.1", + "resolved": "https://registry.npmjs.org/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-2.55.1.tgz", + "integrity": "sha512-VVVQaqHP2PsNGRwfPsq1RxoOfyC54DO8RH+2nHqCyPIfSmrIH6Ux5Uk7KAURyXKdb3SjKra66bxPOzvXHOaBXg==", "bundleDependencies": [ "jsonschema", "semver" @@ -159,12 +159,12 @@ "license": "ISC" }, "node_modules/@aws-cdk/cloudformation-diff": { - "version": "2.55.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/cloudformation-diff/-/cloudformation-diff-2.55.0.tgz", - "integrity": "sha512-yvZOH37itWcDwvQdnGOTQPtR+GkgLf9lYsICrOmly/+di++H5p29VS8hgm67n5Mk7EWz0KyqnbZ9hiM++TJ6Jw==", + "version": "2.55.1", + "resolved": "https://registry.npmjs.org/@aws-cdk/cloudformation-diff/-/cloudformation-diff-2.55.1.tgz", + "integrity": "sha512-WgLubFXoQFGZuOkm7YtJx+kS8EN6rX9K6s257qFR7yNGpKBANSPVvWmlWX2qSvg++AkNSxKsuaZi+4V50TNbdA==", "dev": true, "dependencies": { - "@aws-cdk/cfnspec": "2.55.0", + "@aws-cdk/cfnspec": "2.55.1", "@types/node": "^14.18.34", "chalk": "^4", "diff": "^5.1.0", @@ -177,28 +177,28 @@ } }, "node_modules/@aws-cdk/cloudformation-diff/node_modules/@types/node": { - "version": "14.18.34", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.34.tgz", - "integrity": "sha512-hcU9AIQVHmPnmjRK+XUUYlILlr9pQrsqSrwov/JK1pnf3GTQowVBhx54FbvM0AU/VXGH4i3+vgXS5EguR7fysA==", + "version": "14.18.35", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.35.tgz", + "integrity": "sha512-2ATO8pfhG1kDvw4Lc4C0GXIMSQFFJBCo/R1fSgTwmUlq5oy95LXyjDQinsRVgQY6gp6ghh3H91wk9ES5/5C+Tw==", "dev": true }, "node_modules/@aws-cdk/cx-api": { - "version": "2.55.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/cx-api/-/cx-api-2.55.0.tgz", - "integrity": "sha512-KhYPBqEL24mQuEqHHdhcSc8jy7w69bD+NQjji54QGEA1tp+1gaUebTBIlTiOPbB3fzU8GR3f3ALnOQI3wJzr/Q==", + "version": "2.55.1", + "resolved": "https://registry.npmjs.org/@aws-cdk/cx-api/-/cx-api-2.55.1.tgz", + "integrity": "sha512-gWQCn/9gaayf2ev0HjCMQleY1gWJZGImLhsUF8kneYnOPCm/r0qpIzy3BxiWiDFLPh9gykDvHQhpH6EG0aXnGA==", "bundleDependencies": [ "semver" ], "dev": true, "dependencies": { - "@aws-cdk/cloud-assembly-schema": "2.55.0", + "@aws-cdk/cloud-assembly-schema": "2.55.1", "semver": "^7.3.8" }, "engines": { "node": ">= 14.15.0" }, "peerDependencies": { - "@aws-cdk/cloud-assembly-schema": "2.55.0" + "@aws-cdk/cloud-assembly-schema": "2.55.1" } }, "node_modules/@aws-cdk/cx-api/node_modules/lru-cache": { @@ -347,25 +347,25 @@ } }, "node_modules/@aws-sdk/client-dynamodb": { - "version": "3.231.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.231.0.tgz", - "integrity": "sha512-WvNM3NmsFFB7S7I5B2PECe945bEzdwU3MElLznmcbccaRf31S61C4EAkghm6hXz0EoZlgdRfBqHaRB1PgmAUuA==", + "version": "3.235.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.235.0.tgz", + "integrity": "sha512-GTRrc7EED3er8HNlnfLHI4oFT/sXS84rlUy3acYzLTiYfASK3YUspZ/cu7CF7MGJaiXXIS1pEm88rK2N4hap/g==", "dependencies": { "@aws-crypto/sha256-browser": "2.0.0", "@aws-crypto/sha256-js": "2.0.0", - "@aws-sdk/client-sts": "3.231.0", - "@aws-sdk/config-resolver": "3.231.0", - "@aws-sdk/credential-provider-node": "3.231.0", + "@aws-sdk/client-sts": "3.235.0", + "@aws-sdk/config-resolver": "3.234.0", + "@aws-sdk/credential-provider-node": "3.235.0", "@aws-sdk/fetch-http-handler": "3.226.0", "@aws-sdk/hash-node": "3.226.0", "@aws-sdk/invalid-dependency": "3.226.0", "@aws-sdk/middleware-content-length": "3.226.0", "@aws-sdk/middleware-endpoint": "3.226.0", - "@aws-sdk/middleware-endpoint-discovery": "3.231.0", + "@aws-sdk/middleware-endpoint-discovery": "3.234.0", "@aws-sdk/middleware-host-header": "3.226.0", "@aws-sdk/middleware-logger": "3.226.0", "@aws-sdk/middleware-recursion-detection": "3.226.0", - "@aws-sdk/middleware-retry": "3.229.0", + "@aws-sdk/middleware-retry": "3.235.0", "@aws-sdk/middleware-serde": "3.226.0", "@aws-sdk/middleware-signing": "3.226.0", "@aws-sdk/middleware-stack": "3.226.0", @@ -373,14 +373,14 @@ "@aws-sdk/node-config-provider": "3.226.0", "@aws-sdk/node-http-handler": "3.226.0", "@aws-sdk/protocol-http": "3.226.0", - "@aws-sdk/smithy-client": "3.226.0", + "@aws-sdk/smithy-client": "3.234.0", "@aws-sdk/types": "3.226.0", "@aws-sdk/url-parser": "3.226.0", "@aws-sdk/util-base64": "3.208.0", "@aws-sdk/util-body-length-browser": "3.188.0", "@aws-sdk/util-body-length-node": "3.208.0", - "@aws-sdk/util-defaults-mode-browser": "3.226.0", - "@aws-sdk/util-defaults-mode-node": "3.231.0", + "@aws-sdk/util-defaults-mode-browser": "3.234.0", + "@aws-sdk/util-defaults-mode-node": "3.234.0", "@aws-sdk/util-endpoints": "3.226.0", "@aws-sdk/util-retry": "3.229.0", "@aws-sdk/util-user-agent-browser": "3.226.0", @@ -603,233 +603,993 @@ "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.238.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.238.0.tgz", - "integrity": "sha512-WmPNtIYyUasjV7VQxvPNq7ihmx0vFsiKAtjNjjakdrt5TPoma4nUYb9tIG9SuG+kcp4DJIgRLJAgZtXbCcVimg==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.238.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.238.0.tgz", + "integrity": "sha512-WmPNtIYyUasjV7VQxvPNq7ihmx0vFsiKAtjNjjakdrt5TPoma4nUYb9tIG9SuG+kcp4DJIgRLJAgZtXbCcVimg==", + "dev": true, + "dependencies": { + "@aws-sdk/credential-provider-env": "3.226.0", + "@aws-sdk/credential-provider-imds": "3.226.0", + "@aws-sdk/credential-provider-process": "3.226.0", + "@aws-sdk/credential-provider-sso": "3.238.0", + "@aws-sdk/credential-provider-web-identity": "3.226.0", + "@aws-sdk/property-provider": "3.226.0", + "@aws-sdk/shared-ini-file-loader": "3.226.0", + "@aws-sdk/types": "3.226.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-node": { + "version": "3.238.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.238.0.tgz", + "integrity": "sha512-/RN5EyGfgdIIJdFzv+O0nSaHX1/F3anQjTIBeVg8GJ+82m+bDxMdALsG+NzkYnLilN9Uhc1lSNjLBCoPa5DSEg==", + "dev": true, + "dependencies": { + "@aws-sdk/credential-provider-env": "3.226.0", + "@aws-sdk/credential-provider-imds": "3.226.0", + "@aws-sdk/credential-provider-ini": "3.238.0", + "@aws-sdk/credential-provider-process": "3.226.0", + "@aws-sdk/credential-provider-sso": "3.238.0", + "@aws-sdk/credential-provider-web-identity": "3.226.0", + "@aws-sdk/property-provider": "3.226.0", + "@aws-sdk/shared-ini-file-loader": "3.226.0", + "@aws-sdk/types": "3.226.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.238.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.238.0.tgz", + "integrity": "sha512-i70V4bFlCVYey3QARJ6XxKEg/4YuoFRnePV2oK37UHOGpEn49uXKwVZqLjzJgFHln7BPlC06cWDqrHUQIMvYrQ==", + "dev": true, + "dependencies": { + "@aws-sdk/client-sso": "3.238.0", + "@aws-sdk/property-provider": "3.226.0", + "@aws-sdk/shared-ini-file-loader": "3.226.0", + "@aws-sdk/token-providers": "3.238.0", + "@aws-sdk/types": "3.226.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/middleware-retry": { + "version": "3.235.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.235.0.tgz", + "integrity": "sha512-50WHbJGpD3SNp9763MAlHqIhXil++JdQbKejNpHg7HsJne/ao3ub+fDOfx//mMBjpzBV25BGd5UlfL6blrClSg==", + "dev": true, + "dependencies": { + "@aws-sdk/protocol-http": "3.226.0", + "@aws-sdk/service-error-classification": "3.229.0", + "@aws-sdk/types": "3.226.0", + "@aws-sdk/util-middleware": "3.226.0", + "@aws-sdk/util-retry": "3.229.0", + "tslib": "^2.3.1", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/smithy-client": { + "version": "3.234.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.234.0.tgz", + "integrity": "sha512-8AtR/k4vsFvjXeQbIzq/Wy7Nbk48Ou0wUEeVYPHWHPSU8QamFWORkOwmKtKMfHAyZvmqiAPeQqHFkq+UJhWyyQ==", + "dev": true, + "dependencies": { + "@aws-sdk/middleware-stack": "3.226.0", + "@aws-sdk/types": "3.226.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/token-providers": { + "version": "3.238.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.238.0.tgz", + "integrity": "sha512-vYUwmy0kTzA99mJCVvad+/5RDlWve/xxnppT8DJK3JIdAgskp+rULY+joVnq2NSl489UAioUnFGs57vUxi8Pog==", + "dev": true, + "dependencies": { + "@aws-sdk/client-sso-oidc": "3.238.0", + "@aws-sdk/property-provider": "3.226.0", + "@aws-sdk/shared-ini-file-loader": "3.226.0", + "@aws-sdk/types": "3.226.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/util-defaults-mode-browser": { + "version": "3.234.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.234.0.tgz", + "integrity": "sha512-IHMKXjTbOD8XMz5+2oCOsVP94BYb9YyjXdns0aAXr2NAo7k2+RCzXQ2DebJXppGda1F6opFutoKwyVSN0cmbMw==", + "dev": true, + "dependencies": { + "@aws-sdk/property-provider": "3.226.0", + "@aws-sdk/types": "3.226.0", + "bowser": "^2.11.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/util-defaults-mode-node": { + "version": "3.234.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.234.0.tgz", + "integrity": "sha512-UGjQ+OjBYYhxFVtUY+jtr0ZZgzZh6OHtYwRhFt8IHewJXFCfZTyfsbX20szBj5y1S4HRIUJ7cwBLIytTqMbI5w==", + "dev": true, + "dependencies": { + "@aws-sdk/config-resolver": "3.234.0", + "@aws-sdk/credential-provider-imds": "3.226.0", + "@aws-sdk/node-config-provider": "3.226.0", + "@aws-sdk/property-provider": "3.226.0", + "@aws-sdk/types": "3.226.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@aws-sdk/client-ssm": { + "version": "3.244.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-ssm/-/client-ssm-3.244.0.tgz", + "integrity": "sha512-Y/WPOhcbacOglNGXYrZTeZqZwGVs8DFmM9kWpVSIwcvHIdo/5CxB2FC9Cqt9gcvsBccC2CY1S56klbUP1WP/Ng==", + "dev": true, + "dependencies": { + "@aws-crypto/sha256-browser": "2.0.0", + "@aws-crypto/sha256-js": "2.0.0", + "@aws-sdk/client-sts": "3.241.0", + "@aws-sdk/config-resolver": "3.234.0", + "@aws-sdk/credential-provider-node": "3.241.0", + "@aws-sdk/fetch-http-handler": "3.226.0", + "@aws-sdk/hash-node": "3.226.0", + "@aws-sdk/invalid-dependency": "3.226.0", + "@aws-sdk/middleware-content-length": "3.226.0", + "@aws-sdk/middleware-endpoint": "3.226.0", + "@aws-sdk/middleware-host-header": "3.226.0", + "@aws-sdk/middleware-logger": "3.226.0", + "@aws-sdk/middleware-recursion-detection": "3.226.0", + "@aws-sdk/middleware-retry": "3.235.0", + "@aws-sdk/middleware-serde": "3.226.0", + "@aws-sdk/middleware-signing": "3.226.0", + "@aws-sdk/middleware-stack": "3.226.0", + "@aws-sdk/middleware-user-agent": "3.226.0", + "@aws-sdk/node-config-provider": "3.226.0", + "@aws-sdk/node-http-handler": "3.226.0", + "@aws-sdk/protocol-http": "3.226.0", + "@aws-sdk/smithy-client": "3.234.0", + "@aws-sdk/types": "3.226.0", + "@aws-sdk/url-parser": "3.226.0", + "@aws-sdk/util-base64": "3.208.0", + "@aws-sdk/util-body-length-browser": "3.188.0", + "@aws-sdk/util-body-length-node": "3.208.0", + "@aws-sdk/util-defaults-mode-browser": "3.234.0", + "@aws-sdk/util-defaults-mode-node": "3.234.0", + "@aws-sdk/util-endpoints": "3.241.0", + "@aws-sdk/util-retry": "3.229.0", + "@aws-sdk/util-user-agent-browser": "3.226.0", + "@aws-sdk/util-user-agent-node": "3.226.0", + "@aws-sdk/util-utf8-browser": "3.188.0", + "@aws-sdk/util-utf8-node": "3.208.0", + "@aws-sdk/util-waiter": "3.226.0", + "tslib": "^2.3.1", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/client-sso": { + "version": "3.241.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.241.0.tgz", + "integrity": "sha512-Jm4HR+RYAqKMEYZvvWaq0NYUKKonyInOeubObXH4BLXZpmUBSdYCSjjLdNJY3jkQoxbDVPVMIurVNh5zT5SMRw==", + "dev": true, + "dependencies": { + "@aws-crypto/sha256-browser": "2.0.0", + "@aws-crypto/sha256-js": "2.0.0", + "@aws-sdk/config-resolver": "3.234.0", + "@aws-sdk/fetch-http-handler": "3.226.0", + "@aws-sdk/hash-node": "3.226.0", + "@aws-sdk/invalid-dependency": "3.226.0", + "@aws-sdk/middleware-content-length": "3.226.0", + "@aws-sdk/middleware-endpoint": "3.226.0", + "@aws-sdk/middleware-host-header": "3.226.0", + "@aws-sdk/middleware-logger": "3.226.0", + "@aws-sdk/middleware-recursion-detection": "3.226.0", + "@aws-sdk/middleware-retry": "3.235.0", + "@aws-sdk/middleware-serde": "3.226.0", + "@aws-sdk/middleware-stack": "3.226.0", + "@aws-sdk/middleware-user-agent": "3.226.0", + "@aws-sdk/node-config-provider": "3.226.0", + "@aws-sdk/node-http-handler": "3.226.0", + "@aws-sdk/protocol-http": "3.226.0", + "@aws-sdk/smithy-client": "3.234.0", + "@aws-sdk/types": "3.226.0", + "@aws-sdk/url-parser": "3.226.0", + "@aws-sdk/util-base64": "3.208.0", + "@aws-sdk/util-body-length-browser": "3.188.0", + "@aws-sdk/util-body-length-node": "3.208.0", + "@aws-sdk/util-defaults-mode-browser": "3.234.0", + "@aws-sdk/util-defaults-mode-node": "3.234.0", + "@aws-sdk/util-endpoints": "3.241.0", + "@aws-sdk/util-retry": "3.229.0", + "@aws-sdk/util-user-agent-browser": "3.226.0", + "@aws-sdk/util-user-agent-node": "3.226.0", + "@aws-sdk/util-utf8-browser": "3.188.0", + "@aws-sdk/util-utf8-node": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/client-sso-oidc": { + "version": "3.241.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.241.0.tgz", + "integrity": "sha512-/Ml2QBGpGfUEeBrPzBZhSTBkHuXFD2EAZEIHGCBH4tKaURDI6/FoGI8P1Rl4BzoFt+II/Cr91Eox6YT9EwChsQ==", + "dev": true, + "dependencies": { + "@aws-crypto/sha256-browser": "2.0.0", + "@aws-crypto/sha256-js": "2.0.0", + "@aws-sdk/config-resolver": "3.234.0", + "@aws-sdk/fetch-http-handler": "3.226.0", + "@aws-sdk/hash-node": "3.226.0", + "@aws-sdk/invalid-dependency": "3.226.0", + "@aws-sdk/middleware-content-length": "3.226.0", + "@aws-sdk/middleware-endpoint": "3.226.0", + "@aws-sdk/middleware-host-header": "3.226.0", + "@aws-sdk/middleware-logger": "3.226.0", + "@aws-sdk/middleware-recursion-detection": "3.226.0", + "@aws-sdk/middleware-retry": "3.235.0", + "@aws-sdk/middleware-serde": "3.226.0", + "@aws-sdk/middleware-stack": "3.226.0", + "@aws-sdk/middleware-user-agent": "3.226.0", + "@aws-sdk/node-config-provider": "3.226.0", + "@aws-sdk/node-http-handler": "3.226.0", + "@aws-sdk/protocol-http": "3.226.0", + "@aws-sdk/smithy-client": "3.234.0", + "@aws-sdk/types": "3.226.0", + "@aws-sdk/url-parser": "3.226.0", + "@aws-sdk/util-base64": "3.208.0", + "@aws-sdk/util-body-length-browser": "3.188.0", + "@aws-sdk/util-body-length-node": "3.208.0", + "@aws-sdk/util-defaults-mode-browser": "3.234.0", + "@aws-sdk/util-defaults-mode-node": "3.234.0", + "@aws-sdk/util-endpoints": "3.241.0", + "@aws-sdk/util-retry": "3.229.0", + "@aws-sdk/util-user-agent-browser": "3.226.0", + "@aws-sdk/util-user-agent-node": "3.226.0", + "@aws-sdk/util-utf8-browser": "3.188.0", + "@aws-sdk/util-utf8-node": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/client-sts": { + "version": "3.241.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.241.0.tgz", + "integrity": "sha512-vmlG8cJzRf8skCtTJbA2wBvD2c3NQ5gZryzJvTKDS06KzBzcEpnjlLseuTekcnOiRNekbFUX5hRu5Zj3N2ReLg==", + "dev": true, + "dependencies": { + "@aws-crypto/sha256-browser": "2.0.0", + "@aws-crypto/sha256-js": "2.0.0", + "@aws-sdk/config-resolver": "3.234.0", + "@aws-sdk/credential-provider-node": "3.241.0", + "@aws-sdk/fetch-http-handler": "3.226.0", + "@aws-sdk/hash-node": "3.226.0", + "@aws-sdk/invalid-dependency": "3.226.0", + "@aws-sdk/middleware-content-length": "3.226.0", + "@aws-sdk/middleware-endpoint": "3.226.0", + "@aws-sdk/middleware-host-header": "3.226.0", + "@aws-sdk/middleware-logger": "3.226.0", + "@aws-sdk/middleware-recursion-detection": "3.226.0", + "@aws-sdk/middleware-retry": "3.235.0", + "@aws-sdk/middleware-sdk-sts": "3.226.0", + "@aws-sdk/middleware-serde": "3.226.0", + "@aws-sdk/middleware-signing": "3.226.0", + "@aws-sdk/middleware-stack": "3.226.0", + "@aws-sdk/middleware-user-agent": "3.226.0", + "@aws-sdk/node-config-provider": "3.226.0", + "@aws-sdk/node-http-handler": "3.226.0", + "@aws-sdk/protocol-http": "3.226.0", + "@aws-sdk/smithy-client": "3.234.0", + "@aws-sdk/types": "3.226.0", + "@aws-sdk/url-parser": "3.226.0", + "@aws-sdk/util-base64": "3.208.0", + "@aws-sdk/util-body-length-browser": "3.188.0", + "@aws-sdk/util-body-length-node": "3.208.0", + "@aws-sdk/util-defaults-mode-browser": "3.234.0", + "@aws-sdk/util-defaults-mode-node": "3.234.0", + "@aws-sdk/util-endpoints": "3.241.0", + "@aws-sdk/util-retry": "3.229.0", + "@aws-sdk/util-user-agent-browser": "3.226.0", + "@aws-sdk/util-user-agent-node": "3.226.0", + "@aws-sdk/util-utf8-browser": "3.188.0", + "@aws-sdk/util-utf8-node": "3.208.0", + "fast-xml-parser": "4.0.11", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.241.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.241.0.tgz", + "integrity": "sha512-CI+mu6h74Kzmscw35TvNkc/wYHsHPGAwP7humSHoWw53H9mVw21Ggft/dT1iFQQZWQ8BNXkzuXlNo1IlqwMgOA==", + "dev": true, + "dependencies": { + "@aws-sdk/credential-provider-env": "3.226.0", + "@aws-sdk/credential-provider-imds": "3.226.0", + "@aws-sdk/credential-provider-process": "3.226.0", + "@aws-sdk/credential-provider-sso": "3.241.0", + "@aws-sdk/credential-provider-web-identity": "3.226.0", + "@aws-sdk/property-provider": "3.226.0", + "@aws-sdk/shared-ini-file-loader": "3.226.0", + "@aws-sdk/types": "3.226.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/credential-provider-node": { + "version": "3.241.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.241.0.tgz", + "integrity": "sha512-08zPQcD5o9brQmzEipWHeHgU85aQcEF8MWLfpeyjO6e1/l7ysQ35NsS+PYtv77nLpGCx/X+ZuW/KXWoRrbw77w==", + "dev": true, + "dependencies": { + "@aws-sdk/credential-provider-env": "3.226.0", + "@aws-sdk/credential-provider-imds": "3.226.0", + "@aws-sdk/credential-provider-ini": "3.241.0", + "@aws-sdk/credential-provider-process": "3.226.0", + "@aws-sdk/credential-provider-sso": "3.241.0", + "@aws-sdk/credential-provider-web-identity": "3.226.0", + "@aws-sdk/property-provider": "3.226.0", + "@aws-sdk/shared-ini-file-loader": "3.226.0", + "@aws-sdk/types": "3.226.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.241.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.241.0.tgz", + "integrity": "sha512-6Bjd6eEIrVomRTrPrM4dlxusQm+KMJ9hLYKECCpFkwDKIK+pTgZNLRtQdalHyzwneHJPdimrm8cOv1kUQ8hPoA==", + "dev": true, + "dependencies": { + "@aws-sdk/client-sso": "3.241.0", + "@aws-sdk/property-provider": "3.226.0", + "@aws-sdk/shared-ini-file-loader": "3.226.0", + "@aws-sdk/token-providers": "3.241.0", + "@aws-sdk/types": "3.226.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/token-providers": { + "version": "3.241.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.241.0.tgz", + "integrity": "sha512-79okvuOS7V559OIL/RalIPG98wzmWxeFOChFnbEjn2pKOyGQ6FJRwLPYZaVRtNdAtnkBNgRpmFq9dX843QxhtQ==", + "dev": true, + "dependencies": { + "@aws-sdk/client-sso-oidc": "3.241.0", + "@aws-sdk/property-provider": "3.226.0", + "@aws-sdk/shared-ini-file-loader": "3.226.0", + "@aws-sdk/types": "3.226.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-ssm/node_modules/@aws-sdk/util-endpoints": { + "version": "3.241.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.241.0.tgz", + "integrity": "sha512-jVf8bKrN22Ey0xLmj75sL7EUvm5HFpuOMkXsZkuXycKhCwLBcEUWlvtJYtRjOU1zScPQv9GMJd2QXQglp34iOQ==", + "dev": true, + "dependencies": { + "@aws-sdk/types": "3.226.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-ssm/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@aws-sdk/client-sso": { + "version": "3.235.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.235.0.tgz", + "integrity": "sha512-CdZ2EnDuB6V41u6brk/Nt19EZneLorsNkNWr4J7zkR/2gKiqdUN6PUs6jxDtK9M7V/r81jaE0ViLwLVmYhL/bQ==", + "dependencies": { + "@aws-crypto/sha256-browser": "2.0.0", + "@aws-crypto/sha256-js": "2.0.0", + "@aws-sdk/config-resolver": "3.234.0", + "@aws-sdk/fetch-http-handler": "3.226.0", + "@aws-sdk/hash-node": "3.226.0", + "@aws-sdk/invalid-dependency": "3.226.0", + "@aws-sdk/middleware-content-length": "3.226.0", + "@aws-sdk/middleware-endpoint": "3.226.0", + "@aws-sdk/middleware-host-header": "3.226.0", + "@aws-sdk/middleware-logger": "3.226.0", + "@aws-sdk/middleware-recursion-detection": "3.226.0", + "@aws-sdk/middleware-retry": "3.235.0", + "@aws-sdk/middleware-serde": "3.226.0", + "@aws-sdk/middleware-stack": "3.226.0", + "@aws-sdk/middleware-user-agent": "3.226.0", + "@aws-sdk/node-config-provider": "3.226.0", + "@aws-sdk/node-http-handler": "3.226.0", + "@aws-sdk/protocol-http": "3.226.0", + "@aws-sdk/smithy-client": "3.234.0", + "@aws-sdk/types": "3.226.0", + "@aws-sdk/url-parser": "3.226.0", + "@aws-sdk/util-base64": "3.208.0", + "@aws-sdk/util-body-length-browser": "3.188.0", + "@aws-sdk/util-body-length-node": "3.208.0", + "@aws-sdk/util-defaults-mode-browser": "3.234.0", + "@aws-sdk/util-defaults-mode-node": "3.234.0", + "@aws-sdk/util-endpoints": "3.226.0", + "@aws-sdk/util-retry": "3.229.0", + "@aws-sdk/util-user-agent-browser": "3.226.0", + "@aws-sdk/util-user-agent-node": "3.226.0", + "@aws-sdk/util-utf8-browser": "3.188.0", + "@aws-sdk/util-utf8-node": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sso-oidc": { + "version": "3.235.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.235.0.tgz", + "integrity": "sha512-oSF0lSPmE5jaaigxc5TZyDjqfgTiDsromEdvv5s5a/qAOZBNtsVaS4+8cn9kIt43Ceo7dxHXk7cwvXMNPwVnWw==", + "dependencies": { + "@aws-crypto/sha256-browser": "2.0.0", + "@aws-crypto/sha256-js": "2.0.0", + "@aws-sdk/config-resolver": "3.234.0", + "@aws-sdk/fetch-http-handler": "3.226.0", + "@aws-sdk/hash-node": "3.226.0", + "@aws-sdk/invalid-dependency": "3.226.0", + "@aws-sdk/middleware-content-length": "3.226.0", + "@aws-sdk/middleware-endpoint": "3.226.0", + "@aws-sdk/middleware-host-header": "3.226.0", + "@aws-sdk/middleware-logger": "3.226.0", + "@aws-sdk/middleware-recursion-detection": "3.226.0", + "@aws-sdk/middleware-retry": "3.235.0", + "@aws-sdk/middleware-serde": "3.226.0", + "@aws-sdk/middleware-stack": "3.226.0", + "@aws-sdk/middleware-user-agent": "3.226.0", + "@aws-sdk/node-config-provider": "3.226.0", + "@aws-sdk/node-http-handler": "3.226.0", + "@aws-sdk/protocol-http": "3.226.0", + "@aws-sdk/smithy-client": "3.234.0", + "@aws-sdk/types": "3.226.0", + "@aws-sdk/url-parser": "3.226.0", + "@aws-sdk/util-base64": "3.208.0", + "@aws-sdk/util-body-length-browser": "3.188.0", + "@aws-sdk/util-body-length-node": "3.208.0", + "@aws-sdk/util-defaults-mode-browser": "3.234.0", + "@aws-sdk/util-defaults-mode-node": "3.234.0", + "@aws-sdk/util-endpoints": "3.226.0", + "@aws-sdk/util-retry": "3.229.0", + "@aws-sdk/util-user-agent-browser": "3.226.0", + "@aws-sdk/util-user-agent-node": "3.226.0", + "@aws-sdk/util-utf8-browser": "3.188.0", + "@aws-sdk/util-utf8-node": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/abort-controller": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.215.0.tgz", + "integrity": "sha512-HTvL542nawhVqe0oC1AJchdcomEOmPivJEzYUT1LqiG3e8ikxMNa2KWSqqLPeKi2t0A/cfQy7wDUyg9+BZhDSQ==", + "dependencies": { + "@aws-sdk/types": "3.215.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/config-resolver": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.215.0.tgz", + "integrity": "sha512-DxX4R+YYLQOtg0qfceKBrjVD4t1mQBG1eb7IVr2QSlckFCX8ztUNymFMuaSEo3938Jyy/NpgfUDpFqPDaSKnng==", + "dependencies": { + "@aws-sdk/signature-v4": "3.215.0", + "@aws-sdk/types": "3.215.0", + "@aws-sdk/util-config-provider": "3.208.0", + "@aws-sdk/util-middleware": "3.215.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/credential-provider-imds": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.215.0.tgz", + "integrity": "sha512-/4FUUR6u9gkNfxB6mEwBr0kk0myIkrDcXbAocWN3fPd/t7otzxpx/JqPZXgM6kcVP7M4T/QT75l1E1RRHLWCCQ==", + "dependencies": { + "@aws-sdk/node-config-provider": "3.215.0", + "@aws-sdk/property-provider": "3.215.0", + "@aws-sdk/types": "3.215.0", + "@aws-sdk/url-parser": "3.215.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/fetch-http-handler": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.215.0.tgz", + "integrity": "sha512-JfZyrJOE+0ik1PumsIUZd0NfgEx4sZ43VSdPCD9GRhssRWudNsSF1B5fz3xA5v+1y5oQPjXZyaWCzKtnYruiWw==", + "dependencies": { + "@aws-sdk/protocol-http": "3.215.0", + "@aws-sdk/querystring-builder": "3.215.0", + "@aws-sdk/types": "3.215.0", + "@aws-sdk/util-base64": "3.208.0", + "tslib": "^2.3.1" + } + }, + "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/hash-node": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.215.0.tgz", + "integrity": "sha512-MkSRuZvo1RCRmI0VNEmRYCGGD/DkMd9lqnLtOyglMPnSX1mhyD4/DyXmcc3rYa7PsjDRAfykGWJRiMqpoMLjiQ==", + "dependencies": { + "@aws-sdk/types": "3.215.0", + "@aws-sdk/util-buffer-from": "3.208.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/invalid-dependency": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.215.0.tgz", + "integrity": "sha512-++bK4BUQe8/CL/YcLZcQB8qPOhiXxhbuhYzfFS7PNVvW1QOLqKRZL/lKs24gzjcOmw7IhAbCybDZwvu2TM4DAg==", + "dependencies": { + "@aws-sdk/types": "3.215.0", + "tslib": "^2.3.1" + } + }, + "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/is-array-buffer": { + "version": "3.201.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.201.0.tgz", + "integrity": "sha512-UPez5qLh3dNgt0DYnPD/q0mVJY84rA17QE26hVNOW3fAji8W2wrwrxdacWOxyXvlxWsVRcKmr+lay1MDqpAMfg==", + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/middleware-content-length": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.215.0.tgz", + "integrity": "sha512-zKJRb6jDLFl9nl/muSFbiQHA4uK3skinuDRcyLbpMvvzhuK/PVodv9QI1+wIUsFdXkaSxAlva1oG4bL8ZFi+sQ==", + "dependencies": { + "@aws-sdk/protocol-http": "3.215.0", + "@aws-sdk/types": "3.215.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/middleware-host-header": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.215.0.tgz", + "integrity": "sha512-GOqI7VwoENZwn+6tIMrrJ4SipIqL2JCh+BNvORVcy7CQxn1ViKkna7iaCx+QMjpg/kn9cR6kfY0n1FmgZR1w9A==", + "dependencies": { + "@aws-sdk/protocol-http": "3.215.0", + "@aws-sdk/types": "3.215.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/middleware-logger": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.215.0.tgz", + "integrity": "sha512-0h4GGF0rV3jnY3jxmcAWsOdqHCYf25s0biSjmgTei+l/5S+geOGrovRPCNep0LLg0i9D8bkZsXISojilETbf+g==", + "dependencies": { + "@aws-sdk/types": "3.215.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.215.0.tgz", + "integrity": "sha512-KQ+kiEsaluM4i6opjusUukxY78+UhfR7vzXHDkzZK/GplQ1hY0B+rwVO1eaULmlnmf3FK+Wd6lwrPV7xS2W+EA==", + "dependencies": { + "@aws-sdk/protocol-http": "3.215.0", + "@aws-sdk/types": "3.215.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/middleware-retry": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.215.0.tgz", + "integrity": "sha512-I/dnUPVg2Kp3lW+MywBoPp06EOng8IfuaS9ph4bcJpQKrhNU5ekRgCHH2C4k1A6GcP8uyHxQ5TVV6j+l0QPIsA==", + "dependencies": { + "@aws-sdk/protocol-http": "3.215.0", + "@aws-sdk/service-error-classification": "3.215.0", + "@aws-sdk/types": "3.215.0", + "@aws-sdk/util-middleware": "3.215.0", + "tslib": "^2.3.1", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/middleware-serde": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.215.0.tgz", + "integrity": "sha512-+uhLXdKvvQZcRRFc3UmemSr/YUHA4Jc+1YMjHxc3v8vvfztFJBb0wgBx999myOi8PmkYThlRBQDzXy9UCIhIJw==", + "dependencies": { + "@aws-sdk/types": "3.215.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/middleware-stack": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.215.0.tgz", + "integrity": "sha512-rdSVL7LxRgjlvoluqwODD4ypBy2k/YVl6FrDplyCMSi8m2WHZG99FzdmR9bpnWK+0DGzYZSMRYx6ynJ9N9PsSw==", + "dependencies": { + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.215.0.tgz", + "integrity": "sha512-X6GfoMNoEITTw7rGL/gWs8UZ0cmmmezvKcl+KtHsA642R05OR4mY5G7LdbWAw0bcrwKsuKOGmwUrC9lzGqbWUw==", + "dependencies": { + "@aws-sdk/protocol-http": "3.215.0", + "@aws-sdk/types": "3.215.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/node-config-provider": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.215.0.tgz", + "integrity": "sha512-notckD94QwwxC0GsfpTxB7VH8SREIIlMsUSddqGtpModa0cq/wRb9rqnydZSoznbYpK1ND6h0C9hr/2PNz89zw==", + "dependencies": { + "@aws-sdk/property-provider": "3.215.0", + "@aws-sdk/shared-ini-file-loader": "3.215.0", + "@aws-sdk/types": "3.215.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/node-http-handler": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.215.0.tgz", + "integrity": "sha512-btKWSR7m0UuWIN3p5MfSIvhqeYik7xri7U6nWuVI5GVzIYjzxEZOMvPAinDLDxL5wipodi0ZvTUNdDJdm7BcGQ==", + "dependencies": { + "@aws-sdk/abort-controller": "3.215.0", + "@aws-sdk/protocol-http": "3.215.0", + "@aws-sdk/querystring-builder": "3.215.0", + "@aws-sdk/types": "3.215.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/property-provider": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.215.0.tgz", + "integrity": "sha512-dDPjMCCopkRURAmOJCMSlpIQ5BGWCpYj0+FIfZ5qWQs24fn1PAkQHecOiBhJO0ZSVuQy3xcIyWsAp1NE5e+7ug==", + "dependencies": { + "@aws-sdk/types": "3.215.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/protocol-http": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.215.0.tgz", + "integrity": "sha512-qp6Y6v4S534LAjadiVl9p7ErK7ImphOKq6yhFyQwxko6iITLcz8ib3yU27fs4QJcnNj5ZooqW/YlL/0EikDxCQ==", + "dependencies": { + "@aws-sdk/types": "3.215.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/querystring-builder": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.215.0.tgz", + "integrity": "sha512-eilk8CqG37BVhQklLif00K2dOJgDzacUi8h3KVQ72ry1V3h345i4HsmaFIxvnz8XtNyDvV8qFAzeYg9n2P9RQA==", + "dependencies": { + "@aws-sdk/types": "3.215.0", + "@aws-sdk/util-uri-escape": "3.201.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/querystring-parser": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.215.0.tgz", + "integrity": "sha512-8h/9H8dWM4fZO27UGzo8W5JXln4yJMugPyUl4qFA437gzPgNFN95+oLJWXtHMlfCHC5T/PDKetY9TarMDgBD0Q==", + "dependencies": { + "@aws-sdk/types": "3.215.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/service-error-classification": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.215.0.tgz", + "integrity": "sha512-SKBvClGFGzMPsjBBKjneaUazLCNr6bSxe9eFvOr3gCwuwE2jPQwW3VE1mb62howuvm6cLthEDwLQp/FsT1gMsw==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/shared-ini-file-loader": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.215.0.tgz", + "integrity": "sha512-unzQeLOyUiYHr8WxxandHo0OaCj31gx0wpt8dn2cZcHm/MdCqHcHcsQqOVnQsWQrrxY/XZ27cPyMVQeicNKYwQ==", + "dependencies": { + "@aws-sdk/types": "3.215.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/signature-v4": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.215.0.tgz", + "integrity": "sha512-Rc73uUCi3eJneO25DydLTfJYamXeuKS9YIhNMTKlpvcN1UQAmAnUbAmCuEmqvkYOiGD1i4/kd8kBga708iIikQ==", + "dependencies": { + "@aws-sdk/is-array-buffer": "3.201.0", + "@aws-sdk/types": "3.215.0", + "@aws-sdk/util-hex-encoding": "3.201.0", + "@aws-sdk/util-middleware": "3.215.0", + "@aws-sdk/util-uri-escape": "3.201.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/smithy-client": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.215.0.tgz", + "integrity": "sha512-PiZfCdZkPohzMPrRmJ46TPOf2Tr/dhKYdwQArRnOOIsJABUGXjlzCUE8vysDN35XZYRx5f9hd+/U7kayhniq2w==", "dependencies": { - "@aws-sdk/credential-provider-env": "3.226.0", - "@aws-sdk/credential-provider-imds": "3.226.0", - "@aws-sdk/credential-provider-process": "3.226.0", - "@aws-sdk/credential-provider-sso": "3.238.0", - "@aws-sdk/credential-provider-web-identity": "3.226.0", - "@aws-sdk/property-provider": "3.226.0", - "@aws-sdk/shared-ini-file-loader": "3.226.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/middleware-stack": "3.215.0", + "@aws-sdk/types": "3.215.0", "tslib": "^2.3.1" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.238.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.238.0.tgz", - "integrity": "sha512-/RN5EyGfgdIIJdFzv+O0nSaHX1/F3anQjTIBeVg8GJ+82m+bDxMdALsG+NzkYnLilN9Uhc1lSNjLBCoPa5DSEg==", - "dev": true, + "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/types": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.215.0.tgz", + "integrity": "sha512-eRbCVjwzTYd9C5e2mceScJ6D2kYDDEC3PLkYfJa+1wH9iiF2JlbiYozAokyeYBHQ+AjmD93MK58RBoM8iZfH0Q==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/url-parser": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.215.0.tgz", + "integrity": "sha512-r/qIk3TUlV36JvoRjTErFm0LzzgNKLB1YUG8zVZCGAc2TEATi8OVEmsZvi+KfTmsbszulITJVcjZKbHLbGoUzg==", + "dependencies": { + "@aws-sdk/querystring-parser": "3.215.0", + "@aws-sdk/types": "3.215.0", + "tslib": "^2.3.1" + } + }, + "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/util-body-length-browser": { + "version": "3.188.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.188.0.tgz", + "integrity": "sha512-8VpnwFWXhnZ/iRSl9mTf+VKOX9wDE8QtN4bj9pBfxwf90H1X7E8T6NkiZD3k+HubYf2J94e7DbeHs7fuCPW5Qg==", + "dependencies": { + "tslib": "^2.3.1" + } + }, + "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/util-body-length-node": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.208.0.tgz", + "integrity": "sha512-3zj50e5g7t/MQf53SsuuSf0hEELzMtD8RX8C76f12OSRo2Bca4FLLYHe0TZbxcfQHom8/hOaeZEyTyMogMglqg==", "dependencies": { - "@aws-sdk/credential-provider-env": "3.226.0", - "@aws-sdk/credential-provider-imds": "3.226.0", - "@aws-sdk/credential-provider-ini": "3.238.0", - "@aws-sdk/credential-provider-process": "3.226.0", - "@aws-sdk/credential-provider-sso": "3.238.0", - "@aws-sdk/credential-provider-web-identity": "3.226.0", - "@aws-sdk/property-provider": "3.226.0", - "@aws-sdk/shared-ini-file-loader": "3.226.0", - "@aws-sdk/types": "3.226.0", "tslib": "^2.3.1" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.238.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.238.0.tgz", - "integrity": "sha512-i70V4bFlCVYey3QARJ6XxKEg/4YuoFRnePV2oK37UHOGpEn49uXKwVZqLjzJgFHln7BPlC06cWDqrHUQIMvYrQ==", - "dev": true, + "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/util-config-provider": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.208.0.tgz", + "integrity": "sha512-DSRqwrERUsT34ug+anlMBIFooBEGwM8GejC7q00Y/9IPrQy50KnG5PW2NiTjuLKNi7pdEOlwTSEocJE15eDZIg==", "dependencies": { - "@aws-sdk/client-sso": "3.238.0", - "@aws-sdk/property-provider": "3.226.0", - "@aws-sdk/shared-ini-file-loader": "3.226.0", - "@aws-sdk/token-providers": "3.238.0", - "@aws-sdk/types": "3.226.0", "tslib": "^2.3.1" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/middleware-retry": { - "version": "3.235.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.235.0.tgz", - "integrity": "sha512-50WHbJGpD3SNp9763MAlHqIhXil++JdQbKejNpHg7HsJne/ao3ub+fDOfx//mMBjpzBV25BGd5UlfL6blrClSg==", - "dev": true, + "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/util-defaults-mode-browser": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.215.0.tgz", + "integrity": "sha512-MiNfZgB0I4dR8CBxH163W7c9KvE38sgCHNPWopMqSX5ezz7cuCPohCU0XsWd4I7K31PvzuqmKgOiKBAZraQJMA==", "dependencies": { - "@aws-sdk/protocol-http": "3.226.0", - "@aws-sdk/service-error-classification": "3.229.0", - "@aws-sdk/types": "3.226.0", - "@aws-sdk/util-middleware": "3.226.0", - "@aws-sdk/util-retry": "3.229.0", - "tslib": "^2.3.1", - "uuid": "^8.3.2" + "@aws-sdk/property-provider": "3.215.0", + "@aws-sdk/types": "3.215.0", + "bowser": "^2.11.0", + "tslib": "^2.3.1" }, "engines": { - "node": ">=14.0.0" + "node": ">= 10.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/smithy-client": { - "version": "3.234.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.234.0.tgz", - "integrity": "sha512-8AtR/k4vsFvjXeQbIzq/Wy7Nbk48Ou0wUEeVYPHWHPSU8QamFWORkOwmKtKMfHAyZvmqiAPeQqHFkq+UJhWyyQ==", - "dev": true, + "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/util-defaults-mode-node": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.215.0.tgz", + "integrity": "sha512-mSp3R8GljQ+4UT3QMOksQk9L0cWbFLvR7bBmAlt4+GobgTjpRfzFjBP3uwrCqFa3BKDUR3FeJq3qwo+xeY1Krg==", "dependencies": { - "@aws-sdk/middleware-stack": "3.226.0", - "@aws-sdk/types": "3.226.0", + "@aws-sdk/config-resolver": "3.215.0", + "@aws-sdk/credential-provider-imds": "3.215.0", + "@aws-sdk/node-config-provider": "3.215.0", + "@aws-sdk/property-provider": "3.215.0", + "@aws-sdk/types": "3.215.0", "tslib": "^2.3.1" }, "engines": { - "node": ">=14.0.0" + "node": ">= 10.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/token-providers": { - "version": "3.238.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.238.0.tgz", - "integrity": "sha512-vYUwmy0kTzA99mJCVvad+/5RDlWve/xxnppT8DJK3JIdAgskp+rULY+joVnq2NSl489UAioUnFGs57vUxi8Pog==", - "dev": true, + "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/util-hex-encoding": { + "version": "3.201.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.201.0.tgz", + "integrity": "sha512-7t1vR1pVxKx0motd3X9rI3m/xNp78p3sHtP5yo4NP4ARpxyJ0fokBomY8ScaH2D/B+U5o9ARxldJUdMqyBlJcA==", "dependencies": { - "@aws-sdk/client-sso-oidc": "3.238.0", - "@aws-sdk/property-provider": "3.226.0", - "@aws-sdk/shared-ini-file-loader": "3.226.0", - "@aws-sdk/types": "3.226.0", "tslib": "^2.3.1" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/util-defaults-mode-browser": { - "version": "3.234.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.234.0.tgz", - "integrity": "sha512-IHMKXjTbOD8XMz5+2oCOsVP94BYb9YyjXdns0aAXr2NAo7k2+RCzXQ2DebJXppGda1F6opFutoKwyVSN0cmbMw==", - "dev": true, + "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/util-middleware": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.215.0.tgz", + "integrity": "sha512-DfHGlFlQCr+T/xhjS36HH8JEThDVB5lg5NZ6x4Cibhyeps9YX/4ovLAIx3B19H34sdWhZi7q6LfslCHLRu2+7Q==", "dependencies": { - "@aws-sdk/property-provider": "3.226.0", - "@aws-sdk/types": "3.226.0", - "bowser": "^2.11.0", "tslib": "^2.3.1" }, "engines": { - "node": ">= 10.0.0" + "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/util-defaults-mode-node": { - "version": "3.234.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.234.0.tgz", - "integrity": "sha512-UGjQ+OjBYYhxFVtUY+jtr0ZZgzZh6OHtYwRhFt8IHewJXFCfZTyfsbX20szBj5y1S4HRIUJ7cwBLIytTqMbI5w==", - "dev": true, + "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/util-uri-escape": { + "version": "3.201.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.201.0.tgz", + "integrity": "sha512-TeTWbGx4LU2c5rx0obHeDFeO9HvwYwQtMh1yniBz00pQb6Qt6YVOETVQikRZ+XRQwEyCg/dA375UplIpiy54mA==", "dependencies": { - "@aws-sdk/config-resolver": "3.234.0", - "@aws-sdk/credential-provider-imds": "3.226.0", - "@aws-sdk/node-config-provider": "3.226.0", - "@aws-sdk/property-provider": "3.226.0", - "@aws-sdk/types": "3.226.0", "tslib": "^2.3.1" }, "engines": { - "node": ">= 10.0.0" + "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" + "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.215.0.tgz", + "integrity": "sha512-uZz6BJWr8sJcA+onveS1lFqnbIXBHwvkyHLgCuuGhAxd5yY6YNLhpJBnhy9Fb8/aSbk6yao3qxlokqw9gthmAw==", + "dependencies": { + "@aws-sdk/types": "3.215.0", + "bowser": "^2.11.0", + "tslib": "^2.3.1" } }, - "node_modules/@aws-sdk/client-sso": { - "version": "3.231.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.231.0.tgz", - "integrity": "sha512-/q7BptaMiT6/wxW9vE/gcQuApMXio5vdTuqt77A6+mjqhNzYFfCn7RRS4BU8KEOpZObnYBKP3mYe3NDccEbMzQ==", + "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.215.0.tgz", + "integrity": "sha512-4lrdd1oGRwJEwfvgvg1jcJ2O0bwElsvtiqZfTRHN6MNTFUqsKl0xHlgFChQsz3Hfrc1niWtZCmbqQKGdO5ARpw==", "dependencies": { - "@aws-crypto/sha256-browser": "2.0.0", - "@aws-crypto/sha256-js": "2.0.0", - "@aws-sdk/config-resolver": "3.231.0", - "@aws-sdk/fetch-http-handler": "3.226.0", - "@aws-sdk/hash-node": "3.226.0", - "@aws-sdk/invalid-dependency": "3.226.0", - "@aws-sdk/middleware-content-length": "3.226.0", - "@aws-sdk/middleware-endpoint": "3.226.0", - "@aws-sdk/middleware-host-header": "3.226.0", - "@aws-sdk/middleware-logger": "3.226.0", - "@aws-sdk/middleware-recursion-detection": "3.226.0", - "@aws-sdk/middleware-retry": "3.229.0", - "@aws-sdk/middleware-serde": "3.226.0", - "@aws-sdk/middleware-stack": "3.226.0", - "@aws-sdk/middleware-user-agent": "3.226.0", - "@aws-sdk/node-config-provider": "3.226.0", - "@aws-sdk/node-http-handler": "3.226.0", - "@aws-sdk/protocol-http": "3.226.0", - "@aws-sdk/smithy-client": "3.226.0", - "@aws-sdk/types": "3.226.0", - "@aws-sdk/url-parser": "3.226.0", - "@aws-sdk/util-base64": "3.208.0", - "@aws-sdk/util-body-length-browser": "3.188.0", - "@aws-sdk/util-body-length-node": "3.208.0", - "@aws-sdk/util-defaults-mode-browser": "3.226.0", - "@aws-sdk/util-defaults-mode-node": "3.231.0", - "@aws-sdk/util-endpoints": "3.226.0", - "@aws-sdk/util-retry": "3.229.0", - "@aws-sdk/util-user-agent-browser": "3.226.0", - "@aws-sdk/util-user-agent-node": "3.226.0", - "@aws-sdk/util-utf8-browser": "3.188.0", - "@aws-sdk/util-utf8-node": "3.208.0", + "@aws-sdk/node-config-provider": "3.215.0", + "@aws-sdk/types": "3.215.0", "tslib": "^2.3.1" }, "engines": { "node": ">=14.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } } }, - "node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.231.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.231.0.tgz", - "integrity": "sha512-yqEZW9/Q6VvMDMcQoE52oa/oa6F8z8cqyax7m29VpuVrncYcfELpkZKWPoaJVfierR5ysKfKiAU0acPgMpvllQ==", + "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/util-utf8-browser": { + "version": "3.188.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.188.0.tgz", + "integrity": "sha512-jt627x0+jE+Ydr9NwkFstg3cUvgWh56qdaqAMDsqgRlKD21md/6G226z/Qxl7lb1VEW2LlmCx43ai/37Qwcj2Q==", "dependencies": { - "@aws-crypto/sha256-browser": "2.0.0", - "@aws-crypto/sha256-js": "2.0.0", - "@aws-sdk/config-resolver": "3.231.0", - "@aws-sdk/fetch-http-handler": "3.226.0", - "@aws-sdk/hash-node": "3.226.0", - "@aws-sdk/invalid-dependency": "3.226.0", - "@aws-sdk/middleware-content-length": "3.226.0", - "@aws-sdk/middleware-endpoint": "3.226.0", - "@aws-sdk/middleware-host-header": "3.226.0", - "@aws-sdk/middleware-logger": "3.226.0", - "@aws-sdk/middleware-recursion-detection": "3.226.0", - "@aws-sdk/middleware-retry": "3.229.0", - "@aws-sdk/middleware-serde": "3.226.0", - "@aws-sdk/middleware-stack": "3.226.0", - "@aws-sdk/middleware-user-agent": "3.226.0", - "@aws-sdk/node-config-provider": "3.226.0", - "@aws-sdk/node-http-handler": "3.226.0", - "@aws-sdk/protocol-http": "3.226.0", - "@aws-sdk/smithy-client": "3.226.0", - "@aws-sdk/types": "3.226.0", - "@aws-sdk/url-parser": "3.226.0", - "@aws-sdk/util-base64": "3.208.0", - "@aws-sdk/util-body-length-browser": "3.188.0", - "@aws-sdk/util-body-length-node": "3.208.0", - "@aws-sdk/util-defaults-mode-browser": "3.226.0", - "@aws-sdk/util-defaults-mode-node": "3.231.0", - "@aws-sdk/util-endpoints": "3.226.0", - "@aws-sdk/util-retry": "3.229.0", - "@aws-sdk/util-user-agent-browser": "3.226.0", - "@aws-sdk/util-user-agent-node": "3.226.0", - "@aws-sdk/util-utf8-browser": "3.188.0", - "@aws-sdk/util-utf8-node": "3.208.0", + "tslib": "^2.3.1" + } + }, + "node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/util-utf8-node": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-node/-/util-utf8-node-3.208.0.tgz", + "integrity": "sha512-jKY87Acv0yWBdFxx6bveagy5FYjz+dtV8IPT7ay1E2WPWH1czoIdMAkc8tSInK31T6CRnHWkLZ1qYwCbgRfERQ==", + "dependencies": { + "@aws-sdk/util-buffer-from": "3.208.0", "tslib": "^2.3.1" }, "engines": { @@ -837,14 +1597,14 @@ } }, "node_modules/@aws-sdk/client-sts": { - "version": "3.231.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.231.0.tgz", - "integrity": "sha512-5WYqlcbM49ofOFBsu28QBt3t26M5D9XynhSaswSrCzawwdNkIMYQrKOCplF5mqOy+GywVIRrFeCVVrAKPMZJxQ==", + "version": "3.235.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.235.0.tgz", + "integrity": "sha512-P1pqvg7brdBUGrTlyMc+LCe6rnWrWufdd7bpzuC9lcVzkoOHJw8j8wDItwoCsvy1O3SeK7vtmOTLxV2yuTEO3Q==", "dependencies": { "@aws-crypto/sha256-browser": "2.0.0", "@aws-crypto/sha256-js": "2.0.0", - "@aws-sdk/config-resolver": "3.231.0", - "@aws-sdk/credential-provider-node": "3.231.0", + "@aws-sdk/config-resolver": "3.234.0", + "@aws-sdk/credential-provider-node": "3.235.0", "@aws-sdk/fetch-http-handler": "3.226.0", "@aws-sdk/hash-node": "3.226.0", "@aws-sdk/invalid-dependency": "3.226.0", @@ -853,7 +1613,7 @@ "@aws-sdk/middleware-host-header": "3.226.0", "@aws-sdk/middleware-logger": "3.226.0", "@aws-sdk/middleware-recursion-detection": "3.226.0", - "@aws-sdk/middleware-retry": "3.229.0", + "@aws-sdk/middleware-retry": "3.235.0", "@aws-sdk/middleware-sdk-sts": "3.226.0", "@aws-sdk/middleware-serde": "3.226.0", "@aws-sdk/middleware-signing": "3.226.0", @@ -862,14 +1622,14 @@ "@aws-sdk/node-config-provider": "3.226.0", "@aws-sdk/node-http-handler": "3.226.0", "@aws-sdk/protocol-http": "3.226.0", - "@aws-sdk/smithy-client": "3.226.0", + "@aws-sdk/smithy-client": "3.234.0", "@aws-sdk/types": "3.226.0", "@aws-sdk/url-parser": "3.226.0", "@aws-sdk/util-base64": "3.208.0", "@aws-sdk/util-body-length-browser": "3.188.0", "@aws-sdk/util-body-length-node": "3.208.0", - "@aws-sdk/util-defaults-mode-browser": "3.226.0", - "@aws-sdk/util-defaults-mode-node": "3.231.0", + "@aws-sdk/util-defaults-mode-browser": "3.234.0", + "@aws-sdk/util-defaults-mode-node": "3.234.0", "@aws-sdk/util-endpoints": "3.226.0", "@aws-sdk/util-retry": "3.229.0", "@aws-sdk/util-user-agent-browser": "3.226.0", @@ -884,9 +1644,9 @@ } }, "node_modules/@aws-sdk/config-resolver": { - "version": "3.231.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.231.0.tgz", - "integrity": "sha512-qpjV4Fw/NQ4a0p5/qwzqaShflYRlY/SPcgA7N5GTJjIjZjg3NV+5BKJSF3VeZcNKfbXq68kkn207OSCpyheYxQ==", + "version": "3.234.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.234.0.tgz", + "integrity": "sha512-uZxy4wzllfvgCQxVc+Iqhde0NGAnfmV2hWR6ejadJaAFTuYNvQiRg9IqJy3pkyDPqXySiJ8Bom5PoJfgn55J/A==", "dependencies": { "@aws-sdk/signature-v4": "3.226.0", "@aws-sdk/types": "3.226.0", @@ -927,13 +1687,14 @@ } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.231.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.231.0.tgz", - "integrity": "sha512-4JJgrJg2O91Vki4m5nSQNZGX/5yAYgzG1IOjeZ+8vCDxfR+jA2O9+/Xhi2/8aDpb1da77OJ+cK1+ezzSMchIfQ==", + "version": "3.235.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.235.0.tgz", + "integrity": "sha512-i3efxJw+9hN/opmjlRqT0lv/gKjOHmgGBUbFCdbCmSUTc8QH3sbkIY6FLX2q0PSu4q4CpCwWZ587lkThtFerJA==", "dependencies": { "@aws-sdk/credential-provider-env": "3.226.0", "@aws-sdk/credential-provider-imds": "3.226.0", - "@aws-sdk/credential-provider-sso": "3.231.0", + "@aws-sdk/credential-provider-process": "3.226.0", + "@aws-sdk/credential-provider-sso": "3.235.0", "@aws-sdk/credential-provider-web-identity": "3.226.0", "@aws-sdk/property-provider": "3.226.0", "@aws-sdk/shared-ini-file-loader": "3.226.0", @@ -945,15 +1706,15 @@ } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.231.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.231.0.tgz", - "integrity": "sha512-DOojjyYdLNeBQv9+PaDXmvvww9SmcZsaL1YCl27e5larcJSMfT41vn4WRnVRu2zBI2BIi464Z8ziRRKwd2YFVg==", + "version": "3.235.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.235.0.tgz", + "integrity": "sha512-xJSAntEBlbXbngSzpyMnlZzOldxV0sNOQ7ggDUmIQNVWbu3XwP6MiA8CjAHnH10vs6+pcyHtpfUj3evdQZ4JlQ==", "dependencies": { "@aws-sdk/credential-provider-env": "3.226.0", "@aws-sdk/credential-provider-imds": "3.226.0", - "@aws-sdk/credential-provider-ini": "3.231.0", + "@aws-sdk/credential-provider-ini": "3.235.0", "@aws-sdk/credential-provider-process": "3.226.0", - "@aws-sdk/credential-provider-sso": "3.231.0", + "@aws-sdk/credential-provider-sso": "3.235.0", "@aws-sdk/credential-provider-web-identity": "3.226.0", "@aws-sdk/property-provider": "3.226.0", "@aws-sdk/shared-ini-file-loader": "3.226.0", @@ -979,14 +1740,14 @@ } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.231.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.231.0.tgz", - "integrity": "sha512-aImUD+PAqZ7A2C1ef7gskMN3KuxFT4Am1Vrl6M0oLGyrhKG2QtRT/UaXJE+Yt6d/C2qc2OsQ9j2oim7D6Qha/A==", + "version": "3.235.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.235.0.tgz", + "integrity": "sha512-+7UORB7Wo/d0mEz7J16/hsRumIhtdl4KekJfrXH5OrLiXXIsn68wmQkrvwD2CibbtgOY0P69G12qbcBHkg3qng==", "dependencies": { - "@aws-sdk/client-sso": "3.231.0", + "@aws-sdk/client-sso": "3.235.0", "@aws-sdk/property-provider": "3.226.0", "@aws-sdk/shared-ini-file-loader": "3.226.0", - "@aws-sdk/token-providers": "3.231.0", + "@aws-sdk/token-providers": "3.235.0", "@aws-sdk/types": "3.226.0", "tslib": "^2.3.1" }, @@ -1065,11 +1826,11 @@ } }, "node_modules/@aws-sdk/lib-dynamodb": { - "version": "3.231.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/lib-dynamodb/-/lib-dynamodb-3.231.0.tgz", - "integrity": "sha512-q1gvuxBQGR+xflaTbEP9Q+jCqnuqtznVrKt26skVUvzjmJJLB1dxHxwUPHv6SKO3R+bby7ATlVGQwQkZxViSGA==", + "version": "3.235.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/lib-dynamodb/-/lib-dynamodb-3.235.0.tgz", + "integrity": "sha512-jugMLrtVBCxK5+vFTEhm6Gb5MbvE14HUvN/WoMhAZFOYD0v0DEfzutyD2mwCpCJQJeQbMKz3q6YEhDFgbyBXSA==", "dependencies": { - "@aws-sdk/util-dynamodb": "3.231.0", + "@aws-sdk/util-dynamodb": "3.235.0", "tslib": "^2.3.1" }, "engines": { @@ -1113,11 +1874,11 @@ } }, "node_modules/@aws-sdk/middleware-endpoint-discovery": { - "version": "3.231.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.231.0.tgz", - "integrity": "sha512-8HRZRrZWuAlm/I8uwFG8+iK8TCJWHSizRTEZfNazx7V5anOk55UeCVg3ifuXnFPmGeb4VDBRTn4h2dUx4LRKLQ==", + "version": "3.234.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.234.0.tgz", + "integrity": "sha512-HNZJbxXrSJfITJjAisqrju7T4S7U186xcmYr28CZX9XQNm6fc/bxcqj+8JRntWsekiJYyTvQLIrKxiCaa+TA9A==", "dependencies": { - "@aws-sdk/config-resolver": "3.231.0", + "@aws-sdk/config-resolver": "3.234.0", "@aws-sdk/endpoint-cache": "3.208.0", "@aws-sdk/protocol-http": "3.226.0", "@aws-sdk/types": "3.226.0", @@ -1166,14 +1927,15 @@ } }, "node_modules/@aws-sdk/middleware-retry": { - "version": "3.229.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.229.0.tgz", - "integrity": "sha512-/y0BWio9b2RRH2QvRTohbuqE0vhH4IZKlc6k+JRbGV9aSwyOzACU/L/qkGftC/W0puvgNvZYjGxmB6cGHAEZaw==", + "version": "3.235.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.235.0.tgz", + "integrity": "sha512-50WHbJGpD3SNp9763MAlHqIhXil++JdQbKejNpHg7HsJne/ao3ub+fDOfx//mMBjpzBV25BGd5UlfL6blrClSg==", "dependencies": { "@aws-sdk/protocol-http": "3.226.0", "@aws-sdk/service-error-classification": "3.229.0", "@aws-sdk/types": "3.226.0", "@aws-sdk/util-middleware": "3.226.0", + "@aws-sdk/util-retry": "3.229.0", "tslib": "^2.3.1", "uuid": "^8.3.2" }, @@ -1372,9 +2134,9 @@ } }, "node_modules/@aws-sdk/smithy-client": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.226.0.tgz", - "integrity": "sha512-BWr1FhWSUhkSBp0TLzliD5AQBjA2Jmo9FlOOt+cBwd9BKkSGlGj+HgATYJ83Sjjg2+J6qvEZBxB78LKVHhorBw==", + "version": "3.234.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.234.0.tgz", + "integrity": "sha512-8AtR/k4vsFvjXeQbIzq/Wy7Nbk48Ou0wUEeVYPHWHPSU8QamFWORkOwmKtKMfHAyZvmqiAPeQqHFkq+UJhWyyQ==", "dependencies": { "@aws-sdk/middleware-stack": "3.226.0", "@aws-sdk/types": "3.226.0", @@ -1385,11 +2147,11 @@ } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.231.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.231.0.tgz", - "integrity": "sha512-sxx6X/moSdukyrnoBtLxmgQQLWqixMc/qAM5yNg5lfNoGamWslH6CnT1HlxTFv71q8/1xwnvZ4LC2kbD6vDc6Q==", + "version": "3.235.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.235.0.tgz", + "integrity": "sha512-TdUbQ0wWVTO7azF/8ojtd4MNFjEfQKhGoGib0g/W5pa/FJryOkiIP8U4POC/I+0ATMkLK3vAC07kNHtey0ooZg==", "dependencies": { - "@aws-sdk/client-sso-oidc": "3.231.0", + "@aws-sdk/client-sso-oidc": "3.235.0", "@aws-sdk/property-provider": "3.226.0", "@aws-sdk/shared-ini-file-loader": "3.226.0", "@aws-sdk/types": "3.226.0", @@ -1399,6 +2161,38 @@ "node": ">=14.0.0" } }, + "node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/property-provider": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.215.0.tgz", + "integrity": "sha512-dDPjMCCopkRURAmOJCMSlpIQ5BGWCpYj0+FIfZ5qWQs24fn1PAkQHecOiBhJO0ZSVuQy3xcIyWsAp1NE5e+7ug==", + "dependencies": { + "@aws-sdk/types": "3.215.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/shared-ini-file-loader": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.215.0.tgz", + "integrity": "sha512-unzQeLOyUiYHr8WxxandHo0OaCj31gx0wpt8dn2cZcHm/MdCqHcHcsQqOVnQsWQrrxY/XZ27cPyMVQeicNKYwQ==", + "dependencies": { + "@aws-sdk/types": "3.215.0", + "tslib": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/token-providers/node_modules/@aws-sdk/types": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.215.0.tgz", + "integrity": "sha512-eRbCVjwzTYd9C5e2mceScJ6D2kYDDEC3PLkYfJa+1wH9iiF2JlbiYozAokyeYBHQ+AjmD93MK58RBoM8iZfH0Q==", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/@aws-sdk/types": { "version": "3.226.0", "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.226.0.tgz", @@ -1475,9 +2269,9 @@ } }, "node_modules/@aws-sdk/util-defaults-mode-browser": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.226.0.tgz", - "integrity": "sha512-chLx+6AeMSjuPsCVbI1B4Pg3jftjjcsuTsJucjo0DKBb1VSWqPCitmOILQVvKiA2Km8TSs3VcbUuOCyDExkzAg==", + "version": "3.234.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.234.0.tgz", + "integrity": "sha512-IHMKXjTbOD8XMz5+2oCOsVP94BYb9YyjXdns0aAXr2NAo7k2+RCzXQ2DebJXppGda1F6opFutoKwyVSN0cmbMw==", "dependencies": { "@aws-sdk/property-provider": "3.226.0", "@aws-sdk/types": "3.226.0", @@ -1489,11 +2283,11 @@ } }, "node_modules/@aws-sdk/util-defaults-mode-node": { - "version": "3.231.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.231.0.tgz", - "integrity": "sha512-jH+9z96x8Oxv+bqBdD7x8CRvbKzM9id+VHzI9+h1oTY9J+6MkUubPshliBTQeus5pD03NBOS/2F3GX2rJ9Avuw==", + "version": "3.234.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.234.0.tgz", + "integrity": "sha512-UGjQ+OjBYYhxFVtUY+jtr0ZZgzZh6OHtYwRhFt8IHewJXFCfZTyfsbX20szBj5y1S4HRIUJ7cwBLIytTqMbI5w==", "dependencies": { - "@aws-sdk/config-resolver": "3.231.0", + "@aws-sdk/config-resolver": "3.234.0", "@aws-sdk/credential-provider-imds": "3.226.0", "@aws-sdk/node-config-provider": "3.226.0", "@aws-sdk/property-provider": "3.226.0", @@ -1505,9 +2299,9 @@ } }, "node_modules/@aws-sdk/util-dynamodb": { - "version": "3.231.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-dynamodb/-/util-dynamodb-3.231.0.tgz", - "integrity": "sha512-7+Mj3wBqUdgV0U+9Va+89qafclXhEsjULTbfNdfic4C3PVtcRb1B5on5EPg3g2r3OlDoJBYFjoyW4CAro7TCiA==", + "version": "3.235.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-dynamodb/-/util-dynamodb-3.235.0.tgz", + "integrity": "sha512-y3gC1o16yN7F/Vt4UM9QKOx3qNxZmu/y8YAWS0vC+ZCZqjh4vf+0AuzQWmat+2pHV5qUAgBxOcpr+K3uz1kTiw==", "dependencies": { "tslib": "^2.3.1" }, @@ -2375,9 +3169,9 @@ } }, "node_modules/@commitlint/load/node_modules/@types/node": { - "version": "14.18.34", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.34.tgz", - "integrity": "sha512-hcU9AIQVHmPnmjRK+XUUYlILlr9pQrsqSrwov/JK1pnf3GTQowVBhx54FbvM0AU/VXGH4i3+vgXS5EguR7fysA==", + "version": "14.18.35", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.35.tgz", + "integrity": "sha512-2ATO8pfhG1kDvw4Lc4C0GXIMSQFFJBCo/R1fSgTwmUlq5oy95LXyjDQinsRVgQY6gp6ghh3H91wk9ES5/5C+Tw==", "dev": true }, "node_modules/@commitlint/message": { @@ -2522,9 +3316,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.7.tgz", - "integrity": "sha512-yhzDbiVcmq6T1/XEvdcJIVcXHdLjDJ5cQ0Dp9R9p9ERMBTeO1dR5tc8YYv8zwDeBw1xZm+Eo3MRo8cwclhBS0g==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.10.tgz", + "integrity": "sha512-RmJjQTRrO6VwUWDrzTBLmV4OJZTarYsiepLGlF2rYTVB701hSorPywPGvP6d8HCuuRibyXa5JX4s3jN2kHEtjQ==", "cpu": [ "arm" ], @@ -2538,9 +3332,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.7.tgz", - "integrity": "sha512-tYFw0lBJSEvLoGzzYh1kXuzoX1iPkbOk3O29VqzQb0HbOy7t/yw1hGkvwoJhXHwzQUPsShyYcTgRf6bDBcfnTw==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.10.tgz", + "integrity": "sha512-47Y+NwVKTldTlDhSgJHZ/RpvBQMUDG7eKihqaF/u6g7s0ZPz4J1vy8A3rwnnUOF2CuDn7w7Gj/QcMoWz3U3SJw==", "cpu": [ "arm64" ], @@ -2554,9 +3348,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.7.tgz", - "integrity": "sha512-3P2OuTxwAtM3k/yEWTNUJRjMPG1ce8rXs51GTtvEC5z1j8fC1plHeVVczdeHECU7aM2/Buc0MwZ6ciM/zysnWg==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.10.tgz", + "integrity": "sha512-C4PfnrBMcuAcOurQzpF1tTtZz94IXO5JmICJJ3NFJRHbXXsQUg9RFG45KvydKqtFfBaFLCHpduUkUfXwIvGnRg==", "cpu": [ "x64" ], @@ -2570,9 +3364,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.7.tgz", - "integrity": "sha512-VUb9GK23z8jkosHU9yJNUgQpsfJn+7ZyBm6adi2Ec5/U241eR1tAn82QicnUzaFDaffeixiHwikjmnec/YXEZg==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.10.tgz", + "integrity": "sha512-bH/bpFwldyOKdi9HSLCLhhKeVgRYr9KblchwXgY2NeUHBB/BzTUHtUSBgGBmpydB1/4E37m+ggXXfSrnD7/E7g==", "cpu": [ "arm64" ], @@ -2586,9 +3380,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.7.tgz", - "integrity": "sha512-duterlv3tit3HI9vhzMWnSVaB1B6YsXpFq1Ntd6Fou82BB1l4tucYy3FI9dHv3tvtDuS0NiGf/k6XsdBqPZ01w==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.10.tgz", + "integrity": "sha512-OXt7ijoLuy+AjDSKQWu+KdDFMBbdeaL6wtgMKtDUXKWHiAMKHan5+R1QAG6HD4+K0nnOvEJXKHeA9QhXNAjOTQ==", "cpu": [ "x64" ], @@ -2602,9 +3396,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.7.tgz", - "integrity": "sha512-9kkycpBFes/vhi7B7o0cf+q2WdJi+EpVzpVTqtWFNiutARWDFFLcB93J8PR1cG228sucsl3B+7Ts27izE6qiaQ==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.10.tgz", + "integrity": "sha512-shSQX/3GHuspE3Uxtq5kcFG/zqC+VuMnJkqV7LczO41cIe6CQaXHD3QdMLA4ziRq/m0vZo7JdterlgbmgNIAlQ==", "cpu": [ "arm64" ], @@ -2618,9 +3412,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.7.tgz", - "integrity": "sha512-5Ahf6jzWXJ4J2uh9dpy5DKOO+PeRUE/9DMys6VuYfwgQzd6n5+pVFm58L2Z2gRe611RX6SdydnNaiIKM3svY7g==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.10.tgz", + "integrity": "sha512-5YVc1zdeaJGASijZmTzSO4h6uKzsQGG3pkjI6fuXvolhm3hVRhZwnHJkforaZLmzvNv5Tb7a3QL2FAVmrgySIA==", "cpu": [ "x64" ], @@ -2634,9 +3428,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.7.tgz", - "integrity": "sha512-QqJnyCfu5OF78Olt7JJSZ7OSv/B4Hf+ZJWp4kkq9xwMsgu7yWq3crIic8gGOpDYTqVKKMDAVDgRXy5Wd/nWZyQ==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.10.tgz", + "integrity": "sha512-c360287ZWI2miBnvIj23bPyVctgzeMT2kQKR+x94pVqIN44h3GF8VMEs1SFPH1UgyDr3yBbx3vowDS1SVhyVhA==", "cpu": [ "arm" ], @@ -2650,9 +3444,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.7.tgz", - "integrity": "sha512-2wv0xYDskk2+MzIm/AEprDip39a23Chptc4mL7hsHg26P0gD8RUhzmDu0KCH2vMThUI1sChXXoK9uH0KYQKaDg==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.10.tgz", + "integrity": "sha512-2aqeNVxIaRfPcIaMZIFoblLh588sWyCbmj1HHCCs9WmeNWm+EIN0SmvsmPvTa/TsNZFKnxTcvkX2eszTcCqIrA==", "cpu": [ "arm64" ], @@ -2666,9 +3460,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.7.tgz", - "integrity": "sha512-APVYbEilKbD5ptmKdnIcXej2/+GdV65TfTjxR2Uk8t1EsOk49t6HapZW6DS/Bwlvh5hDwtLapdSumIVNGxgqLg==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.10.tgz", + "integrity": "sha512-sqMIEWeyrLGU7J5RB5fTkLRIFwsgsQ7ieWXlDLEmC2HblPYGb3AucD7inw2OrKFpRPKsec1l+lssiM3+NV5aOw==", "cpu": [ "ia32" ], @@ -2682,9 +3476,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.7.tgz", - "integrity": "sha512-5wPUAGclplQrAW7EFr3F84Y/d++7G0KykohaF4p54+iNWhUnMVU8Bh2sxiEOXUy4zKIdpHByMgJ5/Ko6QhtTUw==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.10.tgz", + "integrity": "sha512-O7Pd5hLEtTg37NC73pfhUOGTjx/+aXu5YoSq3ahCxcN7Bcr2F47mv+kG5t840thnsEzrv0oB70+LJu3gUgchvg==", "cpu": [ "loong64" ], @@ -2698,9 +3492,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.7.tgz", - "integrity": "sha512-hxzlXtWF6yWfkE/SMTscNiVqLOAn7fOuIF3q/kiZaXxftz1DhZW/HpnTmTTWrzrS7zJWQxHHT4QSxyAj33COmA==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.10.tgz", + "integrity": "sha512-FN8mZOH7531iPHM0kaFhAOqqNHoAb6r/YHW2ZIxNi0a85UBi2DO4Vuyn7t1p4UN8a4LoAnLOT1PqNgHkgBJgbA==", "cpu": [ "mips64el" ], @@ -2714,9 +3508,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.7.tgz", - "integrity": "sha512-WM83Dac0LdXty5xPhlOuCD5Egfk1xLND/oRLYeB7Jb/tY4kzFSDgLlq91wYbHua/s03tQGA9iXvyjgymMw62Vw==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.10.tgz", + "integrity": "sha512-Dg9RiqdvHOAWnOKIOTsIx8dFX9EDlY2IbPEY7YFzchrCiTZmMkD7jWA9UdZbNUygPjdmQBVPRCrLydReFlX9yg==", "cpu": [ "ppc64" ], @@ -2730,9 +3524,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.7.tgz", - "integrity": "sha512-3nkNnNg4Ax6MS/l8O8Ynq2lGEVJYyJ2EoY3PHjNJ4PuZ80EYLMrFTFZ4L/Hc16AxgtXKwmNP9TM0YKNiBzBiJQ==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.10.tgz", + "integrity": "sha512-XMqtpjwzbmlar0BJIxmzu/RZ7EWlfVfH68Vadrva0Wj5UKOdKvqskuev2jY2oPV3aoQUyXwnMbMrFmloO2GfAw==", "cpu": [ "riscv64" ], @@ -2746,9 +3540,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.7.tgz", - "integrity": "sha512-3SA/2VJuv0o1uD7zuqxEP+RrAyRxnkGddq0bwHQ98v1KNlzXD/JvxwTO3T6GM5RH6JUd29RTVQTOJfyzMkkppA==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.10.tgz", + "integrity": "sha512-fu7XtnoeRNFMx8DjK3gPWpFBDM2u5ba+FYwg27SjMJwKvJr4bDyKz5c+FLXLUSSAkMAt/UL+cUbEbra+rYtUgw==", "cpu": [ "s390x" ], @@ -2762,9 +3556,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.7.tgz", - "integrity": "sha512-xi/tbqCqvPIzU+zJVyrpz12xqciTAPMi2fXEWGnapZymoGhuL2GIWIRXg4O2v5BXaYA5TSaiKYE14L0QhUTuQg==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.10.tgz", + "integrity": "sha512-61lcjVC/RldNNMUzQQdyCWjCxp9YLEQgIxErxU9XluX7juBdGKb0pvddS0vPNuCvotRbzijZ1pzII+26haWzbA==", "cpu": [ "x64" ], @@ -2778,9 +3572,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.7.tgz", - "integrity": "sha512-NUsYbq3B+JdNKn8SXkItFvdes9qTwEoS3aLALtiWciW/ystiCKM20Fgv9XQBOXfhUHyh5CLEeZDXzLOrwBXuCQ==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.10.tgz", + "integrity": "sha512-JeZXCX3viSA9j4HqSoygjssdqYdfHd6yCFWyfSekLbz4Ef+D2EjvsN02ZQPwYl5a5gg/ehdHgegHhlfOFP0HCA==", "cpu": [ "x64" ], @@ -2794,9 +3588,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.7.tgz", - "integrity": "sha512-qjwzsgeve9I8Tbsko2FEkdSk2iiezuNGFgipQxY/736NePXDaDZRodIejYGWOlbYXugdxb0nif5yvypH6lKBmA==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.10.tgz", + "integrity": "sha512-3qpxQKuEVIIg8SebpXsp82OBrqjPV/OwNWmG+TnZDr3VGyChNnGMHccC1xkbxCHDQNnnXjxhMQNyHmdFJbmbRA==", "cpu": [ "x64" ], @@ -2810,9 +3604,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.7.tgz", - "integrity": "sha512-mFWDz4RoBTzPphTCkM7Kc7Qpa0o/Z01acajR+Ai7LdfKgcP/C6jYOaKwv7nKzD0+MjOT20j7You9g4ozYy1dKQ==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.10.tgz", + "integrity": "sha512-z+q0xZ+et/7etz7WoMyXTHZ1rB8PMSNp/FOqURLJLOPb3GWJ2aj4oCqFCjPwEbW1rsT7JPpxeH/DwGAWk/I1Bg==", "cpu": [ "x64" ], @@ -2826,9 +3620,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.7.tgz", - "integrity": "sha512-m39UmX19RvEIuC8sYZ0M+eQtdXw4IePDSZ78ZQmYyFaXY9krq4YzQCK2XWIJomNLtg4q+W5aXr8bW3AbqWNoVg==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.10.tgz", + "integrity": "sha512-+YYu5sbQ9npkNT9Dec+tn1F/kjg6SMgr6bfi/6FpXYZvCRfu2YFPZGb+3x8K30s8eRxFpoG4sGhiSUkr1xbHEw==", "cpu": [ "arm64" ], @@ -2842,9 +3636,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.7.tgz", - "integrity": "sha512-1cbzSEZA1fANwmT6rjJ4G1qQXHxCxGIcNYFYR9ctI82/prT38lnwSRZ0i5p/MVXksw9eMlHlet6pGu2/qkXFCg==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.10.tgz", + "integrity": "sha512-Aw7Fupk7XNehR1ftHGYwUteyJ2q+em/aE+fVU3YMTBN2V5A7Z4aVCSV+SvCp9HIIHZavPFBpbdP3VfjQpdf6Xg==", "cpu": [ "ia32" ], @@ -2858,9 +3652,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.7.tgz", - "integrity": "sha512-QaQ8IH0JLacfGf5cf0HCCPnQuCTd/dAI257vXBgb/cccKGbH/6pVtI1gwhdAQ0Y48QSpTIFrh9etVyNdZY+zzw==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.10.tgz", + "integrity": "sha512-qddWullt3sC1EIpfHvCRBq3H4g3L86DZpD6n8k2XFjFVyp01D++uNbN1hT/JRsHxTbyyemZcpwL5aRlJwc/zFw==", "cpu": [ "x64" ], @@ -2874,15 +3668,15 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", - "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.0.tgz", + "integrity": "sha512-7yfvXy6MWLgWSFsLhz5yH3iQ52St8cdUY6FoGieKkRDVxuxmrNuUetIuu6cmjNWwniUHiWXjxCr5tTXDrbYS5A==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^9.4.0", - "globals": "^13.15.0", + "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -4985,9 +5779,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "18.11.15", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.15.tgz", - "integrity": "sha512-VkhBbVo2+2oozlkdHXLrb3zjsRkpdnaU2bXmX8Wgle3PUi569eLRaHGlgETQHR7lLL1w7GiG3h9SnePhxNDecw==" + "version": "18.11.17", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.17.tgz", + "integrity": "sha512-HJSUJmni4BeDHhfzn6nF0sVmd1SMezP7/4F0Lq+aXzmp2xm9O7WXrUtHW/CHlYVtZUbByEvWidHqRtcJXGF2Ng==" }, "node_modules/@types/normalize-package-data": { "version": "2.4.1", @@ -5002,9 +5796,9 @@ "dev": true }, "node_modules/@types/prettier": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.1.tgz", - "integrity": "sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow==", + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", + "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", "dev": true }, "node_modules/@types/promise-retry": { @@ -5071,14 +5865,14 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.46.1.tgz", - "integrity": "sha512-YpzNv3aayRBwjs4J3oz65eVLXc9xx0PDbIRisHj+dYhvBn02MjYOD96P8YGiWEIFBrojaUjxvkaUpakD82phsA==", + "version": "5.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.47.0.tgz", + "integrity": "sha512-AHZtlXAMGkDmyLuLZsRpH3p4G/1iARIwc/T0vIem2YB+xW6pZaXYXzCBnZSF/5fdM97R9QqZWZ+h3iW10XgevQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.46.1", - "@typescript-eslint/type-utils": "5.46.1", - "@typescript-eslint/utils": "5.46.1", + "@typescript-eslint/scope-manager": "5.47.0", + "@typescript-eslint/type-utils": "5.47.0", + "@typescript-eslint/utils": "5.47.0", "debug": "^4.3.4", "ignore": "^5.2.0", "natural-compare-lite": "^1.4.0", @@ -5104,14 +5898,14 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.46.1.tgz", - "integrity": "sha512-RelQ5cGypPh4ySAtfIMBzBGyrNerQcmfA1oJvPj5f+H4jI59rl9xxpn4bonC0tQvUKOEN7eGBFWxFLK3Xepneg==", + "version": "5.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.47.0.tgz", + "integrity": "sha512-udPU4ckK+R1JWCGdQC4Qa27NtBg7w020ffHqGyAK8pAgOVuNw7YaKXGChk+udh+iiGIJf6/E/0xhVXyPAbsczw==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.46.1", - "@typescript-eslint/types": "5.46.1", - "@typescript-eslint/typescript-estree": "5.46.1", + "@typescript-eslint/scope-manager": "5.47.0", + "@typescript-eslint/types": "5.47.0", + "@typescript-eslint/typescript-estree": "5.47.0", "debug": "^4.3.4" }, "engines": { @@ -5131,13 +5925,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.46.1.tgz", - "integrity": "sha512-iOChVivo4jpwUdrJZyXSMrEIM/PvsbbDOX1y3UCKjSgWn+W89skxWaYXACQfxmIGhPVpRWK/VWPYc+bad6smIA==", + "version": "5.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.47.0.tgz", + "integrity": "sha512-dvJab4bFf7JVvjPuh3sfBUWsiD73aiftKBpWSfi3sUkysDQ4W8x+ZcFpNp7Kgv0weldhpmMOZBjx1wKN8uWvAw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.46.1", - "@typescript-eslint/visitor-keys": "5.46.1" + "@typescript-eslint/types": "5.47.0", + "@typescript-eslint/visitor-keys": "5.47.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -5148,13 +5942,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.46.1.tgz", - "integrity": "sha512-V/zMyfI+jDmL1ADxfDxjZ0EMbtiVqj8LUGPAGyBkXXStWmCUErMpW873zEHsyguWCuq2iN4BrlWUkmuVj84yng==", + "version": "5.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.47.0.tgz", + "integrity": "sha512-1J+DFFrYoDUXQE1b7QjrNGARZE6uVhBqIvdaXTe5IN+NmEyD68qXR1qX1g2u4voA+nCaelQyG8w30SAOihhEYg==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "5.46.1", - "@typescript-eslint/utils": "5.46.1", + "@typescript-eslint/typescript-estree": "5.47.0", + "@typescript-eslint/utils": "5.47.0", "debug": "^4.3.4", "tsutils": "^3.21.0" }, @@ -5175,9 +5969,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.46.1.tgz", - "integrity": "sha512-Z5pvlCaZgU+93ryiYUwGwLl9AQVB/PQ1TsJ9NZ/gHzZjN7g9IAn6RSDkpCV8hqTwAiaj6fmCcKSQeBPlIpW28w==", + "version": "5.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.47.0.tgz", + "integrity": "sha512-eslFG0Qy8wpGzDdYKu58CEr3WLkjwC5Usa6XbuV89ce/yN5RITLe1O8e+WFEuxnfftHiJImkkOBADj58ahRxSg==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -5188,13 +5982,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.46.1.tgz", - "integrity": "sha512-j9W4t67QiNp90kh5Nbr1w92wzt+toiIsaVPnEblB2Ih2U9fqBTyqV9T3pYWZBRt6QoMh/zVWP59EpuCjc4VRBg==", + "version": "5.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.47.0.tgz", + "integrity": "sha512-LxfKCG4bsRGq60Sqqu+34QT5qT2TEAHvSCCJ321uBWywgE2dS0LKcu5u+3sMGo+Vy9UmLOhdTw5JHzePV/1y4Q==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.46.1", - "@typescript-eslint/visitor-keys": "5.46.1", + "@typescript-eslint/types": "5.47.0", + "@typescript-eslint/visitor-keys": "5.47.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -5215,16 +6009,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.46.1.tgz", - "integrity": "sha512-RBdBAGv3oEpFojaCYT4Ghn4775pdjvwfDOfQ2P6qzNVgQOVrnSPe5/Pb88kv7xzYQjoio0eKHKB9GJ16ieSxvA==", + "version": "5.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.47.0.tgz", + "integrity": "sha512-U9xcc0N7xINrCdGVPwABjbAKqx4GK67xuMV87toI+HUqgXj26m6RBp9UshEXcTrgCkdGYFzgKLt8kxu49RilDw==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.46.1", - "@typescript-eslint/types": "5.46.1", - "@typescript-eslint/typescript-estree": "5.46.1", + "@typescript-eslint/scope-manager": "5.47.0", + "@typescript-eslint/types": "5.47.0", + "@typescript-eslint/typescript-estree": "5.47.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0", "semver": "^7.3.7" @@ -5241,12 +6035,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.46.1.tgz", - "integrity": "sha512-jczZ9noovXwy59KjRTk1OftT78pwygdcmCuBf8yMoWt/8O8l+6x2LSEze0E4TeepXK4MezW3zGSyoDRZK7Y9cg==", + "version": "5.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.47.0.tgz", + "integrity": "sha512-ByPi5iMa6QqDXe/GmT/hR6MZtVPi0SqMQPDx15FczCBXJo/7M8T88xReOALAfpBLm+zxpPfmhuEvPb577JRAEg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.46.1", + "@typescript-eslint/types": "5.47.0", "eslint-visitor-keys": "^3.3.0" }, "engines": { @@ -5729,9 +6523,9 @@ } }, "node_modules/aws-cdk": { - "version": "2.55.0", - "resolved": "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.55.0.tgz", - "integrity": "sha512-SlsaKh1tEiFLWas99OffxoTLugkEZZHY552QeY4ZPXJaUx9kocGYc9s13IO8Y9/cBfoQVvh2KLev4J2+63vKyg==", + "version": "2.55.1", + "resolved": "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.55.1.tgz", + "integrity": "sha512-M/d4lO7rLMvPedNj7pEQtwyxn7nVLluiHggftXlYHOIeaoMG1QCbH1zTuZtMZZxdRRD4ZiOEHvvPYFU/HMcrPQ==", "dev": true, "bin": { "cdk": "bin/cdk" @@ -5744,9 +6538,9 @@ } }, "node_modules/aws-cdk-lib": { - "version": "2.55.0", - "resolved": "https://registry.npmjs.org/aws-cdk-lib/-/aws-cdk-lib-2.55.0.tgz", - "integrity": "sha512-YCtfmMiITU5ncrrQmq5wls2EeCUOLOBDLWO2ZkaUozIS+VbEDChK8rT66OmgQSPwFntKNSJq0P65tR7kN5/i8g==", + "version": "2.55.1", + "resolved": "https://registry.npmjs.org/aws-cdk-lib/-/aws-cdk-lib-2.55.1.tgz", + "integrity": "sha512-v0MhL6RqazQ2HKj9TXJvXKQcQNIDYeRzcOJ2xB2Usz56xodArc2goLu2P51X5J84xOO4w2AgNaWMCBzd7MbyOQ==", "bundleDependencies": [ "@balena/dockerignore", "case", @@ -5950,9 +6744,9 @@ } }, "node_modules/aws-sdk": { - "version": "2.1276.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1276.0.tgz", - "integrity": "sha512-0TGPsW/uMQy0trfYZD+dvSQ9Bf8NmKK9ISj5xQJGopNt/Kxh0vLKBPy2mFmKdxeFtis6wn4c9uTp7/3p0ADa1w==", + "version": "2.1279.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1279.0.tgz", + "integrity": "sha512-52NbHEZTLlrld6XDLvVaOwEI0p4nYTYVuninX8s4kdkBXeTezaBahsufWT7LmeYh10gp70dnwaUxvja1TjmeRA==", "dev": true, "dependencies": { "buffer": "4.9.2", @@ -6660,14 +7454,14 @@ "dev": true }, "node_modules/cdk-assets": { - "version": "2.55.0", - "resolved": "https://registry.npmjs.org/cdk-assets/-/cdk-assets-2.55.0.tgz", - "integrity": "sha512-okqVag8vV57IeqFJp3lGtHIgDZaCpKJXZ8xRl8dfDayzNuxnuEyJzyAbo8SzlxwE3E+nqvJPVE4hdz0VbtwvqQ==", + "version": "2.55.1", + "resolved": "https://registry.npmjs.org/cdk-assets/-/cdk-assets-2.55.1.tgz", + "integrity": "sha512-ow6ajx3Dgs+ZD3iTu72lYLK97yHEuP1yvOkwKsrJvUkGwGox77btY51gDbp54owonzRHyt3lgfXvzAcq/ne4eg==", "dev": true, "hasShrinkwrap": true, "dependencies": { - "@aws-cdk/cloud-assembly-schema": "2.55.0", - "@aws-cdk/cx-api": "2.55.0", + "@aws-cdk/cloud-assembly-schema": "2.55.1", + "@aws-cdk/cx-api": "2.55.1", "archiver": "^5.3.1", "aws-sdk": "^2.1211.0", "glob": "^7.2.3", @@ -6683,7 +7477,7 @@ } }, "node_modules/cdk-assets/node_modules/@aws-cdk/cloud-assembly-schema": { - "version": "2.55.0", + "version": "2.55.1", "dev": true, "dependencies": { "jsonschema": "^1.4.1", @@ -6691,10 +7485,10 @@ } }, "node_modules/cdk-assets/node_modules/@aws-cdk/cx-api": { - "version": "2.55.0", + "version": "2.55.1", "dev": true, "dependencies": { - "@aws-cdk/cloud-assembly-schema": "2.55.0", + "@aws-cdk/cloud-assembly-schema": "2.55.1", "semver": "^7.3.8" } }, @@ -7825,9 +8619,9 @@ "dev": true }, "node_modules/constructs": { - "version": "10.1.190", - "resolved": "https://registry.npmjs.org/constructs/-/constructs-10.1.190.tgz", - "integrity": "sha512-wGMEBsIKp/tP+b2q3XEtIh/KJPZ2uk7G2XyEbGVEatOo6OQHFhXfBi9BCk8725zuWYP/gZUQJfAvd7KZ+lY5Yw==", + "version": "10.1.196", + "resolved": "https://registry.npmjs.org/constructs/-/constructs-10.1.196.tgz", + "integrity": "sha512-vgVM3vTWu8ZdHEa/icSzmZZOU5berKI+g8eosPKu+KOoAtS6o/eXqYObXejh79vy+rHyKK7yulUtSGCXU4ynUQ==", "dev": true, "engines": { "node": ">= 14.17.0" @@ -8559,9 +9353,9 @@ } }, "node_modules/esbuild": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.7.tgz", - "integrity": "sha512-P6OBFYFSQOGzfApqCeYKqfKRRbCIRsdppTXFo4aAvtiW3o8TTyiIplBvHJI171saPAiy3WlawJHCveJVIOIx1A==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.10.tgz", + "integrity": "sha512-z5dIViHoVnw2l+NCJ3zj5behdXjYvXne9gL18OOivCadXDUhyDkeSvEtLcGVAJW2fNmh33TDUpsi704XYlDodw==", "dev": true, "hasInstallScript": true, "bin": { @@ -8571,28 +9365,28 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/android-arm": "0.16.7", - "@esbuild/android-arm64": "0.16.7", - "@esbuild/android-x64": "0.16.7", - "@esbuild/darwin-arm64": "0.16.7", - "@esbuild/darwin-x64": "0.16.7", - "@esbuild/freebsd-arm64": "0.16.7", - "@esbuild/freebsd-x64": "0.16.7", - "@esbuild/linux-arm": "0.16.7", - "@esbuild/linux-arm64": "0.16.7", - "@esbuild/linux-ia32": "0.16.7", - "@esbuild/linux-loong64": "0.16.7", - "@esbuild/linux-mips64el": "0.16.7", - "@esbuild/linux-ppc64": "0.16.7", - "@esbuild/linux-riscv64": "0.16.7", - "@esbuild/linux-s390x": "0.16.7", - "@esbuild/linux-x64": "0.16.7", - "@esbuild/netbsd-x64": "0.16.7", - "@esbuild/openbsd-x64": "0.16.7", - "@esbuild/sunos-x64": "0.16.7", - "@esbuild/win32-arm64": "0.16.7", - "@esbuild/win32-ia32": "0.16.7", - "@esbuild/win32-x64": "0.16.7" + "@esbuild/android-arm": "0.16.10", + "@esbuild/android-arm64": "0.16.10", + "@esbuild/android-x64": "0.16.10", + "@esbuild/darwin-arm64": "0.16.10", + "@esbuild/darwin-x64": "0.16.10", + "@esbuild/freebsd-arm64": "0.16.10", + "@esbuild/freebsd-x64": "0.16.10", + "@esbuild/linux-arm": "0.16.10", + "@esbuild/linux-arm64": "0.16.10", + "@esbuild/linux-ia32": "0.16.10", + "@esbuild/linux-loong64": "0.16.10", + "@esbuild/linux-mips64el": "0.16.10", + "@esbuild/linux-ppc64": "0.16.10", + "@esbuild/linux-riscv64": "0.16.10", + "@esbuild/linux-s390x": "0.16.10", + "@esbuild/linux-x64": "0.16.10", + "@esbuild/netbsd-x64": "0.16.10", + "@esbuild/openbsd-x64": "0.16.10", + "@esbuild/sunos-x64": "0.16.10", + "@esbuild/win32-arm64": "0.16.10", + "@esbuild/win32-ia32": "0.16.10", + "@esbuild/win32-x64": "0.16.10" } }, "node_modules/escalade": { @@ -8690,13 +9484,13 @@ } }, "node_modules/eslint": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.29.0.tgz", - "integrity": "sha512-isQ4EEiyUjZFbEKvEGJKKGBwXtvXX+zJbkVKCgTuB9t/+jUBcy8avhkEwWJecI15BkRkOYmvIM5ynbhRjEkoeg==", + "version": "8.30.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.30.0.tgz", + "integrity": "sha512-MGADB39QqYuzEGov+F/qb18r4i7DohCDOfatHaxI2iGlPuC65bwG2gxgO+7DkyL38dRFaRH7RaRAgU6JKL9rMQ==", "dev": true, "dependencies": { - "@eslint/eslintrc": "^1.3.3", - "@humanwhocodes/config-array": "^0.11.6", + "@eslint/eslintrc": "^1.4.0", + "@humanwhocodes/config-array": "^0.11.8", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "ajv": "^6.10.0", @@ -8715,7 +9509,7 @@ "file-entry-cache": "^6.0.1", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.15.0", + "globals": "^13.19.0", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "import-fresh": "^3.0.0", @@ -10359,9 +11153,9 @@ "dev": true }, "node_modules/ignore": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.1.tgz", - "integrity": "sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true, "engines": { "node": ">= 4" @@ -12865,13 +13659,13 @@ } }, "node_modules/nise": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.3.tgz", - "integrity": "sha512-U597iWTTBBYIV72986jyU382/MMZ70ApWcRmkoF1AZ75bpqOtI3Gugv/6+0jLgoDOabmcSwYBkSSAWIp1eA5cg==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.4.tgz", + "integrity": "sha512-8+Ib8rRJ4L0o3kfmyVCL7gzrohyDe0cMFTBa2d364yIrEGMEoetznKJx899YxjybU6bL9SQkYPSBBs1gyYs8Xg==", "dev": true, "dependencies": { "@sinonjs/commons": "^2.0.0", - "@sinonjs/fake-timers": "^7.0.4", + "@sinonjs/fake-timers": "^10.0.2", "@sinonjs/text-encoding": "^0.7.1", "just-extend": "^4.0.2", "path-to-regexp": "^1.7.0" @@ -12887,21 +13681,12 @@ } }, "node_modules/nise/node_modules/@sinonjs/fake-timers": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-7.1.2.tgz", - "integrity": "sha512-iQADsW4LBMISqZ6Ci1dupJL9pprqwcVFTcOsEmQOEhW+KLCVn/Y4Jrvg2k19fIHCp+iFprriYPTdRcQR8NbUPg==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^1.7.0" - } - }, - "node_modules/nise/node_modules/@sinonjs/fake-timers/node_modules/@sinonjs/commons": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", - "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz", + "integrity": "sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==", "dev": true, "dependencies": { - "type-detect": "4.0.8" + "@sinonjs/commons": "^2.0.0" } }, "node_modules/node-fetch": { @@ -13081,9 +13866,9 @@ "dev": true }, "node_modules/node-releases": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.7.tgz", - "integrity": "sha512-EJ3rzxL9pTWPjk5arA0s0dgXpnyiAbJDE6wHT62g7VsgrgQgmmZ+Ru++M1BFofncWja+Pnn3rEr3fieRySAdKQ==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz", + "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==", "dev": true }, "node_modules/nopt": { @@ -14610,9 +15395,9 @@ } }, "node_modules/readdir-glob/node_modules/minimatch": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.1.tgz", - "integrity": "sha512-362NP+zlprccbEt/SkxKfRMHnNY85V74mVnpUpNyr3F35covl09Kec7/sEFLt3RA4oXmewtoaanoIf67SE5Y5g==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -16010,14 +16795,14 @@ } }, "node_modules/typedoc": { - "version": "0.23.22", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.23.22.tgz", - "integrity": "sha512-5sJkjK60xp8A7YpcYniu3+Wf0QcgojEnhzHuCN+CkdpQkKRhOspon/9+sGTkGI8kjVkZs3KHrhltpQyVhRMVfw==", + "version": "0.23.23", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.23.23.tgz", + "integrity": "sha512-cg1YQWj+/BU6wq74iott513U16fbrPCbyYs04PHZgvoKJIc6EY4xNobyDZh4KMfRGW8Yjv6wwIzQyoqopKOUGw==", "dev": true, "dependencies": { "lunr": "^2.3.9", - "marked": "^4.0.19", - "minimatch": "^5.1.0", + "marked": "^4.2.4", + "minimatch": "^5.1.1", "shiki": "^0.11.1" }, "bin": { @@ -16049,9 +16834,9 @@ } }, "node_modules/typedoc/node_modules/minimatch": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.1.tgz", - "integrity": "sha512-362NP+zlprccbEt/SkxKfRMHnNY85V74mVnpUpNyr3F35covl09Kec7/sEFLt3RA4oXmewtoaanoIf67SE5Y5g==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -16251,7 +17036,6 @@ "version": "9.0.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", - "dev": true, "bin": { "uuid": "dist/bin/uuid" } @@ -16822,6 +17606,7 @@ }, "devDependencies": { "@aws-sdk/client-secrets-manager": "^3.238.0", + "@aws-sdk/client-ssm": "^3.244.0", "aws-sdk-client-mock": "^2.0.1", "aws-sdk-client-mock-jest": "^2.0.1" } @@ -16855,9 +17640,9 @@ } }, "@aws-cdk/asset-awscli-v1": { - "version": "2.2.30", - "resolved": "https://registry.npmjs.org/@aws-cdk/asset-awscli-v1/-/asset-awscli-v1-2.2.30.tgz", - "integrity": "sha512-mFRF5n1jxjKpX8ZZSCRhJc6Hj8BkeZFUPwK0j6jRcouQQZHsZyydbf4UuzMYQ4SZU6cCLM7DKmWO0Kx156ZSnw==", + "version": "2.2.36", + "resolved": "https://registry.npmjs.org/@aws-cdk/asset-awscli-v1/-/asset-awscli-v1-2.2.36.tgz", + "integrity": "sha512-q4jde7ZqXjOfnEPjfn/VNIKmTFBg4GWCn5KxB8EDny6FWhGE+TkJxTjyu4KgUvcRZCvNqsdWvxGMQOFTTsqaVA==", "dev": true }, "@aws-cdk/asset-kubectl-v20": { @@ -16873,9 +17658,9 @@ "dev": true }, "@aws-cdk/cfnspec": { - "version": "2.55.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/cfnspec/-/cfnspec-2.55.0.tgz", - "integrity": "sha512-lwBV4MxkIO0IIctyylsG+RkdgcMkUdogY34dx23bFuaxmchmGEsx++PyOS4Q/UQojc01JuOiIN5xT9iQBNQQvA==", + "version": "2.55.1", + "resolved": "https://registry.npmjs.org/@aws-cdk/cfnspec/-/cfnspec-2.55.1.tgz", + "integrity": "sha512-jJCaEV9pTLFft2eYkwmblfxUBQeJSH4KbMteiVQdp6wkYbzoj/sjyFInfKHgtfIOeqjNtPZ74Dhl5fRJsOpBDw==", "dev": true, "requires": { "fs-extra": "^9.1.0", @@ -16883,9 +17668,9 @@ } }, "@aws-cdk/cloud-assembly-schema": { - "version": "2.55.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-2.55.0.tgz", - "integrity": "sha512-SZ1Ojl8lOm0X1TUWCR8dTuGMmEJwtZwfTo1S39BiF4RsUungksBj30Us8wtdgaPrWx455mUgbWaY9JQ4ZcEyJw==", + "version": "2.55.1", + "resolved": "https://registry.npmjs.org/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-2.55.1.tgz", + "integrity": "sha512-VVVQaqHP2PsNGRwfPsq1RxoOfyC54DO8RH+2nHqCyPIfSmrIH6Ux5Uk7KAURyXKdb3SjKra66bxPOzvXHOaBXg==", "dev": true, "requires": { "jsonschema": "^1.4.1", @@ -16921,12 +17706,12 @@ } }, "@aws-cdk/cloudformation-diff": { - "version": "2.55.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/cloudformation-diff/-/cloudformation-diff-2.55.0.tgz", - "integrity": "sha512-yvZOH37itWcDwvQdnGOTQPtR+GkgLf9lYsICrOmly/+di++H5p29VS8hgm67n5Mk7EWz0KyqnbZ9hiM++TJ6Jw==", + "version": "2.55.1", + "resolved": "https://registry.npmjs.org/@aws-cdk/cloudformation-diff/-/cloudformation-diff-2.55.1.tgz", + "integrity": "sha512-WgLubFXoQFGZuOkm7YtJx+kS8EN6rX9K6s257qFR7yNGpKBANSPVvWmlWX2qSvg++AkNSxKsuaZi+4V50TNbdA==", "dev": true, "requires": { - "@aws-cdk/cfnspec": "2.55.0", + "@aws-cdk/cfnspec": "2.55.1", "@types/node": "^14.18.34", "chalk": "^4", "diff": "^5.1.0", @@ -16936,20 +17721,20 @@ }, "dependencies": { "@types/node": { - "version": "14.18.34", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.34.tgz", - "integrity": "sha512-hcU9AIQVHmPnmjRK+XUUYlILlr9pQrsqSrwov/JK1pnf3GTQowVBhx54FbvM0AU/VXGH4i3+vgXS5EguR7fysA==", + "version": "14.18.35", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.35.tgz", + "integrity": "sha512-2ATO8pfhG1kDvw4Lc4C0GXIMSQFFJBCo/R1fSgTwmUlq5oy95LXyjDQinsRVgQY6gp6ghh3H91wk9ES5/5C+Tw==", "dev": true } } }, "@aws-cdk/cx-api": { - "version": "2.55.0", - "resolved": "https://registry.npmjs.org/@aws-cdk/cx-api/-/cx-api-2.55.0.tgz", - "integrity": "sha512-KhYPBqEL24mQuEqHHdhcSc8jy7w69bD+NQjji54QGEA1tp+1gaUebTBIlTiOPbB3fzU8GR3f3ALnOQI3wJzr/Q==", + "version": "2.55.1", + "resolved": "https://registry.npmjs.org/@aws-cdk/cx-api/-/cx-api-2.55.1.tgz", + "integrity": "sha512-gWQCn/9gaayf2ev0HjCMQleY1gWJZGImLhsUF8kneYnOPCm/r0qpIzy3BxiWiDFLPh9gykDvHQhpH6EG0aXnGA==", "dev": true, "requires": { - "@aws-cdk/cloud-assembly-schema": "2.55.0", + "@aws-cdk/cloud-assembly-schema": "2.55.1", "semver": "^7.3.8" }, "dependencies": { @@ -17094,6 +17879,7 @@ "version": "file:packages/parameters", "requires": { "@aws-sdk/client-secrets-manager": "^3.238.0", + "@aws-sdk/client-ssm": "^3.244.0", "@aws-sdk/util-base64": "^3.208.0", "aws-sdk-client-mock": "^2.0.1", "aws-sdk-client-mock-jest": "^2.0.1" @@ -17121,25 +17907,25 @@ } }, "@aws-sdk/client-dynamodb": { - "version": "3.231.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.231.0.tgz", - "integrity": "sha512-WvNM3NmsFFB7S7I5B2PECe945bEzdwU3MElLznmcbccaRf31S61C4EAkghm6hXz0EoZlgdRfBqHaRB1PgmAUuA==", + "version": "3.235.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.235.0.tgz", + "integrity": "sha512-GTRrc7EED3er8HNlnfLHI4oFT/sXS84rlUy3acYzLTiYfASK3YUspZ/cu7CF7MGJaiXXIS1pEm88rK2N4hap/g==", "requires": { "@aws-crypto/sha256-browser": "2.0.0", "@aws-crypto/sha256-js": "2.0.0", - "@aws-sdk/client-sts": "3.231.0", - "@aws-sdk/config-resolver": "3.231.0", - "@aws-sdk/credential-provider-node": "3.231.0", + "@aws-sdk/client-sts": "3.235.0", + "@aws-sdk/config-resolver": "3.234.0", + "@aws-sdk/credential-provider-node": "3.235.0", "@aws-sdk/fetch-http-handler": "3.226.0", "@aws-sdk/hash-node": "3.226.0", "@aws-sdk/invalid-dependency": "3.226.0", "@aws-sdk/middleware-content-length": "3.226.0", "@aws-sdk/middleware-endpoint": "3.226.0", - "@aws-sdk/middleware-endpoint-discovery": "3.231.0", + "@aws-sdk/middleware-endpoint-discovery": "3.234.0", "@aws-sdk/middleware-host-header": "3.226.0", "@aws-sdk/middleware-logger": "3.226.0", "@aws-sdk/middleware-recursion-detection": "3.226.0", - "@aws-sdk/middleware-retry": "3.229.0", + "@aws-sdk/middleware-retry": "3.235.0", "@aws-sdk/middleware-serde": "3.226.0", "@aws-sdk/middleware-signing": "3.226.0", "@aws-sdk/middleware-stack": "3.226.0", @@ -17147,14 +17933,14 @@ "@aws-sdk/node-config-provider": "3.226.0", "@aws-sdk/node-http-handler": "3.226.0", "@aws-sdk/protocol-http": "3.226.0", - "@aws-sdk/smithy-client": "3.226.0", + "@aws-sdk/smithy-client": "3.234.0", "@aws-sdk/types": "3.226.0", "@aws-sdk/url-parser": "3.226.0", "@aws-sdk/util-base64": "3.208.0", "@aws-sdk/util-body-length-browser": "3.188.0", "@aws-sdk/util-body-length-node": "3.208.0", - "@aws-sdk/util-defaults-mode-browser": "3.226.0", - "@aws-sdk/util-defaults-mode-node": "3.231.0", + "@aws-sdk/util-defaults-mode-browser": "3.234.0", + "@aws-sdk/util-defaults-mode-node": "3.234.0", "@aws-sdk/util-endpoints": "3.226.0", "@aws-sdk/util-retry": "3.229.0", "@aws-sdk/util-user-agent-browser": "3.226.0", @@ -17439,35 +18225,288 @@ "integrity": "sha512-vYUwmy0kTzA99mJCVvad+/5RDlWve/xxnppT8DJK3JIdAgskp+rULY+joVnq2NSl489UAioUnFGs57vUxi8Pog==", "dev": true, "requires": { - "@aws-sdk/client-sso-oidc": "3.238.0", + "@aws-sdk/client-sso-oidc": "3.238.0", + "@aws-sdk/property-provider": "3.226.0", + "@aws-sdk/shared-ini-file-loader": "3.226.0", + "@aws-sdk/types": "3.226.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-defaults-mode-browser": { + "version": "3.234.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.234.0.tgz", + "integrity": "sha512-IHMKXjTbOD8XMz5+2oCOsVP94BYb9YyjXdns0aAXr2NAo7k2+RCzXQ2DebJXppGda1F6opFutoKwyVSN0cmbMw==", + "dev": true, + "requires": { + "@aws-sdk/property-provider": "3.226.0", + "@aws-sdk/types": "3.226.0", + "bowser": "^2.11.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-defaults-mode-node": { + "version": "3.234.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.234.0.tgz", + "integrity": "sha512-UGjQ+OjBYYhxFVtUY+jtr0ZZgzZh6OHtYwRhFt8IHewJXFCfZTyfsbX20szBj5y1S4HRIUJ7cwBLIytTqMbI5w==", + "dev": true, + "requires": { + "@aws-sdk/config-resolver": "3.234.0", + "@aws-sdk/credential-provider-imds": "3.226.0", + "@aws-sdk/node-config-provider": "3.226.0", + "@aws-sdk/property-provider": "3.226.0", + "@aws-sdk/types": "3.226.0", + "tslib": "^2.3.1" + } + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + } + } + }, + "@aws-sdk/client-ssm": { + "version": "3.244.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-ssm/-/client-ssm-3.244.0.tgz", + "integrity": "sha512-Y/WPOhcbacOglNGXYrZTeZqZwGVs8DFmM9kWpVSIwcvHIdo/5CxB2FC9Cqt9gcvsBccC2CY1S56klbUP1WP/Ng==", + "dev": true, + "requires": { + "@aws-crypto/sha256-browser": "2.0.0", + "@aws-crypto/sha256-js": "2.0.0", + "@aws-sdk/client-sts": "3.241.0", + "@aws-sdk/config-resolver": "3.234.0", + "@aws-sdk/credential-provider-node": "3.241.0", + "@aws-sdk/fetch-http-handler": "3.226.0", + "@aws-sdk/hash-node": "3.226.0", + "@aws-sdk/invalid-dependency": "3.226.0", + "@aws-sdk/middleware-content-length": "3.226.0", + "@aws-sdk/middleware-endpoint": "3.226.0", + "@aws-sdk/middleware-host-header": "3.226.0", + "@aws-sdk/middleware-logger": "3.226.0", + "@aws-sdk/middleware-recursion-detection": "3.226.0", + "@aws-sdk/middleware-retry": "3.235.0", + "@aws-sdk/middleware-serde": "3.226.0", + "@aws-sdk/middleware-signing": "3.226.0", + "@aws-sdk/middleware-stack": "3.226.0", + "@aws-sdk/middleware-user-agent": "3.226.0", + "@aws-sdk/node-config-provider": "3.226.0", + "@aws-sdk/node-http-handler": "3.226.0", + "@aws-sdk/protocol-http": "3.226.0", + "@aws-sdk/smithy-client": "3.234.0", + "@aws-sdk/types": "3.226.0", + "@aws-sdk/url-parser": "3.226.0", + "@aws-sdk/util-base64": "3.208.0", + "@aws-sdk/util-body-length-browser": "3.188.0", + "@aws-sdk/util-body-length-node": "3.208.0", + "@aws-sdk/util-defaults-mode-browser": "3.234.0", + "@aws-sdk/util-defaults-mode-node": "3.234.0", + "@aws-sdk/util-endpoints": "3.241.0", + "@aws-sdk/util-retry": "3.229.0", + "@aws-sdk/util-user-agent-browser": "3.226.0", + "@aws-sdk/util-user-agent-node": "3.226.0", + "@aws-sdk/util-utf8-browser": "3.188.0", + "@aws-sdk/util-utf8-node": "3.208.0", + "@aws-sdk/util-waiter": "3.226.0", + "tslib": "^2.3.1", + "uuid": "^8.3.2" + }, + "dependencies": { + "@aws-sdk/client-sso": { + "version": "3.241.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.241.0.tgz", + "integrity": "sha512-Jm4HR+RYAqKMEYZvvWaq0NYUKKonyInOeubObXH4BLXZpmUBSdYCSjjLdNJY3jkQoxbDVPVMIurVNh5zT5SMRw==", + "dev": true, + "requires": { + "@aws-crypto/sha256-browser": "2.0.0", + "@aws-crypto/sha256-js": "2.0.0", + "@aws-sdk/config-resolver": "3.234.0", + "@aws-sdk/fetch-http-handler": "3.226.0", + "@aws-sdk/hash-node": "3.226.0", + "@aws-sdk/invalid-dependency": "3.226.0", + "@aws-sdk/middleware-content-length": "3.226.0", + "@aws-sdk/middleware-endpoint": "3.226.0", + "@aws-sdk/middleware-host-header": "3.226.0", + "@aws-sdk/middleware-logger": "3.226.0", + "@aws-sdk/middleware-recursion-detection": "3.226.0", + "@aws-sdk/middleware-retry": "3.235.0", + "@aws-sdk/middleware-serde": "3.226.0", + "@aws-sdk/middleware-stack": "3.226.0", + "@aws-sdk/middleware-user-agent": "3.226.0", + "@aws-sdk/node-config-provider": "3.226.0", + "@aws-sdk/node-http-handler": "3.226.0", + "@aws-sdk/protocol-http": "3.226.0", + "@aws-sdk/smithy-client": "3.234.0", + "@aws-sdk/types": "3.226.0", + "@aws-sdk/url-parser": "3.226.0", + "@aws-sdk/util-base64": "3.208.0", + "@aws-sdk/util-body-length-browser": "3.188.0", + "@aws-sdk/util-body-length-node": "3.208.0", + "@aws-sdk/util-defaults-mode-browser": "3.234.0", + "@aws-sdk/util-defaults-mode-node": "3.234.0", + "@aws-sdk/util-endpoints": "3.241.0", + "@aws-sdk/util-retry": "3.229.0", + "@aws-sdk/util-user-agent-browser": "3.226.0", + "@aws-sdk/util-user-agent-node": "3.226.0", + "@aws-sdk/util-utf8-browser": "3.188.0", + "@aws-sdk/util-utf8-node": "3.208.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/client-sso-oidc": { + "version": "3.241.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.241.0.tgz", + "integrity": "sha512-/Ml2QBGpGfUEeBrPzBZhSTBkHuXFD2EAZEIHGCBH4tKaURDI6/FoGI8P1Rl4BzoFt+II/Cr91Eox6YT9EwChsQ==", + "dev": true, + "requires": { + "@aws-crypto/sha256-browser": "2.0.0", + "@aws-crypto/sha256-js": "2.0.0", + "@aws-sdk/config-resolver": "3.234.0", + "@aws-sdk/fetch-http-handler": "3.226.0", + "@aws-sdk/hash-node": "3.226.0", + "@aws-sdk/invalid-dependency": "3.226.0", + "@aws-sdk/middleware-content-length": "3.226.0", + "@aws-sdk/middleware-endpoint": "3.226.0", + "@aws-sdk/middleware-host-header": "3.226.0", + "@aws-sdk/middleware-logger": "3.226.0", + "@aws-sdk/middleware-recursion-detection": "3.226.0", + "@aws-sdk/middleware-retry": "3.235.0", + "@aws-sdk/middleware-serde": "3.226.0", + "@aws-sdk/middleware-stack": "3.226.0", + "@aws-sdk/middleware-user-agent": "3.226.0", + "@aws-sdk/node-config-provider": "3.226.0", + "@aws-sdk/node-http-handler": "3.226.0", + "@aws-sdk/protocol-http": "3.226.0", + "@aws-sdk/smithy-client": "3.234.0", + "@aws-sdk/types": "3.226.0", + "@aws-sdk/url-parser": "3.226.0", + "@aws-sdk/util-base64": "3.208.0", + "@aws-sdk/util-body-length-browser": "3.188.0", + "@aws-sdk/util-body-length-node": "3.208.0", + "@aws-sdk/util-defaults-mode-browser": "3.234.0", + "@aws-sdk/util-defaults-mode-node": "3.234.0", + "@aws-sdk/util-endpoints": "3.241.0", + "@aws-sdk/util-retry": "3.229.0", + "@aws-sdk/util-user-agent-browser": "3.226.0", + "@aws-sdk/util-user-agent-node": "3.226.0", + "@aws-sdk/util-utf8-browser": "3.188.0", + "@aws-sdk/util-utf8-node": "3.208.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/client-sts": { + "version": "3.241.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.241.0.tgz", + "integrity": "sha512-vmlG8cJzRf8skCtTJbA2wBvD2c3NQ5gZryzJvTKDS06KzBzcEpnjlLseuTekcnOiRNekbFUX5hRu5Zj3N2ReLg==", + "dev": true, + "requires": { + "@aws-crypto/sha256-browser": "2.0.0", + "@aws-crypto/sha256-js": "2.0.0", + "@aws-sdk/config-resolver": "3.234.0", + "@aws-sdk/credential-provider-node": "3.241.0", + "@aws-sdk/fetch-http-handler": "3.226.0", + "@aws-sdk/hash-node": "3.226.0", + "@aws-sdk/invalid-dependency": "3.226.0", + "@aws-sdk/middleware-content-length": "3.226.0", + "@aws-sdk/middleware-endpoint": "3.226.0", + "@aws-sdk/middleware-host-header": "3.226.0", + "@aws-sdk/middleware-logger": "3.226.0", + "@aws-sdk/middleware-recursion-detection": "3.226.0", + "@aws-sdk/middleware-retry": "3.235.0", + "@aws-sdk/middleware-sdk-sts": "3.226.0", + "@aws-sdk/middleware-serde": "3.226.0", + "@aws-sdk/middleware-signing": "3.226.0", + "@aws-sdk/middleware-stack": "3.226.0", + "@aws-sdk/middleware-user-agent": "3.226.0", + "@aws-sdk/node-config-provider": "3.226.0", + "@aws-sdk/node-http-handler": "3.226.0", + "@aws-sdk/protocol-http": "3.226.0", + "@aws-sdk/smithy-client": "3.234.0", + "@aws-sdk/types": "3.226.0", + "@aws-sdk/url-parser": "3.226.0", + "@aws-sdk/util-base64": "3.208.0", + "@aws-sdk/util-body-length-browser": "3.188.0", + "@aws-sdk/util-body-length-node": "3.208.0", + "@aws-sdk/util-defaults-mode-browser": "3.234.0", + "@aws-sdk/util-defaults-mode-node": "3.234.0", + "@aws-sdk/util-endpoints": "3.241.0", + "@aws-sdk/util-retry": "3.229.0", + "@aws-sdk/util-user-agent-browser": "3.226.0", + "@aws-sdk/util-user-agent-node": "3.226.0", + "@aws-sdk/util-utf8-browser": "3.188.0", + "@aws-sdk/util-utf8-node": "3.208.0", + "fast-xml-parser": "4.0.11", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/credential-provider-ini": { + "version": "3.241.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.241.0.tgz", + "integrity": "sha512-CI+mu6h74Kzmscw35TvNkc/wYHsHPGAwP7humSHoWw53H9mVw21Ggft/dT1iFQQZWQ8BNXkzuXlNo1IlqwMgOA==", + "dev": true, + "requires": { + "@aws-sdk/credential-provider-env": "3.226.0", + "@aws-sdk/credential-provider-imds": "3.226.0", + "@aws-sdk/credential-provider-process": "3.226.0", + "@aws-sdk/credential-provider-sso": "3.241.0", + "@aws-sdk/credential-provider-web-identity": "3.226.0", + "@aws-sdk/property-provider": "3.226.0", + "@aws-sdk/shared-ini-file-loader": "3.226.0", + "@aws-sdk/types": "3.226.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/credential-provider-node": { + "version": "3.241.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.241.0.tgz", + "integrity": "sha512-08zPQcD5o9brQmzEipWHeHgU85aQcEF8MWLfpeyjO6e1/l7ysQ35NsS+PYtv77nLpGCx/X+ZuW/KXWoRrbw77w==", + "dev": true, + "requires": { + "@aws-sdk/credential-provider-env": "3.226.0", + "@aws-sdk/credential-provider-imds": "3.226.0", + "@aws-sdk/credential-provider-ini": "3.241.0", + "@aws-sdk/credential-provider-process": "3.226.0", + "@aws-sdk/credential-provider-sso": "3.241.0", + "@aws-sdk/credential-provider-web-identity": "3.226.0", + "@aws-sdk/property-provider": "3.226.0", + "@aws-sdk/shared-ini-file-loader": "3.226.0", + "@aws-sdk/types": "3.226.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/credential-provider-sso": { + "version": "3.241.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.241.0.tgz", + "integrity": "sha512-6Bjd6eEIrVomRTrPrM4dlxusQm+KMJ9hLYKECCpFkwDKIK+pTgZNLRtQdalHyzwneHJPdimrm8cOv1kUQ8hPoA==", + "dev": true, + "requires": { + "@aws-sdk/client-sso": "3.241.0", "@aws-sdk/property-provider": "3.226.0", "@aws-sdk/shared-ini-file-loader": "3.226.0", + "@aws-sdk/token-providers": "3.241.0", "@aws-sdk/types": "3.226.0", "tslib": "^2.3.1" } }, - "@aws-sdk/util-defaults-mode-browser": { - "version": "3.234.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.234.0.tgz", - "integrity": "sha512-IHMKXjTbOD8XMz5+2oCOsVP94BYb9YyjXdns0aAXr2NAo7k2+RCzXQ2DebJXppGda1F6opFutoKwyVSN0cmbMw==", + "@aws-sdk/token-providers": { + "version": "3.241.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.241.0.tgz", + "integrity": "sha512-79okvuOS7V559OIL/RalIPG98wzmWxeFOChFnbEjn2pKOyGQ6FJRwLPYZaVRtNdAtnkBNgRpmFq9dX843QxhtQ==", "dev": true, "requires": { + "@aws-sdk/client-sso-oidc": "3.241.0", "@aws-sdk/property-provider": "3.226.0", + "@aws-sdk/shared-ini-file-loader": "3.226.0", "@aws-sdk/types": "3.226.0", - "bowser": "^2.11.0", "tslib": "^2.3.1" } }, - "@aws-sdk/util-defaults-mode-node": { - "version": "3.234.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.234.0.tgz", - "integrity": "sha512-UGjQ+OjBYYhxFVtUY+jtr0ZZgzZh6OHtYwRhFt8IHewJXFCfZTyfsbX20szBj5y1S4HRIUJ7cwBLIytTqMbI5w==", + "@aws-sdk/util-endpoints": { + "version": "3.241.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.241.0.tgz", + "integrity": "sha512-jVf8bKrN22Ey0xLmj75sL7EUvm5HFpuOMkXsZkuXycKhCwLBcEUWlvtJYtRjOU1zScPQv9GMJd2QXQglp34iOQ==", "dev": true, "requires": { - "@aws-sdk/config-resolver": "3.234.0", - "@aws-sdk/credential-provider-imds": "3.226.0", - "@aws-sdk/node-config-provider": "3.226.0", - "@aws-sdk/property-provider": "3.226.0", "@aws-sdk/types": "3.226.0", "tslib": "^2.3.1" } @@ -17481,13 +18520,13 @@ } }, "@aws-sdk/client-sso": { - "version": "3.231.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.231.0.tgz", - "integrity": "sha512-/q7BptaMiT6/wxW9vE/gcQuApMXio5vdTuqt77A6+mjqhNzYFfCn7RRS4BU8KEOpZObnYBKP3mYe3NDccEbMzQ==", + "version": "3.235.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.235.0.tgz", + "integrity": "sha512-CdZ2EnDuB6V41u6brk/Nt19EZneLorsNkNWr4J7zkR/2gKiqdUN6PUs6jxDtK9M7V/r81jaE0ViLwLVmYhL/bQ==", "requires": { "@aws-crypto/sha256-browser": "2.0.0", "@aws-crypto/sha256-js": "2.0.0", - "@aws-sdk/config-resolver": "3.231.0", + "@aws-sdk/config-resolver": "3.234.0", "@aws-sdk/fetch-http-handler": "3.226.0", "@aws-sdk/hash-node": "3.226.0", "@aws-sdk/invalid-dependency": "3.226.0", @@ -17496,21 +18535,21 @@ "@aws-sdk/middleware-host-header": "3.226.0", "@aws-sdk/middleware-logger": "3.226.0", "@aws-sdk/middleware-recursion-detection": "3.226.0", - "@aws-sdk/middleware-retry": "3.229.0", + "@aws-sdk/middleware-retry": "3.235.0", "@aws-sdk/middleware-serde": "3.226.0", "@aws-sdk/middleware-stack": "3.226.0", "@aws-sdk/middleware-user-agent": "3.226.0", "@aws-sdk/node-config-provider": "3.226.0", "@aws-sdk/node-http-handler": "3.226.0", "@aws-sdk/protocol-http": "3.226.0", - "@aws-sdk/smithy-client": "3.226.0", + "@aws-sdk/smithy-client": "3.234.0", "@aws-sdk/types": "3.226.0", "@aws-sdk/url-parser": "3.226.0", "@aws-sdk/util-base64": "3.208.0", "@aws-sdk/util-body-length-browser": "3.188.0", "@aws-sdk/util-body-length-node": "3.208.0", - "@aws-sdk/util-defaults-mode-browser": "3.226.0", - "@aws-sdk/util-defaults-mode-node": "3.231.0", + "@aws-sdk/util-defaults-mode-browser": "3.234.0", + "@aws-sdk/util-defaults-mode-node": "3.234.0", "@aws-sdk/util-endpoints": "3.226.0", "@aws-sdk/util-retry": "3.229.0", "@aws-sdk/util-user-agent-browser": "3.226.0", @@ -17521,13 +18560,13 @@ } }, "@aws-sdk/client-sso-oidc": { - "version": "3.231.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.231.0.tgz", - "integrity": "sha512-yqEZW9/Q6VvMDMcQoE52oa/oa6F8z8cqyax7m29VpuVrncYcfELpkZKWPoaJVfierR5ysKfKiAU0acPgMpvllQ==", + "version": "3.235.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.235.0.tgz", + "integrity": "sha512-oSF0lSPmE5jaaigxc5TZyDjqfgTiDsromEdvv5s5a/qAOZBNtsVaS4+8cn9kIt43Ceo7dxHXk7cwvXMNPwVnWw==", "requires": { "@aws-crypto/sha256-browser": "2.0.0", "@aws-crypto/sha256-js": "2.0.0", - "@aws-sdk/config-resolver": "3.231.0", + "@aws-sdk/config-resolver": "3.234.0", "@aws-sdk/fetch-http-handler": "3.226.0", "@aws-sdk/hash-node": "3.226.0", "@aws-sdk/invalid-dependency": "3.226.0", @@ -17536,21 +18575,21 @@ "@aws-sdk/middleware-host-header": "3.226.0", "@aws-sdk/middleware-logger": "3.226.0", "@aws-sdk/middleware-recursion-detection": "3.226.0", - "@aws-sdk/middleware-retry": "3.229.0", + "@aws-sdk/middleware-retry": "3.235.0", "@aws-sdk/middleware-serde": "3.226.0", "@aws-sdk/middleware-stack": "3.226.0", "@aws-sdk/middleware-user-agent": "3.226.0", "@aws-sdk/node-config-provider": "3.226.0", "@aws-sdk/node-http-handler": "3.226.0", "@aws-sdk/protocol-http": "3.226.0", - "@aws-sdk/smithy-client": "3.226.0", + "@aws-sdk/smithy-client": "3.234.0", "@aws-sdk/types": "3.226.0", "@aws-sdk/url-parser": "3.226.0", "@aws-sdk/util-base64": "3.208.0", "@aws-sdk/util-body-length-browser": "3.188.0", "@aws-sdk/util-body-length-node": "3.208.0", - "@aws-sdk/util-defaults-mode-browser": "3.226.0", - "@aws-sdk/util-defaults-mode-node": "3.231.0", + "@aws-sdk/util-defaults-mode-browser": "3.234.0", + "@aws-sdk/util-defaults-mode-node": "3.234.0", "@aws-sdk/util-endpoints": "3.226.0", "@aws-sdk/util-retry": "3.229.0", "@aws-sdk/util-user-agent-browser": "3.226.0", @@ -17558,17 +18597,375 @@ "@aws-sdk/util-utf8-browser": "3.188.0", "@aws-sdk/util-utf8-node": "3.208.0", "tslib": "^2.3.1" + }, + "dependencies": { + "@aws-sdk/abort-controller": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.215.0.tgz", + "integrity": "sha512-HTvL542nawhVqe0oC1AJchdcomEOmPivJEzYUT1LqiG3e8ikxMNa2KWSqqLPeKi2t0A/cfQy7wDUyg9+BZhDSQ==", + "requires": { + "@aws-sdk/types": "3.215.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/config-resolver": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.215.0.tgz", + "integrity": "sha512-DxX4R+YYLQOtg0qfceKBrjVD4t1mQBG1eb7IVr2QSlckFCX8ztUNymFMuaSEo3938Jyy/NpgfUDpFqPDaSKnng==", + "requires": { + "@aws-sdk/signature-v4": "3.215.0", + "@aws-sdk/types": "3.215.0", + "@aws-sdk/util-config-provider": "3.208.0", + "@aws-sdk/util-middleware": "3.215.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/credential-provider-imds": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.215.0.tgz", + "integrity": "sha512-/4FUUR6u9gkNfxB6mEwBr0kk0myIkrDcXbAocWN3fPd/t7otzxpx/JqPZXgM6kcVP7M4T/QT75l1E1RRHLWCCQ==", + "requires": { + "@aws-sdk/node-config-provider": "3.215.0", + "@aws-sdk/property-provider": "3.215.0", + "@aws-sdk/types": "3.215.0", + "@aws-sdk/url-parser": "3.215.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/fetch-http-handler": { + "version": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.215.0.tgz", + "integrity": "sha512-JfZyrJOE+0ik1PumsIUZd0NfgEx4sZ43VSdPCD9GRhssRWudNsSF1B5fz3xA5v+1y5oQPjXZyaWCzKtnYruiWw==", + "requires": { + "@aws-sdk/protocol-http": "3.215.0", + "@aws-sdk/querystring-builder": "3.215.0", + "@aws-sdk/types": "3.215.0", + "@aws-sdk/util-base64": "3.208.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/hash-node": { + "version": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.215.0.tgz", + "integrity": "sha512-MkSRuZvo1RCRmI0VNEmRYCGGD/DkMd9lqnLtOyglMPnSX1mhyD4/DyXmcc3rYa7PsjDRAfykGWJRiMqpoMLjiQ==", + "requires": { + "@aws-sdk/types": "3.215.0", + "@aws-sdk/util-buffer-from": "3.208.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/invalid-dependency": { + "version": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.215.0.tgz", + "integrity": "sha512-++bK4BUQe8/CL/YcLZcQB8qPOhiXxhbuhYzfFS7PNVvW1QOLqKRZL/lKs24gzjcOmw7IhAbCybDZwvu2TM4DAg==", + "requires": { + "@aws-sdk/types": "3.215.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/is-array-buffer": { + "version": "3.201.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.201.0.tgz", + "integrity": "sha512-UPez5qLh3dNgt0DYnPD/q0mVJY84rA17QE26hVNOW3fAji8W2wrwrxdacWOxyXvlxWsVRcKmr+lay1MDqpAMfg==", + "requires": { + "tslib": "^2.3.1" + } + }, + "@aws-sdk/middleware-content-length": { + "version": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.215.0.tgz", + "integrity": "sha512-zKJRb6jDLFl9nl/muSFbiQHA4uK3skinuDRcyLbpMvvzhuK/PVodv9QI1+wIUsFdXkaSxAlva1oG4bL8ZFi+sQ==", + "requires": { + "@aws-sdk/protocol-http": "3.215.0", + "@aws-sdk/types": "3.215.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/middleware-host-header": { + "version": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.215.0.tgz", + "integrity": "sha512-GOqI7VwoENZwn+6tIMrrJ4SipIqL2JCh+BNvORVcy7CQxn1ViKkna7iaCx+QMjpg/kn9cR6kfY0n1FmgZR1w9A==", + "requires": { + "@aws-sdk/protocol-http": "3.215.0", + "@aws-sdk/types": "3.215.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/middleware-logger": { + "version": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.215.0.tgz", + "integrity": "sha512-0h4GGF0rV3jnY3jxmcAWsOdqHCYf25s0biSjmgTei+l/5S+geOGrovRPCNep0LLg0i9D8bkZsXISojilETbf+g==", + "requires": { + "@aws-sdk/types": "3.215.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/middleware-recursion-detection": { + "version": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.215.0.tgz", + "integrity": "sha512-KQ+kiEsaluM4i6opjusUukxY78+UhfR7vzXHDkzZK/GplQ1hY0B+rwVO1eaULmlnmf3FK+Wd6lwrPV7xS2W+EA==", + "requires": { + "@aws-sdk/protocol-http": "3.215.0", + "@aws-sdk/types": "3.215.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/middleware-retry": { + "version": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.215.0.tgz", + "integrity": "sha512-I/dnUPVg2Kp3lW+MywBoPp06EOng8IfuaS9ph4bcJpQKrhNU5ekRgCHH2C4k1A6GcP8uyHxQ5TVV6j+l0QPIsA==", + "requires": { + "@aws-sdk/protocol-http": "3.215.0", + "@aws-sdk/service-error-classification": "3.215.0", + "@aws-sdk/types": "3.215.0", + "@aws-sdk/util-middleware": "3.215.0", + "tslib": "^2.3.1", + "uuid": "^8.3.2" + } + }, + "@aws-sdk/middleware-serde": { + "version": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.215.0.tgz", + "integrity": "sha512-+uhLXdKvvQZcRRFc3UmemSr/YUHA4Jc+1YMjHxc3v8vvfztFJBb0wgBx999myOi8PmkYThlRBQDzXy9UCIhIJw==", + "requires": { + "@aws-sdk/types": "3.215.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/middleware-stack": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.215.0.tgz", + "integrity": "sha512-rdSVL7LxRgjlvoluqwODD4ypBy2k/YVl6FrDplyCMSi8m2WHZG99FzdmR9bpnWK+0DGzYZSMRYx6ynJ9N9PsSw==", + "requires": { + "tslib": "^2.3.1" + } + }, + "@aws-sdk/middleware-user-agent": { + "version": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.215.0.tgz", + "integrity": "sha512-X6GfoMNoEITTw7rGL/gWs8UZ0cmmmezvKcl+KtHsA642R05OR4mY5G7LdbWAw0bcrwKsuKOGmwUrC9lzGqbWUw==", + "requires": { + "@aws-sdk/protocol-http": "3.215.0", + "@aws-sdk/types": "3.215.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/node-config-provider": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.215.0.tgz", + "integrity": "sha512-notckD94QwwxC0GsfpTxB7VH8SREIIlMsUSddqGtpModa0cq/wRb9rqnydZSoznbYpK1ND6h0C9hr/2PNz89zw==", + "requires": { + "@aws-sdk/property-provider": "3.215.0", + "@aws-sdk/shared-ini-file-loader": "3.215.0", + "@aws-sdk/types": "3.215.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/node-http-handler": { + "version": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.215.0.tgz", + "integrity": "sha512-btKWSR7m0UuWIN3p5MfSIvhqeYik7xri7U6nWuVI5GVzIYjzxEZOMvPAinDLDxL5wipodi0ZvTUNdDJdm7BcGQ==", + "requires": { + "@aws-sdk/abort-controller": "3.215.0", + "@aws-sdk/protocol-http": "3.215.0", + "@aws-sdk/querystring-builder": "3.215.0", + "@aws-sdk/types": "3.215.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/property-provider": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.215.0.tgz", + "integrity": "sha512-dDPjMCCopkRURAmOJCMSlpIQ5BGWCpYj0+FIfZ5qWQs24fn1PAkQHecOiBhJO0ZSVuQy3xcIyWsAp1NE5e+7ug==", + "requires": { + "@aws-sdk/types": "3.215.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/protocol-http": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.215.0.tgz", + "integrity": "sha512-qp6Y6v4S534LAjadiVl9p7ErK7ImphOKq6yhFyQwxko6iITLcz8ib3yU27fs4QJcnNj5ZooqW/YlL/0EikDxCQ==", + "requires": { + "@aws-sdk/types": "3.215.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/querystring-builder": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.215.0.tgz", + "integrity": "sha512-eilk8CqG37BVhQklLif00K2dOJgDzacUi8h3KVQ72ry1V3h345i4HsmaFIxvnz8XtNyDvV8qFAzeYg9n2P9RQA==", + "requires": { + "@aws-sdk/types": "3.215.0", + "@aws-sdk/util-uri-escape": "3.201.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/querystring-parser": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.215.0.tgz", + "integrity": "sha512-8h/9H8dWM4fZO27UGzo8W5JXln4yJMugPyUl4qFA437gzPgNFN95+oLJWXtHMlfCHC5T/PDKetY9TarMDgBD0Q==", + "requires": { + "@aws-sdk/types": "3.215.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/service-error-classification": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.215.0.tgz", + "integrity": "sha512-SKBvClGFGzMPsjBBKjneaUazLCNr6bSxe9eFvOr3gCwuwE2jPQwW3VE1mb62howuvm6cLthEDwLQp/FsT1gMsw==" + }, + "@aws-sdk/shared-ini-file-loader": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.215.0.tgz", + "integrity": "sha512-unzQeLOyUiYHr8WxxandHo0OaCj31gx0wpt8dn2cZcHm/MdCqHcHcsQqOVnQsWQrrxY/XZ27cPyMVQeicNKYwQ==", + "requires": { + "@aws-sdk/types": "3.215.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/signature-v4": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.215.0.tgz", + "integrity": "sha512-Rc73uUCi3eJneO25DydLTfJYamXeuKS9YIhNMTKlpvcN1UQAmAnUbAmCuEmqvkYOiGD1i4/kd8kBga708iIikQ==", + "requires": { + "@aws-sdk/is-array-buffer": "3.201.0", + "@aws-sdk/types": "3.215.0", + "@aws-sdk/util-hex-encoding": "3.201.0", + "@aws-sdk/util-middleware": "3.215.0", + "@aws-sdk/util-uri-escape": "3.201.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/smithy-client": { + "version": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.215.0.tgz", + "integrity": "sha512-PiZfCdZkPohzMPrRmJ46TPOf2Tr/dhKYdwQArRnOOIsJABUGXjlzCUE8vysDN35XZYRx5f9hd+/U7kayhniq2w==", + "requires": { + "@aws-sdk/middleware-stack": "3.215.0", + "@aws-sdk/types": "3.215.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/types": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.215.0.tgz", + "integrity": "sha512-eRbCVjwzTYd9C5e2mceScJ6D2kYDDEC3PLkYfJa+1wH9iiF2JlbiYozAokyeYBHQ+AjmD93MK58RBoM8iZfH0Q==" + }, + "@aws-sdk/url-parser": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.215.0.tgz", + "integrity": "sha512-r/qIk3TUlV36JvoRjTErFm0LzzgNKLB1YUG8zVZCGAc2TEATi8OVEmsZvi+KfTmsbszulITJVcjZKbHLbGoUzg==", + "requires": { + "@aws-sdk/querystring-parser": "3.215.0", + "@aws-sdk/types": "3.215.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-body-length-browser": { + "version": "3.188.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.188.0.tgz", + "integrity": "sha512-8VpnwFWXhnZ/iRSl9mTf+VKOX9wDE8QtN4bj9pBfxwf90H1X7E8T6NkiZD3k+HubYf2J94e7DbeHs7fuCPW5Qg==", + "requires": { + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-body-length-node": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.208.0.tgz", + "integrity": "sha512-3zj50e5g7t/MQf53SsuuSf0hEELzMtD8RX8C76f12OSRo2Bca4FLLYHe0TZbxcfQHom8/hOaeZEyTyMogMglqg==", + "requires": { + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-config-provider": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.208.0.tgz", + "integrity": "sha512-DSRqwrERUsT34ug+anlMBIFooBEGwM8GejC7q00Y/9IPrQy50KnG5PW2NiTjuLKNi7pdEOlwTSEocJE15eDZIg==", + "requires": { + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-defaults-mode-browser": { + "version": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.215.0.tgz", + "integrity": "sha512-MiNfZgB0I4dR8CBxH163W7c9KvE38sgCHNPWopMqSX5ezz7cuCPohCU0XsWd4I7K31PvzuqmKgOiKBAZraQJMA==", + "requires": { + "@aws-sdk/property-provider": "3.215.0", + "@aws-sdk/types": "3.215.0", + "bowser": "^2.11.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-defaults-mode-node": { + "version": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.215.0.tgz", + "integrity": "sha512-mSp3R8GljQ+4UT3QMOksQk9L0cWbFLvR7bBmAlt4+GobgTjpRfzFjBP3uwrCqFa3BKDUR3FeJq3qwo+xeY1Krg==", + "requires": { + "@aws-sdk/config-resolver": "3.215.0", + "@aws-sdk/credential-provider-imds": "3.215.0", + "@aws-sdk/node-config-provider": "3.215.0", + "@aws-sdk/property-provider": "3.215.0", + "@aws-sdk/types": "3.215.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-hex-encoding": { + "version": "3.201.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.201.0.tgz", + "integrity": "sha512-7t1vR1pVxKx0motd3X9rI3m/xNp78p3sHtP5yo4NP4ARpxyJ0fokBomY8ScaH2D/B+U5o9ARxldJUdMqyBlJcA==", + "requires": { + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-middleware": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.215.0.tgz", + "integrity": "sha512-DfHGlFlQCr+T/xhjS36HH8JEThDVB5lg5NZ6x4Cibhyeps9YX/4ovLAIx3B19H34sdWhZi7q6LfslCHLRu2+7Q==", + "requires": { + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-uri-escape": { + "version": "3.201.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.201.0.tgz", + "integrity": "sha512-TeTWbGx4LU2c5rx0obHeDFeO9HvwYwQtMh1yniBz00pQb6Qt6YVOETVQikRZ+XRQwEyCg/dA375UplIpiy54mA==", + "requires": { + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-user-agent-browser": { + "version": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.215.0.tgz", + "integrity": "sha512-uZz6BJWr8sJcA+onveS1lFqnbIXBHwvkyHLgCuuGhAxd5yY6YNLhpJBnhy9Fb8/aSbk6yao3qxlokqw9gthmAw==", + "requires": { + "@aws-sdk/types": "3.215.0", + "bowser": "^2.11.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-user-agent-node": { + "version": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.215.0.tgz", + "integrity": "sha512-4lrdd1oGRwJEwfvgvg1jcJ2O0bwElsvtiqZfTRHN6MNTFUqsKl0xHlgFChQsz3Hfrc1niWtZCmbqQKGdO5ARpw==", + "requires": { + "@aws-sdk/node-config-provider": "3.215.0", + "@aws-sdk/types": "3.215.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-utf8-browser": { + "version": "3.188.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.188.0.tgz", + "integrity": "sha512-jt627x0+jE+Ydr9NwkFstg3cUvgWh56qdaqAMDsqgRlKD21md/6G226z/Qxl7lb1VEW2LlmCx43ai/37Qwcj2Q==", + "requires": { + "tslib": "^2.3.1" + } + }, + "@aws-sdk/util-utf8-node": { + "version": "3.208.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-node/-/util-utf8-node-3.208.0.tgz", + "integrity": "sha512-jKY87Acv0yWBdFxx6bveagy5FYjz+dtV8IPT7ay1E2WPWH1czoIdMAkc8tSInK31T6CRnHWkLZ1qYwCbgRfERQ==", + "requires": { + "@aws-sdk/util-buffer-from": "3.208.0", + "tslib": "^2.3.1" + } + } } }, "@aws-sdk/client-sts": { - "version": "3.231.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.231.0.tgz", - "integrity": "sha512-5WYqlcbM49ofOFBsu28QBt3t26M5D9XynhSaswSrCzawwdNkIMYQrKOCplF5mqOy+GywVIRrFeCVVrAKPMZJxQ==", + "version": "3.235.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.235.0.tgz", + "integrity": "sha512-P1pqvg7brdBUGrTlyMc+LCe6rnWrWufdd7bpzuC9lcVzkoOHJw8j8wDItwoCsvy1O3SeK7vtmOTLxV2yuTEO3Q==", "requires": { "@aws-crypto/sha256-browser": "2.0.0", "@aws-crypto/sha256-js": "2.0.0", - "@aws-sdk/config-resolver": "3.231.0", - "@aws-sdk/credential-provider-node": "3.231.0", + "@aws-sdk/config-resolver": "3.234.0", + "@aws-sdk/credential-provider-node": "3.235.0", "@aws-sdk/fetch-http-handler": "3.226.0", "@aws-sdk/hash-node": "3.226.0", "@aws-sdk/invalid-dependency": "3.226.0", @@ -17577,7 +18974,7 @@ "@aws-sdk/middleware-host-header": "3.226.0", "@aws-sdk/middleware-logger": "3.226.0", "@aws-sdk/middleware-recursion-detection": "3.226.0", - "@aws-sdk/middleware-retry": "3.229.0", + "@aws-sdk/middleware-retry": "3.235.0", "@aws-sdk/middleware-sdk-sts": "3.226.0", "@aws-sdk/middleware-serde": "3.226.0", "@aws-sdk/middleware-signing": "3.226.0", @@ -17586,14 +18983,14 @@ "@aws-sdk/node-config-provider": "3.226.0", "@aws-sdk/node-http-handler": "3.226.0", "@aws-sdk/protocol-http": "3.226.0", - "@aws-sdk/smithy-client": "3.226.0", + "@aws-sdk/smithy-client": "3.234.0", "@aws-sdk/types": "3.226.0", "@aws-sdk/url-parser": "3.226.0", "@aws-sdk/util-base64": "3.208.0", "@aws-sdk/util-body-length-browser": "3.188.0", "@aws-sdk/util-body-length-node": "3.208.0", - "@aws-sdk/util-defaults-mode-browser": "3.226.0", - "@aws-sdk/util-defaults-mode-node": "3.231.0", + "@aws-sdk/util-defaults-mode-browser": "3.234.0", + "@aws-sdk/util-defaults-mode-node": "3.234.0", "@aws-sdk/util-endpoints": "3.226.0", "@aws-sdk/util-retry": "3.229.0", "@aws-sdk/util-user-agent-browser": "3.226.0", @@ -17605,9 +19002,9 @@ } }, "@aws-sdk/config-resolver": { - "version": "3.231.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.231.0.tgz", - "integrity": "sha512-qpjV4Fw/NQ4a0p5/qwzqaShflYRlY/SPcgA7N5GTJjIjZjg3NV+5BKJSF3VeZcNKfbXq68kkn207OSCpyheYxQ==", + "version": "3.234.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.234.0.tgz", + "integrity": "sha512-uZxy4wzllfvgCQxVc+Iqhde0NGAnfmV2hWR6ejadJaAFTuYNvQiRg9IqJy3pkyDPqXySiJ8Bom5PoJfgn55J/A==", "requires": { "@aws-sdk/signature-v4": "3.226.0", "@aws-sdk/types": "3.226.0", @@ -17639,13 +19036,14 @@ } }, "@aws-sdk/credential-provider-ini": { - "version": "3.231.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.231.0.tgz", - "integrity": "sha512-4JJgrJg2O91Vki4m5nSQNZGX/5yAYgzG1IOjeZ+8vCDxfR+jA2O9+/Xhi2/8aDpb1da77OJ+cK1+ezzSMchIfQ==", + "version": "3.235.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.235.0.tgz", + "integrity": "sha512-i3efxJw+9hN/opmjlRqT0lv/gKjOHmgGBUbFCdbCmSUTc8QH3sbkIY6FLX2q0PSu4q4CpCwWZ587lkThtFerJA==", "requires": { "@aws-sdk/credential-provider-env": "3.226.0", "@aws-sdk/credential-provider-imds": "3.226.0", - "@aws-sdk/credential-provider-sso": "3.231.0", + "@aws-sdk/credential-provider-process": "3.226.0", + "@aws-sdk/credential-provider-sso": "3.235.0", "@aws-sdk/credential-provider-web-identity": "3.226.0", "@aws-sdk/property-provider": "3.226.0", "@aws-sdk/shared-ini-file-loader": "3.226.0", @@ -17654,15 +19052,15 @@ } }, "@aws-sdk/credential-provider-node": { - "version": "3.231.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.231.0.tgz", - "integrity": "sha512-DOojjyYdLNeBQv9+PaDXmvvww9SmcZsaL1YCl27e5larcJSMfT41vn4WRnVRu2zBI2BIi464Z8ziRRKwd2YFVg==", + "version": "3.235.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.235.0.tgz", + "integrity": "sha512-xJSAntEBlbXbngSzpyMnlZzOldxV0sNOQ7ggDUmIQNVWbu3XwP6MiA8CjAHnH10vs6+pcyHtpfUj3evdQZ4JlQ==", "requires": { "@aws-sdk/credential-provider-env": "3.226.0", "@aws-sdk/credential-provider-imds": "3.226.0", - "@aws-sdk/credential-provider-ini": "3.231.0", + "@aws-sdk/credential-provider-ini": "3.235.0", "@aws-sdk/credential-provider-process": "3.226.0", - "@aws-sdk/credential-provider-sso": "3.231.0", + "@aws-sdk/credential-provider-sso": "3.235.0", "@aws-sdk/credential-provider-web-identity": "3.226.0", "@aws-sdk/property-provider": "3.226.0", "@aws-sdk/shared-ini-file-loader": "3.226.0", @@ -17682,14 +19080,14 @@ } }, "@aws-sdk/credential-provider-sso": { - "version": "3.231.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.231.0.tgz", - "integrity": "sha512-aImUD+PAqZ7A2C1ef7gskMN3KuxFT4Am1Vrl6M0oLGyrhKG2QtRT/UaXJE+Yt6d/C2qc2OsQ9j2oim7D6Qha/A==", + "version": "3.235.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.235.0.tgz", + "integrity": "sha512-+7UORB7Wo/d0mEz7J16/hsRumIhtdl4KekJfrXH5OrLiXXIsn68wmQkrvwD2CibbtgOY0P69G12qbcBHkg3qng==", "requires": { - "@aws-sdk/client-sso": "3.231.0", + "@aws-sdk/client-sso": "3.235.0", "@aws-sdk/property-provider": "3.226.0", "@aws-sdk/shared-ini-file-loader": "3.226.0", - "@aws-sdk/token-providers": "3.231.0", + "@aws-sdk/token-providers": "3.235.0", "@aws-sdk/types": "3.226.0", "tslib": "^2.3.1" } @@ -17753,11 +19151,11 @@ } }, "@aws-sdk/lib-dynamodb": { - "version": "3.231.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/lib-dynamodb/-/lib-dynamodb-3.231.0.tgz", - "integrity": "sha512-q1gvuxBQGR+xflaTbEP9Q+jCqnuqtznVrKt26skVUvzjmJJLB1dxHxwUPHv6SKO3R+bby7ATlVGQwQkZxViSGA==", + "version": "3.235.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/lib-dynamodb/-/lib-dynamodb-3.235.0.tgz", + "integrity": "sha512-jugMLrtVBCxK5+vFTEhm6Gb5MbvE14HUvN/WoMhAZFOYD0v0DEfzutyD2mwCpCJQJeQbMKz3q6YEhDFgbyBXSA==", "requires": { - "@aws-sdk/util-dynamodb": "3.231.0", + "@aws-sdk/util-dynamodb": "3.235.0", "tslib": "^2.3.1" } }, @@ -17787,11 +19185,11 @@ } }, "@aws-sdk/middleware-endpoint-discovery": { - "version": "3.231.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.231.0.tgz", - "integrity": "sha512-8HRZRrZWuAlm/I8uwFG8+iK8TCJWHSizRTEZfNazx7V5anOk55UeCVg3ifuXnFPmGeb4VDBRTn4h2dUx4LRKLQ==", + "version": "3.234.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.234.0.tgz", + "integrity": "sha512-HNZJbxXrSJfITJjAisqrju7T4S7U186xcmYr28CZX9XQNm6fc/bxcqj+8JRntWsekiJYyTvQLIrKxiCaa+TA9A==", "requires": { - "@aws-sdk/config-resolver": "3.231.0", + "@aws-sdk/config-resolver": "3.234.0", "@aws-sdk/endpoint-cache": "3.208.0", "@aws-sdk/protocol-http": "3.226.0", "@aws-sdk/types": "3.226.0", @@ -17828,14 +19226,15 @@ } }, "@aws-sdk/middleware-retry": { - "version": "3.229.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.229.0.tgz", - "integrity": "sha512-/y0BWio9b2RRH2QvRTohbuqE0vhH4IZKlc6k+JRbGV9aSwyOzACU/L/qkGftC/W0puvgNvZYjGxmB6cGHAEZaw==", + "version": "3.235.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.235.0.tgz", + "integrity": "sha512-50WHbJGpD3SNp9763MAlHqIhXil++JdQbKejNpHg7HsJne/ao3ub+fDOfx//mMBjpzBV25BGd5UlfL6blrClSg==", "requires": { "@aws-sdk/protocol-http": "3.226.0", "@aws-sdk/service-error-classification": "3.229.0", "@aws-sdk/types": "3.226.0", "@aws-sdk/util-middleware": "3.226.0", + "@aws-sdk/util-retry": "3.229.0", "tslib": "^2.3.1", "uuid": "^8.3.2" }, @@ -17988,9 +19387,9 @@ } }, "@aws-sdk/smithy-client": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.226.0.tgz", - "integrity": "sha512-BWr1FhWSUhkSBp0TLzliD5AQBjA2Jmo9FlOOt+cBwd9BKkSGlGj+HgATYJ83Sjjg2+J6qvEZBxB78LKVHhorBw==", + "version": "3.234.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.234.0.tgz", + "integrity": "sha512-8AtR/k4vsFvjXeQbIzq/Wy7Nbk48Ou0wUEeVYPHWHPSU8QamFWORkOwmKtKMfHAyZvmqiAPeQqHFkq+UJhWyyQ==", "requires": { "@aws-sdk/middleware-stack": "3.226.0", "@aws-sdk/types": "3.226.0", @@ -17998,15 +19397,38 @@ } }, "@aws-sdk/token-providers": { - "version": "3.231.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.231.0.tgz", - "integrity": "sha512-sxx6X/moSdukyrnoBtLxmgQQLWqixMc/qAM5yNg5lfNoGamWslH6CnT1HlxTFv71q8/1xwnvZ4LC2kbD6vDc6Q==", + "version": "3.235.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.235.0.tgz", + "integrity": "sha512-TdUbQ0wWVTO7azF/8ojtd4MNFjEfQKhGoGib0g/W5pa/FJryOkiIP8U4POC/I+0ATMkLK3vAC07kNHtey0ooZg==", "requires": { - "@aws-sdk/client-sso-oidc": "3.231.0", + "@aws-sdk/client-sso-oidc": "3.235.0", "@aws-sdk/property-provider": "3.226.0", "@aws-sdk/shared-ini-file-loader": "3.226.0", "@aws-sdk/types": "3.226.0", "tslib": "^2.3.1" + }, + "dependencies": { + "@aws-sdk/property-provider": { + "version": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.215.0.tgz", + "integrity": "sha512-dDPjMCCopkRURAmOJCMSlpIQ5BGWCpYj0+FIfZ5qWQs24fn1PAkQHecOiBhJO0ZSVuQy3xcIyWsAp1NE5e+7ug==", + "requires": { + "@aws-sdk/types": "3.215.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/shared-ini-file-loader": { + "version": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.215.0.tgz", + "integrity": "sha512-unzQeLOyUiYHr8WxxandHo0OaCj31gx0wpt8dn2cZcHm/MdCqHcHcsQqOVnQsWQrrxY/XZ27cPyMVQeicNKYwQ==", + "requires": { + "@aws-sdk/types": "3.215.0", + "tslib": "^2.3.1" + } + }, + "@aws-sdk/types": { + "version": "3.215.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.215.0.tgz", + "integrity": "sha512-eRbCVjwzTYd9C5e2mceScJ6D2kYDDEC3PLkYfJa+1wH9iiF2JlbiYozAokyeYBHQ+AjmD93MK58RBoM8iZfH0Q==" + } } }, "@aws-sdk/types": { @@ -18070,9 +19492,9 @@ } }, "@aws-sdk/util-defaults-mode-browser": { - "version": "3.226.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.226.0.tgz", - "integrity": "sha512-chLx+6AeMSjuPsCVbI1B4Pg3jftjjcsuTsJucjo0DKBb1VSWqPCitmOILQVvKiA2Km8TSs3VcbUuOCyDExkzAg==", + "version": "3.234.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.234.0.tgz", + "integrity": "sha512-IHMKXjTbOD8XMz5+2oCOsVP94BYb9YyjXdns0aAXr2NAo7k2+RCzXQ2DebJXppGda1F6opFutoKwyVSN0cmbMw==", "requires": { "@aws-sdk/property-provider": "3.226.0", "@aws-sdk/types": "3.226.0", @@ -18081,11 +19503,11 @@ } }, "@aws-sdk/util-defaults-mode-node": { - "version": "3.231.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.231.0.tgz", - "integrity": "sha512-jH+9z96x8Oxv+bqBdD7x8CRvbKzM9id+VHzI9+h1oTY9J+6MkUubPshliBTQeus5pD03NBOS/2F3GX2rJ9Avuw==", + "version": "3.234.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.234.0.tgz", + "integrity": "sha512-UGjQ+OjBYYhxFVtUY+jtr0ZZgzZh6OHtYwRhFt8IHewJXFCfZTyfsbX20szBj5y1S4HRIUJ7cwBLIytTqMbI5w==", "requires": { - "@aws-sdk/config-resolver": "3.231.0", + "@aws-sdk/config-resolver": "3.234.0", "@aws-sdk/credential-provider-imds": "3.226.0", "@aws-sdk/node-config-provider": "3.226.0", "@aws-sdk/property-provider": "3.226.0", @@ -18094,9 +19516,9 @@ } }, "@aws-sdk/util-dynamodb": { - "version": "3.231.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-dynamodb/-/util-dynamodb-3.231.0.tgz", - "integrity": "sha512-7+Mj3wBqUdgV0U+9Va+89qafclXhEsjULTbfNdfic4C3PVtcRb1B5on5EPg3g2r3OlDoJBYFjoyW4CAro7TCiA==", + "version": "3.235.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-dynamodb/-/util-dynamodb-3.235.0.tgz", + "integrity": "sha512-y3gC1o16yN7F/Vt4UM9QKOx3qNxZmu/y8YAWS0vC+ZCZqjh4vf+0AuzQWmat+2pHV5qUAgBxOcpr+K3uz1kTiw==", "requires": { "tslib": "^2.3.1" } @@ -18755,9 +20177,9 @@ }, "dependencies": { "@types/node": { - "version": "14.18.34", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.34.tgz", - "integrity": "sha512-hcU9AIQVHmPnmjRK+XUUYlILlr9pQrsqSrwov/JK1pnf3GTQowVBhx54FbvM0AU/VXGH4i3+vgXS5EguR7fysA==", + "version": "14.18.35", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.35.tgz", + "integrity": "sha512-2ATO8pfhG1kDvw4Lc4C0GXIMSQFFJBCo/R1fSgTwmUlq5oy95LXyjDQinsRVgQY6gp6ghh3H91wk9ES5/5C+Tw==", "dev": true } } @@ -18878,169 +20300,169 @@ } }, "@esbuild/android-arm": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.7.tgz", - "integrity": "sha512-yhzDbiVcmq6T1/XEvdcJIVcXHdLjDJ5cQ0Dp9R9p9ERMBTeO1dR5tc8YYv8zwDeBw1xZm+Eo3MRo8cwclhBS0g==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.10.tgz", + "integrity": "sha512-RmJjQTRrO6VwUWDrzTBLmV4OJZTarYsiepLGlF2rYTVB701hSorPywPGvP6d8HCuuRibyXa5JX4s3jN2kHEtjQ==", "dev": true, "optional": true }, "@esbuild/android-arm64": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.7.tgz", - "integrity": "sha512-tYFw0lBJSEvLoGzzYh1kXuzoX1iPkbOk3O29VqzQb0HbOy7t/yw1hGkvwoJhXHwzQUPsShyYcTgRf6bDBcfnTw==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.10.tgz", + "integrity": "sha512-47Y+NwVKTldTlDhSgJHZ/RpvBQMUDG7eKihqaF/u6g7s0ZPz4J1vy8A3rwnnUOF2CuDn7w7Gj/QcMoWz3U3SJw==", "dev": true, "optional": true }, "@esbuild/android-x64": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.7.tgz", - "integrity": "sha512-3P2OuTxwAtM3k/yEWTNUJRjMPG1ce8rXs51GTtvEC5z1j8fC1plHeVVczdeHECU7aM2/Buc0MwZ6ciM/zysnWg==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.10.tgz", + "integrity": "sha512-C4PfnrBMcuAcOurQzpF1tTtZz94IXO5JmICJJ3NFJRHbXXsQUg9RFG45KvydKqtFfBaFLCHpduUkUfXwIvGnRg==", "dev": true, "optional": true }, "@esbuild/darwin-arm64": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.7.tgz", - "integrity": "sha512-VUb9GK23z8jkosHU9yJNUgQpsfJn+7ZyBm6adi2Ec5/U241eR1tAn82QicnUzaFDaffeixiHwikjmnec/YXEZg==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.10.tgz", + "integrity": "sha512-bH/bpFwldyOKdi9HSLCLhhKeVgRYr9KblchwXgY2NeUHBB/BzTUHtUSBgGBmpydB1/4E37m+ggXXfSrnD7/E7g==", "dev": true, "optional": true }, "@esbuild/darwin-x64": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.7.tgz", - "integrity": "sha512-duterlv3tit3HI9vhzMWnSVaB1B6YsXpFq1Ntd6Fou82BB1l4tucYy3FI9dHv3tvtDuS0NiGf/k6XsdBqPZ01w==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.10.tgz", + "integrity": "sha512-OXt7ijoLuy+AjDSKQWu+KdDFMBbdeaL6wtgMKtDUXKWHiAMKHan5+R1QAG6HD4+K0nnOvEJXKHeA9QhXNAjOTQ==", "dev": true, "optional": true }, "@esbuild/freebsd-arm64": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.7.tgz", - "integrity": "sha512-9kkycpBFes/vhi7B7o0cf+q2WdJi+EpVzpVTqtWFNiutARWDFFLcB93J8PR1cG228sucsl3B+7Ts27izE6qiaQ==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.10.tgz", + "integrity": "sha512-shSQX/3GHuspE3Uxtq5kcFG/zqC+VuMnJkqV7LczO41cIe6CQaXHD3QdMLA4ziRq/m0vZo7JdterlgbmgNIAlQ==", "dev": true, "optional": true }, "@esbuild/freebsd-x64": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.7.tgz", - "integrity": "sha512-5Ahf6jzWXJ4J2uh9dpy5DKOO+PeRUE/9DMys6VuYfwgQzd6n5+pVFm58L2Z2gRe611RX6SdydnNaiIKM3svY7g==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.10.tgz", + "integrity": "sha512-5YVc1zdeaJGASijZmTzSO4h6uKzsQGG3pkjI6fuXvolhm3hVRhZwnHJkforaZLmzvNv5Tb7a3QL2FAVmrgySIA==", "dev": true, "optional": true }, "@esbuild/linux-arm": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.7.tgz", - "integrity": "sha512-QqJnyCfu5OF78Olt7JJSZ7OSv/B4Hf+ZJWp4kkq9xwMsgu7yWq3crIic8gGOpDYTqVKKMDAVDgRXy5Wd/nWZyQ==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.10.tgz", + "integrity": "sha512-c360287ZWI2miBnvIj23bPyVctgzeMT2kQKR+x94pVqIN44h3GF8VMEs1SFPH1UgyDr3yBbx3vowDS1SVhyVhA==", "dev": true, "optional": true }, "@esbuild/linux-arm64": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.7.tgz", - "integrity": "sha512-2wv0xYDskk2+MzIm/AEprDip39a23Chptc4mL7hsHg26P0gD8RUhzmDu0KCH2vMThUI1sChXXoK9uH0KYQKaDg==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.10.tgz", + "integrity": "sha512-2aqeNVxIaRfPcIaMZIFoblLh588sWyCbmj1HHCCs9WmeNWm+EIN0SmvsmPvTa/TsNZFKnxTcvkX2eszTcCqIrA==", "dev": true, "optional": true }, "@esbuild/linux-ia32": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.7.tgz", - "integrity": "sha512-APVYbEilKbD5ptmKdnIcXej2/+GdV65TfTjxR2Uk8t1EsOk49t6HapZW6DS/Bwlvh5hDwtLapdSumIVNGxgqLg==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.10.tgz", + "integrity": "sha512-sqMIEWeyrLGU7J5RB5fTkLRIFwsgsQ7ieWXlDLEmC2HblPYGb3AucD7inw2OrKFpRPKsec1l+lssiM3+NV5aOw==", "dev": true, "optional": true }, "@esbuild/linux-loong64": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.7.tgz", - "integrity": "sha512-5wPUAGclplQrAW7EFr3F84Y/d++7G0KykohaF4p54+iNWhUnMVU8Bh2sxiEOXUy4zKIdpHByMgJ5/Ko6QhtTUw==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.10.tgz", + "integrity": "sha512-O7Pd5hLEtTg37NC73pfhUOGTjx/+aXu5YoSq3ahCxcN7Bcr2F47mv+kG5t840thnsEzrv0oB70+LJu3gUgchvg==", "dev": true, "optional": true }, "@esbuild/linux-mips64el": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.7.tgz", - "integrity": "sha512-hxzlXtWF6yWfkE/SMTscNiVqLOAn7fOuIF3q/kiZaXxftz1DhZW/HpnTmTTWrzrS7zJWQxHHT4QSxyAj33COmA==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.10.tgz", + "integrity": "sha512-FN8mZOH7531iPHM0kaFhAOqqNHoAb6r/YHW2ZIxNi0a85UBi2DO4Vuyn7t1p4UN8a4LoAnLOT1PqNgHkgBJgbA==", "dev": true, "optional": true }, "@esbuild/linux-ppc64": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.7.tgz", - "integrity": "sha512-WM83Dac0LdXty5xPhlOuCD5Egfk1xLND/oRLYeB7Jb/tY4kzFSDgLlq91wYbHua/s03tQGA9iXvyjgymMw62Vw==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.10.tgz", + "integrity": "sha512-Dg9RiqdvHOAWnOKIOTsIx8dFX9EDlY2IbPEY7YFzchrCiTZmMkD7jWA9UdZbNUygPjdmQBVPRCrLydReFlX9yg==", "dev": true, "optional": true }, "@esbuild/linux-riscv64": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.7.tgz", - "integrity": "sha512-3nkNnNg4Ax6MS/l8O8Ynq2lGEVJYyJ2EoY3PHjNJ4PuZ80EYLMrFTFZ4L/Hc16AxgtXKwmNP9TM0YKNiBzBiJQ==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.10.tgz", + "integrity": "sha512-XMqtpjwzbmlar0BJIxmzu/RZ7EWlfVfH68Vadrva0Wj5UKOdKvqskuev2jY2oPV3aoQUyXwnMbMrFmloO2GfAw==", "dev": true, "optional": true }, "@esbuild/linux-s390x": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.7.tgz", - "integrity": "sha512-3SA/2VJuv0o1uD7zuqxEP+RrAyRxnkGddq0bwHQ98v1KNlzXD/JvxwTO3T6GM5RH6JUd29RTVQTOJfyzMkkppA==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.10.tgz", + "integrity": "sha512-fu7XtnoeRNFMx8DjK3gPWpFBDM2u5ba+FYwg27SjMJwKvJr4bDyKz5c+FLXLUSSAkMAt/UL+cUbEbra+rYtUgw==", "dev": true, "optional": true }, "@esbuild/linux-x64": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.7.tgz", - "integrity": "sha512-xi/tbqCqvPIzU+zJVyrpz12xqciTAPMi2fXEWGnapZymoGhuL2GIWIRXg4O2v5BXaYA5TSaiKYE14L0QhUTuQg==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.10.tgz", + "integrity": "sha512-61lcjVC/RldNNMUzQQdyCWjCxp9YLEQgIxErxU9XluX7juBdGKb0pvddS0vPNuCvotRbzijZ1pzII+26haWzbA==", "dev": true, "optional": true }, "@esbuild/netbsd-x64": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.7.tgz", - "integrity": "sha512-NUsYbq3B+JdNKn8SXkItFvdes9qTwEoS3aLALtiWciW/ystiCKM20Fgv9XQBOXfhUHyh5CLEeZDXzLOrwBXuCQ==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.10.tgz", + "integrity": "sha512-JeZXCX3viSA9j4HqSoygjssdqYdfHd6yCFWyfSekLbz4Ef+D2EjvsN02ZQPwYl5a5gg/ehdHgegHhlfOFP0HCA==", "dev": true, "optional": true }, "@esbuild/openbsd-x64": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.7.tgz", - "integrity": "sha512-qjwzsgeve9I8Tbsko2FEkdSk2iiezuNGFgipQxY/736NePXDaDZRodIejYGWOlbYXugdxb0nif5yvypH6lKBmA==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.10.tgz", + "integrity": "sha512-3qpxQKuEVIIg8SebpXsp82OBrqjPV/OwNWmG+TnZDr3VGyChNnGMHccC1xkbxCHDQNnnXjxhMQNyHmdFJbmbRA==", "dev": true, "optional": true }, "@esbuild/sunos-x64": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.7.tgz", - "integrity": "sha512-mFWDz4RoBTzPphTCkM7Kc7Qpa0o/Z01acajR+Ai7LdfKgcP/C6jYOaKwv7nKzD0+MjOT20j7You9g4ozYy1dKQ==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.10.tgz", + "integrity": "sha512-z+q0xZ+et/7etz7WoMyXTHZ1rB8PMSNp/FOqURLJLOPb3GWJ2aj4oCqFCjPwEbW1rsT7JPpxeH/DwGAWk/I1Bg==", "dev": true, "optional": true }, "@esbuild/win32-arm64": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.7.tgz", - "integrity": "sha512-m39UmX19RvEIuC8sYZ0M+eQtdXw4IePDSZ78ZQmYyFaXY9krq4YzQCK2XWIJomNLtg4q+W5aXr8bW3AbqWNoVg==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.10.tgz", + "integrity": "sha512-+YYu5sbQ9npkNT9Dec+tn1F/kjg6SMgr6bfi/6FpXYZvCRfu2YFPZGb+3x8K30s8eRxFpoG4sGhiSUkr1xbHEw==", "dev": true, "optional": true }, "@esbuild/win32-ia32": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.7.tgz", - "integrity": "sha512-1cbzSEZA1fANwmT6rjJ4G1qQXHxCxGIcNYFYR9ctI82/prT38lnwSRZ0i5p/MVXksw9eMlHlet6pGu2/qkXFCg==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.10.tgz", + "integrity": "sha512-Aw7Fupk7XNehR1ftHGYwUteyJ2q+em/aE+fVU3YMTBN2V5A7Z4aVCSV+SvCp9HIIHZavPFBpbdP3VfjQpdf6Xg==", "dev": true, "optional": true }, "@esbuild/win32-x64": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.7.tgz", - "integrity": "sha512-QaQ8IH0JLacfGf5cf0HCCPnQuCTd/dAI257vXBgb/cccKGbH/6pVtI1gwhdAQ0Y48QSpTIFrh9etVyNdZY+zzw==", + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.10.tgz", + "integrity": "sha512-qddWullt3sC1EIpfHvCRBq3H4g3L86DZpD6n8k2XFjFVyp01D++uNbN1hT/JRsHxTbyyemZcpwL5aRlJwc/zFw==", "dev": true, "optional": true }, "@eslint/eslintrc": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", - "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.0.tgz", + "integrity": "sha512-7yfvXy6MWLgWSFsLhz5yH3iQ52St8cdUY6FoGieKkRDVxuxmrNuUetIuu6cmjNWwniUHiWXjxCr5tTXDrbYS5A==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^9.4.0", - "globals": "^13.15.0", + "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -20802,9 +22224,9 @@ "dev": true }, "@types/node": { - "version": "18.11.15", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.15.tgz", - "integrity": "sha512-VkhBbVo2+2oozlkdHXLrb3zjsRkpdnaU2bXmX8Wgle3PUi569eLRaHGlgETQHR7lLL1w7GiG3h9SnePhxNDecw==" + "version": "18.11.17", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.17.tgz", + "integrity": "sha512-HJSUJmni4BeDHhfzn6nF0sVmd1SMezP7/4F0Lq+aXzmp2xm9O7WXrUtHW/CHlYVtZUbByEvWidHqRtcJXGF2Ng==" }, "@types/normalize-package-data": { "version": "2.4.1", @@ -20819,9 +22241,9 @@ "dev": true }, "@types/prettier": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.1.tgz", - "integrity": "sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow==", + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", + "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", "dev": true }, "@types/promise-retry": { @@ -20888,14 +22310,14 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.46.1.tgz", - "integrity": "sha512-YpzNv3aayRBwjs4J3oz65eVLXc9xx0PDbIRisHj+dYhvBn02MjYOD96P8YGiWEIFBrojaUjxvkaUpakD82phsA==", + "version": "5.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.47.0.tgz", + "integrity": "sha512-AHZtlXAMGkDmyLuLZsRpH3p4G/1iARIwc/T0vIem2YB+xW6pZaXYXzCBnZSF/5fdM97R9QqZWZ+h3iW10XgevQ==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.46.1", - "@typescript-eslint/type-utils": "5.46.1", - "@typescript-eslint/utils": "5.46.1", + "@typescript-eslint/scope-manager": "5.47.0", + "@typescript-eslint/type-utils": "5.47.0", + "@typescript-eslint/utils": "5.47.0", "debug": "^4.3.4", "ignore": "^5.2.0", "natural-compare-lite": "^1.4.0", @@ -20905,53 +22327,53 @@ } }, "@typescript-eslint/parser": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.46.1.tgz", - "integrity": "sha512-RelQ5cGypPh4ySAtfIMBzBGyrNerQcmfA1oJvPj5f+H4jI59rl9xxpn4bonC0tQvUKOEN7eGBFWxFLK3Xepneg==", + "version": "5.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.47.0.tgz", + "integrity": "sha512-udPU4ckK+R1JWCGdQC4Qa27NtBg7w020ffHqGyAK8pAgOVuNw7YaKXGChk+udh+iiGIJf6/E/0xhVXyPAbsczw==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.46.1", - "@typescript-eslint/types": "5.46.1", - "@typescript-eslint/typescript-estree": "5.46.1", + "@typescript-eslint/scope-manager": "5.47.0", + "@typescript-eslint/types": "5.47.0", + "@typescript-eslint/typescript-estree": "5.47.0", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.46.1.tgz", - "integrity": "sha512-iOChVivo4jpwUdrJZyXSMrEIM/PvsbbDOX1y3UCKjSgWn+W89skxWaYXACQfxmIGhPVpRWK/VWPYc+bad6smIA==", + "version": "5.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.47.0.tgz", + "integrity": "sha512-dvJab4bFf7JVvjPuh3sfBUWsiD73aiftKBpWSfi3sUkysDQ4W8x+ZcFpNp7Kgv0weldhpmMOZBjx1wKN8uWvAw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.46.1", - "@typescript-eslint/visitor-keys": "5.46.1" + "@typescript-eslint/types": "5.47.0", + "@typescript-eslint/visitor-keys": "5.47.0" } }, "@typescript-eslint/type-utils": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.46.1.tgz", - "integrity": "sha512-V/zMyfI+jDmL1ADxfDxjZ0EMbtiVqj8LUGPAGyBkXXStWmCUErMpW873zEHsyguWCuq2iN4BrlWUkmuVj84yng==", + "version": "5.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.47.0.tgz", + "integrity": "sha512-1J+DFFrYoDUXQE1b7QjrNGARZE6uVhBqIvdaXTe5IN+NmEyD68qXR1qX1g2u4voA+nCaelQyG8w30SAOihhEYg==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "5.46.1", - "@typescript-eslint/utils": "5.46.1", + "@typescript-eslint/typescript-estree": "5.47.0", + "@typescript-eslint/utils": "5.47.0", "debug": "^4.3.4", "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.46.1.tgz", - "integrity": "sha512-Z5pvlCaZgU+93ryiYUwGwLl9AQVB/PQ1TsJ9NZ/gHzZjN7g9IAn6RSDkpCV8hqTwAiaj6fmCcKSQeBPlIpW28w==", + "version": "5.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.47.0.tgz", + "integrity": "sha512-eslFG0Qy8wpGzDdYKu58CEr3WLkjwC5Usa6XbuV89ce/yN5RITLe1O8e+WFEuxnfftHiJImkkOBADj58ahRxSg==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.46.1.tgz", - "integrity": "sha512-j9W4t67QiNp90kh5Nbr1w92wzt+toiIsaVPnEblB2Ih2U9fqBTyqV9T3pYWZBRt6QoMh/zVWP59EpuCjc4VRBg==", + "version": "5.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.47.0.tgz", + "integrity": "sha512-LxfKCG4bsRGq60Sqqu+34QT5qT2TEAHvSCCJ321uBWywgE2dS0LKcu5u+3sMGo+Vy9UmLOhdTw5JHzePV/1y4Q==", "dev": true, "requires": { - "@typescript-eslint/types": "5.46.1", - "@typescript-eslint/visitor-keys": "5.46.1", + "@typescript-eslint/types": "5.47.0", + "@typescript-eslint/visitor-keys": "5.47.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -20960,28 +22382,28 @@ } }, "@typescript-eslint/utils": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.46.1.tgz", - "integrity": "sha512-RBdBAGv3oEpFojaCYT4Ghn4775pdjvwfDOfQ2P6qzNVgQOVrnSPe5/Pb88kv7xzYQjoio0eKHKB9GJ16ieSxvA==", + "version": "5.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.47.0.tgz", + "integrity": "sha512-U9xcc0N7xINrCdGVPwABjbAKqx4GK67xuMV87toI+HUqgXj26m6RBp9UshEXcTrgCkdGYFzgKLt8kxu49RilDw==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.46.1", - "@typescript-eslint/types": "5.46.1", - "@typescript-eslint/typescript-estree": "5.46.1", + "@typescript-eslint/scope-manager": "5.47.0", + "@typescript-eslint/types": "5.47.0", + "@typescript-eslint/typescript-estree": "5.47.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0", "semver": "^7.3.7" } }, "@typescript-eslint/visitor-keys": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.46.1.tgz", - "integrity": "sha512-jczZ9noovXwy59KjRTk1OftT78pwygdcmCuBf8yMoWt/8O8l+6x2LSEze0E4TeepXK4MezW3zGSyoDRZK7Y9cg==", + "version": "5.47.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.47.0.tgz", + "integrity": "sha512-ByPi5iMa6QqDXe/GmT/hR6MZtVPi0SqMQPDx15FczCBXJo/7M8T88xReOALAfpBLm+zxpPfmhuEvPb577JRAEg==", "dev": true, "requires": { - "@typescript-eslint/types": "5.46.1", + "@typescript-eslint/types": "5.47.0", "eslint-visitor-keys": "^3.3.0" } }, @@ -21361,18 +22783,18 @@ "dev": true }, "aws-cdk": { - "version": "2.55.0", - "resolved": "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.55.0.tgz", - "integrity": "sha512-SlsaKh1tEiFLWas99OffxoTLugkEZZHY552QeY4ZPXJaUx9kocGYc9s13IO8Y9/cBfoQVvh2KLev4J2+63vKyg==", + "version": "2.55.1", + "resolved": "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.55.1.tgz", + "integrity": "sha512-M/d4lO7rLMvPedNj7pEQtwyxn7nVLluiHggftXlYHOIeaoMG1QCbH1zTuZtMZZxdRRD4ZiOEHvvPYFU/HMcrPQ==", "dev": true, "requires": { "fsevents": "2.3.2" } }, "aws-cdk-lib": { - "version": "2.55.0", - "resolved": "https://registry.npmjs.org/aws-cdk-lib/-/aws-cdk-lib-2.55.0.tgz", - "integrity": "sha512-YCtfmMiITU5ncrrQmq5wls2EeCUOLOBDLWO2ZkaUozIS+VbEDChK8rT66OmgQSPwFntKNSJq0P65tR7kN5/i8g==", + "version": "2.55.1", + "resolved": "https://registry.npmjs.org/aws-cdk-lib/-/aws-cdk-lib-2.55.1.tgz", + "integrity": "sha512-v0MhL6RqazQ2HKj9TXJvXKQcQNIDYeRzcOJ2xB2Usz56xodArc2goLu2P51X5J84xOO4w2AgNaWMCBzd7MbyOQ==", "dev": true, "requires": { "@aws-cdk/asset-awscli-v1": "^2.2.30", @@ -21505,9 +22927,9 @@ } }, "aws-sdk": { - "version": "2.1276.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1276.0.tgz", - "integrity": "sha512-0TGPsW/uMQy0trfYZD+dvSQ9Bf8NmKK9ISj5xQJGopNt/Kxh0vLKBPy2mFmKdxeFtis6wn4c9uTp7/3p0ADa1w==", + "version": "2.1279.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1279.0.tgz", + "integrity": "sha512-52NbHEZTLlrld6XDLvVaOwEI0p4nYTYVuninX8s4kdkBXeTezaBahsufWT7LmeYh10gp70dnwaUxvja1TjmeRA==", "dev": true, "requires": { "buffer": "4.9.2", @@ -22053,13 +23475,13 @@ "dev": true }, "cdk-assets": { - "version": "2.55.0", - "resolved": "https://registry.npmjs.org/cdk-assets/-/cdk-assets-2.55.0.tgz", - "integrity": "sha512-okqVag8vV57IeqFJp3lGtHIgDZaCpKJXZ8xRl8dfDayzNuxnuEyJzyAbo8SzlxwE3E+nqvJPVE4hdz0VbtwvqQ==", + "version": "2.55.1", + "resolved": "https://registry.npmjs.org/cdk-assets/-/cdk-assets-2.55.1.tgz", + "integrity": "sha512-ow6ajx3Dgs+ZD3iTu72lYLK97yHEuP1yvOkwKsrJvUkGwGox77btY51gDbp54owonzRHyt3lgfXvzAcq/ne4eg==", "dev": true, "requires": { - "@aws-cdk/cloud-assembly-schema": "2.55.0", - "@aws-cdk/cx-api": "2.55.0", + "@aws-cdk/cloud-assembly-schema": "2.55.1", + "@aws-cdk/cx-api": "2.55.1", "archiver": "^5.3.1", "aws-sdk": "^2.1211.0", "glob": "^7.2.3", @@ -22068,7 +23490,7 @@ }, "dependencies": { "@aws-cdk/cloud-assembly-schema": { - "version": "2.55.0", + "version": "2.55.1", "dev": true, "requires": { "jsonschema": "^1.4.1", @@ -22076,10 +23498,10 @@ } }, "@aws-cdk/cx-api": { - "version": "2.55.0", + "version": "2.55.1", "dev": true, "requires": { - "@aws-cdk/cloud-assembly-schema": "2.55.0", + "@aws-cdk/cloud-assembly-schema": "2.55.1", "semver": "^7.3.8" } }, @@ -23160,9 +24582,9 @@ "dev": true }, "constructs": { - "version": "10.1.190", - "resolved": "https://registry.npmjs.org/constructs/-/constructs-10.1.190.tgz", - "integrity": "sha512-wGMEBsIKp/tP+b2q3XEtIh/KJPZ2uk7G2XyEbGVEatOo6OQHFhXfBi9BCk8725zuWYP/gZUQJfAvd7KZ+lY5Yw==", + "version": "10.1.196", + "resolved": "https://registry.npmjs.org/constructs/-/constructs-10.1.196.tgz", + "integrity": "sha512-vgVM3vTWu8ZdHEa/icSzmZZOU5berKI+g8eosPKu+KOoAtS6o/eXqYObXejh79vy+rHyKK7yulUtSGCXU4ynUQ==", "dev": true }, "conventional-changelog-angular": { @@ -23721,33 +25143,33 @@ } }, "esbuild": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.7.tgz", - "integrity": "sha512-P6OBFYFSQOGzfApqCeYKqfKRRbCIRsdppTXFo4aAvtiW3o8TTyiIplBvHJI171saPAiy3WlawJHCveJVIOIx1A==", - "dev": true, - "requires": { - "@esbuild/android-arm": "0.16.7", - "@esbuild/android-arm64": "0.16.7", - "@esbuild/android-x64": "0.16.7", - "@esbuild/darwin-arm64": "0.16.7", - "@esbuild/darwin-x64": "0.16.7", - "@esbuild/freebsd-arm64": "0.16.7", - "@esbuild/freebsd-x64": "0.16.7", - "@esbuild/linux-arm": "0.16.7", - "@esbuild/linux-arm64": "0.16.7", - "@esbuild/linux-ia32": "0.16.7", - "@esbuild/linux-loong64": "0.16.7", - "@esbuild/linux-mips64el": "0.16.7", - "@esbuild/linux-ppc64": "0.16.7", - "@esbuild/linux-riscv64": "0.16.7", - "@esbuild/linux-s390x": "0.16.7", - "@esbuild/linux-x64": "0.16.7", - "@esbuild/netbsd-x64": "0.16.7", - "@esbuild/openbsd-x64": "0.16.7", - "@esbuild/sunos-x64": "0.16.7", - "@esbuild/win32-arm64": "0.16.7", - "@esbuild/win32-ia32": "0.16.7", - "@esbuild/win32-x64": "0.16.7" + "version": "0.16.10", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.10.tgz", + "integrity": "sha512-z5dIViHoVnw2l+NCJ3zj5behdXjYvXne9gL18OOivCadXDUhyDkeSvEtLcGVAJW2fNmh33TDUpsi704XYlDodw==", + "dev": true, + "requires": { + "@esbuild/android-arm": "0.16.10", + "@esbuild/android-arm64": "0.16.10", + "@esbuild/android-x64": "0.16.10", + "@esbuild/darwin-arm64": "0.16.10", + "@esbuild/darwin-x64": "0.16.10", + "@esbuild/freebsd-arm64": "0.16.10", + "@esbuild/freebsd-x64": "0.16.10", + "@esbuild/linux-arm": "0.16.10", + "@esbuild/linux-arm64": "0.16.10", + "@esbuild/linux-ia32": "0.16.10", + "@esbuild/linux-loong64": "0.16.10", + "@esbuild/linux-mips64el": "0.16.10", + "@esbuild/linux-ppc64": "0.16.10", + "@esbuild/linux-riscv64": "0.16.10", + "@esbuild/linux-s390x": "0.16.10", + "@esbuild/linux-x64": "0.16.10", + "@esbuild/netbsd-x64": "0.16.10", + "@esbuild/openbsd-x64": "0.16.10", + "@esbuild/sunos-x64": "0.16.10", + "@esbuild/win32-arm64": "0.16.10", + "@esbuild/win32-ia32": "0.16.10", + "@esbuild/win32-x64": "0.16.10" } }, "escalade": { @@ -23817,13 +25239,13 @@ } }, "eslint": { - "version": "8.29.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.29.0.tgz", - "integrity": "sha512-isQ4EEiyUjZFbEKvEGJKKGBwXtvXX+zJbkVKCgTuB9t/+jUBcy8avhkEwWJecI15BkRkOYmvIM5ynbhRjEkoeg==", + "version": "8.30.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.30.0.tgz", + "integrity": "sha512-MGADB39QqYuzEGov+F/qb18r4i7DohCDOfatHaxI2iGlPuC65bwG2gxgO+7DkyL38dRFaRH7RaRAgU6JKL9rMQ==", "dev": true, "requires": { - "@eslint/eslintrc": "^1.3.3", - "@humanwhocodes/config-array": "^0.11.6", + "@eslint/eslintrc": "^1.4.0", + "@humanwhocodes/config-array": "^0.11.8", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "ajv": "^6.10.0", @@ -23842,7 +25264,7 @@ "file-entry-cache": "^6.0.1", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.15.0", + "globals": "^13.19.0", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "import-fresh": "^3.0.0", @@ -25109,9 +26531,9 @@ "dev": true }, "ignore": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.1.tgz", - "integrity": "sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true }, "ignore-walk": { @@ -27068,13 +28490,13 @@ "dev": true }, "nise": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.3.tgz", - "integrity": "sha512-U597iWTTBBYIV72986jyU382/MMZ70ApWcRmkoF1AZ75bpqOtI3Gugv/6+0jLgoDOabmcSwYBkSSAWIp1eA5cg==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.4.tgz", + "integrity": "sha512-8+Ib8rRJ4L0o3kfmyVCL7gzrohyDe0cMFTBa2d364yIrEGMEoetznKJx899YxjybU6bL9SQkYPSBBs1gyYs8Xg==", "dev": true, "requires": { "@sinonjs/commons": "^2.0.0", - "@sinonjs/fake-timers": "^7.0.4", + "@sinonjs/fake-timers": "^10.0.2", "@sinonjs/text-encoding": "^0.7.1", "just-extend": "^4.0.2", "path-to-regexp": "^1.7.0" @@ -27090,23 +28512,12 @@ } }, "@sinonjs/fake-timers": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-7.1.2.tgz", - "integrity": "sha512-iQADsW4LBMISqZ6Ci1dupJL9pprqwcVFTcOsEmQOEhW+KLCVn/Y4Jrvg2k19fIHCp+iFprriYPTdRcQR8NbUPg==", + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz", + "integrity": "sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==", "dev": true, "requires": { - "@sinonjs/commons": "^1.7.0" - }, - "dependencies": { - "@sinonjs/commons": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", - "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", - "dev": true, - "requires": { - "type-detect": "4.0.8" - } - } + "@sinonjs/commons": "^2.0.0" } } } @@ -27260,9 +28671,9 @@ "dev": true }, "node-releases": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.7.tgz", - "integrity": "sha512-EJ3rzxL9pTWPjk5arA0s0dgXpnyiAbJDE6wHT62g7VsgrgQgmmZ+Ru++M1BFofncWja+Pnn3rEr3fieRySAdKQ==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz", + "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==", "dev": true }, "nopt": { @@ -28458,9 +29869,9 @@ } }, "minimatch": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.1.tgz", - "integrity": "sha512-362NP+zlprccbEt/SkxKfRMHnNY85V74mVnpUpNyr3F35covl09Kec7/sEFLt3RA4oXmewtoaanoIf67SE5Y5g==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==", "dev": true, "requires": { "brace-expansion": "^2.0.1" @@ -29505,14 +30916,14 @@ } }, "typedoc": { - "version": "0.23.22", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.23.22.tgz", - "integrity": "sha512-5sJkjK60xp8A7YpcYniu3+Wf0QcgojEnhzHuCN+CkdpQkKRhOspon/9+sGTkGI8kjVkZs3KHrhltpQyVhRMVfw==", + "version": "0.23.23", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.23.23.tgz", + "integrity": "sha512-cg1YQWj+/BU6wq74iott513U16fbrPCbyYs04PHZgvoKJIc6EY4xNobyDZh4KMfRGW8Yjv6wwIzQyoqopKOUGw==", "dev": true, "requires": { "lunr": "^2.3.9", - "marked": "^4.0.19", - "minimatch": "^5.1.0", + "marked": "^4.2.4", + "minimatch": "^5.1.1", "shiki": "^0.11.1" }, "dependencies": { @@ -29526,9 +30937,9 @@ } }, "minimatch": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.1.tgz", - "integrity": "sha512-362NP+zlprccbEt/SkxKfRMHnNY85V74mVnpUpNyr3F35covl09Kec7/sEFLt3RA4oXmewtoaanoIf67SE5Y5g==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==", "dev": true, "requires": { "brace-expansion": "^2.0.1" @@ -29690,8 +31101,7 @@ "uuid": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", - "dev": true + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==" }, "v8-compile-cache-lib": { "version": "3.0.1", diff --git a/packages/parameters/package.json b/packages/parameters/package.json index 780c801029..4adc8938d8 100644 --- a/packages/parameters/package.json +++ b/packages/parameters/package.json @@ -55,6 +55,7 @@ ], "devDependencies": { "@aws-sdk/client-secrets-manager": "^3.238.0", + "@aws-sdk/client-ssm": "^3.244.0", "aws-sdk-client-mock": "^2.0.1", "aws-sdk-client-mock-jest": "^2.0.1" } diff --git a/packages/parameters/src/BaseProvider.ts b/packages/parameters/src/BaseProvider.ts index d677f06c21..034f8fccaf 100644 --- a/packages/parameters/src/BaseProvider.ts +++ b/packages/parameters/src/BaseProvider.ts @@ -98,6 +98,20 @@ abstract class BaseProvider implements BaseProviderInterface { return values; } + /** + * Check whether a key has expired in the cache or not + * + * It returns true if the key is expired or not present in the cache. + * + * @param {string} key - Stringified representation of the key to retrieve + */ + public hasKeyExpiredInCache(key: string): boolean { + const value = this.store.get(key); + if (value) return value.isExpired(); + + return true; + } + /** * Retrieve parameter value from the underlying parameter store * @@ -114,20 +128,6 @@ abstract class BaseProvider implements BaseProviderInterface { */ protected abstract _getMultiple(path: string, options?: unknown): Promise>; - /** - * Check whether a key has expired in the cache or not - * - * It returns true if the key is expired or not present in the cache. - * - * @param {string} key - Stringified representation of the key to retrieve - */ - private hasKeyExpiredInCache(key: string): boolean { - const value = this.store.get(key); - if (value) return value.isExpired(); - - return true; - } - } const transformValue = (value: string | Uint8Array | undefined, transform: TransformOptions, throwOnTransformError: boolean, key: string): string | Record | undefined => { diff --git a/packages/parameters/src/ssm/SSMProvider.ts b/packages/parameters/src/ssm/SSMProvider.ts new file mode 100644 index 0000000000..4dd9a471b0 --- /dev/null +++ b/packages/parameters/src/ssm/SSMProvider.ts @@ -0,0 +1,467 @@ +import { BaseProvider, DEFAULT_PROVIDERS, transformValue } from '../BaseProvider'; +import { GetParameterError } from '../Exceptions'; +import { DEFAULT_MAX_AGE_SECS } from '../constants'; +import { + SSMClient, + GetParameterCommand, + paginateGetParametersByPath, + GetParametersCommand +} from '@aws-sdk/client-ssm'; +import type { + GetParameterCommandInput, + GetParametersByPathCommandInput, + GetParametersCommandInput, + GetParametersCommandOutput, +} from '@aws-sdk/client-ssm'; +import type { + SSMProviderOptionsInterface, + SSMGetMultipleOptionsInterface, + SSMGetOptionsInterface, + SSMGetParametersByNameOutputInterface, + SSMGetParametersByNameOptionsInterface, + SSMSplitBatchAndDecryptParametersOutputType, + SSMGetParametersByNameFromCacheOutputType, +} from 'types/SSMProvider'; +import type { PaginationConfiguration } from '@aws-sdk/types'; + +class SSMProvider extends BaseProvider { + public client: SSMClient; + protected errorsKey = '_errors'; + protected maxGetParametersItems = 10; + + public constructor(config?: SSMProviderOptionsInterface) { + super(); + this.client = new SSMClient(config?.clientConfig || {}); + } + + public async get( + name: string, + options?: SSMGetOptionsInterface | undefined + ): Promise | undefined> { + return super.get(name, options) as Promise | undefined>; + } + + public async getMultiple( + path: string, + options?: SSMGetMultipleOptionsInterface | undefined + ): Promise> { + return super.getMultiple(path, options); + } + + /** + * Retrieve multiple parameter values by name from SSM or cache. + * + * `ThrowOnError` decides whether to throw an error if a parameter is not found: + * - A) Default fail-fast behavior: Throws a `GetParameterError` error upon any failure. + * - B) Gracefully aggregate all parameters that failed under "_errors" key. + * + * It transparently uses GetParameter and/or GetParameters depending on decryption requirements. + * + * ```sh + * ┌────────────────────────┐ + * ┌───▶ Decrypt entire batch │─────┐ + * │ └────────────────────────┘ │ ┌────────────────────┐ + * │ ├─────▶ GetParameters API │ + * ┌──────────────────┐ │ ┌────────────────────────┐ │ └────────────────────┘ + * │ Split batch │─── ┼──▶│ No decryption required │─────┘ + * └──────────────────┘ │ └────────────────────────┘ + * │ ┌────────────────────┐ + * │ ┌────────────────────────┐ │ GetParameter API │ + * └──▶│Decrypt some but not all│───────────▶────────────────────┤ + * └────────────────────────┘ │ GetParameters API │ + * └────────────────────┘ + * ``` + * + * @param {Record[]} parameters - List of parameter names, and any optional overrides + * + */ + public async getParametersByName( + parameters: Record, + options?: SSMGetParametersByNameOptionsInterface + ): Promise> { + const configs = { ...{ + decrypt: false, + maxAge: DEFAULT_MAX_AGE_SECS, + throwOnError: true, + }, ...options }; + + let response: Record = {}; + + // NOTE: We fail early to avoid unintended graceful errors being replaced with their '_errors' param values + SSMProvider.throwIfErrorsKeyIsPresent(parameters, this.errorsKey, configs.throwOnError); + + const { + parametersToFetchInBatch, + parametersToDecrypt + } = SSMProvider.splitBatchAndDecryptParameters(parameters, configs); + // NOTE: We need to find out whether all parameters must be decrypted or not to know which API to use + // Logic: + // GetParameters API -> When decrypt is used for all parameters in the the batch + // GetParameter API -> When decrypt is used for one or more in the batch + if (Object.keys(parametersToDecrypt).length !== Object.keys(parameters).length) { + const { + response: decryptResponse, + errors: decryptErrors + } = await this.getParametersByNameWithDecryptOption(parametersToDecrypt, configs.throwOnError); + const { + response: batchResponse, + errors: batchErrors + } = await this.getParametersBatchByName(parametersToFetchInBatch, configs.throwOnError, false); + + response = { ...decryptResponse, ...batchResponse }; + // Fail-fast disabled, let's aggregate errors under "_errors" key so they can handle gracefully + if (!configs.throwOnError) { + response[this.errorsKey] = [ ...decryptErrors, ...batchErrors ]; + } + } else { + const { + response: batchResponse, + errors: batchErrors + } = await this.getParametersBatchByName(parametersToDecrypt, configs.throwOnError, true); + + response = batchResponse; + // Fail-fast disabled, let's aggregate errors under "_errors" key so they can handle gracefully + if (!configs.throwOnError) { + response[this.errorsKey] = [...batchErrors]; + } + } + + return response; + } + + protected async _get( + name: string, + options?: SSMGetOptionsInterface + ): Promise { + const sdkOptions: GetParameterCommandInput = { + Name: name, + }; + if (options) { + if (options.hasOwnProperty('decrypt')) sdkOptions.WithDecryption = options.decrypt; + if (options.hasOwnProperty('sdkOptions')) { + Object.assign(sdkOptions, options.sdkOptions); + } + } + const result = await this.client.send(new GetParameterCommand(sdkOptions)); + + return result.Parameter?.Value; + } + + protected async _getMultiple( + path: string, + options?: SSMGetMultipleOptionsInterface + ): Promise> { + const sdkOptions: GetParametersByPathCommandInput = { + Path: path, + }; + const paginationOptions: PaginationConfiguration = { + client: this.client + }; + if (options) { + if (options.hasOwnProperty('decrypt')) sdkOptions.WithDecryption = options.decrypt; + if (options.hasOwnProperty('recursive')) sdkOptions.Recursive = options.recursive; + if (options.hasOwnProperty('sdkOptions')) { + Object.assign(sdkOptions, options.sdkOptions); + if (sdkOptions.MaxResults) { + paginationOptions.pageSize = sdkOptions.MaxResults; + } + } + } + + const parameters: Record = {}; + for await (const page of paginateGetParametersByPath(paginationOptions, sdkOptions)) { + for (const parameter of page.Parameters || []) { + /** + * Standardize the parameter name + * + * The parameter name returned by SSM will contain the full path. + * However, for readability, we should return only the part after the path. + **/ + + // If the parameter is present in the response, then it has a Name + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + let name = parameter.Name!; + name = name.replace(path, ''); + if (name.startsWith('/')) { + name = name.replace('/', ''); + } + parameters[name] = parameter.Value; + } + } + + return parameters; + } + + protected async _getParametersByName( + parameters: Record, + throwOnError: boolean, + decrypt: boolean + ): Promise { + const sdkOptions: GetParametersCommandInput = { + Names: Object.keys(parameters), + }; + if (decrypt) { + sdkOptions.WithDecryption = true; + } + + const result = await this.client.send(new GetParametersCommand(sdkOptions)); + const errors = SSMProvider.handleAnyInvalidGetParameterErrors(result, throwOnError); + const response = this.transformAndCacheGetParametersResponse( + result, + parameters, + throwOnError + ); + + return { + response, + errors, + }; + } + + /** + * Slice batch and fetch parameters using GetPrameters API by max permissible batch size + */ + protected async getParametersBatchByName( + parameters: Record, + throwOnError: boolean, + decrypt: boolean + ): Promise { + let response: Record = {}; + let errors: string[] = []; + + // Fetch each possible batch param from cache and return if entire batch is cached + const { cached, toFetch } = await this.getParametersByNameFromCache(parameters); + if (Object.keys(cached).length >= Object.keys(parameters).length) { + response = cached; + + return { + response, + errors, + }; + } + + // Slice batch by max permitted GetParameters call and retrieve the ones that are not cached + const { + response: batchResponse, + errors: batchErrors + } = await this.getParametersByNameInChunks(toFetch, throwOnError, decrypt); + response = { ...cached, ...batchResponse }; + errors = batchErrors; + + return { + response, + errors, + }; + } + + /** + * Fetch each parameter from batch that hasn't expired from cache + */ + protected async getParametersByNameFromCache( + parameters: Record + ): Promise { + const cached: Record> = {}; + const toFetch: Record = {}; + + for (const [ parameterName, parameterOptions ] of Object.entries(parameters)) { + const cacheKey = [ parameterName, parameterOptions.transform ].toString(); + if (!this.hasKeyExpiredInCache(cacheKey)) { + // Since we know the key exists in the cache, we can safely use the non-null assertion operator + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + cached[parameterName] = this.store.get(cacheKey)!.value as Record>; + } else { + toFetch[parameterName] = parameterOptions; + } + } + + return { + cached, + toFetch, + }; + } + + protected async getParametersByNameInChunks( + parameters: Record, + throwOnError: boolean, + decrypt: boolean + ): Promise { + let response: Record = {}; + let errors: string[] = []; + + // Slice object into chunks of max permissible batch size + const chunks = Object.entries(parameters).reduce(( + acc, + [ parameterName, parameterOptions ], + index + ) => { + const chunkIndex = Math.floor(index / this.maxGetParametersItems); + if (!acc[chunkIndex]) { + acc[chunkIndex] = {}; + } + acc[chunkIndex][parameterName] = parameterOptions; + + return acc; + }, [] as Record[]); + + // Fetch each chunk and merge results + for (const chunk of chunks) { + const { + response: chunkResponse, + errors: chunkErrors + } = await this._getParametersByName(chunk, throwOnError, decrypt); + + response = { ...response, ...chunkResponse }; + errors = [ ...errors, ...chunkErrors ]; + } + + return { + response, + errors, + }; + } + + protected async getParametersByNameWithDecryptOption( + parameters: Record, + throwOnError: boolean + ): Promise { + const response: Record = {}; + const errors: string[] = []; + + for (const [ parameterName, parameterOptions ] of Object.entries(parameters)) { + try { + response[parameterName] = await this._get(parameterName, parameterOptions); + } catch (error) { + if (throwOnError) { + throw error; + } + errors.push(parameterName); + } + } + + return { + response, + errors, + }; + } + + /** + * Handle any invalid parameters returned by GetParameters API + * GetParameters is non-atomic. Failures don't always reflect in exceptions so we need to collect. + */ + protected static handleAnyInvalidGetParameterErrors( + result: GetParametersCommandOutput, + throwOnError: boolean + ): string[] { + const errors: string[] = []; + if (result.InvalidParameters && result.InvalidParameters.length > 0) { + if (throwOnError) { + throw new GetParameterError( + `Failed to fetch parameters: ${result.InvalidParameters.join(', ')}` + ); + } + errors.push(...result.InvalidParameters); + } + + return errors; + } + + /** + * Split parameters that can be fetched by GetParameters vs GetParameter. + */ + protected static splitBatchAndDecryptParameters( + parameters: Record, + configs: SSMGetParametersByNameOptionsInterface + ): SSMSplitBatchAndDecryptParametersOutputType { + const parametersToFetchInBatch: Record = {}; + const parametersToDecrypt: Record = {}; + + for (const [ parameterName, parameterOptions ] of Object.entries(parameters)) { + const overrides = parameterOptions; + overrides.transform = overrides.transform || configs.transform; + + if (!overrides.hasOwnProperty('decrypt')) { + overrides.decrypt = configs.decrypt; + } + if (!overrides.hasOwnProperty('maxAge')) { + overrides.maxAge = configs.maxAge; + } + + if (overrides.decrypt) { + parametersToDecrypt[parameterName] = overrides; + } else { + parametersToFetchInBatch[parameterName] = overrides; + } + } + + return { + parametersToFetchInBatch, + parametersToDecrypt, + }; + } + + /** + * Throw a GetParameterError if fail-fast is disabled and `_errors` key is in parameters list. + * + * @param {Record} parameters + * @param {string} reservedParameter + * @param {boolean} throwOnError + */ + protected static throwIfErrorsKeyIsPresent( + parameters: Record, + reservedParameter: string, + throwOnError: boolean + ): void { + if (!throwOnError && parameters.hasOwnProperty(reservedParameter)) { + throw new GetParameterError( + `You cannot fetch a parameter named ${reservedParameter} in graceful error mode.` + ); + } + } + + protected transformAndCacheGetParametersResponse( + response: GetParametersCommandOutput, + parameters: Record, + throwOnError: boolean + ): Record { + const processedParameters: Record = {}; + + for (const parameter of response.Parameters || []) { + // If the parameter is present in the response, then it has a Name + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const parameterName = parameter.Name!; + const parameterValue = parameter.Value; + const parameterOptions = parameters[parameterName]; + + let value; + // NOTE: if transform is set, we do it before caching to reduce number of operations + if (parameterValue && parameterOptions.transform) { + value = transformValue( + parameterValue, + parameterOptions.transform, + throwOnError, + parameterName + ); + } else if (parameterValue) { + value = parameterValue; + } + + if (value) { + const cacheKey = [ parameterName, parameterOptions.transform ].toString(); + this.addToCache( + cacheKey, + value, + parameterOptions.maxAge || DEFAULT_MAX_AGE_SECS + ); + } + + processedParameters[parameterName] = value; + } + + return processedParameters; + } +} + +export { + SSMProvider, + DEFAULT_PROVIDERS, +}; \ No newline at end of file diff --git a/packages/parameters/src/ssm/getParameter.ts b/packages/parameters/src/ssm/getParameter.ts new file mode 100644 index 0000000000..fd4d8e8e0e --- /dev/null +++ b/packages/parameters/src/ssm/getParameter.ts @@ -0,0 +1,17 @@ +import { SSMProvider, DEFAULT_PROVIDERS } from './SSMProvider'; +import type { SSMGetOptionsInterface } from '../types/SSMProvider'; + +const getParameter = ( + name: string, + options?: SSMGetOptionsInterface +): Promise> => { + if (!DEFAULT_PROVIDERS.hasOwnProperty('ssm')) { + DEFAULT_PROVIDERS.ssm = new SSMProvider(); + } + + return (DEFAULT_PROVIDERS.ssm as SSMProvider).get(name, options); +}; + +export { + getParameter, +}; \ No newline at end of file diff --git a/packages/parameters/src/ssm/getParameters.ts b/packages/parameters/src/ssm/getParameters.ts new file mode 100644 index 0000000000..0283bc0b5e --- /dev/null +++ b/packages/parameters/src/ssm/getParameters.ts @@ -0,0 +1,17 @@ +import { SSMProvider, DEFAULT_PROVIDERS } from './SSMProvider'; +import type { SSMGetMultipleOptionsInterface } from '../types/SSMProvider'; + +const getParameters = ( + path: string, + options?: SSMGetMultipleOptionsInterface +): Promise> => { + if (!DEFAULT_PROVIDERS.hasOwnProperty('ssm')) { + DEFAULT_PROVIDERS.ssm = new SSMProvider(); + } + + return (DEFAULT_PROVIDERS.ssm as SSMProvider).getMultiple(path, options); +}; + +export { + getParameters, +}; \ No newline at end of file diff --git a/packages/parameters/src/ssm/getParametersByName.ts b/packages/parameters/src/ssm/getParametersByName.ts new file mode 100644 index 0000000000..c2b8f625f0 --- /dev/null +++ b/packages/parameters/src/ssm/getParametersByName.ts @@ -0,0 +1,17 @@ +import { SSMProvider, DEFAULT_PROVIDERS } from './SSMProvider'; +import type { SSMGetParametersByNameOptionsInterface } from '../types/SSMProvider'; + +const getParametersByName = ( + parameters: Record, + options?: SSMGetParametersByNameOptionsInterface +): Promise> => { + if (!DEFAULT_PROVIDERS.hasOwnProperty('ssm')) { + DEFAULT_PROVIDERS.ssm = new SSMProvider(); + } + + return (DEFAULT_PROVIDERS.ssm as SSMProvider).getParametersByName(parameters, options); +}; + +export { + getParametersByName, +}; \ No newline at end of file diff --git a/packages/parameters/src/ssm/index.ts b/packages/parameters/src/ssm/index.ts new file mode 100644 index 0000000000..e275be6d78 --- /dev/null +++ b/packages/parameters/src/ssm/index.ts @@ -0,0 +1,4 @@ +export * from './SSMProvider'; +export * from './getParameter'; +export * from './getParameters'; +export * from './getParametersByName'; \ No newline at end of file diff --git a/packages/parameters/src/types/SSMProvider.ts b/packages/parameters/src/types/SSMProvider.ts new file mode 100644 index 0000000000..e7649c14df --- /dev/null +++ b/packages/parameters/src/types/SSMProvider.ts @@ -0,0 +1,62 @@ +import type { + SSMClientConfig, + GetParameterCommandInput, + GetParametersByPathCommandInput +} from '@aws-sdk/client-ssm'; +import type { GetOptionsInterface, GetMultipleOptionsInterface, TransformOptions } from './BaseProvider'; + +interface SSMProviderOptionsInterface { + clientConfig: SSMClientConfig +} + +/** + * Options for the SSMProvider get method. + * + * @interface SSMGetOptionsInterface + * @extends {GetOptionsInterface} + * @property {boolean} decrypt - If true, the parameter will be decrypted. + * @property {Partial} sdkOptions - Options for the AWS SDK. + */ +interface SSMGetOptionsInterface extends GetOptionsInterface { + decrypt?: boolean + sdkOptions?: Partial +} + +interface SSMGetMultipleOptionsInterface extends GetMultipleOptionsInterface { + sdkOptions?: Partial + decrypt?: boolean + recursive?: boolean + throwOnTransformError?: boolean +} + +interface SSMGetParametersByNameOptionsInterface { + maxAge?: number + throwOnError?: boolean + decrypt?: boolean + transform?: TransformOptions +} + +type SSMSplitBatchAndDecryptParametersOutputType = { + parametersToFetchInBatch: Record + parametersToDecrypt: Record +}; + +interface SSMGetParametersByNameOutputInterface { + response: Record + errors: string[] +} + +type SSMGetParametersByNameFromCacheOutputType = { + cached: Record> + toFetch: Record +}; + +export { + SSMProviderOptionsInterface, + SSMGetOptionsInterface, + SSMGetMultipleOptionsInterface, + SSMGetParametersByNameOptionsInterface, + SSMSplitBatchAndDecryptParametersOutputType, + SSMGetParametersByNameOutputInterface, + SSMGetParametersByNameFromCacheOutputType, +}; \ No newline at end of file diff --git a/packages/parameters/tests/unit/BaseProvider.test.ts b/packages/parameters/tests/unit/BaseProvider.test.ts index 68e29d22d3..1227d68b1b 100644 --- a/packages/parameters/tests/unit/BaseProvider.test.ts +++ b/packages/parameters/tests/unit/BaseProvider.test.ts @@ -111,7 +111,7 @@ describe('Class: BaseProvider', () => { }); - test('when called and values cached are expired, it returns the remote values', async () => { + test('when called and cached value is expired, it returns the remote value', async () => { // Prepare const mockData = 'my-remote-value'; diff --git a/packages/parameters/tests/unit/SSMProvider.test.ts b/packages/parameters/tests/unit/SSMProvider.test.ts new file mode 100644 index 0000000000..a48e6a4004 --- /dev/null +++ b/packages/parameters/tests/unit/SSMProvider.test.ts @@ -0,0 +1,1189 @@ +/** + * Test SSMProvider class + * + * @group unit/parameters/ssm/class + */ +import { SSMProvider } from '../../src/ssm'; +import { + SSMClient, + GetParameterCommand, + GetParametersCommand, + GetParametersByPathCommand +} from '@aws-sdk/client-ssm'; +import type { GetParametersCommandOutput } from '@aws-sdk/client-ssm'; +import { mockClient } from 'aws-sdk-client-mock'; +import 'aws-sdk-client-mock-jest'; +import type { + SSMGetParametersByNameFromCacheOutputType, + SSMGetParametersByNameOptionsInterface, + SSMSplitBatchAndDecryptParametersOutputType, + SSMGetParametersByNameOutputInterface +} from '../../src/types/SSMProvider'; +import { ExpirableValue } from '../../src/BaseProvider'; +import { toBase64 } from '@aws-sdk/util-base64'; + +const encoder = new TextEncoder(); + +describe('Class: SSMProvider', () => { + + beforeEach(() => { + jest.clearAllMocks(); + }); + + describe('Method: getParametersByName', () => { + + class SSMProviderMock extends SSMProvider { + public getParametersBatchByName = jest.fn(); + public getParametersByNameWithDecryptOption = jest.fn(); + + public constructor() { + super(); + } + } + + test('when called with no parameters to decrypt, it calls both getParametersByNameWithDecryptOption and getParametersBatchByName, then returns', async () => { + + // Prepare + const provider = new SSMProviderMock(); + const parameters: Record = { + '/foo/bar': { + maxAge: 1000, + }, + '/foo/baz': { + transform: 'json', + }, + }; + provider.getParametersByNameWithDecryptOption.mockResolvedValue({ + response: {}, + errors: [], + }); + provider.getParametersBatchByName.mockResolvedValue({ + response: { + '/foo/bar': 'bar', + '/foo/baz': 'baz', + }, + errors: [], + }); + + // Act + await provider.getParametersByName(parameters, { decrypt: false }); + + // Assess + // throwOnTransformError is true by default + expect(provider.getParametersByNameWithDecryptOption).toHaveBeenCalledWith({}, true); + expect(provider.getParametersBatchByName).toHaveBeenCalledWith(parameters, true, false); + expect(provider.getParametersBatchByName).toHaveBeenCalledTimes(1); + + }); + + test('when called with all parameters to decrypt, it calls only getParametersBatchByName', async () => { + + // Prepare + const provider = new SSMProviderMock(); + const parameters: Record = { + '/foo/bar': { + maxAge: 1000, + }, + '/foo/baz': { + transform: 'json', + }, + }; + provider.getParametersBatchByName.mockResolvedValue({ + response: { + '/foo/bar': 'bar', + '/foo/baz': 'baz', + }, + errors: [], + }); + + // Act + await provider.getParametersByName(parameters, { decrypt: true }); + + // Assess + expect(provider.getParametersBatchByName).toHaveBeenCalledWith(parameters, true, true); + expect(provider.getParametersBatchByName).toHaveBeenCalledTimes(1); + expect(provider.getParametersByNameWithDecryptOption).not.toHaveBeenCalled(); + + }); + + test('when called with some parameters to decrypt, it calls both getParametersByNameWithDecryptOption and getParametersBatchByName, then returns', async () => { + + // Prepare + const provider = new SSMProviderMock(); + const parameters: Record = { + '/foo/bar': { + maxAge: 1000, + }, + '/foo/baz': { + transform: 'json', + decrypt: true, + }, + }; + provider.getParametersByNameWithDecryptOption.mockResolvedValue({ + response: { + '/foo/baz': 'baz', + }, + errors: [], + }); + provider.getParametersBatchByName.mockResolvedValue({ + response: { + '/foo/bar': 'bar', + }, + errors: [], + }); + + // Act + await provider.getParametersByName(parameters, {}); + + // Assess + // throwOnError is true by default + expect(provider.getParametersByNameWithDecryptOption).toHaveBeenCalledWith({ + '/foo/baz': { + transform: 'json', + decrypt: true, + maxAge: 5, + }, + }, true); + expect(provider.getParametersBatchByName).toHaveBeenCalledWith({ + '/foo/bar': { + maxAge: 1000, + decrypt: false, + transform: undefined, + }, + }, true, false); + expect(provider.getParametersByNameWithDecryptOption).toHaveBeenCalledTimes(1); + expect(provider.getParametersBatchByName).toHaveBeenCalledTimes(1); + + }); + + test('when called and getParametersBatchByName returns an error and throwOnError is false, it returns the errors', async () => { + + // Prepare + const provider = new SSMProviderMock(); + const parameters: Record = { + '/foo/bar': { + maxAge: 1000, + }, + '/foo/baz': { + transform: 'json', + }, + }; + provider.getParametersByNameWithDecryptOption.mockResolvedValue({ + response: {}, + errors: [], + }); + provider.getParametersBatchByName.mockResolvedValue({ + response: { + '/foo/baz': 'baz', + }, + errors: [ + '/foo/bar', + ], + }); + + // Act + const result = await provider.getParametersByName(parameters, { decrypt: false, throwOnError: false }); + + // Assess + expect(result).toEqual({ + '/foo/baz': 'baz', + _errors: [ + '/foo/bar', + ], + }); + + }); + + test('when called and getParametersBatchByName returns an error and throwOnError is false, it returns the errors', async () => { + + // Prepare + const provider = new SSMProviderMock(); + const parameters: Record = { + '/foo/bar': { + maxAge: 1000, + }, + '/foo/baz': { + transform: 'json', + }, + }; + provider.getParametersBatchByName.mockResolvedValue({ + response: {}, + errors: [ + '/foo/bar', + '/foo/baz', + ], + }); + + // Act + const result = await provider.getParametersByName(parameters, { decrypt: true, throwOnError: false }); + + // Assess + expect(result).toEqual({ + _errors: [ + '/foo/bar', + '/foo/baz', + ], + }); + + }); + + }); + + describe('Method: _get', () => { + + test('when called without sdkOptions, it gets the parameter using the name and with no decryption', async () => { + + // Prepare + const provider = new SSMProvider(); + const parameterName = 'foo'; + const parameterValue = 'foo'; + const client = mockClient(SSMClient).on(GetParameterCommand).resolves({ + Parameter: { + Value: parameterValue, + }, + }); + + // Act + const value = await provider.get(parameterName); + + // Assess + expect(client).toReceiveCommandWith(GetParameterCommand, { + Name: parameterName, + }); + expect(value).toBe(parameterValue); + + }); + + test('when called with sdkOptions, it gets the parameter using the parameters', async () => { + + // Prepare + const provider = new SSMProvider(); + const client = mockClient(SSMClient).on(GetParameterCommand).resolves({}); + const parameterName = 'foo'; + + // Act + await provider.get(parameterName, { sdkOptions: { WithDecryption: true } }); + + // Assess + expect(client).toReceiveCommandWith(GetParameterCommand, { + Name: parameterName, + WithDecryption: true, + }); + + }); + + test('when called with the decrypt option, the WithDecryption parameter is passed to the sdk client', async () => { + + // Prepare + const provider = new SSMProvider(); + const client = mockClient(SSMClient).on(GetParameterCommand).resolves({}); + const parameterName = 'foo'; + + // Act + await provider.get(parameterName, { decrypt: true }); + + // Assess + expect(client).toReceiveCommandWith(GetParameterCommand, { + Name: parameterName, + WithDecryption: true, + }); + + }); + + }); + + describe('Method: _getMultiple', () => { + + test('when called with only a path, it passes it to the sdk', async () => { + + // Prepare + const provider = new SSMProvider(); + const client = mockClient(SSMClient).on(GetParametersByPathCommand) + .resolves({}); + const parameterPath = '/foo'; + + // Act + await provider.getMultiple(parameterPath); + + // Assess + expect(client).toReceiveCommandWith(GetParametersByPathCommand, { + Path: parameterPath, + }); + + }); + + test('when called with a path and sdkOptions, it passes them to the sdk', async () => { + + // Prepare + const provider = new SSMProvider(); + const client = mockClient(SSMClient).on(GetParametersByPathCommand) + .resolves({ + Parameters: [] + }); + const parameterPath = '/foo'; + + // Act + await provider.getMultiple(parameterPath, { sdkOptions: { MaxResults: 10 } }); + + // Assess + expect(client).toReceiveCommandWith(GetParametersByPathCommand, { + Path: parameterPath, + MaxResults: 10, + }); + + }); + + test('when called with no options, it uses the default sdk options', async () => { + + // Prepare + const provider = new SSMProvider(); + const client = mockClient(SSMClient).on(GetParametersByPathCommand) + .resolves({ + Parameters: [] + }); + const parameterPath = '/foo'; + + // Act + await provider.getMultiple(parameterPath); + + // Assess + expect(client).toReceiveCommandWith(GetParametersByPathCommand, { + Path: parameterPath, + }); + + }); + + test('when called with decrypt or recursive, it passes them to the sdk', async () => { + + // Prepare + const provider = new SSMProvider(); + const client = mockClient(SSMClient).on(GetParametersByPathCommand) + .resolves({ + Parameters: [] + }); + const parameterPath = '/foo'; + + // Act + await provider.getMultiple(parameterPath, { recursive: false, decrypt: true }); + + // Assess + expect(client).toReceiveCommandWith(GetParametersByPathCommand, { + Path: parameterPath, + Recursive: false, + WithDecryption: true, + }); + + }); + + test('when multiple parameters that share the same path as suffix are retrieved, it returns an object with the names only', async () => { + + // Prepare + const provider = new SSMProvider(); + mockClient(SSMClient).on(GetParametersByPathCommand) + .resolves({ + Parameters: [ { + 'Name':'/foo/bar', + 'Value':'bar', + }, { + 'Name':'/foo/baz', + 'Value':'baz', + } ] + }); + const parameterPath = '/foo'; + + // Act + const parameters = await provider.getMultiple(parameterPath); + + // Assess + expect(parameters).toEqual({ + 'bar': 'bar', + 'baz': 'baz', + }); + + }); + + test('when multiple pages are found, it returns an object with all the parameters', async () => { + + // Prepare + const provider = new SSMProvider(); + mockClient(SSMClient).on(GetParametersByPathCommand) + .resolvesOnce({ + Parameters: [{ + Name:'/foo/bar', + Value:'bar', + }], + NextToken: 'someToken', + }) + .resolves({ + Parameters: [{ + Name:'/foo/baz', + Value:'baz', + }] + }); + const parameterPath = '/foo'; + + // Act + const parameters = await provider.getMultiple(parameterPath); + + // Assess + expect(parameters).toEqual({ + 'bar': 'bar', + 'baz': 'baz', + }); + + }); + + }); + + describe('Method: _getParametersByName', () => { + + class SSMProviderMock extends SSMProvider { + public transformAndCacheGetParametersResponse = jest.fn(); + + public constructor() { + super(); + } + + public _getParametersByName(parameters: Record, throwOnError: boolean, decrypt: boolean): Promise { + return super._getParametersByName(parameters, throwOnError, decrypt); + } + } + + test('when called with a list of parameters, it passes them to the sdk', async () => { + + // Prepare + const provider = new SSMProviderMock(); + const client = mockClient(SSMClient).on(GetParametersCommand).resolves({ + Parameters: [ + { + Name: '/foo/bar', + Value: 'bar', + }, + { + Name: '/foo/baz', + Value: 'baz', + } + ], + InvalidParameters: [], + }); + const parameters = { + '/foo/bar': { + throwOnError: true, + decrypt: true, + }, + '/foo/baz': { + throwOnError: false, + decrypt: false, + }, + }; + provider.transformAndCacheGetParametersResponse.mockReturnValue({ + '/foo/bar': 'bar', + '/foo/baz': 'baz', + }); + + // Act + const results = await provider._getParametersByName(parameters, true, true); + + // Assess + expect(results).toEqual({ + response: { + '/foo/bar': 'bar', + '/foo/baz': 'baz', + }, + errors: [], + }); + expect(client).toReceiveCommandWith(GetParametersCommand, { + Names: [ + '/foo/bar', + '/foo/baz', + ], + WithDecryption: true, + }); + expect(provider.transformAndCacheGetParametersResponse).toHaveBeenCalledWith({ + Parameters: [ + { + Name: '/foo/bar', + Value: 'bar', + }, + { + Name: '/foo/baz', + Value: 'baz', + } + ], + InvalidParameters: [], + }, parameters, true); + + }); + + }); + + describe('Method: getParametersBatchByName', () => { + + class SSMProviderMock extends SSMProvider { + public getParametersByNameFromCache = jest.fn(); + public getParametersByNameInChunks = jest.fn(); + + public constructor() { + super(); + } + + public getParametersBatchByName(parameters: Record, throwOnError: boolean, decrypt: boolean): Promise { + return super.getParametersBatchByName(parameters, throwOnError, decrypt); + } + } + + test('when called with a list of parameters, if they are all cached, it returns them immediately', async () => { + + // Prepare + const provider = new SSMProviderMock(); + provider.getParametersByNameFromCache.mockResolvedValueOnce({ + cached: { + '/foo/bar': 'bar', + '/foo/baz': 'baz', + }, + toFetch: {}, + }); + + // Act + const parameters = await provider.getParametersBatchByName({ + '/foo/bar': {}, + '/foo/baz': {}, + }, true, true); + + // Assess + expect(parameters).toEqual({ + response: { + '/foo/bar': 'bar', + '/foo/baz': 'baz', + }, + errors: [], + }); + expect(provider.getParametersByNameFromCache).toHaveBeenCalledTimes(1); + expect(provider.getParametersByNameInChunks).toHaveBeenCalledTimes(0); + + }); + + test('when called with a list of parameters, if none of them are cached, it retrieves them and then returns', async () => { + + // Prepare + const provider = new SSMProviderMock(); + provider.getParametersByNameFromCache.mockResolvedValueOnce({ + cached: {}, + toFetch: { + '/foo/bar': {}, + '/foo/baz': {}, + }, + }); + provider.getParametersByNameInChunks.mockResolvedValueOnce({ + response: { + '/foo/bar': 'bar', + '/foo/baz': 'baz', + }, + errors: [], + }); + + // Act + const parameters = await provider.getParametersBatchByName({ + '/foo/bar': {}, + '/foo/baz': {}, + }, true, true); + + // Assess + expect(parameters).toEqual({ + response: { + '/foo/bar': 'bar', + '/foo/baz': 'baz', + }, + errors: [], + }); + expect(provider.getParametersByNameFromCache).toHaveBeenCalledTimes(1); + expect(provider.getParametersByNameInChunks).toHaveBeenCalledTimes(1); + expect(provider.getParametersByNameInChunks).toHaveBeenCalledWith({ + '/foo/bar': {}, + '/foo/baz': {}, + }, true, true); + + }); + + test('when called with a list of parameters, if some of them are cached, it retrieves the missing ones, and then returns them all', async () => { + + // Prepare + const provider = new SSMProviderMock(); + provider.getParametersByNameFromCache.mockResolvedValueOnce({ + cached: { + '/foo/bar': 'bar', + }, + toFetch: { + '/foo/baz': {}, + }, + }); + + provider.getParametersByNameInChunks.mockResolvedValueOnce({ + response: { + '/foo/baz': 'baz', + }, + errors: [], + }); + + // Act + const parameters = await provider.getParametersBatchByName({ + '/foo/bar': {}, + '/foo/baz': {}, + }, true, true); + + // Assess + expect(parameters).toEqual({ + response: { + '/foo/bar': 'bar', + '/foo/baz': 'baz', + }, + errors: [], + }); + expect(provider.getParametersByNameFromCache).toHaveBeenCalledTimes(1); + expect(provider.getParametersByNameInChunks).toHaveBeenCalledTimes(1); + expect(provider.getParametersByNameInChunks).toHaveBeenCalledWith({ + '/foo/baz': {}, + }, true, true); + + }); + + }); + + describe('Method: getParametersByNameFromCache', () => { + class SSMProviderMock extends SSMProvider { + + public constructor() { + super(); + } + + public _add(key: string, value: ExpirableValue): void { + this.store.set(key, value); + } + + public async getParametersByNameFromCache(parameters: Record): Promise { + return super.getParametersByNameFromCache(parameters); + } + } + + test('when called with a batch of parameters, it returns an object with parameters split by cached and to fetch', async () => { + + // Prepare + const provider = new SSMProviderMock(); + const parameters = { + '/foo/bar': {}, + '/foo/baz': {}, + }; + provider._add([ '/foo/bar', undefined ].toString(), new ExpirableValue('my-value', 60000)); + + // Act + const { cached, toFetch } = await provider.getParametersByNameFromCache(parameters); + + // Assess + expect(cached).toEqual({ + '/foo/bar': 'my-value', + }); + expect(toFetch).toEqual({ + '/foo/baz': {}, + }); + + }); + + }); + + describe('Method: getParametersByNameInChunks', () => { + + class SSMProviderMock extends SSMProvider { + public _getParametersByName = jest.fn(); + public maxGetParametersItems = 1; + + public constructor() { + super(); + } + + public async getParametersByNameInChunks(parameters: Record, throwOnError: boolean, decrypt: boolean): Promise { + return super.getParametersByNameInChunks(parameters, throwOnError, decrypt); + } + } + + test('when called with a batch of parameters to retrieve, it splits them in chunks and retrieves them', async () => { + + // Prepare + const provider = new SSMProviderMock(); + const parameters = { + '/foo/bar': {}, + '/foo/baz': {}, + }; + + provider._getParametersByName + .mockResolvedValueOnce({ + response: { '/foo/bar': 'bar' }, + errors: [], + }) + .mockResolvedValueOnce({ + response: { '/foo/baz': 'baz' }, + errors: [], + }); + + // Act + const { response, errors } = await provider.getParametersByNameInChunks(parameters, false, false); + + // Assess + expect(response).toEqual({ + '/foo/bar': 'bar', + '/foo/baz': 'baz', + }); + expect(errors).toEqual([]); + expect(provider._getParametersByName).toHaveBeenCalledTimes(2); + + }); + + test('when retrieving parameters, if throwOnError is true, it throws an error if any parameter is not found', async () => { + + // Prepare + const provider = new SSMProviderMock(); + const parameters = { + '/foo/bar': {}, + '/foo/baz': {}, + }; + + provider._getParametersByName + .mockResolvedValueOnce({ + response: { '/foo/bar': 'bar' }, + errors: [], + }) + .mockRejectedValueOnce(new Error('Parameter not found')); + + // Act + await expect(provider.getParametersByNameInChunks(parameters, true, false)).rejects.toThrowError('Parameter not found'); + + }); + + test('when retrieving parameters, if throwOnError is false, it returns an object with the parameters values and the errors', async () => { + + // Prepare + const provider = new SSMProviderMock(); + const parameters = { + '/foo/bar': {}, + '/foo/baz': {}, + }; + + provider._getParametersByName + .mockResolvedValueOnce({ + response: { '/foo/bar': 'bar' }, + errors: [], + }) + .mockResolvedValueOnce({ + response: {}, + errors: ['/foo/baz'], + }); + + // Act + const { response, errors } = await provider.getParametersByNameInChunks(parameters, false, false); + + // Assess + expect(response).toEqual({ + '/foo/bar': 'bar', + }); + expect(errors).toEqual(['/foo/baz']); + + }); + + }); + + describe('Method: getParametersByNameWithDecryptOption', () => { + + class SSMProviderMock extends SSMProvider { + public _get = jest.fn(); + + public constructor() { + super(); + } + + public async getParametersByNameWithDecryptOption(parameters: Record, throwOnError: boolean): Promise { + return super.getParametersByNameWithDecryptOption(parameters, throwOnError); + } + } + + test('when called with a batch of parameters to retrieve, it returns an object with the parameters values', async () => { + + // Prepare + const provider = new SSMProviderMock(); + const parameters = { + '/foo/bar': {}, + '/foo/baz': {}, + }; + provider._get + .mockResolvedValueOnce('bar') + .mockResolvedValueOnce('baz'); + + // Act + const { response, errors } = await provider.getParametersByNameWithDecryptOption(parameters, false); + + // Assess + expect(response).toEqual({ + '/foo/bar': 'bar', + '/foo/baz': 'baz', + }); + expect(errors).toEqual([]); + + }); + + test('when called with a batch of parameters to retrieve, and throwOnError is set to false, it returns an object with the parameters values and the errors', async () => { + + // Prepare + const provider = new SSMProviderMock(); + const parameters = { + '/foo/bar': {}, + '/foo/baz': {}, + }; + provider._get + .mockResolvedValueOnce('bar') + .mockRejectedValueOnce(new Error('baz')); + + // Act + const { response, errors } = await provider.getParametersByNameWithDecryptOption(parameters, false); + + // Assess + expect(response).toEqual({ + '/foo/bar': 'bar', + }); + expect(errors).toEqual(['/foo/baz']); + + }); + + test('when called with a batch of parameters to retrieve, and throwOnError is set to true, it throws an error if any parameter retrieval throws', async () => { + + // Prepare + const provider = new SSMProviderMock(); + const parameters = { + '/foo/bar': {}, + '/foo/baz': {}, + }; + provider._get + .mockResolvedValueOnce('bar') + .mockRejectedValueOnce(new Error('baz')); + + // Act & Assess + await expect(provider.getParametersByNameWithDecryptOption(parameters, true)) + .rejects.toThrow(); + + }); + + }); + + describe('Method: handleAnyInvalidGetparameterErrors', () => { + + class SSMProviderMock extends SSMProvider { + + public constructor() { + super(); + } + + public handleAnyInvalidGetParameterErrors(result: Partial, throwOnError: boolean): string[] { + return SSMProvider.handleAnyInvalidGetParameterErrors(result as GetParametersCommandOutput, throwOnError); + } + } + + test('when called without any errors, it doesn\'t throw and returns an empty errors array', () => { + + // Prepare + const provider = new SSMProviderMock(); + const result = { + InvalidParameters: [], + }; + + // Act + const errors = provider.handleAnyInvalidGetParameterErrors(result, false); + + // Assess + expect(errors).toEqual([]); + + }); + + test('when called with errors, and throwOnError is set to false, it returns the errors array', () => { + + // Prepare + const provider = new SSMProviderMock(); + const result = { + InvalidParameters: [ '/foo/bar', '/foo/baz' ], + }; + + // Act + const errors = provider.handleAnyInvalidGetParameterErrors(result, false); + + // Assess + expect(errors).toEqual([ '/foo/bar', '/foo/baz' ]); + + }); + + test('when called with errors, and throwOnError is set to true, it throws an error', () => { + + // Prepare + const provider = new SSMProviderMock(); + const result = { + InvalidParameters: [ '/foo/bar', '/foo/baz' ], + }; + + // Act & Assess + expect(() => provider.handleAnyInvalidGetParameterErrors(result, true)).toThrowError('Failed to fetch parameters: /foo/bar, /foo/baz'); + + }); + + }); + + describe('Method: splitBatchAndDecryptParameters', () => { + + class SSMProviderMock extends SSMProvider { + + public constructor() { + super(); + } + + public splitBatchAndDecryptParameters( + parameters: Record, + configs: SSMGetParametersByNameOptionsInterface + ): SSMSplitBatchAndDecryptParametersOutputType { + return SSMProvider.splitBatchAndDecryptParameters(parameters, configs); + } + } + + test('when called with a batch of parameters, and none has decrypt set to TRUE, it returns an object with all the parameters in batch', () => { + + // Prepare + const provider = new SSMProviderMock(); + const parameters = { + '/foo/bar': {}, + '/foo/baz': { + maxAge: 1000, + }, + }; + + // Act + const { + parametersToFetchInBatch, + parametersToDecrypt + } = provider.splitBatchAndDecryptParameters(parameters, {}); + + // Assess + expect(parametersToDecrypt).toEqual({}); + expect(parametersToFetchInBatch).toEqual({ + '/foo/bar': {}, + '/foo/baz': { + maxAge: 1000, + }, + }); + + }); + + test('when called with a batch of parameters, it returns an object with parameters split by decrypt and not to decrypt', () => { + + // Prepare + const provider = new SSMProviderMock(); + const parameters = { + '/foo/bar': { + decrypt: true, + }, + '/foo/baz': { + decrypt: false, + }, + }; + + // Act + const { + parametersToFetchInBatch, + parametersToDecrypt + } = provider.splitBatchAndDecryptParameters(parameters, {}); + + // Assess + expect(parametersToDecrypt).toEqual({ + '/foo/bar': { + decrypt: true, + transform: undefined + }, + }); + expect(parametersToFetchInBatch).toEqual({ + '/foo/baz': { + decrypt: false, + transform: undefined + } + }); + + }); + + test('when called with a batch of parameters, it respects any local overrides by giving them precedence over global config', () => { + + // Prepare + const provider = new SSMProviderMock(); + const parameters = { + '/foo/bar': { + decrypt: true, + }, + '/foo/baz': { + maxAge: 1000, + }, + }; + + // Act + const { + parametersToFetchInBatch, + parametersToDecrypt + } = provider.splitBatchAndDecryptParameters(parameters, { + decrypt: false, + maxAge: 2000, + }); + + // Assess + expect(parametersToDecrypt).toEqual({ + '/foo/bar': { + decrypt: true, + maxAge: 2000, + transform: undefined + }, + }); + expect(parametersToFetchInBatch).toEqual({ + '/foo/baz': { + decrypt: false, + maxAge: 1000, + transform: undefined + } + }); + + }); + + }); + + describe('Method: throwIfErrorsKeyIsPresent', () => { + + class SSMProviderMock extends SSMProvider { + + public constructor() { + super(); + } + + public throwIfErrorsKeyIsPresent(parameters: Record, reservedParameter: string, throwOnError: boolean): void { + return SSMProvider.throwIfErrorsKeyIsPresent(parameters, reservedParameter, throwOnError); + } + } + + test('when called and no parameter is named _errors, it doesn\'t throw', () => { + + // Prepare + const provider = new SSMProviderMock(); + const parameters = { + 'foo': 'bar', + 'baz': 'qux', + }; + + // Act & Assess + expect(() => provider.throwIfErrorsKeyIsPresent(parameters, '_errors', false)).not.toThrow(); + + }); + + test('when called and a parameter is named _errors, and throwOnError is set to false (graceful error mode), it doesn\'t throw', () => { + + // Prepare + const provider = new SSMProviderMock(); + const parameters = { + 'foo': 'bar', + 'baz': 'qux', + '_errors': 'baz', + }; + + // Act & Assess + expect(() => provider.throwIfErrorsKeyIsPresent(parameters, '_errors', false)).toThrow('You cannot fetch a parameter named _errors in graceful error mode.'); + + }); + + test('when called and a parameter is named _errors, and throwOnError is set to true (fail fast mode), it throws an error', () => { + + // Prepare + const provider = new SSMProviderMock(); + const parameters = { + 'foo': 'bar', + 'baz': 'qux', + '_errors': 'baz', + }; + + // Act & Assess + expect(() => provider.throwIfErrorsKeyIsPresent(parameters, '_errors', true)).not.toThrow(); + + }); + + }); + + describe('Method: transformAndCacheGetParametersResponse', () => { + + class SSMProviderMock extends SSMProvider { + + public constructor() { + super(); + } + + public transformAndCacheGetParametersResponse(response: Partial, parameters: Record, throwOnError: boolean): Record { + return super.transformAndCacheGetParametersResponse(response as GetParametersCommandOutput, parameters, throwOnError); + } + } + + test('when called with a response that has no Parameters list, it returns an empty object', () => { + + // Prepare + const provider = new SSMProviderMock(); + const response = {}; + + // Act + const parameters = provider.transformAndCacheGetParametersResponse(response, {}, false); + + // Assess + expect(parameters).toEqual({}); + + }); + + test('when called with an empty response, it returns an empty object', () => { + + // Prepare + const provider = new SSMProviderMock(); + const response = { + Parameters: [], + }; + + // Act + const parameters = provider.transformAndCacheGetParametersResponse(response, {}, false); + + // Assess + expect(parameters).toEqual({}); + + }); + + test('when called with a response, it returns an object with the parameters', () => { + + // Prepare + const provider = new SSMProviderMock(); + const response = { + Parameters: [ { + Name: '/foo/bar', + Value: toBase64(encoder.encode('bar')).toString(), + }, { + Name: '/foo/baz', + Value: 'baz', + } ], + }; + + // Act + const parameters = provider.transformAndCacheGetParametersResponse(response, { + '/foo/bar': { + transform: 'binary' + }, + '/foo/baz': {}, + }, false); + + // Assess + expect(parameters).toEqual({ + '/foo/bar': 'bar', + '/foo/baz': 'baz', + }); + + }); + + }); + +}); \ No newline at end of file diff --git a/packages/parameters/tests/unit/getParameter.test.ts b/packages/parameters/tests/unit/getParameter.test.ts new file mode 100644 index 0000000000..f13f993cbf --- /dev/null +++ b/packages/parameters/tests/unit/getParameter.test.ts @@ -0,0 +1,65 @@ +/** + * Test getParameter function + * + * @group unit/parameters/ssm/getParameter/function + */ +import { DEFAULT_PROVIDERS } from '../../src/BaseProvider'; +import { SSMProvider, getParameter } from '../../src/ssm'; +import { SSMClient, GetParameterCommand } from '@aws-sdk/client-ssm'; +import { mockClient } from 'aws-sdk-client-mock'; +import 'aws-sdk-client-mock-jest'; + +describe('Function: getParameter', () => { + + beforeEach(() => { + jest.clearAllMocks(); + }); + + test('when called and a default provider doesn\'t exist, it instantiates one and returns the value', async () => { + + // Prepare + const parameterName = 'foo'; + const parameterValue = 'foo'; + const client = mockClient(SSMClient).on(GetParameterCommand).resolves({ + Parameter: { + Value: parameterValue, + }, + }); + + // Act + const value = await getParameter(parameterName); + + // Assess + expect(client).toReceiveCommandWith(GetParameterCommand, { + Name: parameterName, + }); + expect(value).toBe(parameterValue); + + }); + + test('when called and a default provider exists, it uses it and returns the value', async () => { + + // Prepare + const provider = new SSMProvider(); + DEFAULT_PROVIDERS.ssm = provider; + const parameterName = 'foo'; + const parameterValue = 'foo'; + const client = mockClient(SSMClient).on(GetParameterCommand).resolves({ + Parameter: { + Value: parameterValue, + }, + }); + + // Act + const value = await getParameter(parameterName); + + // Assess + expect(client).toReceiveCommandWith(GetParameterCommand, { + Name: parameterName, + }); + expect(value).toBe(parameterValue); + expect(DEFAULT_PROVIDERS.ssm).toBe(provider); + + }); + +}); \ No newline at end of file diff --git a/packages/parameters/tests/unit/getParameters.test.ts b/packages/parameters/tests/unit/getParameters.test.ts new file mode 100644 index 0000000000..8f9b68f6bd --- /dev/null +++ b/packages/parameters/tests/unit/getParameters.test.ts @@ -0,0 +1,71 @@ +/** + * Test getParameters function + * + * @group unit/parameters/ssm/getParameters/function + */ +import { DEFAULT_PROVIDERS } from '../../src/BaseProvider'; +import { SSMProvider, getParameters } from '../../src/ssm'; +import { SSMClient, GetParametersByPathCommand } from '@aws-sdk/client-ssm'; +import { mockClient } from 'aws-sdk-client-mock'; +import 'aws-sdk-client-mock-jest'; + +describe('Function: getParameters', () => { + + beforeEach(() => { + jest.clearAllMocks(); + }); + + test('when called and a default provider doesn\'t exist, it instantiates one and returns the value', async () => { + + // Prepare + const parameterPath = '/foo'; + const parameterValue = 'bar'; + const client = mockClient(SSMClient).on(GetParametersByPathCommand).resolves({ + Parameters: [{ + Name: '/foo/bar', + Value: parameterValue, + }], + }); + + // Act + const parameters = await getParameters(parameterPath); + + // Assess + expect(client).toReceiveCommandWith(GetParametersByPathCommand, { + Path: parameterPath, + }); + expect(parameters).toEqual({ + bar: parameterValue, + }); + + }); + + test('when called and a default provider exists, it uses it and returns the value', async () => { + + // Prepare + const provider = new SSMProvider(); + DEFAULT_PROVIDERS.ssm = provider; + const parameterPath = '/foo'; + const parameterValue = 'bar'; + const client = mockClient(SSMClient).on(GetParametersByPathCommand).resolves({ + Parameters: [{ + Name: '/foo/bar', + Value: parameterValue, + }], + }); + + // Act + const parameters = await getParameters(parameterPath); + + // Assess + expect(client).toReceiveCommandWith(GetParametersByPathCommand, { + Path: parameterPath, + }); + expect(parameters).toEqual({ + 'bar': parameterValue, + }); + expect(DEFAULT_PROVIDERS.ssm).toBe(provider); + + }); + +}); \ No newline at end of file diff --git a/packages/parameters/tests/unit/getParametersByName.test.ts b/packages/parameters/tests/unit/getParametersByName.test.ts new file mode 100644 index 0000000000..d1ad31815e --- /dev/null +++ b/packages/parameters/tests/unit/getParametersByName.test.ts @@ -0,0 +1,60 @@ +/** + * Test getParametersByName function + * + * @group unit/parameters/ssm/getParametersByName/function + */ +import { DEFAULT_PROVIDERS } from '../../src/BaseProvider'; +import { SSMProvider, getParametersByName } from '../../src/ssm'; + +describe('Function: getParametersByName', () => { + + beforeEach(() => { + jest.clearAllMocks(); + }); + + test('when called and a default provider doesn\'t exist, it instantiates one and returns the value', async () => { + + // Prepare + const parameters = { + '/foo/bar': { + maxAge: 1000, + }, + '/foo/baz': { + maxAge: 2000, + } + }; + const getParametersByNameSpy = jest.spyOn(SSMProvider.prototype, 'getParametersByName').mockImplementation(); + + // Act + await getParametersByName(parameters); + + // Assess + expect(getParametersByNameSpy).toHaveBeenCalledWith(parameters, undefined); + + }); + + test('when called and a default provider exists, it uses it and returns the value', async () => { + + // Prepare + const provider = new SSMProvider(); + DEFAULT_PROVIDERS.ssm = provider; + const parameters = { + '/foo/bar': { + maxAge: 1000, + }, + '/foo/baz': { + maxAge: 2000, + } + }; + const getParametersByNameSpy = jest.spyOn(provider, 'getParametersByName').mockImplementation(); + + // Act + await getParametersByName(parameters); + + // Assess + expect(getParametersByNameSpy).toHaveBeenCalledWith(parameters, undefined); + expect(DEFAULT_PROVIDERS.ssm).toBe(provider); + + }); + +}); \ No newline at end of file