diff --git a/.gitattributes b/.gitattributes index 55f14568b..ea5ed37e3 100644 --- a/.gitattributes +++ b/.gitattributes @@ -22,6 +22,7 @@ /.projen/** linguist-generated /.projen/deps.json linguist-generated /.projen/files.json linguist-generated +/.projen/prepare-verdaccio.sh linguist-generated /.projen/tasks.json linguist-generated /aws-cdk-cli.code-workspace linguist-generated /LICENSE linguist-generated diff --git a/.github/workflows/integ.yml b/.github/workflows/integ.yml index de6e3b223..17b158d3e 100644 --- a/.github/workflows/integ.yml +++ b/.github/workflows/integ.yml @@ -47,6 +47,13 @@ jobs: name: build-artifact path: packages/**/dist/js/*.tgz overwrite: "true" + - name: Upload scripts + uses: actions/upload-artifact@v4.4.0 + with: + name: script-artifact + path: .projen/*.sh + overwrite: "true" + include-hidden-files: true integ_matrix: needs: prepare runs-on: aws-cdk_ubuntu-latest_16-core @@ -66,6 +73,11 @@ jobs: with: name: build-artifact path: packages + - name: Download scripts + uses: actions/download-artifact@v4 + with: + name: script-artifact + path: .projen - name: Setup Node.js uses: actions/setup-node@v4 with: @@ -89,25 +101,8 @@ jobs: run: |- git config --global user.name "aws-cdk-cli-integ" git config --global user.email "noreply@example.com" - - name: Install Verdaccio - run: npm install -g verdaccio pm2 - - name: Create Verdaccio config - run: |- - mkdir -p $HOME/.config/verdaccio - echo '{"storage":"./storage","auth":{"htpasswd":{"file":"./htpasswd"}},"uplinks":{"npmjs":{"url":"https://registry.npmjs.org/"}},"packages":{"@aws-cdk/cloud-assembly-schema":{"access":"$all","publish":"$all","proxy":"npmjs"},"@aws-cdk/cloudformation-diff":{"access":"$all","publish":"$all","proxy":"npmjs"},"@aws-cdk/cli-plugin-contract":{"access":"$all","publish":"$all","proxy":"none"},"cdk-assets":{"access":"$all","publish":"$all","proxy":"none"},"@aws-cdk/toolkit-lib":{"access":"$all","publish":"$all","proxy":"npmjs"},"aws-cdk":{"access":"$all","publish":"$all","proxy":"none"},"@aws-cdk/cli-lib-alpha":{"access":"$all","publish":"$all","proxy":"none"},"cdk":{"access":"$all","publish":"$all","proxy":"none"},"@aws-cdk/integ-runner":{"access":"$all","publish":"$all","proxy":"none"},"@aws-cdk-testing/cli-integ":{"access":"$all","publish":"$all","proxy":"none"},"**":{"access":"$all","proxy":"npmjs"}}}' > $HOME/.config/verdaccio/config.yaml - - name: Start Verdaccio - run: |- - pm2 start verdaccio -- --config $HOME/.config/verdaccio/config.yaml - sleep 5 # Wait for Verdaccio to start - - name: Configure npm to use local registry - run: |- - echo '//localhost:4873/:_authToken="MWRjNDU3OTE1NTljYWUyOTFkMWJkOGUyYTIwZWMwNTI6YTgwZjkyNDE0NzgwYWQzNQ=="' > ~/.npmrc - echo 'registry=http://localhost:4873/' >> ~/.npmrc - - name: Find an locally publish all tarballs - run: |- - for pkg in packages/{@aws-cdk/cloud-assembly-schema,@aws-cdk/cloudformation-diff,@aws-cdk/cli-plugin-contract,cdk-assets,@aws-cdk/toolkit-lib,aws-cdk,@aws-cdk/cli-lib-alpha,cdk,@aws-cdk/integ-runner,@aws-cdk-testing/cli-integ}/dist/js/*.tgz; do - npm publish $pkg - done + - name: Prepare Verdaccio + run: chmod +x .projen/prepare-verdaccio.sh && .projen/prepare-verdaccio.sh - name: Download and install the test artifact run: npm install @aws-cdk-testing/cli-integ - name: Determine latest package versions @@ -139,12 +134,20 @@ jobs: if compgen -G "logs/md/*.md" > /dev/null; then cat logs/md/*.md >> $GITHUB_STEP_SUMMARY; fi + - name: Slugify artifact id + id: artifactid + if: always() + env: + INPUT: logs-${{ matrix.suite }}-${{ matrix.node }} + run: |- + slug=$(node -p 'process.env.INPUT.replace(/[^a-z0-9._-]/gi, "-")') + echo "slug=$slug" >> "$GITHUB_OUTPUT" - name: Upload logs id: logupload if: always() uses: actions/upload-artifact@v4.4.0 with: - name: logs-${{ matrix.suite }} + name: ${{ steps.artifactid.outputs.slug }} path: logs/ overwrite: "true" - name: Append artifact URL @@ -168,6 +171,11 @@ jobs: node: "20" - suite: toolkit-lib-integ-tests node: "22" + - suite: tool-integrations + node: 20 + exclude: + - suite: tool-integrations + node: lts/* suite: - cli-integ-tests - toolkit-lib-integ-tests diff --git a/.github/workflows/pull-request-lint.yml b/.github/workflows/pull-request-lint.yml index 2af8ddd29..3863acae6 100644 --- a/.github/workflows/pull-request-lint.yml +++ b/.github/workflows/pull-request-lint.yml @@ -32,8 +32,11 @@ jobs: docs revert scopes: |- + aws-cdk cdk-assets + cdk-cli-wrapper cli + cli-integ cli-lib-alpha cli-plugin-contract cloud-assembly-schema @@ -43,7 +46,10 @@ jobs: docs integ-runner integ-testing + node-bundle toolkit-lib + toolkit-lib + yarn-cling requireScope: false contributorStatement: name: Require Contributor Statement diff --git a/.gitignore b/.gitignore index 9a5c7ad8a..f0a2cc9a9 100644 --- a/.gitignore +++ b/.gitignore @@ -48,6 +48,7 @@ jspm_packages/ !/.eslintrc.json !/.github/dependabot.yml !/.github/workflows/integ.yml +!/.projen/prepare-verdaccio.sh !/.github/workflows/codecov.yml !/.github/workflows/issue-label-assign.yml !/.github/workflows/pr-labeler.yml diff --git a/.projen/files.json b/.projen/files.json index 9b83c55db..53527d06a 100644 --- a/.projen/files.json +++ b/.projen/files.json @@ -19,6 +19,7 @@ ".npmignore", ".projen/deps.json", ".projen/files.json", + ".projen/prepare-verdaccio.sh", ".projen/tasks.json", "aws-cdk-cli.code-workspace", "LICENSE", diff --git a/.projen/prepare-verdaccio.sh b/.projen/prepare-verdaccio.sh new file mode 100755 index 000000000..2111ec895 --- /dev/null +++ b/.projen/prepare-verdaccio.sh @@ -0,0 +1,11 @@ +#!/bin/bash +npm install -g verdaccio pm2 +mkdir -p $HOME/.config/verdaccio +echo '{"storage":"./storage","auth":{"htpasswd":{"file":"./htpasswd"}},"uplinks":{"npmjs":{"url":"https://registry.npmjs.org/"}},"packages":{"@aws-cdk/cloud-assembly-schema":{"access":"$all","publish":"$all","proxy":"npmjs"},"@aws-cdk/cloudformation-diff":{"access":"$all","publish":"$all","proxy":"npmjs"},"@aws-cdk/cli-plugin-contract":{"access":"$all","publish":"$all","proxy":"none"},"cdk-assets":{"access":"$all","publish":"$all","proxy":"none"},"@aws-cdk/toolkit-lib":{"access":"$all","publish":"$all","proxy":"npmjs"},"aws-cdk":{"access":"$all","publish":"$all","proxy":"none"},"@aws-cdk/cli-lib-alpha":{"access":"$all","publish":"$all","proxy":"none"},"cdk":{"access":"$all","publish":"$all","proxy":"none"},"@aws-cdk/integ-runner":{"access":"$all","publish":"$all","proxy":"none"},"@aws-cdk-testing/cli-integ":{"access":"$all","publish":"$all","proxy":"none"},"**":{"access":"$all","proxy":"npmjs"}}}' > $HOME/.config/verdaccio/config.yaml +pm2 start verdaccio -- --config $HOME/.config/verdaccio/config.yaml +sleep 5 +echo '//localhost:4873/:_authToken="MWRjNDU3OTE1NTljYWUyOTFkMWJkOGUyYTIwZWMwNTI6YTgwZjkyNDE0NzgwYWQzNQ=="' > ~/.npmrc +echo 'registry=http://localhost:4873/' >> ~/.npmrc +for pkg in packages/{@aws-cdk/cloud-assembly-schema,@aws-cdk/cloudformation-diff,@aws-cdk/cli-plugin-contract,cdk-assets,@aws-cdk/toolkit-lib,aws-cdk,@aws-cdk/cli-lib-alpha,cdk,@aws-cdk/integ-runner,@aws-cdk-testing/cli-integ}/dist/js/*.tgz; do + npm publish --loglevel=warn $pkg +done \ No newline at end of file diff --git a/.projenrc.ts b/.projenrc.ts index e30548ffb..79d7972e5 100644 --- a/.projenrc.ts +++ b/.projenrc.ts @@ -82,6 +82,7 @@ const defaultTsOptions: NonNullable['com incremental: true, esModuleInterop: false, skipLibCheck: true, + isolatedModules: true, }; /** @@ -232,20 +233,7 @@ const repoProject = new yarn.Monorepo({ }, semanticTitleOptions: { types: ['feat', 'fix', 'chore', 'refactor', 'test', 'docs', 'revert'], - scopes: [ - 'cdk-assets', - 'cli', - 'cli-lib-alpha', - 'cli-plugin-contract', - 'cloud-assembly-schema', - 'cloudformation-diff', - 'deps', - 'dev-deps', - 'docs', - 'integ-runner', - 'integ-testing', - 'toolkit-lib', - ], + scopes: [], // actually set at the bottom of the file to be based on monorepo packages }, }, }, @@ -315,11 +303,6 @@ function genericCdkProps(props: GenericProps = {}) { authorUrl: 'https://aws.amazon.com', authorOrganization: true, releasableCommits: pj.ReleasableCommits.featuresAndFixes('.'), - tsJestOptions: { - transformOptions: { - isolatedModules: true, - }, - }, jestOptions: { configFilePath: 'jest.config.json', junitReporting: false, @@ -335,6 +318,11 @@ function genericCdkProps(props: GenericProps = {}) { trailingComma: pj.javascript.TrailingComma.ALL, }, }, + tsconfig: { + compilerOptions: { + ...defaultTsOptions, + }, + }, typescriptVersion: TYPESCRIPT_VERSION, checkLicenses: props.private ? undefined : { allow: ['Apache-2.0', 'MIT', 'ISC', 'BSD-3-Clause', '0BSD'], @@ -616,6 +604,7 @@ const cdkAssets = configureProject( `@aws-sdk/lib-storage@${CLI_SDK_V3_RANGE}`, '@smithy/config-resolver', '@smithy/node-config-provider', + 'minimatch@10.0.1', ], devDeps: [ '@types/archiver', @@ -696,6 +685,14 @@ const TOOLKIT_LIB_EXCLUDE_PATTERNS = [ 'lib/init-templates/*/typescript/*/*.template.ts', ]; +const toolkitLibTsCompilerOptions = { + ...defaultTsOptions, + target: 'es2022', + lib: ['es2022', 'esnext.disposable'], + module: 'NodeNext', + declarationMap: true, +}; + const toolkitLib = configureProject( new yarn.TypeScriptWorkspace({ ...genericCdkProps(), @@ -703,11 +700,6 @@ const toolkitLib = configureProject( name: '@aws-cdk/toolkit-lib', description: 'AWS CDK Programmatic Toolkit Library', srcdir: 'lib', - tsconfigDev: { - compilerOptions: { - rootDir: '.', // shouldn't be required but something broke... check again once we have gotten rid of the tmpToolkitHelpers package - }, - }, peerDeps: [ cliPluginContract.customizeReference({ versionType: 'any-minor' }), // allow consumers to easily de-depulicate this ], @@ -786,8 +778,9 @@ const toolkitLib = configureProject( }, jestOptions: jestOptionsForProject({ jestConfig: { + // Tests that synth an assembly usually need a bit longer + testTimeout: 10_000, coverageThreshold: { - // this is very sad but we will get better statements: 87, branches: 83, functions: 82, @@ -802,16 +795,13 @@ const toolkitLib = configureProject( }), tsconfig: { compilerOptions: { - ...defaultTsOptions, - target: 'es2022', - lib: ['es2022', 'esnext.disposable'], - module: 'NodeNext', - isolatedModules: true, + ...toolkitLibTsCompilerOptions, }, }, - tsJestOptions: { - transformOptions: { - isolatedModules: false, // we use the respective tsc setting + tsconfigDev: { + compilerOptions: { + ...toolkitLibTsCompilerOptions, + rootDir: '.', // shouldn't be required but something broke... check again once we have gotten rid of the tmpToolkitHelpers package }, }, majorVersion: 1, @@ -1080,12 +1070,6 @@ const cli = configureProject( 'yaml@^1', 'yargs@^15', ], - tsJestOptions: { - transformOptions: { - // Skips type checking, otherwise tests take too long - isolatedModules: true, - }, - }, tsconfig: { compilerOptions: { ...defaultTsOptions, @@ -1106,7 +1090,6 @@ const cli = configureProject( esModuleInterop: false, skipLibCheck: true, }, - }, eslintOptions: { dirs: ['lib'], @@ -1384,7 +1367,9 @@ const cdkCliWrapper = configureProject( name: '@aws-cdk/cdk-cli-wrapper', description: 'CDK CLI Wrapper Library', srcdir: 'lib', - devDeps: [], + deps: [ + cloudAssemblySchema.customizeReference({ versionType: 'any-future' }), + ], nextVersionCommand: `tsx ../../../projenrc/next-version.ts copyVersion:../../../${cliPackageJson}`, releasableCommits: transitiveToolkitPackages('@aws-cdk/cdk-cli-wrapper'), @@ -1451,13 +1436,14 @@ const integRunner = configureProject( cli.customizeReference({ versionType: 'exact' }), cdkAssets.customizeReference({ versionType: 'exact' }), cloudFormationDiff.customizeReference({ versionType: 'exact' }), + toolkitLib.customizeReference({ versionType: 'exact' }), 'workerpool@^6', 'chokidar@^3', 'chalk@^4', 'fs-extra@^9', 'yargs@^16', '@aws-cdk/aws-service-spec', - '@aws-sdk/client-cloudformation@^3', + `@aws-sdk/client-cloudformation@${CLI_SDK_V3_RANGE}`, ], devDeps: [ 'aws-cdk-lib', @@ -1473,7 +1459,6 @@ const integRunner = configureProject( tsconfig: { compilerOptions: { ...defaultTsOptions, - lib: ['es2020', 'dom'], }, }, jestOptions: jestOptionsForProject({ @@ -1725,4 +1710,24 @@ new LargePrChecker(repo, { ((repo.github?.tryFindWorkflow('integ')?.getJob('prepare') as Job | undefined)?.env ?? {}).DEBUG = 'true'; +// Set allowed scopes based on monorepo packages +const disallowed = new Set([ + 'cdk', // use aws-cdk or cli + 'user-input-gen', // use cli +]); +repoProject.github?.tryFindWorkflow('pull-request-lint')?.file?.patch( + pj.JsonPatch.replace('/jobs/validate/steps/0/with/scopes', [ + 'cli', + 'deps', + 'dev-deps', + 'docs', + 'integ-testing', + 'toolkit-lib', + ...repoProject.subprojects + .filter(p => p instanceof yarn.TypeScriptWorkspace) + .map(p => p.name) + .map(n => n.split('/').pop()), + ].filter(s => s && !disallowed.has(s)).sort().join('\n')), +); + repo.synth(); diff --git a/package.json b/package.json index 55e682669..8a5fac271 100644 --- a/package.json +++ b/package.json @@ -34,13 +34,13 @@ "eslint": "^9", "eslint-import-resolver-typescript": "^3.10.1", "eslint-plugin-import": "^2.31.0", - "eslint-plugin-jest": "^28.13.0", - "eslint-plugin-jsdoc": "^50.7.1", - "glob": "^11.0.2", + "eslint-plugin-jest": "^28.14.0", + "eslint-plugin-jsdoc": "^50.8.0", + "glob": "^11.0.3", "jest-junit": "^16", "nx": "^20.8.2", "prettier": "^2.8", - "projen": "^0.92.9", + "projen": "^0.92.10", "semver": "^7.7.2", "ts-node": "^10.9.2", "typescript": "5.6" diff --git a/packages/@aws-cdk-testing/cli-integ/jest.config.json b/packages/@aws-cdk-testing/cli-integ/jest.config.json index b055b4ed6..68f2e7d78 100644 --- a/packages/@aws-cdk-testing/cli-integ/jest.config.json +++ b/packages/@aws-cdk-testing/cli-integ/jest.config.json @@ -59,8 +59,7 @@ "^.+\\.[t]sx?$": [ "ts-jest", { - "tsconfig": "tsconfig.dev.json", - "isolatedModules": true + "tsconfig": "tsconfig.dev.json" } ] }, diff --git a/packages/@aws-cdk-testing/cli-integ/package.json b/packages/@aws-cdk-testing/cli-integ/package.json index 8f080e9d2..26e84a851 100644 --- a/packages/@aws-cdk-testing/cli-integ/package.json +++ b/packages/@aws-cdk-testing/cli-integ/package.json @@ -57,8 +57,8 @@ "eslint-config-prettier": "^9.1.0", "eslint-import-resolver-typescript": "^3.10.1", "eslint-plugin-import": "^2.31.0", - "eslint-plugin-jest": "^28.13.0", - "eslint-plugin-jsdoc": "^50.7.1", + "eslint-plugin-jest": "^28.14.0", + "eslint-plugin-jsdoc": "^50.8.0", "eslint-plugin-prettier": "^5.4.1", "jest": "^29.7.0", "jest-junit": "^16", @@ -80,7 +80,7 @@ "@aws-sdk/client-sso": "^3", "@aws-sdk/client-sts": "^3", "@aws-sdk/credential-providers": "^3", - "@cdklabs/cdk-atmosphere-client": "^0.0.53", + "@cdklabs/cdk-atmosphere-client": "^0.0.54", "@octokit/rest": "^20", "@smithy/types": "^4.3.1", "@smithy/util-retry": "^4.0.5", diff --git a/packages/@aws-cdk-testing/cli-integ/resources/cdk-apps/app/app.js b/packages/@aws-cdk-testing/cli-integ/resources/cdk-apps/app/app.js index 8735e727c..409b1d061 100755 --- a/packages/@aws-cdk-testing/cli-integ/resources/cdk-apps/app/app.js +++ b/packages/@aws-cdk-testing/cli-integ/resources/cdk-apps/app/app.js @@ -453,7 +453,8 @@ class LambdaStack extends cdk.Stack { constructor(parent, id, props) { // sometimes we need to specify the custom bootstrap bucket to use // see the 'upgrade legacy bootstrap stack' test - const synthesizer = parent.node.tryGetContext('legacySynth') === 'true' ? + const useLegacy = [true, 'true'].includes(parent.node.tryGetContext('legacySynth')); + const synthesizer = useLegacy ? new LegacyStackSynthesizer({ fileAssetsBucketName: parent.node.tryGetContext('bootstrapBucket'), }) @@ -477,7 +478,8 @@ class LambdaStack extends cdk.Stack { class DriftableStack extends cdk.Stack { constructor(parent, id, props) { - const synthesizer = parent.node.tryGetContext('legacySynth') === 'true' ? + const useLegacy = [true, 'true'].includes(parent.node.tryGetContext('legacySynth')); + const synthesizer = useLegacy ? new LegacyStackSynthesizer({ fileAssetsBucketName: parent.node.tryGetContext('bootstrapBucket'), }) diff --git a/packages/@aws-cdk-testing/cli-integ/skip-tests.txt b/packages/@aws-cdk-testing/cli-integ/skip-tests.txt index e48344380..76f8f324e 100644 --- a/packages/@aws-cdk-testing/cli-integ/skip-tests.txt +++ b/packages/@aws-cdk-testing/cli-integ/skip-tests.txt @@ -5,4 +5,5 @@ # and edit it there if you want to exclude certain tests from running # when performing a certain version's regression tests. # -# Put a test name on a line by itself to skip it. \ No newline at end of file +# Put a test name on a line by itself to skip it. +amplify integration diff --git a/packages/@aws-cdk-testing/cli-integ/tsconfig.dev.json b/packages/@aws-cdk-testing/cli-integ/tsconfig.dev.json index d4b0b76db..3743e3154 100644 --- a/packages/@aws-cdk-testing/cli-integ/tsconfig.dev.json +++ b/packages/@aws-cdk-testing/cli-integ/tsconfig.dev.json @@ -28,6 +28,7 @@ "target": "es2022", "incremental": true, "skipLibCheck": true, + "isolatedModules": true, "composite": true, "outDir": "lib" }, diff --git a/packages/@aws-cdk-testing/cli-integ/tsconfig.json b/packages/@aws-cdk-testing/cli-integ/tsconfig.json index e286ccdfe..1e197d518 100644 --- a/packages/@aws-cdk-testing/cli-integ/tsconfig.json +++ b/packages/@aws-cdk-testing/cli-integ/tsconfig.json @@ -30,6 +30,7 @@ "target": "es2022", "incremental": true, "skipLibCheck": true, + "isolatedModules": true, "composite": true }, "include": [ diff --git a/packages/@aws-cdk/cdk-cli-wrapper/.projen/deps.json b/packages/@aws-cdk/cdk-cli-wrapper/.projen/deps.json index 07b70331b..2baca877c 100644 --- a/packages/@aws-cdk/cdk-cli-wrapper/.projen/deps.json +++ b/packages/@aws-cdk/cdk-cli-wrapper/.projen/deps.json @@ -84,6 +84,10 @@ "name": "typescript", "version": "5.6", "type": "build" + }, + { + "name": "@aws-cdk/cloud-assembly-schema", + "type": "runtime" } ], "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\"." diff --git a/packages/@aws-cdk/cdk-cli-wrapper/.projen/tasks.json b/packages/@aws-cdk/cdk-cli-wrapper/.projen/tasks.json index 5b6bdd431..f9d92daf2 100644 --- a/packages/@aws-cdk/cdk-cli-wrapper/.projen/tasks.json +++ b/packages/@aws-cdk/cdk-cli-wrapper/.projen/tasks.json @@ -77,7 +77,7 @@ "name": "gather-versions", "steps": [ { - "exec": "node -e \"require(require.resolve('cdklabs-projen-project-types/lib/yarn/gather-versions.exec.js')).cliMain()\" ", + "exec": "node -e \"require(require.resolve('cdklabs-projen-project-types/lib/yarn/gather-versions.exec.js')).cliMain()\" @aws-cdk/cloud-assembly-schema=any-future", "receiveArgs": true } ] diff --git a/packages/@aws-cdk/cdk-cli-wrapper/jest.config.json b/packages/@aws-cdk/cdk-cli-wrapper/jest.config.json index 67640113c..5d8df7835 100644 --- a/packages/@aws-cdk/cdk-cli-wrapper/jest.config.json +++ b/packages/@aws-cdk/cdk-cli-wrapper/jest.config.json @@ -59,8 +59,7 @@ "^.+\\.[t]sx?$": [ "ts-jest", { - "tsconfig": "tsconfig.dev.json", - "isolatedModules": true + "tsconfig": "tsconfig.dev.json" } ] }, diff --git a/packages/@aws-cdk/cdk-cli-wrapper/lib/cdk-wrapper.ts b/packages/@aws-cdk/cdk-cli-wrapper/lib/cdk-wrapper.ts index 093806cc3..6dd0075e7 100644 --- a/packages/@aws-cdk/cdk-cli-wrapper/lib/cdk-wrapper.ts +++ b/packages/@aws-cdk/cdk-cli-wrapper/lib/cdk-wrapper.ts @@ -1,8 +1,14 @@ -import type { ChildProcess } from 'child_process'; -import type { DefaultCdkOptions, DeployOptions, DestroyOptions, SynthOptions, ListOptions } from './commands'; +import type { DefaultCdkOptions, DestroyOptions } from '@aws-cdk/cloud-assembly-schema/lib/integ-tests'; +import type { SynthOptions, ListOptions, DeployOptions } from './commands'; import { StackActivityProgress, HotswapMode } from './commands'; import { exec, watch } from './utils'; +export type WatchEvents = { + onStdout?: (chunk: any) => void; + onStderr?: (chunk: any) => void; + onClose?: (code: number | null) => void; +}; + /** * AWS CDK CLI operations */ @@ -11,32 +17,32 @@ export interface ICdk { /** * cdk deploy */ - deploy(options: DeployOptions): void; + deploy(options: DeployOptions): Promise; /** * cdk synth */ - synth(options: SynthOptions): void; + synth(options: SynthOptions): Promise; /** * cdk destroy */ - destroy(options: DestroyOptions): void; + destroy(options: DestroyOptions): Promise; /** * cdk list */ - list(options: ListOptions): string; + list(options: ListOptions): Promise; /** * cdk synth fast */ - synthFast(options: SynthFastOptions): void; + synthFast(options: SynthFastOptions): Promise; /** * cdk watch */ - watch(options: DeployOptions): ChildProcess; + watch(options: DeployOptions, events?: WatchEvents): Promise; } /** @@ -151,7 +157,7 @@ export class CdkCliWrapper implements ICdk { } } - public list(options: ListOptions): string { + public async list(options: ListOptions): Promise { const listCommandArgs: string[] = [ ...renderBooleanArg('long', options.long), ...this.createDefaultArguments(options), @@ -161,12 +167,12 @@ export class CdkCliWrapper implements ICdk { cwd: this.directory, verbose: this.showOutput, env: this.env, - }); + }).split('\n'); } /** * cdk deploy */ - public deploy(options: DeployOptions): void { + public async deploy(options: DeployOptions): Promise { const deployCommandArgs: string[] = [ ...renderBooleanArg('ci', options.ci), ...renderBooleanArg('execute', options.execute), @@ -195,7 +201,7 @@ export class CdkCliWrapper implements ICdk { }); } - public watch(options: DeployOptions): ChildProcess { + public async watch(options: DeployOptions, events: WatchEvents = {}): Promise { let hotswap: string; switch (options.hotswap) { case HotswapMode.FALL_BACK: @@ -231,17 +237,31 @@ export class CdkCliWrapper implements ICdk { ...this.createDefaultArguments(options), ]; - return watch([this.cdk, 'deploy', ...deployCommandArgs], { + const child = watch([this.cdk, 'deploy', ...deployCommandArgs], { cwd: this.directory, verbose: this.showOutput, env: this.env, }); + + if (events.onStdout) { + child.stdout?.on('data', events.onStdout); + } + if (events.onStderr) { + child.stderr?.on('data', events.onStderr); + } + + child.on('close', (code) => { + child.stdin?.end(); + if (events.onClose) { + events.onClose(code); + } + }); } /** * cdk destroy */ - public destroy(options: DestroyOptions): void { + public async destroy(options: DestroyOptions): Promise { const destroyCommandArgs: string[] = [ ...renderBooleanArg('force', options.force), ...renderBooleanArg('exclusively', options.exclusively), @@ -258,7 +278,7 @@ export class CdkCliWrapper implements ICdk { /** * cdk synth */ - public synth(options: SynthOptions): void { + public async synth(options: SynthOptions): Promise { const synthCommandArgs: string[] = [ ...renderBooleanArg('validation', options.validation), ...renderBooleanArg('quiet', options.quiet), @@ -279,7 +299,7 @@ export class CdkCliWrapper implements ICdk { * The CLI has a pretty slow startup time because of all the modules it needs to load, * Bypass it to be quicker! */ - public synthFast(options: SynthFastOptions): void { + public async synthFast(options: SynthFastOptions): Promise { exec(options.execCmd, { cwd: this.directory, verbose: this.showOutput, diff --git a/packages/@aws-cdk/cdk-cli-wrapper/lib/commands/common.ts b/packages/@aws-cdk/cdk-cli-wrapper/lib/commands/common.ts deleted file mode 100644 index 4dab7838b..000000000 --- a/packages/@aws-cdk/cdk-cli-wrapper/lib/commands/common.ts +++ /dev/null @@ -1,201 +0,0 @@ -/** - * In what scenarios should the CLI ask for approval - */ -export enum RequireApproval { - /** - * Never ask for approval - */ - NEVER = 'never', - - /** - * Prompt for approval for any type of change to the stack - */ - ANYCHANGE = 'any-change', - - /** - * Only prompt for approval if there are security related changes - */ - BROADENING = 'broadening', -} - -/** - * Default CDK CLI options that apply to all commands - */ -export interface DefaultCdkOptions { - /** - * List of stacks to deploy - * - * Requried if `all` is not set - * - * @default - [] - */ - readonly stacks?: string[]; - - /** - * Deploy all stacks - * - * Requried if `stacks` is not set - * - * @default - false - */ - readonly all?: boolean; - - /** - * command-line for executing your app or a cloud assembly directory - * e.g. "node bin/my-app.js" - * or - * "cdk.out" - * - * @default - read from cdk.json - */ - readonly app?: string; - - /** - * Role to pass to CloudFormation for deployment - * - * @default - use the bootstrap cfn-exec role - */ - readonly roleArn?: string; - - /** - * Additional context - * - * @default - no additional context - */ - readonly context?: { [name: string]: string }; - - /** - * Print trace for stack warnings - * - * @default false - */ - readonly trace?: boolean; - - /** - * Do not construct stacks with warnings - * - * @default false - */ - readonly strict?: boolean; - - /** - * Perform context lookups. - * - * Synthesis fails if this is disabled and context lookups need - * to be performed - * - * @default true - */ - readonly lookups?: boolean; - - /** - * Ignores synthesis errors, which will likely produce an invalid output - * - * @default false - */ - readonly ignoreErrors?: boolean; - - /** - * Use JSON output instead of YAML when templates are printed - * to STDOUT - * - * @default false - */ - readonly json?: boolean; - - /** - * show debug logs - * - * @default false - */ - readonly verbose?: boolean; - - /** - * enable emission of additional debugging information, such as creation stack - * traces of tokens - * - * @default false - */ - readonly debug?: boolean; - - /** - * Use the indicated AWS profile as the default environment - * - * @default - no profile is used - */ - readonly profile?: string; - - /** - * Use the indicated proxy. Will read from - * HTTPS_PROXY environment if specified - * - * @default - no proxy - */ - readonly proxy?: string; - - /** - * Path to CA certificate to use when validating HTTPS - * requests. - * - * @default - read from AWS_CA_BUNDLE environment variable - */ - readonly caBundlePath?: string; - - /** - * Force trying to fetch EC2 instance credentials - * - * @default - guess EC2 instance status - */ - readonly ec2Creds?: boolean; - - /** - * Include "AWS::CDK::Metadata" resource in synthesized templates - * - * @default true - */ - readonly versionReporting?: boolean; - - /** - * Include "aws:cdk:path" CloudFormation metadata for each resource - * - * @default true - */ - readonly pathMetadata?: boolean; - - /** - * Include "aws:asset:*" CloudFormation metadata for resources that use assets - * - * @default true - */ - readonly assetMetadata?: boolean; - - /** - * Copy assets to the output directory - * - * Needed for local debugging the source files with SAM CLI - * - * @default false - */ - readonly staging?: boolean; - - /** - * Emits the synthesized cloud assembly into a directory - * - * @default cdk.out - */ - readonly output?: string; - - /** - * Show relevant notices - * - * @default true - */ - readonly notices?: boolean; - - /** - * Show colors and other style from console output - * - * @default true - */ - readonly color?: boolean; -} diff --git a/packages/@aws-cdk/cdk-cli-wrapper/lib/commands/deploy.ts b/packages/@aws-cdk/cdk-cli-wrapper/lib/commands/deploy.ts index bf1668e72..d709aa2ab 100644 --- a/packages/@aws-cdk/cdk-cli-wrapper/lib/commands/deploy.ts +++ b/packages/@aws-cdk/cdk-cli-wrapper/lib/commands/deploy.ts @@ -1,99 +1,9 @@ -import type { DefaultCdkOptions, RequireApproval } from './common'; +import type { DeployOptions as BaseDeployOptions } from '@aws-cdk/cloud-assembly-schema/lib/integ-tests'; /** * Options to use with cdk deploy */ -export interface DeployOptions extends DefaultCdkOptions { - /** - * Only perform action on the given stack - * - * @default false - */ - readonly exclusively?: boolean; - - /** - * Name of the toolkit stack to use/deploy - * - * @default CDKToolkit - */ - readonly toolkitStackName?: string; - - /** - * Reuse the assets with the given asset IDs - * - * @default - do not reuse assets - */ - readonly reuseAssets?: string[]; - - /** - * Optional name to use for the CloudFormation change set. - * If not provided, a name will be generated automatically. - * - * @default - auto generate a name - */ - readonly changeSetName?: string; - - /** - * Always deploy, even if templates are identical. - * @default false - */ - readonly force?: boolean; - - /** - * Rollback failed deployments - * - * @default true - */ - readonly rollback?: boolean; - - /** - * ARNs of SNS topics that CloudFormation will notify with stack related events - * - * @default - no notifications - */ - readonly notificationArns?: string[]; - - /** - * What kind of security changes require approval - * - * @default RequireApproval.Never - */ - readonly requireApproval?: RequireApproval; - - /** - * Whether to execute the ChangeSet - * Not providing `execute` parameter will result in execution of ChangeSet - * @default true - */ - readonly execute?: boolean; - - /** - * Additional parameters for CloudFormation at deploy time - * @default {} - */ - readonly parameters?: { [name: string]: string }; - - /** - * Use previous values for unspecified parameters - * - * If not set, all parameters must be specified for every deployment. - * - * @default true - */ - readonly usePreviousParameters?: boolean; - - /** - * Path to file where stack outputs will be written after a successful deploy as JSON - * @default - Outputs are not written to any file - */ - readonly outputsFile?: string; - - /** - * Whether we are on a CI system - * - * @default false - */ - readonly ci?: boolean; +export interface DeployOptions extends BaseDeployOptions { /** * Display mode for stack activity events @@ -134,13 +44,6 @@ export interface DeployOptions extends DefaultCdkOptions { * Deployment method */ readonly deploymentMethod?: DeploymentMethod; - - /** - * Deploy multiple stacks in parallel - * - * @default 1 - */ - readonly concurrency?: number; } export type DeploymentMethod = 'direct' | 'change-set'; diff --git a/packages/@aws-cdk/cdk-cli-wrapper/lib/commands/destroy.ts b/packages/@aws-cdk/cdk-cli-wrapper/lib/commands/destroy.ts deleted file mode 100644 index 5112075f5..000000000 --- a/packages/@aws-cdk/cdk-cli-wrapper/lib/commands/destroy.ts +++ /dev/null @@ -1,20 +0,0 @@ -import type { DefaultCdkOptions } from './common'; - -/** - * Options to use with cdk destroy - */ -export interface DestroyOptions extends DefaultCdkOptions { - /** - * Do not ask for permission before destroying stacks - * - * @default false - */ - readonly force?: boolean; - - /** - * Only destroy the given stack - * - * @default false - */ - readonly exclusively?: boolean; -} diff --git a/packages/@aws-cdk/cdk-cli-wrapper/lib/commands/index.ts b/packages/@aws-cdk/cdk-cli-wrapper/lib/commands/index.ts index 33e0e7756..1333ceb3d 100644 --- a/packages/@aws-cdk/cdk-cli-wrapper/lib/commands/index.ts +++ b/packages/@aws-cdk/cdk-cli-wrapper/lib/commands/index.ts @@ -1,5 +1,3 @@ export * from './synth'; -export * from './common'; export * from './deploy'; -export * from './destroy'; export * from './list'; diff --git a/packages/@aws-cdk/cdk-cli-wrapper/lib/commands/list.ts b/packages/@aws-cdk/cdk-cli-wrapper/lib/commands/list.ts index a4d5018bb..8c1e6f899 100644 --- a/packages/@aws-cdk/cdk-cli-wrapper/lib/commands/list.ts +++ b/packages/@aws-cdk/cdk-cli-wrapper/lib/commands/list.ts @@ -1,4 +1,4 @@ -import type { DefaultCdkOptions } from './common'; +import type { DefaultCdkOptions } from '@aws-cdk/cloud-assembly-schema/lib/integ-tests'; /** * Options for cdk list diff --git a/packages/@aws-cdk/cdk-cli-wrapper/lib/commands/synth.ts b/packages/@aws-cdk/cdk-cli-wrapper/lib/commands/synth.ts index 87b365d35..61e318b29 100644 --- a/packages/@aws-cdk/cdk-cli-wrapper/lib/commands/synth.ts +++ b/packages/@aws-cdk/cdk-cli-wrapper/lib/commands/synth.ts @@ -1,4 +1,4 @@ -import type { DefaultCdkOptions } from './common'; +import type { DefaultCdkOptions } from '@aws-cdk/cloud-assembly-schema/lib/integ-tests'; /** * Options to use with cdk synth diff --git a/packages/@aws-cdk/cdk-cli-wrapper/package.json b/packages/@aws-cdk/cdk-cli-wrapper/package.json index e1453e5e0..f323214cf 100644 --- a/packages/@aws-cdk/cdk-cli-wrapper/package.json +++ b/packages/@aws-cdk/cdk-cli-wrapper/package.json @@ -41,15 +41,18 @@ "eslint-config-prettier": "^10.1.5", "eslint-import-resolver-typescript": "^4.4.3", "eslint-plugin-import": "^2.31.0", - "eslint-plugin-jest": "^28.13.0", - "eslint-plugin-jsdoc": "^50.7.1", + "eslint-plugin-jest": "^28.14.0", + "eslint-plugin-jsdoc": "^50.8.0", "eslint-plugin-prettier": "^5.4.1", "jest": "^29.7.0", "jest-junit": "^16", "prettier": "^2.8", - "ts-jest": "^29.3.4", + "ts-jest": "^29.4.0", "typescript": "5.6" }, + "dependencies": { + "@aws-cdk/cloud-assembly-schema": "^0.0.0" + }, "keywords": [ "aws", "cdk" diff --git a/packages/@aws-cdk/cdk-cli-wrapper/test/cdk-wrapper.test.ts b/packages/@aws-cdk/cdk-cli-wrapper/test/cdk-wrapper.test.ts index 19b1be9fe..4392bdfef 100644 --- a/packages/@aws-cdk/cdk-cli-wrapper/test/cdk-wrapper.test.ts +++ b/packages/@aws-cdk/cdk-cli-wrapper/test/cdk-wrapper.test.ts @@ -1,6 +1,7 @@ import * as child_process from 'child_process'; +import { RequireApproval } from '@aws-cdk/cloud-assembly-schema/lib/integ-tests'; import { CdkCliWrapper } from '../lib/cdk-wrapper'; -import { RequireApproval, StackActivityProgress } from '../lib/commands'; +import { StackActivityProgress } from '../lib/commands'; let spawnSyncMock: jest.SpyInstance; let spawnMock: jest.SpyInstance; @@ -30,12 +31,12 @@ afterEach(() => { jest.clearAllMocks(); }); -test('default deploy', () => { +test('default deploy', async () => { // WHEN const cdk = new CdkCliWrapper({ directory: '/project', }); - cdk.deploy({ + await cdk.deploy({ app: 'node bin/my-app.js', stacks: ['test-stack1'], }); @@ -51,12 +52,12 @@ test('default deploy', () => { ); }); -test('deploy with all arguments', () => { +test('deploy with all arguments', async () => { // WHEN const cdk = new CdkCliWrapper({ directory: '/project', }); - cdk.deploy({ + await cdk.deploy({ app: 'node bin/my-app.js', stacks: ['test-stack1'], ci: false, @@ -144,12 +145,12 @@ test('deploy with all arguments', () => { ); }); -test('can parse boolean arguments', () => { +test('can parse boolean arguments', async () => { // WHEN const cdk = new CdkCliWrapper({ directory: '/project', }); - cdk.deploy({ + await cdk.deploy({ app: 'node bin/my-app.js', stacks: ['test-stack1'], json: true, @@ -176,12 +177,12 @@ test('can parse boolean arguments', () => { ); }); -test('can parse parameters', () => { +test('can parse parameters', async () => { // WHEN const cdk = new CdkCliWrapper({ directory: '/project', }); - cdk.deploy({ + await cdk.deploy({ app: 'node bin/my-app.js', stacks: ['test-stack1'], parameters: { @@ -209,12 +210,12 @@ test('can parse parameters', () => { ); }); -test('can parse context', () => { +test('can parse context', async () => { // WHEN const cdk = new CdkCliWrapper({ directory: '/project', }); - cdk.deploy({ + await cdk.deploy({ app: 'node bin/my-app.js', stacks: ['test-stack1'], context: { @@ -242,12 +243,12 @@ test('can parse context', () => { ); }); -test('can parse array arguments', () => { +test('can parse array arguments', async () => { // WHEN const cdk = new CdkCliWrapper({ directory: '/project', }); - cdk.deploy({ + await cdk.deploy({ app: 'node bin/my-app.js', stacks: ['test-stack1'], notificationArns: [ @@ -275,7 +276,7 @@ test('can parse array arguments', () => { ); }); -test('can provide additional environment', () => { +test('can provide additional environment', async () => { // WHEN const cdk = new CdkCliWrapper({ directory: '/project', @@ -283,7 +284,7 @@ test('can provide additional environment', () => { KEY: 'value', }, }); - cdk.deploy({ + await cdk.deploy({ app: 'node bin/my-app.js', stacks: ['test-stack1'], }); @@ -301,7 +302,7 @@ test('can provide additional environment', () => { ); }); -test('default synth', () => { +test('default synth', async () => { // WHEN const cdk = new CdkCliWrapper({ directory: '/project', @@ -309,7 +310,7 @@ test('default synth', () => { KEY: 'value', }, }); - cdk.synth({ + await cdk.synth({ app: 'node bin/my-app.js', stacks: ['test-stack1'], }); @@ -327,7 +328,7 @@ test('default synth', () => { ); }); -test('watch arguments', () => { +test('watch arguments', async () => { // WHEN const cdk = new CdkCliWrapper({ directory: '/project', @@ -335,7 +336,7 @@ test('watch arguments', () => { KEY: 'value', }, }); - cdk.watch({ + await cdk.watch({ app: 'node bin/my-app.js', stacks: ['test-stack1'], }); @@ -353,7 +354,7 @@ test('watch arguments', () => { ); }); -test('destroy arguments', () => { +test('destroy arguments', async () => { // WHEN const cdk = new CdkCliWrapper({ directory: '/project', @@ -361,7 +362,7 @@ test('destroy arguments', () => { KEY: 'value', }, }); - cdk.destroy({ + await cdk.destroy({ app: 'node bin/my-app.js', stacks: ['test-stack1'], }); @@ -379,7 +380,7 @@ test('destroy arguments', () => { ); }); -test('destroy arguments', () => { +test('destroy arguments', async () => { // WHEN const cdk = new CdkCliWrapper({ directory: '/project', @@ -387,7 +388,7 @@ test('destroy arguments', () => { KEY: 'value', }, }); - cdk.destroy({ + await cdk.destroy({ app: 'node bin/my-app.js', stacks: ['test-stack1'], force: true, @@ -407,7 +408,7 @@ test('destroy arguments', () => { ); }); -test('default ls', () => { +test('default ls', async () => { // WHEN const cdk = new CdkCliWrapper({ directory: '/project', @@ -415,7 +416,7 @@ test('default ls', () => { KEY: 'value', }, }); - cdk.list({ + await cdk.list({ app: 'node bin/my-app.js', stacks: ['*'], }); @@ -433,7 +434,7 @@ test('default ls', () => { ); }); -test('ls arguments', () => { +test('ls arguments', async () => { // WHEN spawnSyncMock = jest.spyOn(child_process, 'spawnSync').mockReturnValue({ status: 0, @@ -449,7 +450,7 @@ test('ls arguments', () => { KEY: 'value', }, }); - const list = cdk.list({ + const list = await cdk.list({ app: 'node bin/my-app.js', stacks: ['*'], long: true, @@ -467,10 +468,10 @@ test('ls arguments', () => { }), ); - expect(list).toEqual('test-stack1\ntest-stack2'); + expect(list).toEqual(['test-stack1', 'test-stack2']); }); -test('can synth fast', () => { +test('can synth fast', async () => { // WHEN const cdk = new CdkCliWrapper({ directory: '/project', @@ -478,7 +479,7 @@ test('can synth fast', () => { KEY: 'value', }, }); - cdk.synthFast({ + await cdk.synthFast({ execCmd: ['node', 'bin/my-app.js'], output: 'cdk.output', env: { @@ -505,13 +506,13 @@ test('can synth fast', () => { ); }); -test('can show output', () => { +test('can show output', async () => { // WHEN const cdk = new CdkCliWrapper({ directory: '/project', showOutput: true, }); - cdk.synthFast({ + await cdk.synthFast({ execCmd: ['node', 'bin/my-app.js'], }); diff --git a/packages/@aws-cdk/cdk-cli-wrapper/tsconfig.dev.json b/packages/@aws-cdk/cdk-cli-wrapper/tsconfig.dev.json index 5bfbfa299..32201c9e9 100644 --- a/packages/@aws-cdk/cdk-cli-wrapper/tsconfig.dev.json +++ b/packages/@aws-cdk/cdk-cli-wrapper/tsconfig.dev.json @@ -26,6 +26,7 @@ "target": "ES2020", "incremental": true, "skipLibCheck": true, + "isolatedModules": true, "composite": true, "outDir": "lib" }, @@ -36,5 +37,9 @@ "exclude": [ "node_modules" ], - "references": [] + "references": [ + { + "path": "../cloud-assembly-schema" + } + ] } diff --git a/packages/@aws-cdk/cdk-cli-wrapper/tsconfig.json b/packages/@aws-cdk/cdk-cli-wrapper/tsconfig.json index 4fe81a0dd..8e7cf7bbe 100644 --- a/packages/@aws-cdk/cdk-cli-wrapper/tsconfig.json +++ b/packages/@aws-cdk/cdk-cli-wrapper/tsconfig.json @@ -28,11 +28,16 @@ "target": "ES2020", "incremental": true, "skipLibCheck": true, + "isolatedModules": true, "composite": true }, "include": [ "lib/**/*.ts" ], "exclude": [], - "references": [] + "references": [ + { + "path": "../cloud-assembly-schema" + } + ] } diff --git a/packages/@aws-cdk/cli-lib-alpha/THIRD_PARTY_LICENSES b/packages/@aws-cdk/cli-lib-alpha/THIRD_PARTY_LICENSES index ba8cf95cc..6d10f2408 100644 --- a/packages/@aws-cdk/cli-lib-alpha/THIRD_PARTY_LICENSES +++ b/packages/@aws-cdk/cli-lib-alpha/THIRD_PARTY_LICENSES @@ -618,7 +618,7 @@ The @aws-cdk/cli-lib-alpha package includes the following third-party software/l ---------------- -** @aws-sdk/client-appsync@3.826.0 - https://www.npmjs.com/package/@aws-sdk/client-appsync/v/3.826.0 | Apache-2.0 +** @aws-sdk/client-appsync@3.828.0 - https://www.npmjs.com/package/@aws-sdk/client-appsync/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -824,7 +824,7 @@ The @aws-cdk/cli-lib-alpha package includes the following third-party software/l ---------------- -** @aws-sdk/client-cloudcontrol@3.826.0 - https://www.npmjs.com/package/@aws-sdk/client-cloudcontrol/v/3.826.0 | Apache-2.0 +** @aws-sdk/client-cloudcontrol@3.828.0 - https://www.npmjs.com/package/@aws-sdk/client-cloudcontrol/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -1030,7 +1030,7 @@ The @aws-cdk/cli-lib-alpha package includes the following third-party software/l ---------------- -** @aws-sdk/client-cloudformation@3.826.0 - https://www.npmjs.com/package/@aws-sdk/client-cloudformation/v/3.826.0 | Apache-2.0 +** @aws-sdk/client-cloudformation@3.828.0 - https://www.npmjs.com/package/@aws-sdk/client-cloudformation/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -1236,7 +1236,7 @@ The @aws-cdk/cli-lib-alpha package includes the following third-party software/l ---------------- -** @aws-sdk/client-cloudwatch-logs@3.826.0 - https://www.npmjs.com/package/@aws-sdk/client-cloudwatch-logs/v/3.826.0 | Apache-2.0 +** @aws-sdk/client-cloudwatch-logs@3.828.0 - https://www.npmjs.com/package/@aws-sdk/client-cloudwatch-logs/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -1442,7 +1442,7 @@ The @aws-cdk/cli-lib-alpha package includes the following third-party software/l ---------------- -** @aws-sdk/client-codebuild@3.826.0 - https://www.npmjs.com/package/@aws-sdk/client-codebuild/v/3.826.0 | Apache-2.0 +** @aws-sdk/client-codebuild@3.828.0 - https://www.npmjs.com/package/@aws-sdk/client-codebuild/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -1648,7 +1648,7 @@ The @aws-cdk/cli-lib-alpha package includes the following third-party software/l ---------------- -** @aws-sdk/client-cognito-identity@3.826.0 - https://www.npmjs.com/package/@aws-sdk/client-cognito-identity/v/3.826.0 | Apache-2.0 +** @aws-sdk/client-cognito-identity@3.828.0 - https://www.npmjs.com/package/@aws-sdk/client-cognito-identity/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -1854,7 +1854,7 @@ The @aws-cdk/cli-lib-alpha package includes the following third-party software/l ---------------- -** @aws-sdk/client-ec2@3.826.0 - https://www.npmjs.com/package/@aws-sdk/client-ec2/v/3.826.0 | Apache-2.0 +** @aws-sdk/client-ec2@3.828.0 - https://www.npmjs.com/package/@aws-sdk/client-ec2/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -2060,7 +2060,7 @@ The @aws-cdk/cli-lib-alpha package includes the following third-party software/l ---------------- -** @aws-sdk/client-ecr@3.826.0 - https://www.npmjs.com/package/@aws-sdk/client-ecr/v/3.826.0 | Apache-2.0 +** @aws-sdk/client-ecr@3.828.0 - https://www.npmjs.com/package/@aws-sdk/client-ecr/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -2266,7 +2266,7 @@ The @aws-cdk/cli-lib-alpha package includes the following third-party software/l ---------------- -** @aws-sdk/client-ecs@3.826.0 - https://www.npmjs.com/package/@aws-sdk/client-ecs/v/3.826.0 | Apache-2.0 +** @aws-sdk/client-ecs@3.829.0 - https://www.npmjs.com/package/@aws-sdk/client-ecs/v/3.829.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -2472,7 +2472,7 @@ The @aws-cdk/cli-lib-alpha package includes the following third-party software/l ---------------- -** @aws-sdk/client-elastic-load-balancing-v2@3.826.0 - https://www.npmjs.com/package/@aws-sdk/client-elastic-load-balancing-v2/v/3.826.0 | Apache-2.0 +** @aws-sdk/client-elastic-load-balancing-v2@3.828.0 - https://www.npmjs.com/package/@aws-sdk/client-elastic-load-balancing-v2/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -2678,7 +2678,7 @@ The @aws-cdk/cli-lib-alpha package includes the following third-party software/l ---------------- -** @aws-sdk/client-iam@3.826.0 - https://www.npmjs.com/package/@aws-sdk/client-iam/v/3.826.0 | Apache-2.0 +** @aws-sdk/client-iam@3.828.0 - https://www.npmjs.com/package/@aws-sdk/client-iam/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -2884,7 +2884,7 @@ The @aws-cdk/cli-lib-alpha package includes the following third-party software/l ---------------- -** @aws-sdk/client-kms@3.826.0 - https://www.npmjs.com/package/@aws-sdk/client-kms/v/3.826.0 | Apache-2.0 +** @aws-sdk/client-kms@3.829.0 - https://www.npmjs.com/package/@aws-sdk/client-kms/v/3.829.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -3090,7 +3090,7 @@ The @aws-cdk/cli-lib-alpha package includes the following third-party software/l ---------------- -** @aws-sdk/client-lambda@3.826.0 - https://www.npmjs.com/package/@aws-sdk/client-lambda/v/3.826.0 | Apache-2.0 +** @aws-sdk/client-lambda@3.828.0 - https://www.npmjs.com/package/@aws-sdk/client-lambda/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -3296,7 +3296,7 @@ The @aws-cdk/cli-lib-alpha package includes the following third-party software/l ---------------- -** @aws-sdk/client-route-53@3.826.0 - https://www.npmjs.com/package/@aws-sdk/client-route-53/v/3.826.0 | Apache-2.0 +** @aws-sdk/client-route-53@3.828.0 - https://www.npmjs.com/package/@aws-sdk/client-route-53/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -3502,7 +3502,7 @@ The @aws-cdk/cli-lib-alpha package includes the following third-party software/l ---------------- -** @aws-sdk/client-s3@3.826.0 - https://www.npmjs.com/package/@aws-sdk/client-s3/v/3.826.0 | Apache-2.0 +** @aws-sdk/client-s3@3.828.0 - https://www.npmjs.com/package/@aws-sdk/client-s3/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -3708,7 +3708,7 @@ The @aws-cdk/cli-lib-alpha package includes the following third-party software/l ---------------- -** @aws-sdk/client-secrets-manager@3.826.0 - https://www.npmjs.com/package/@aws-sdk/client-secrets-manager/v/3.826.0 | Apache-2.0 +** @aws-sdk/client-secrets-manager@3.828.0 - https://www.npmjs.com/package/@aws-sdk/client-secrets-manager/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -3914,7 +3914,7 @@ The @aws-cdk/cli-lib-alpha package includes the following third-party software/l ---------------- -** @aws-sdk/client-sfn@3.826.0 - https://www.npmjs.com/package/@aws-sdk/client-sfn/v/3.826.0 | Apache-2.0 +** @aws-sdk/client-sfn@3.828.0 - https://www.npmjs.com/package/@aws-sdk/client-sfn/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -4120,7 +4120,7 @@ The @aws-cdk/cli-lib-alpha package includes the following third-party software/l ---------------- -** @aws-sdk/client-ssm@3.826.0 - https://www.npmjs.com/package/@aws-sdk/client-ssm/v/3.826.0 | Apache-2.0 +** @aws-sdk/client-ssm@3.828.0 - https://www.npmjs.com/package/@aws-sdk/client-ssm/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -4326,7 +4326,7 @@ The @aws-cdk/cli-lib-alpha package includes the following third-party software/l ---------------- -** @aws-sdk/client-sso@3.826.0 - https://www.npmjs.com/package/@aws-sdk/client-sso/v/3.826.0 | Apache-2.0 +** @aws-sdk/client-sso@3.828.0 - https://www.npmjs.com/package/@aws-sdk/client-sso/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -4532,7 +4532,7 @@ The @aws-cdk/cli-lib-alpha package includes the following third-party software/l ---------------- -** @aws-sdk/client-sts@3.826.0 - https://www.npmjs.com/package/@aws-sdk/client-sts/v/3.826.0 | Apache-2.0 +** @aws-sdk/client-sts@3.828.0 - https://www.npmjs.com/package/@aws-sdk/client-sts/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -4742,7 +4742,7 @@ The @aws-cdk/cli-lib-alpha package includes the following third-party software/l ---------------- -** @aws-sdk/credential-provider-cognito-identity@3.826.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-cognito-identity/v/3.826.0 | Apache-2.0 +** @aws-sdk/credential-provider-cognito-identity@3.828.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-cognito-identity/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -5157,7 +5157,7 @@ Apache License ---------------- -** @aws-sdk/credential-provider-ini@3.826.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-ini/v/3.826.0 | Apache-2.0 +** @aws-sdk/credential-provider-ini@3.828.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-ini/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -5362,7 +5362,7 @@ Apache License ---------------- -** @aws-sdk/credential-provider-node@3.826.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-node/v/3.826.0 | Apache-2.0 +** @aws-sdk/credential-provider-node@3.828.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-node/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -5772,7 +5772,7 @@ Apache License ---------------- -** @aws-sdk/credential-provider-sso@3.826.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-sso/v/3.826.0 | Apache-2.0 +** @aws-sdk/credential-provider-sso@3.828.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-sso/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -5977,7 +5977,7 @@ Apache License ---------------- -** @aws-sdk/credential-provider-web-identity@3.826.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-web-identity/v/3.826.0 | Apache-2.0 +** @aws-sdk/credential-provider-web-identity@3.828.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-web-identity/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -6182,7 +6182,7 @@ Apache License ---------------- -** @aws-sdk/credential-providers@3.826.0 - https://www.npmjs.com/package/@aws-sdk/credential-providers/v/3.826.0 | Apache-2.0 +** @aws-sdk/credential-providers@3.828.0 - https://www.npmjs.com/package/@aws-sdk/credential-providers/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -6387,7 +6387,7 @@ Apache License ---------------- -** @aws-sdk/ec2-metadata-service@3.826.0 - https://www.npmjs.com/package/@aws-sdk/ec2-metadata-service/v/3.826.0 | Apache-2.0 +** @aws-sdk/ec2-metadata-service@3.828.0 - https://www.npmjs.com/package/@aws-sdk/ec2-metadata-service/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -6592,7 +6592,7 @@ Apache License ---------------- -** @aws-sdk/lib-storage@3.826.0 - https://www.npmjs.com/package/@aws-sdk/lib-storage/v/3.826.0 | Apache-2.0 +** @aws-sdk/lib-storage@3.828.0 - https://www.npmjs.com/package/@aws-sdk/lib-storage/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -9061,7 +9061,7 @@ Apache License ---------------- -** @aws-sdk/middleware-user-agent@3.826.0 - https://www.npmjs.com/package/@aws-sdk/middleware-user-agent/v/3.826.0 | Apache-2.0 +** @aws-sdk/middleware-user-agent@3.828.0 - https://www.npmjs.com/package/@aws-sdk/middleware-user-agent/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -9267,7 +9267,7 @@ Apache License ---------------- -** @aws-sdk/nested-clients@3.826.0 - https://www.npmjs.com/package/@aws-sdk/nested-clients/v/3.826.0 | Apache-2.0 +** @aws-sdk/nested-clients@3.828.0 - https://www.npmjs.com/package/@aws-sdk/nested-clients/v/3.828.0 | Apache-2.0 ---------------- @@ -9682,7 +9682,7 @@ Apache License ---------------- -** @aws-sdk/token-providers@3.826.0 - https://www.npmjs.com/package/@aws-sdk/token-providers/v/3.826.0 | Apache-2.0 +** @aws-sdk/token-providers@3.828.0 - https://www.npmjs.com/package/@aws-sdk/token-providers/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -10092,7 +10092,7 @@ Apache License ---------------- -** @aws-sdk/util-endpoints@3.821.0 - https://www.npmjs.com/package/@aws-sdk/util-endpoints/v/3.821.0 | Apache-2.0 +** @aws-sdk/util-endpoints@3.828.0 - https://www.npmjs.com/package/@aws-sdk/util-endpoints/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -10502,7 +10502,7 @@ Apache License ---------------- -** @aws-sdk/util-user-agent-node@3.826.0 - https://www.npmjs.com/package/@aws-sdk/util-user-agent-node/v/3.826.0 | Apache-2.0 +** @aws-sdk/util-user-agent-node@3.828.0 - https://www.npmjs.com/package/@aws-sdk/util-user-agent-node/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -21092,7 +21092,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI ---------------- -** brace-expansion@2.0.1 - https://www.npmjs.com/package/brace-expansion/v/2.0.1 | MIT +** brace-expansion@2.0.2 - https://www.npmjs.com/package/brace-expansion/v/2.0.2 | MIT MIT License Copyright (c) 2013 Julian Gruber @@ -21196,7 +21196,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI ---------------- -** cdk-from-cfn@0.220.0 - https://www.npmjs.com/package/cdk-from-cfn/v/0.220.0 | MIT OR Apache-2.0 +** cdk-from-cfn@0.222.0 - https://www.npmjs.com/package/cdk-from-cfn/v/0.222.0 | MIT OR Apache-2.0 ---------------- @@ -23476,7 +23476,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ---------------- -** socks@2.8.4 - https://www.npmjs.com/package/socks/v/2.8.4 | MIT +** socks@2.8.5 - https://www.npmjs.com/package/socks/v/2.8.5 | MIT The MIT License (MIT) Copyright (c) 2013 Josh Glazebrook diff --git a/packages/@aws-cdk/cli-lib-alpha/jest.config.json b/packages/@aws-cdk/cli-lib-alpha/jest.config.json index 295053263..a95302a29 100644 --- a/packages/@aws-cdk/cli-lib-alpha/jest.config.json +++ b/packages/@aws-cdk/cli-lib-alpha/jest.config.json @@ -55,8 +55,7 @@ "^.+\\.[t]sx?$": [ "ts-jest", { - "tsconfig": "tsconfig.dev.json", - "isolatedModules": true + "tsconfig": "tsconfig.dev.json" } ] }, diff --git a/packages/@aws-cdk/cli-lib-alpha/package.json b/packages/@aws-cdk/cli-lib-alpha/package.json index ac6eb7fe2..0bbde74cc 100644 --- a/packages/@aws-cdk/cli-lib-alpha/package.json +++ b/packages/@aws-cdk/cli-lib-alpha/package.json @@ -47,15 +47,15 @@ "@typescript-eslint/eslint-plugin": "^8", "@typescript-eslint/parser": "^8", "aws-cdk": "^0.0.0", - "aws-cdk-lib": "^2.200.1", + "aws-cdk-lib": "^2.201.0", "commit-and-tag-version": "^12", "constructs": "^10.0.0", "eslint": "^9", "eslint-config-prettier": "^10.1.5", "eslint-import-resolver-typescript": "^3.10.1", "eslint-plugin-import": "^2.31.0", - "eslint-plugin-jest": "^28.13.0", - "eslint-plugin-jsdoc": "^50.7.1", + "eslint-plugin-jest": "^28.14.0", + "eslint-plugin-jsdoc": "^50.8.0", "eslint-plugin-prettier": "^5.4.1", "jest": "^29.7.0", "jest-junit": "^16", @@ -66,7 +66,7 @@ "jsii-rosetta": "5.6", "license-checker": "^25.0.1", "prettier": "^2.8", - "ts-jest": "^29.3.4", + "ts-jest": "^29.4.0", "typescript": "5.6" }, "keywords": [ diff --git a/packages/@aws-cdk/cli-lib-alpha/tsconfig.dev.json b/packages/@aws-cdk/cli-lib-alpha/tsconfig.dev.json index 281fa13a8..7ebf7faa4 100644 --- a/packages/@aws-cdk/cli-lib-alpha/tsconfig.dev.json +++ b/packages/@aws-cdk/cli-lib-alpha/tsconfig.dev.json @@ -26,6 +26,7 @@ "target": "ES2020", "incremental": true, "skipLibCheck": true, + "isolatedModules": true, "composite": true, "outDir": "lib" }, diff --git a/packages/@aws-cdk/cli-plugin-contract/jest.config.json b/packages/@aws-cdk/cli-plugin-contract/jest.config.json index 5afeb24ce..0304b3297 100644 --- a/packages/@aws-cdk/cli-plugin-contract/jest.config.json +++ b/packages/@aws-cdk/cli-plugin-contract/jest.config.json @@ -59,8 +59,7 @@ "^.+\\.[t]sx?$": [ "ts-jest", { - "tsconfig": "tsconfig.dev.json", - "isolatedModules": true + "tsconfig": "tsconfig.dev.json" } ] }, diff --git a/packages/@aws-cdk/cli-plugin-contract/package.json b/packages/@aws-cdk/cli-plugin-contract/package.json index 340e43f74..37e7b59aa 100644 --- a/packages/@aws-cdk/cli-plugin-contract/package.json +++ b/packages/@aws-cdk/cli-plugin-contract/package.json @@ -43,14 +43,14 @@ "eslint-config-prettier": "^10.1.5", "eslint-import-resolver-typescript": "^3.10.1", "eslint-plugin-import": "^2.31.0", - "eslint-plugin-jest": "^28.13.0", - "eslint-plugin-jsdoc": "^50.7.1", + "eslint-plugin-jest": "^28.14.0", + "eslint-plugin-jsdoc": "^50.8.0", "eslint-plugin-prettier": "^5.4.1", "jest": "^29.7.0", "jest-junit": "^16", "license-checker": "^25.0.1", "prettier": "^2.8", - "ts-jest": "^29.3.4", + "ts-jest": "^29.4.0", "typescript": "5.6" }, "keywords": [ diff --git a/packages/@aws-cdk/cli-plugin-contract/tsconfig.dev.json b/packages/@aws-cdk/cli-plugin-contract/tsconfig.dev.json index 5bfbfa299..1288d35b4 100644 --- a/packages/@aws-cdk/cli-plugin-contract/tsconfig.dev.json +++ b/packages/@aws-cdk/cli-plugin-contract/tsconfig.dev.json @@ -26,6 +26,7 @@ "target": "ES2020", "incremental": true, "skipLibCheck": true, + "isolatedModules": true, "composite": true, "outDir": "lib" }, diff --git a/packages/@aws-cdk/cli-plugin-contract/tsconfig.json b/packages/@aws-cdk/cli-plugin-contract/tsconfig.json index 4fe81a0dd..53800fe80 100644 --- a/packages/@aws-cdk/cli-plugin-contract/tsconfig.json +++ b/packages/@aws-cdk/cli-plugin-contract/tsconfig.json @@ -28,6 +28,7 @@ "target": "ES2020", "incremental": true, "skipLibCheck": true, + "isolatedModules": true, "composite": true }, "include": [ diff --git a/packages/@aws-cdk/cloud-assembly-schema/jest.config.json b/packages/@aws-cdk/cloud-assembly-schema/jest.config.json index ecf596768..6b3862481 100644 --- a/packages/@aws-cdk/cloud-assembly-schema/jest.config.json +++ b/packages/@aws-cdk/cloud-assembly-schema/jest.config.json @@ -59,8 +59,7 @@ "^.+\\.[t]sx?$": [ "ts-jest", { - "tsconfig": "tsconfig.dev.json", - "isolatedModules": true + "tsconfig": "tsconfig.dev.json" } ] }, diff --git a/packages/@aws-cdk/cloud-assembly-schema/lib/cloud-assembly/artifact-schema.ts b/packages/@aws-cdk/cloud-assembly-schema/lib/cloud-assembly/artifact-schema.ts index 79f9436a7..a28d5625c 100644 --- a/packages/@aws-cdk/cloud-assembly-schema/lib/cloud-assembly/artifact-schema.ts +++ b/packages/@aws-cdk/cloud-assembly-schema/lib/cloud-assembly/artifact-schema.ts @@ -223,6 +223,56 @@ export interface NestedCloudAssemblyProperties { readonly displayName?: string; } +/** + * Artifact properties for a feature flag report + * + * A feature flag report is small enough that all the properties can be inlined + * here, and doesn't need an additional file. + */ +export interface FeatureFlagReportProperties { + /** + * The library that this feature flag report applies to. + */ + readonly module: string; + + /** + * Information about every feature flag supported by this library. + */ + readonly flags: Record; +} + +/** + * A single feature flag + */ +export interface FeatureFlag { + /** + * The library-recommended value for this flag, if any + * + * It is possible that there is no recommended value. + * + * @default - No recommended value. + */ + readonly recommendedValue?: any; + + /** + * The value configured by the user + * + * This is the value configured at the root of the tree. Users may also have + * configured values at specific locations in the tree; we don't report on + * those. + * + * @default - Not configured by the user + */ + readonly userValue?: any; + + /** + * Explanation about the purpose of this flag that can be shown to the user. + * + * @default - No description + */ + readonly explanation?: string; +} + /** * Properties for manifest artifacts */ @@ -230,4 +280,5 @@ export type ArtifactProperties = | AwsCloudFormationStackProperties | AssetManifestProperties | TreeArtifactProperties - | NestedCloudAssemblyProperties; + | NestedCloudAssemblyProperties + | FeatureFlagReportProperties; diff --git a/packages/@aws-cdk/cloud-assembly-schema/lib/cloud-assembly/schema.ts b/packages/@aws-cdk/cloud-assembly-schema/lib/cloud-assembly/schema.ts index e593328e9..c4911745b 100644 --- a/packages/@aws-cdk/cloud-assembly-schema/lib/cloud-assembly/schema.ts +++ b/packages/@aws-cdk/cloud-assembly-schema/lib/cloud-assembly/schema.ts @@ -30,6 +30,11 @@ export enum ArtifactType { * Nested Cloud Assembly */ NESTED_CLOUD_ASSEMBLY = 'cdk:cloud-assembly', + + /** + * Feature flag report + */ + FEATURE_FLAG_REPORT = 'cdk:feature-flag-report', } /** diff --git a/packages/@aws-cdk/cloud-assembly-schema/package.json b/packages/@aws-cdk/cloud-assembly-schema/package.json index d797b58ed..6144dd1bb 100644 --- a/packages/@aws-cdk/cloud-assembly-schema/package.json +++ b/packages/@aws-cdk/cloud-assembly-schema/package.json @@ -52,8 +52,8 @@ "eslint-config-prettier": "^10.1.5", "eslint-import-resolver-typescript": "^3.10.1", "eslint-plugin-import": "^2.31.0", - "eslint-plugin-jest": "^28.13.0", - "eslint-plugin-jsdoc": "^50.7.1", + "eslint-plugin-jest": "^28.14.0", + "eslint-plugin-jsdoc": "^50.8.0", "eslint-plugin-prettier": "^5.4.1", "jest": "^29.7.0", "jest-junit": "^16", @@ -64,8 +64,8 @@ "license-checker": "^25.0.1", "mock-fs": "^5.5.0", "prettier": "^2.8", - "ts-jest": "^29.3.4", - "tsx": "^4.19.4", + "ts-jest": "^29.4.0", + "tsx": "^4.20.3", "typescript": "5.6", "typescript-json-schema": "^0.65.1" }, diff --git a/packages/@aws-cdk/cloud-assembly-schema/schema/cloud-assembly.schema.json b/packages/@aws-cdk/cloud-assembly-schema/schema/cloud-assembly.schema.json index 77a9eef8e..c91b4021b 100644 --- a/packages/@aws-cdk/cloud-assembly-schema/schema/cloud-assembly.schema.json +++ b/packages/@aws-cdk/cloud-assembly-schema/schema/cloud-assembly.schema.json @@ -79,6 +79,9 @@ }, { "$ref": "#/definitions/NestedCloudAssemblyProperties" + }, + { + "$ref": "#/definitions/FeatureFlagReportProperties" } ] }, @@ -99,7 +102,8 @@ "aws:cloudformation:stack", "cdk:tree", "cdk:asset-manifest", - "cdk:cloud-assembly" + "cdk:cloud-assembly", + "cdk:feature-flag-report" ] }, "MetadataEntry": { @@ -492,6 +496,27 @@ "directoryName" ] }, + "FeatureFlagReportProperties": { + "description": "Artifact properties for a feature flag report\n\nA feature flag report is small enough that all the properties can be inlined\nhere, and doesn't need an additional file.", + "type": "object", + "properties": { + "module": { + "description": "The library that this feature flag report applies to.", + "type": "string" + }, + "flags": { + "$ref": "#/definitions/Record", + "description": "Information about every feature flag supported by this library." + } + }, + "required": [ + "flags", + "module" + ] + }, + "Record": { + "type": "object" + }, "MissingContext": { "description": "Represents a missing piece of context.", "type": "object", diff --git a/packages/@aws-cdk/cloud-assembly-schema/schema/version.json b/packages/@aws-cdk/cloud-assembly-schema/schema/version.json index f93ad9b6b..410a58b38 100644 --- a/packages/@aws-cdk/cloud-assembly-schema/schema/version.json +++ b/packages/@aws-cdk/cloud-assembly-schema/schema/version.json @@ -1,4 +1,4 @@ { - "schemaHash": "5dcc6511e8b96c378ad35c391cdc2dcbaa52d08a8015760692eaad73efc9a949", + "schemaHash": "4709e40bc5dd6ad7d2bb6c6bd0315c622b7f4aa07ee3af66ff07f9bc77fdf783", "revision": 44 } \ No newline at end of file diff --git a/packages/@aws-cdk/cloud-assembly-schema/tsconfig.dev.json b/packages/@aws-cdk/cloud-assembly-schema/tsconfig.dev.json index 3ec1f147d..1288d35b4 100644 --- a/packages/@aws-cdk/cloud-assembly-schema/tsconfig.dev.json +++ b/packages/@aws-cdk/cloud-assembly-schema/tsconfig.dev.json @@ -3,14 +3,14 @@ "compilerOptions": { "alwaysStrict": true, "declaration": true, - "esModuleInterop": true, + "esModuleInterop": false, "experimentalDecorators": true, "inlineSourceMap": true, "inlineSources": true, "lib": [ "es2020" ], - "module": "CommonJS", + "module": "commonjs", "noEmitOnError": false, "noFallthroughCasesInSwitch": true, "noImplicitAny": true, @@ -24,6 +24,9 @@ "strictPropertyInitialization": true, "stripInternal": true, "target": "ES2020", + "incremental": true, + "skipLibCheck": true, + "isolatedModules": true, "composite": true, "outDir": "lib" }, diff --git a/packages/@aws-cdk/cloudformation-diff/jest.config.json b/packages/@aws-cdk/cloudformation-diff/jest.config.json index ecf596768..6b3862481 100644 --- a/packages/@aws-cdk/cloudformation-diff/jest.config.json +++ b/packages/@aws-cdk/cloudformation-diff/jest.config.json @@ -59,8 +59,7 @@ "^.+\\.[t]sx?$": [ "ts-jest", { - "tsconfig": "tsconfig.dev.json", - "isolatedModules": true + "tsconfig": "tsconfig.dev.json" } ] }, diff --git a/packages/@aws-cdk/cloudformation-diff/package.json b/packages/@aws-cdk/cloudformation-diff/package.json index 42c518341..50ab0099a 100644 --- a/packages/@aws-cdk/cloudformation-diff/package.json +++ b/packages/@aws-cdk/cloudformation-diff/package.json @@ -44,23 +44,23 @@ "eslint-config-prettier": "^10.1.5", "eslint-import-resolver-typescript": "^3.10.1", "eslint-plugin-import": "^2.31.0", - "eslint-plugin-jest": "^28.13.0", - "eslint-plugin-jsdoc": "^50.7.1", + "eslint-plugin-jest": "^28.14.0", + "eslint-plugin-jsdoc": "^50.8.0", "eslint-plugin-prettier": "^5.4.1", "fast-check": "^3.23.2", "jest": "^29.7.0", "jest-junit": "^16", "license-checker": "^25.0.1", "prettier": "^2.8", - "ts-jest": "^29.3.4", + "ts-jest": "^29.4.0", "typescript": "5.6" }, "peerDependencies": { "@aws-sdk/client-cloudformation": "^3" }, "dependencies": { - "@aws-cdk/aws-service-spec": "^0.1.80", - "@aws-cdk/service-spec-types": "^0.0.146", + "@aws-cdk/aws-service-spec": "^0.1.82", + "@aws-cdk/service-spec-types": "^0.0.148", "chalk": "^4", "diff": "^7.0.0", "fast-deep-equal": "^3.1.3", diff --git a/packages/@aws-cdk/cloudformation-diff/tsconfig.dev.json b/packages/@aws-cdk/cloudformation-diff/tsconfig.dev.json index 5bfbfa299..1288d35b4 100644 --- a/packages/@aws-cdk/cloudformation-diff/tsconfig.dev.json +++ b/packages/@aws-cdk/cloudformation-diff/tsconfig.dev.json @@ -26,6 +26,7 @@ "target": "ES2020", "incremental": true, "skipLibCheck": true, + "isolatedModules": true, "composite": true, "outDir": "lib" }, diff --git a/packages/@aws-cdk/cloudformation-diff/tsconfig.json b/packages/@aws-cdk/cloudformation-diff/tsconfig.json index 4fe81a0dd..53800fe80 100644 --- a/packages/@aws-cdk/cloudformation-diff/tsconfig.json +++ b/packages/@aws-cdk/cloudformation-diff/tsconfig.json @@ -28,6 +28,7 @@ "target": "ES2020", "incremental": true, "skipLibCheck": true, + "isolatedModules": true, "composite": true }, "include": [ diff --git a/packages/@aws-cdk/integ-runner/.projen/deps.json b/packages/@aws-cdk/integ-runner/.projen/deps.json index e8a5449b5..f277aa4b1 100644 --- a/packages/@aws-cdk/integ-runner/.projen/deps.json +++ b/packages/@aws-cdk/integ-runner/.projen/deps.json @@ -146,6 +146,10 @@ "name": "@aws-cdk/cx-api", "type": "runtime" }, + { + "name": "@aws-cdk/toolkit-lib", + "type": "runtime" + }, { "name": "@aws-sdk/client-cloudformation", "version": "^3", diff --git a/packages/@aws-cdk/integ-runner/.projen/tasks.json b/packages/@aws-cdk/integ-runner/.projen/tasks.json index dfbeca6e7..ad4091299 100644 --- a/packages/@aws-cdk/integ-runner/.projen/tasks.json +++ b/packages/@aws-cdk/integ-runner/.projen/tasks.json @@ -100,7 +100,7 @@ "name": "gather-versions", "steps": [ { - "exec": "node -e \"require(require.resolve('cdklabs-projen-project-types/lib/yarn/gather-versions.exec.js')).cliMain()\" @aws-cdk/cloud-assembly-schema=any-future @aws-cdk/cdk-cli-wrapper=exact aws-cdk=exact cdk-assets=exact @aws-cdk/cloudformation-diff=exact", + "exec": "node -e \"require(require.resolve('cdklabs-projen-project-types/lib/yarn/gather-versions.exec.js')).cliMain()\" @aws-cdk/cloud-assembly-schema=any-future @aws-cdk/cdk-cli-wrapper=exact aws-cdk=exact cdk-assets=exact @aws-cdk/cloudformation-diff=exact @aws-cdk/toolkit-lib=exact", "receiveArgs": true } ] @@ -140,7 +140,7 @@ "exec": "mkdir -p dist/js" }, { - "exec": "node-bundle pack --destination dist/js --external @aws-cdk/aws-service-spec:runtime --external aws-cdk:runtime --external fsevents:optional --allowed-license \"Apache-2.0\" --allowed-license \"MIT\" --allowed-license \"BSD-3-Clause\" --allowed-license \"ISC\" --allowed-license \"BSD-2-Clause\" --allowed-license \"0BSD\" --allowed-license \"MIT OR Apache-2.0\" --dont-attribute '^@aws-cdk/|^@cdklabs/|^cdk-assets$|^cdk-cli-wrapper$' --test 'bin/integ-runner --version' --entrypoint 'lib/index.js' --entrypoint 'lib/workers/extract/index.js'" + "exec": "node-bundle pack --destination dist/js --external @aws-cdk/aws-service-spec:runtime --external aws-cdk:runtime --external fsevents:optional --allowed-license \"Apache-2.0\" --allowed-license \"MIT\" --allowed-license \"BSD-3-Clause\" --allowed-license \"ISC\" --allowed-license \"BSD-2-Clause\" --allowed-license \"0BSD\" --allowed-license \"MIT OR Apache-2.0\" --dont-attribute '^@aws-cdk/|^@cdklabs/|^cdk-assets$|^cdk-cli-wrapper$' --test 'bin/integ-runner --version' --entrypoint 'lib/index.js' --entrypoint 'lib/workers/extract/index.js' --metafile dist/metafile.json" } ] }, diff --git a/packages/@aws-cdk/integ-runner/jest.config.json b/packages/@aws-cdk/integ-runner/jest.config.json index 7d39e1b4a..cb081731d 100644 --- a/packages/@aws-cdk/integ-runner/jest.config.json +++ b/packages/@aws-cdk/integ-runner/jest.config.json @@ -59,8 +59,7 @@ "^.+\\.[t]sx?$": [ "ts-jest", { - "tsconfig": "tsconfig.dev.json", - "isolatedModules": true + "tsconfig": "tsconfig.dev.json" } ] }, diff --git a/packages/@aws-cdk/integ-runner/lib/runner/integ-test-runner.ts b/packages/@aws-cdk/integ-runner/lib/runner/integ-test-runner.ts index 843e538eb..0d7a6e53c 100644 --- a/packages/@aws-cdk/integ-runner/lib/runner/integ-test-runner.ts +++ b/packages/@aws-cdk/integ-runner/lib/runner/integ-test-runner.ts @@ -1,6 +1,7 @@ import * as path from 'path'; -import type { DeployOptions, DestroyOptions } from '@aws-cdk/cdk-cli-wrapper'; +import type { DeployOptions } from '@aws-cdk/cdk-cli-wrapper'; import { HotswapMode, StackActivityProgress } from '@aws-cdk/cdk-cli-wrapper'; +import type { DestroyOptions, TestCase } from '@aws-cdk/cloud-assembly-schema'; import { RequireApproval } from '@aws-cdk/cloud-assembly-schema'; import * as chokidar from 'chokidar'; import * as fs from 'fs-extra'; @@ -8,7 +9,7 @@ import * as workerpool from 'workerpool'; import type { IntegRunnerOptions } from './runner-base'; import { IntegRunner, DEFAULT_SYNTH_OPTIONS } from './runner-base'; import * as logger from '../logger'; -import { chunks, exec } from '../utils'; +import { chunks, exec, promiseWithResolvers } from '../utils'; import type { DestructiveChange, AssertionResults, AssertionResult } from '../workers/common'; import { DiagnosticReason, formatAssertionResults } from '../workers/common'; @@ -76,16 +77,21 @@ export class IntegTestRunner extends IntegRunner { constructor(options: IntegRunnerOptions, destructiveChanges?: DestructiveChange[]) { super(options); this._destructiveChanges = destructiveChanges; + } + public async actualTests(): Promise<{ [testName: string]: TestCase } | undefined> { + const actualTestSuite = await this.actualTestSuite(); // We don't want new tests written in the legacy mode. // If there is no existing snapshot _and_ this is a legacy // test then point the user to the new `IntegTest` construct - if (!this.hasSnapshot() && this.isLegacyTest) { + if (!this.hasSnapshot() && actualTestSuite.type === 'legacy-test-suite') { throw new Error(`${this.testName} is a new test. Please use the IntegTest construct ` + 'to configure the test\n' + 'https://github.com/aws/aws-cdk/tree/main/packages/%40aws-cdk/integ-tests-alpha', ); } + + return actualTestSuite.testSuite; } public createCdkContextJson(): void { @@ -161,9 +167,10 @@ export class IntegTestRunner extends IntegRunner { * This is meant to be run on a single test and will not create a snapshot */ public async watchIntegTest(options: WatchOptions): Promise { - const actualTestCase = this.actualTestSuite.testSuite[options.testCaseName]; + const actualTestSuite = await this.actualTestSuite(); + const actualTestCase = actualTestSuite.testSuite[options.testCaseName]; if (!actualTestCase) { - throw new Error(`Did not find test case name '${options.testCaseName}' in '${Object.keys(this.actualTestSuite.testSuite)}'`); + throw new Error(`Did not find test case name '${options.testCaseName}' in '${Object.keys(actualTestSuite.testSuite)}'`); } const enableForVerbosityLevel = (needed = 1) => { const verbosity = options.verbosity ?? 0; @@ -202,11 +209,12 @@ export class IntegTestRunner extends IntegRunner { * The update workflow exists to check for cases where a change would cause * a failure to an existing stack, but not for a newly created stack. */ - public runIntegTestCase(options: RunOptions): AssertionResults | undefined { + public async runIntegTestCase(options: RunOptions): Promise { let assertionResults: AssertionResults | undefined; - const actualTestCase = this.actualTestSuite.testSuite[options.testCaseName]; + const actualTestSuite = await this.actualTestSuite(); + const actualTestCase = actualTestSuite.testSuite[options.testCaseName]; if (!actualTestCase) { - throw new Error(`Did not find test case name '${options.testCaseName}' in '${Object.keys(this.actualTestSuite.testSuite)}'`); + throw new Error(`Did not find test case name '${options.testCaseName}' in '${Object.keys(actualTestSuite.testSuite)}'`); } const clean = options.clean ?? true; const updateWorkflowEnabled = (options.updateWorkflow ?? true) @@ -218,7 +226,7 @@ export class IntegTestRunner extends IntegRunner { try { if (!options.dryRun && (actualTestCase.cdkCommandOptions?.deploy?.enabled ?? true)) { - assertionResults = this.deploy( + assertionResults = await this.deploy( { ...this.defaultArgs, profile: this.profile, @@ -233,10 +241,10 @@ export class IntegTestRunner extends IntegRunner { const env: Record = { ...DEFAULT_SYNTH_OPTIONS.env, CDK_CONTEXT_JSON: JSON.stringify(this.getContext({ - ...this.actualTestSuite.enableLookups ? DEFAULT_SYNTH_OPTIONS.context : {}, + ...actualTestSuite.enableLookups ? DEFAULT_SYNTH_OPTIONS.context : {}, })), }; - this.cdk.synthFast({ + await this.cdk.synthFast({ execCmd: this.cdkApp.split(' '), env, output: path.relative(this.directory, this.cdkOutDir), @@ -245,14 +253,14 @@ export class IntegTestRunner extends IntegRunner { // only create the snapshot if there are no failed assertion results // (i.e. no failures) if (!assertionResults || !Object.values(assertionResults).some(result => result.status === 'fail')) { - this.createSnapshot(); + await this.createSnapshot(); } } catch (e) { throw e; } finally { if (!options.dryRun) { if (clean && (actualTestCase.cdkCommandOptions?.destroy?.enabled ?? true)) { - this.destroy(options.testCaseName, { + await this.destroy(options.testCaseName, { ...this.defaultArgs, profile: this.profile, all: true, @@ -274,8 +282,8 @@ export class IntegTestRunner extends IntegRunner { /** * Perform a integ test case stack destruction */ - private destroy(testCaseName: string, destroyArgs: DestroyOptions) { - const actualTestCase = this.actualTestSuite.testSuite[testCaseName]; + private async destroy(testCaseName: string, destroyArgs: DestroyOptions) { + const actualTestCase = (await this.actualTestSuite()).testSuite[testCaseName]; try { if (actualTestCase.hooks?.preDestroy) { actualTestCase.hooks.preDestroy.forEach(cmd => { @@ -284,7 +292,7 @@ export class IntegTestRunner extends IntegRunner { }); }); } - this.cdk.destroy({ + await this.cdk.destroy({ ...destroyArgs, }); @@ -304,7 +312,8 @@ export class IntegTestRunner extends IntegRunner { } private async watch(watchArgs: DeployOptions, testCaseName: string, verbosity: number): Promise { - const actualTestCase = this.actualTestSuite.testSuite[testCaseName]; + const actualTestSuite = await this.actualTestSuite(); + const actualTestCase = actualTestSuite.testSuite[testCaseName]; if (actualTestCase.hooks?.preDeploy) { actualTestCase.hooks.preDeploy.forEach(cmd => { exec(chunks(cmd), { @@ -314,7 +323,7 @@ export class IntegTestRunner extends IntegRunner { } const deployArgs = { ...watchArgs, - lookups: this.actualTestSuite.enableLookups, + lookups: actualTestSuite.enableLookups, stacks: [ ...actualTestCase.stacks, ...actualTestCase.assertionStack ? [actualTestCase.assertionStack] : [], @@ -410,41 +419,43 @@ export class IntegTestRunner extends IntegRunner { }); }); - const child = this.cdk.watch(deployArgs); - // if `-v` (or above) is passed then stream the logs - child.stdout?.on('data', (message) => { - if (verbosity > 0) { - process.stdout.write(message); - } - }); - child.stderr?.on('data', (message) => { - if (verbosity > 0) { - process.stderr.write(message); - } - }); + const { promise: waiter, resolve } = promiseWithResolvers(); - await new Promise(resolve => { - child.on('close', async (code) => { + await this.cdk.watch(deployArgs, { + // if `-v` (or above) is passed then stream the logs + onStdout: (message) => { + if (verbosity > 0) { + process.stdout.write(message); + } + }, + // if `-v` (or above) is passed then stream the logs + onStderr: (message) => { + if (verbosity > 0) { + process.stderr.write(message); + } + }, + onClose: async (code) => { if (code !== 0) { throw new Error('Watch exited with error'); } - child.stdin?.end(); await watcher.close(); resolve(code); - }); + }, }); + + await waiter; } /** * Perform a integ test case deployment, including - * peforming the update workflow + * performing the update workflow */ - private deploy( + private async deploy( deployArgs: DeployOptions, updateWorkflowEnabled: boolean, testCaseName: string, - ): AssertionResults | undefined { - const actualTestCase = this.actualTestSuite.testSuite[testCaseName]; + ): Promise { + const actualTestCase = (await this.actualTestSuite()).testSuite[testCaseName]; try { if (actualTestCase.hooks?.preDeploy) { actualTestCase.hooks.preDeploy.forEach(cmd => { @@ -459,24 +470,25 @@ export class IntegTestRunner extends IntegRunner { // with the current integration test // We also only want to run the update workflow if there is an existing // snapshot (otherwise there is nothing to update) + const expectedTestSuite = await this.expectedTestSuite(); if (updateWorkflowEnabled && this.hasSnapshot() && - (this.expectedTestSuite && testCaseName in this.expectedTestSuite?.testSuite)) { + (expectedTestSuite && testCaseName in expectedTestSuite?.testSuite)) { // make sure the snapshot is the latest from 'origin' this.checkoutSnapshot(); - const expectedTestCase = this.expectedTestSuite.testSuite[testCaseName]; - this.cdk.deploy({ + const expectedTestCase = expectedTestSuite.testSuite[testCaseName]; + await this.cdk.deploy({ ...deployArgs, stacks: expectedTestCase.stacks, ...expectedTestCase?.cdkCommandOptions?.deploy?.args, context: this.getContext(expectedTestCase?.cdkCommandOptions?.deploy?.args?.context), app: path.relative(this.directory, this.snapshotDir), - lookups: this.expectedTestSuite?.enableLookups, + lookups: expectedTestSuite?.enableLookups, }); } // now deploy the "actual" test. - this.cdk.deploy({ + await this.cdk.deploy({ ...deployArgs, - lookups: this.actualTestSuite.enableLookups, + lookups: (await this.actualTestSuite()).enableLookups, stacks: [ ...actualTestCase.stacks, ], @@ -493,9 +505,9 @@ export class IntegTestRunner extends IntegRunner { // assertions instead of failing at the first failed assertion // combining it with the above deployment would prevent any replacement updates if (actualTestCase.assertionStack) { - this.cdk.deploy({ + await this.cdk.deploy({ ...deployArgs, - lookups: this.actualTestSuite.enableLookups, + lookups: (await this.actualTestSuite()).enableLookups, stacks: [ actualTestCase.assertionStack, ], diff --git a/packages/@aws-cdk/integ-runner/lib/runner/integ-test-suite.ts b/packages/@aws-cdk/integ-runner/lib/runner/integ-test-suite.ts index 534c3a7c6..0d5845d81 100644 --- a/packages/@aws-cdk/integ-runner/lib/runner/integ-test-suite.ts +++ b/packages/@aws-cdk/integ-runner/lib/runner/integ-test-suite.ts @@ -126,7 +126,7 @@ export class LegacyIntegTestSuite extends IntegTestSuite { * /// !cdk-integ * */ - public static fromLegacy(config: LegacyTestCaseConfig): LegacyIntegTestSuite { + public static async fromLegacy(config: LegacyTestCaseConfig): Promise { const pragmas = this.pragmas(config.integSourceFilePath); const tests: TestCase = { stacks: [], @@ -141,7 +141,7 @@ export class LegacyIntegTestSuite extends IntegTestSuite { ...config.listOptions, notices: false, }; - const stacks = (config.cdk.list(options)).split('\n'); + const stacks = await config.cdk.list(options); if (stacks.length !== 1) { throw new Error('"cdk-integ" can only operate on apps with a single stack.\n\n' + ' If your app has multiple stacks, specify which stack to select by adding this to your test source:\n\n' + diff --git a/packages/@aws-cdk/integ-runner/lib/runner/runner-base.ts b/packages/@aws-cdk/integ-runner/lib/runner/runner-base.ts index a6eeba51b..c1b7fca0f 100644 --- a/packages/@aws-cdk/integ-runner/lib/runner/runner-base.ts +++ b/packages/@aws-cdk/integ-runner/lib/runner/runner-base.ts @@ -96,16 +96,6 @@ export abstract class IntegRunner { */ protected readonly cdkContextPath: string; - /** - * The test suite from the existing snapshot - */ - protected readonly expectedTestSuite?: IntegTestSuite | LegacyIntegTestSuite; - - /** - * The test suite from the new "actual" snapshot - */ - protected readonly actualTestSuite: IntegTestSuite | LegacyIntegTestSuite; - /** * The working directory that the integration tests will be * executed from @@ -133,11 +123,15 @@ export abstract class IntegRunner { */ protected readonly cdkOutDir: string; + /** + * The profile to use for the CDK CLI calls + */ protected readonly profile?: string; protected _destructiveChanges?: DestructiveChange[]; private legacyContext?: Record; - protected isLegacyTest?: boolean; + private _expectedTestSuite?: IntegTestSuite | LegacyIntegTestSuite; + private _actualTestSuite?: IntegTestSuite | LegacyIntegTestSuite; constructor(options: IntegRunnerOptions) { this.test = options.test; @@ -159,24 +153,20 @@ export abstract class IntegRunner { this.cdkApp = testRunCommand.replace('{filePath}', path.relative(this.directory, this.test.fileName)); this.profile = options.profile; - if (this.hasSnapshot()) { - this.expectedTestSuite = this.loadManifest(); - } - this.actualTestSuite = this.generateActualSnapshot(); } /** * Return the list of expected (i.e. existing) test cases for this integration test */ - public expectedTests(): { [testName: string]: TestCase } | undefined { - return this.expectedTestSuite?.testSuite; + public async expectedTests(): Promise<{ [testName: string]: TestCase } | undefined> { + return (await this.expectedTestSuite())?.testSuite; } /** * Return the list of actual (i.e. new) test cases for this integration test */ - public actualTests(): { [testName: string]: TestCase } | undefined { - return this.actualTestSuite.testSuite; + public async actualTests(): Promise<{ [testName: string]: TestCase } | undefined> { + return (await this.actualTestSuite()).testSuite; } /** @@ -184,18 +174,18 @@ export abstract class IntegRunner { * existing "expected" snapshot * This will synth and then load the integration test manifest */ - public generateActualSnapshot(): IntegTestSuite | LegacyIntegTestSuite { - this.cdk.synthFast({ + public async generateActualSnapshot(): Promise { + await this.cdk.synthFast({ execCmd: this.cdkApp.split(' '), env: { ...DEFAULT_SYNTH_OPTIONS.env, // we don't know the "actual" context yet (this method is what generates it) so just // use the "expected" context. This is only run in order to read the manifest - CDK_CONTEXT_JSON: JSON.stringify(this.getContext(this.expectedTestSuite?.synthContext)), + CDK_CONTEXT_JSON: JSON.stringify(this.getContext((await this.expectedTestSuite())?.synthContext)), }, output: path.relative(this.directory, this.cdkOutDir), }); - const manifest = this.loadManifest(this.cdkOutDir); + const manifest = await this.loadManifest(this.cdkOutDir); // after we load the manifest remove the tmp snapshot // so that it doesn't mess up the real snapshot created later this.cleanup(); @@ -209,6 +199,26 @@ export abstract class IntegRunner { return fs.existsSync(this.snapshotDir); } + /** + * The test suite from the existing snapshot + */ + protected async expectedTestSuite(): Promise { + if (!this._expectedTestSuite && this.hasSnapshot()) { + this._expectedTestSuite = await this.loadManifest(); + } + return this._expectedTestSuite; + } + + /** + * The test suite from the new "actual" snapshot + */ + protected async actualTestSuite(): Promise { + if (!this._actualTestSuite) { + this._actualTestSuite = await this.generateActualSnapshot(); + } + return this._actualTestSuite; + } + /** * Load the integ manifest which contains information * on how to execute the tests @@ -216,12 +226,12 @@ export abstract class IntegRunner { * from the cloud assembly. If it doesn't exist, then we fallback to the * "legacy mode" and create a manifest from pragma */ - protected loadManifest(dir?: string): IntegTestSuite | LegacyIntegTestSuite { + protected async loadManifest(dir?: string): Promise { try { const testSuite = IntegTestSuite.fromPath(dir ?? this.snapshotDir); return testSuite; } catch { - const testCases = LegacyIntegTestSuite.fromLegacy({ + const testCases = await LegacyIntegTestSuite.fromLegacy({ cdk: this.cdk, testName: this.test.normalizedTestName, integSourceFilePath: this.test.fileName, @@ -234,7 +244,6 @@ export abstract class IntegRunner { }, }); this.legacyContext = LegacyIntegTestSuite.getPragmaContext(this.test.fileName); - this.isLegacyTest = true; return testCases; } } @@ -275,8 +284,8 @@ export abstract class IntegRunner { * disabled and then delete assets that relate to that stack. It does that * by reading the asset manifest for the stack and deleting the asset source */ - protected removeAssetsFromSnapshot(): void { - const stacks = this.actualTestSuite.getStacksWithoutUpdateWorkflow() ?? []; + protected async removeAssetsFromSnapshot(): Promise { + const stacks = (await this.actualTestSuite()).getStacksWithoutUpdateWorkflow() ?? []; const manifest = AssemblyManifestReader.fromPath(this.snapshotDir); const assets = flatten(stacks.map(stack => { return manifest.getAssetLocationsForStack(stack) ?? []; @@ -320,15 +329,15 @@ export abstract class IntegRunner { * If lookups are disabled (which means the stack is env agnostic) then just copy * the assembly that was output by the deployment */ - protected createSnapshot(): void { + protected async createSnapshot(): Promise { if (fs.existsSync(this.snapshotDir)) { fs.removeSync(this.snapshotDir); } // if lookups are enabled then we need to synth again // using dummy context and save that as the snapshot - if (this.actualTestSuite.enableLookups) { - this.cdk.synthFast({ + if ((await this.actualTestSuite()).enableLookups) { + await this.cdk.synthFast({ execCmd: this.cdkApp.split(' '), env: { ...DEFAULT_SYNTH_OPTIONS.env, @@ -340,7 +349,7 @@ export abstract class IntegRunner { fs.moveSync(this.cdkOutDir, this.snapshotDir, { overwrite: true }); } - this.cleanupSnapshot(); + await this.cleanupSnapshot(); } /** @@ -348,9 +357,9 @@ export abstract class IntegRunner { * Anytime the snapshot needs to be modified after creation * the logic should live here. */ - private cleanupSnapshot(): void { + private async cleanupSnapshot(): Promise { if (fs.existsSync(this.snapshotDir)) { - this.removeAssetsFromSnapshot(); + await this.removeAssetsFromSnapshot(); this.removeAssetsCacheFromSnapshot(); const assembly = AssemblyManifestReader.fromPath(this.snapshotDir); assembly.cleanManifest(); @@ -361,8 +370,9 @@ export abstract class IntegRunner { // in the snapshot directory which can be used for the // update workflow. Save any legacyContext as well so that it can be read // the next time - if (this.actualTestSuite.type === 'legacy-test-suite') { - (this.actualTestSuite as LegacyIntegTestSuite).saveManifest(this.snapshotDir, this.legacyContext); + const actualTestSuite = await this.actualTestSuite(); + if (actualTestSuite.type === 'legacy-test-suite') { + (actualTestSuite as LegacyIntegTestSuite).saveManifest(this.snapshotDir, this.legacyContext); } } diff --git a/packages/@aws-cdk/integ-runner/lib/runner/snapshot-test-runner.ts b/packages/@aws-cdk/integ-runner/lib/runner/snapshot-test-runner.ts index 515304400..3f0bd01ee 100644 --- a/packages/@aws-cdk/integ-runner/lib/runner/snapshot-test-runner.ts +++ b/packages/@aws-cdk/integ-runner/lib/runner/snapshot-test-runner.ts @@ -44,10 +44,16 @@ export class IntegSnapshotRunner extends IntegRunner { * * @returns any diagnostics and any destructive changes */ - public testSnapshot(options: SnapshotVerificationOptions = {}): { diagnostics: Diagnostic[]; destructiveChanges: DestructiveChange[] } { + public async testSnapshot(options: SnapshotVerificationOptions = {}): Promise<{ + diagnostics: Diagnostic[]; + destructiveChanges: DestructiveChange[]; + }> { + const actualTestSuite = await this.actualTestSuite(); + const expectedTestSuite = await this.expectedTestSuite(); + let doClean = true; try { - const expectedSnapshotAssembly = this.getSnapshotAssembly(this.snapshotDir, this.expectedTestSuite?.stacks); + const expectedSnapshotAssembly = this.getSnapshotAssembly(this.snapshotDir, expectedTestSuite?.stacks); // synth the integration test // FIXME: ideally we should not need to run this again if @@ -57,20 +63,20 @@ export class IntegSnapshotRunner extends IntegRunner { const env = { ...DEFAULT_SYNTH_OPTIONS.env, CDK_CONTEXT_JSON: JSON.stringify(this.getContext({ - ...this.actualTestSuite.enableLookups ? DEFAULT_SYNTH_OPTIONS.context : {}, + ...actualTestSuite.enableLookups ? DEFAULT_SYNTH_OPTIONS.context : {}, })), }; - this.cdk.synthFast({ + await this.cdk.synthFast({ execCmd: this.cdkApp.split(' '), env, output: path.relative(this.directory, this.cdkOutDir), }); // read the "actual" snapshot - const actualSnapshotAssembly = this.getSnapshotAssembly(this.cdkOutDir, this.actualTestSuite.stacks); + const actualSnapshotAssembly = this.getSnapshotAssembly(this.cdkOutDir, actualTestSuite.stacks); // diff the existing snapshot (expected) with the integration test (actual) - const diagnostics = this.diffAssembly(expectedSnapshotAssembly, actualSnapshotAssembly); + const diagnostics = await this.diffAssembly(expectedSnapshotAssembly, actualSnapshotAssembly); if (diagnostics.diagnostics.length) { // Attach additional messages to the first diagnostic @@ -151,8 +157,8 @@ export class IntegSnapshotRunner extends IntegRunner { * @param stackId - the stack id * @returns a list of resource types or undefined if none are found */ - private getAllowedDestroyTypesForStack(stackId: string): string[] | undefined { - for (const testCase of Object.values(this.actualTests() ?? {})) { + private async getAllowedDestroyTypesForStack(stackId: string): Promise { + for (const testCase of Object.values((await this.actualTests()) ?? {})) { if (testCase.stacks.includes(stackId)) { return testCase.allowDestroy; } @@ -167,10 +173,10 @@ export class IntegSnapshotRunner extends IntegRunner { * @param actual - the new (actual) snapshot * @returns any diagnostics and any destructive changes */ - private diffAssembly( + private async diffAssembly( expected: SnapshotAssembly, actual: SnapshotAssembly, - ): { diagnostics: Diagnostic[]; destructiveChanges: DestructiveChange[] } { + ): Promise<{ diagnostics: Diagnostic[]; destructiveChanges: DestructiveChange[] }> { const failures: Diagnostic[] = []; const destructiveChanges: DestructiveChange[] = []; @@ -203,7 +209,7 @@ export class IntegSnapshotRunner extends IntegRunner { continue; } else { const config = { - diffAssets: this.actualTestSuite.getOptionsForStack(stackId)?.diffAssets, + diffAssets: (await this.actualTestSuite()).getOptionsForStack(stackId)?.diffAssets, }; let actualTemplate = actual[stackId].templates[templateId]; let expectedTemplate = expected[stackId].templates[templateId]; @@ -217,7 +223,7 @@ export class IntegSnapshotRunner extends IntegRunner { } const templateDiff = fullDiff(expectedTemplate, actualTemplate); if (!templateDiff.isEmpty) { - const allowedDestroyTypes = this.getAllowedDestroyTypesForStack(stackId) ?? []; + const allowedDestroyTypes = (await this.getAllowedDestroyTypesForStack(stackId)) ?? []; // go through all the resource differences and check for any // "destructive" changes diff --git a/packages/@aws-cdk/integ-runner/lib/utils.ts b/packages/@aws-cdk/integ-runner/lib/utils.ts index 14b8e03c9..0afcbae09 100644 --- a/packages/@aws-cdk/integ-runner/lib/utils.ts +++ b/packages/@aws-cdk/integ-runner/lib/utils.ts @@ -108,3 +108,23 @@ export interface WorkListOptions { */ readonly onTimeout?: (x: Set) => void; } + +/** + * A backport of Promiser.withResolvers + * + * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/withResolvers + */ +export function promiseWithResolvers(): PromiseAndResolvers { + let resolve: PromiseAndResolvers['resolve'], reject: PromiseAndResolvers['reject']; + const promise = new Promise((res, rej) => { + resolve = res; + reject = rej; + }); + return { promise, resolve: resolve!, reject: reject! }; +} + +interface PromiseAndResolvers { + promise: Promise; + resolve: (value: A) => void; + reject: (reason: any) => void; +} diff --git a/packages/@aws-cdk/integ-runner/lib/workers/extract/extract_worker.ts b/packages/@aws-cdk/integ-runner/lib/workers/extract/extract_worker.ts index 8f92b9dd0..fd9430d63 100644 --- a/packages/@aws-cdk/integ-runner/lib/workers/extract/extract_worker.ts +++ b/packages/@aws-cdk/integ-runner/lib/workers/extract/extract_worker.ts @@ -15,7 +15,7 @@ import type { IntegWatchOptions } from '../integ-watch-worker'; * * If the tests succeed it will then save the snapshot */ -export function integTestWorker(request: IntegTestBatchRequest): IntegTestWorkerConfig[] { +export async function integTestWorker(request: IntegTestBatchRequest): Promise { const failures: IntegTestInfo[] = []; const verbosity = request.verbosity ?? 0; @@ -37,14 +37,14 @@ export function integTestWorker(request: IntegTestBatchRequest): IntegTestWorker showOutput: verbosity >= 2, }, testInfo.destructiveChanges); - const tests = runner.actualTests(); + const tests = await runner.actualTests(); if (!tests || Object.keys(tests).length === 0) { throw new Error(`No tests defined for ${runner.testName}`); } for (const testCaseName of Object.keys(tests)) { try { - const results = runner.runIntegTestCase({ + const results = await runner.runIntegTestCase({ testCaseName, clean: request.clean, dryRun: request.dryRun, @@ -91,7 +91,7 @@ export function integTestWorker(request: IntegTestBatchRequest): IntegTestWorker return failures; } -export async function watchTestWorker(options: IntegWatchOptions) { +export async function watchTestWorker(options: IntegWatchOptions): Promise { const verbosity = options.verbosity ?? 0; const test = new IntegTest(options); const runner = new IntegTestRunner({ @@ -104,7 +104,7 @@ export async function watchTestWorker(options: IntegWatchOptions) { showOutput: verbosity >= 2, }); runner.createCdkContextJson(); - const tests = runner.actualTests(); + const tests = await runner.actualTests(); if (!tests || Object.keys(tests).length === 0) { throw new Error(`No tests defined for ${runner.testName}`); @@ -123,7 +123,7 @@ export async function watchTestWorker(options: IntegWatchOptions) { * if there is an existing snapshot, and if there is will * check if there are any changes */ -export function snapshotTestWorker(testInfo: IntegTestInfo, options: SnapshotVerificationOptions = {}): IntegTestWorkerConfig[] { +export async function snapshotTestWorker(testInfo: IntegTestInfo, options: SnapshotVerificationOptions = {}): Promise { const failedTests = new Array(); const start = Date.now(); const test = new IntegTest(testInfo); // Hydrate the data record again @@ -148,7 +148,7 @@ export function snapshotTestWorker(testInfo: IntegTestInfo, options: SnapshotVer }); failedTests.push(test.info); } else { - const { diagnostics, destructiveChanges } = runner.testSnapshot(options); + const { diagnostics, destructiveChanges } = await runner.testSnapshot(options); if (diagnostics.length > 0) { diagnostics.forEach(diagnostic => workerpool.workerEmit({ ...diagnostic, diff --git a/packages/@aws-cdk/integ-runner/package.json b/packages/@aws-cdk/integ-runner/package.json index a147f49ab..f5192b0ec 100644 --- a/packages/@aws-cdk/integ-runner/package.json +++ b/packages/@aws-cdk/integ-runner/package.json @@ -45,30 +45,31 @@ "@types/yargs": "^17.0.33", "@typescript-eslint/eslint-plugin": "^8", "@typescript-eslint/parser": "^8", - "aws-cdk-lib": "^2.200.1", + "aws-cdk-lib": "^2.201.0", "commit-and-tag-version": "^12", "constructs": "^10", "eslint": "^9", "eslint-config-prettier": "^10.1.5", "eslint-import-resolver-typescript": "^4.4.3", "eslint-plugin-import": "^2.31.0", - "eslint-plugin-jest": "^28.13.0", - "eslint-plugin-jsdoc": "^50.7.1", + "eslint-plugin-jest": "^28.14.0", + "eslint-plugin-jsdoc": "^50.8.0", "eslint-plugin-prettier": "^5.4.1", "jest": "^29.7.0", "jest-junit": "^16", "license-checker": "^25.0.1", "mock-fs": "^5", "prettier": "^2.8", - "ts-jest": "^29.3.4", + "ts-jest": "^29.4.0", "typescript": "5.6" }, "dependencies": { - "@aws-cdk/aws-service-spec": "^0.1.80", + "@aws-cdk/aws-service-spec": "^0.1.82", "@aws-cdk/cdk-cli-wrapper": "^0.0.0", "@aws-cdk/cloud-assembly-schema": "^0.0.0", "@aws-cdk/cloudformation-diff": "^0.0.0", - "@aws-cdk/cx-api": "^2.200.1", + "@aws-cdk/cx-api": "^2.201.0", + "@aws-cdk/toolkit-lib": "^0.0.0", "@aws-sdk/client-cloudformation": "^3", "aws-cdk": "^0.0.0", "cdk-assets": "^0.0.0", diff --git a/packages/@aws-cdk/integ-runner/test/helpers.ts b/packages/@aws-cdk/integ-runner/test/helpers.ts index 18556bdc6..db2774a93 100644 --- a/packages/@aws-cdk/integ-runner/test/helpers.ts +++ b/packages/@aws-cdk/integ-runner/test/helpers.ts @@ -1,25 +1,33 @@ import type { ChildProcess } from 'child_process'; import { Readable, Writable } from 'stream'; -import type { CdkCliWrapperOptions, DeployOptions, DestroyOptions, ICdk, ListOptions, SynthFastOptions, SynthOptions } from '@aws-cdk/cdk-cli-wrapper'; -import { CdkCliWrapper } from '@aws-cdk/cdk-cli-wrapper'; +import type { CdkCliWrapperOptions, DeployOptions, ICdk, ListOptions, SynthFastOptions, SynthOptions } from '@aws-cdk/cdk-cli-wrapper'; +import type { DestroyOptions } from '@aws-cdk/cloud-assembly-schema/lib/integ-tests'; import { IntegSnapshotRunner, IntegTest } from '../lib/runner'; import type { DestructiveChange, Diagnostic } from '../lib/workers'; export interface MockCdkMocks { - deploy?: jest.MockedFn<(options: DeployOptions) => void>; - watch?: jest.MockedFn<(options: DeployOptions) => ChildProcess>; - synth?: jest.MockedFn<(options: SynthOptions) => void>; - synthFast?: jest.MockedFn<(options: SynthFastOptions) => void>; - destroy?: jest.MockedFn<(options: DestroyOptions) => void>; - list?: jest.MockedFn<(options: ListOptions) => string>; + deploy?: jest.MockedFn<(options: DeployOptions) => Promise>; + watch?: jest.MockedFn<(options: DeployOptions) => Promise>; + synth?: jest.MockedFn<(options: SynthOptions) => Promise>; + synthFast?: jest.MockedFn<(options: SynthFastOptions) => Promise>; + destroy?: jest.MockedFn<(options: DestroyOptions) => Promise>; + list?: jest.MockedFn<(options: ListOptions) => Promise>; } export class MockCdkProvider { public readonly cdk: ICdk; public readonly mocks: MockCdkMocks = {}; - constructor(options: CdkCliWrapperOptions) { - this.cdk = new CdkCliWrapper(options); + constructor(_options: CdkCliWrapperOptions) { + this.cdk = { + deploy: jest.fn().mockImplementation(), + watch: jest.fn().mockImplementation(), + synth: jest.fn().mockImplementation(), + synthFast: jest.fn().mockImplementation(), + destroy: jest.fn().mockImplementation(), + list: jest.fn().mockResolvedValue([]), + }; + this.mockAll(); } public mockDeploy(mock?: MockCdkMocks['deploy']) { @@ -27,26 +35,10 @@ export class MockCdkProvider { this.cdk.deploy = this.mocks.deploy; } public mockWatch(mock?: MockCdkMocks['watch']) { - this.mocks.watch = mock ?? jest.fn().mockImplementation(jest.fn(() => { - return { - on: (_event: 'close', listener: (..._args: any[]) => void) => { - listener(0); - }, - stdout: new Readable({ - read: jest.fn(() => { - }), - }), - stderr: new Readable({ - read: jest.fn(() => { - }), - }), - stdin: new Writable({ - write: jest.fn(() => { - }), - final: jest.fn(() => { - }), - }), - } as unknown as ChildProcess; + this.mocks.watch = mock ?? jest.fn().mockImplementation(jest.fn((_args, events) => { + if (events.onClose) { + events.onClose(0); + } })); this.cdk.watch = this.mocks.watch; } @@ -63,7 +55,7 @@ export class MockCdkProvider { this.cdk.destroy = this.mocks.destroy; } public mockList(mock?: MockCdkMocks['list']) { - this.mocks.list = mock ?? jest.fn().mockImplementation(); + this.mocks.list = mock ?? jest.fn().mockResolvedValue([]); this.cdk.list = this.mocks.list; } public mockAll(mocks: MockCdkMocks = {}): Required { @@ -83,10 +75,10 @@ export class MockCdkProvider { * @param actualSnapshot - The directory of the snapshot that is used for of the actual (current) app * @returns Diagnostics as they would be returned by testSnapshot */ - public snapshotTest(integTestFile: string, actualSnapshot?: string): { + public async snapshotTest(integTestFile: string, actualSnapshot?: string): Promise<{ diagnostics: Diagnostic[]; destructiveChanges: DestructiveChange[]; - } { + }> { // WHEN const integTest = new IntegSnapshotRunner({ cdk: this.cdk, @@ -96,8 +88,8 @@ export class MockCdkProvider { }), integOutDir: actualSnapshot ? 'test/test-data/' + actualSnapshot : undefined, }); - integTest.actualTests(); - const results = integTest.testSnapshot(); + // await integTest.actualTests(); + const results = await integTest.testSnapshot(); // THEN expect(this.mocks.synthFast).toHaveBeenCalledTimes(2); diff --git a/packages/@aws-cdk/integ-runner/test/runner/integ-test-runner.test.ts b/packages/@aws-cdk/integ-runner/test/runner/integ-test-runner.test.ts index 82cbef77b..93caf2a34 100644 --- a/packages/@aws-cdk/integ-runner/test/runner/integ-test-runner.test.ts +++ b/packages/@aws-cdk/integ-runner/test/runner/integ-test-runner.test.ts @@ -12,7 +12,7 @@ let spawnSyncMock: jest.SpyInstance; let removeSyncMock: jest.SpyInstance; beforeEach(() => { cdkMock = new MockCdkProvider({ directory: 'test/test-data' }); - cdkMock.mockAll().list.mockImplementation(() => 'stackabc'); + cdkMock.mockList(jest.fn().mockImplementation(() => ['stackabc'])); jest.spyOn(Manifest, 'saveIntegManifest').mockImplementation(); spawnSyncMock = jest.spyOn(child_process, 'spawnSync').mockReturnValue({ @@ -43,7 +43,7 @@ afterEach(() => { }); describe('IntegTest runIntegTests', () => { - test('with defaults', () => { + test('with defaults', async () => { // WHEN const integTest = new IntegTestRunner({ cdk: cdkMock.cdk, @@ -52,7 +52,7 @@ describe('IntegTest runIntegTests', () => { discoveryRoot: 'test/test-data', }), }); - integTest.runIntegTestCase({ + await integTest.runIntegTestCase({ testCaseName: 'xxxxx.test-with-snapshot', }); @@ -108,7 +108,7 @@ describe('IntegTest runIntegTests', () => { }); }); - test('no snapshot', () => { + test('no snapshot', async () => { // WHEN const integTest = new IntegTestRunner({ cdk: cdkMock.cdk, @@ -117,7 +117,7 @@ describe('IntegTest runIntegTests', () => { discoveryRoot: 'test/test-data', }), }); - integTest.runIntegTestCase({ + await integTest.runIntegTestCase({ testCaseName: 'xxxxx.integ-test1', }); @@ -151,7 +151,7 @@ describe('IntegTest runIntegTests', () => { }); }); - test('with lookups', () => { + test('with lookups', async () => { // WHEN const integTest = new IntegTestRunner({ cdk: cdkMock.cdk, @@ -160,7 +160,7 @@ describe('IntegTest runIntegTests', () => { discoveryRoot: 'test/test-data', }), }); - integTest.runIntegTestCase({ + await integTest.runIntegTestCase({ testCaseName: 'xxxxx.test-with-snapshot-assets-diff', }); @@ -209,7 +209,7 @@ describe('IntegTest runIntegTests', () => { }); }); - test('with an assertion stack', () => { + test('with an assertion stack', async () => { // WHEN const integTest = new IntegTestRunner({ cdk: cdkMock.cdk, @@ -218,7 +218,7 @@ describe('IntegTest runIntegTests', () => { discoveryRoot: 'test/test-data', }), }); - integTest.runIntegTestCase({ + await integTest.runIntegTestCase({ testCaseName: 'xxxxx.test-with-snapshot', }); @@ -255,7 +255,7 @@ describe('IntegTest runIntegTests', () => { }); }); - test('no clean', () => { + test('no clean', async () => { // WHEN const integTest = new IntegTestRunner({ cdk: cdkMock.cdk, @@ -264,7 +264,7 @@ describe('IntegTest runIntegTests', () => { discoveryRoot: 'test/test-data', }), }); - integTest.runIntegTestCase({ + await integTest.runIntegTestCase({ testCaseName: 'xxxxx.integ-test1', clean: false, }); @@ -275,7 +275,7 @@ describe('IntegTest runIntegTests', () => { expect(cdkMock.mocks.synthFast).toHaveBeenCalledTimes(1); }); - test('dryrun', () => { + test('dryrun', async () => { // WHEN const integTest = new IntegTestRunner({ cdk: cdkMock.cdk, @@ -284,7 +284,7 @@ describe('IntegTest runIntegTests', () => { discoveryRoot: 'test/test-data', }), }); - integTest.runIntegTestCase({ + await integTest.runIntegTestCase({ testCaseName: 'xxxxx.integ-test1', dryRun: true, }); @@ -295,15 +295,16 @@ describe('IntegTest runIntegTests', () => { expect(cdkMock.mocks.synthFast).toHaveBeenCalledTimes(2); }); - test('generate snapshot', () => { + test('generate snapshot', async () => { // WHEN - new IntegTestRunner({ + const runner = new IntegTestRunner({ cdk: cdkMock.cdk, test: new IntegTest({ fileName: 'test/test-data/xxxxx.integ-test1.js', discoveryRoot: 'test/test-data', }), }); + await runner.actualTests(); // THEN expect(cdkMock.mocks.synthFast).toHaveBeenCalledTimes(1); @@ -317,7 +318,7 @@ describe('IntegTest runIntegTests', () => { }); }); - test('with profile', () => { + test('with profile', async () => { // WHEN const integTest = new IntegTestRunner({ cdk: cdkMock.cdk, @@ -327,7 +328,7 @@ describe('IntegTest runIntegTests', () => { }), profile: 'test-profile', }); - integTest.runIntegTestCase({ + await integTest.runIntegTestCase({ testCaseName: 'xxxxx.integ-test1', }); @@ -368,7 +369,7 @@ describe('IntegTest runIntegTests', () => { }); }); - test('with hooks', () => { + test('with hooks', async () => { const integTest = new IntegTestRunner({ cdk: cdkMock.cdk, test: new IntegTest({ @@ -376,7 +377,7 @@ describe('IntegTest runIntegTests', () => { discoveryRoot: 'test/test-data', }), }); - integTest.runIntegTestCase({ + await integTest.runIntegTestCase({ testCaseName: 'xxxxx.test-with-snapshot-assets', }); @@ -403,7 +404,7 @@ describe('IntegTest runIntegTests', () => { ])); }); - test('git is used to checkout latest snapshot', () => { + test('git is used to checkout latest snapshot', async () => { // GIVEN spawnSyncMock = jest.spyOn(child_process, 'spawnSync').mockReturnValueOnce({ status: 0, @@ -429,7 +430,7 @@ describe('IntegTest runIntegTests', () => { discoveryRoot: 'test/test-data', }), }); - integTest.runIntegTestCase({ + await integTest.runIntegTestCase({ testCaseName: 'xxxxx.test-with-snapshot', }); @@ -447,7 +448,7 @@ describe('IntegTest runIntegTests', () => { ])); }); - test('git is used and cannot determine origin', () => { + test('git is used and cannot determine origin', async () => { // GIVEN spawnSyncMock = jest.spyOn(child_process, 'spawnSync').mockReturnValueOnce({ status: 1, @@ -469,7 +470,7 @@ describe('IntegTest runIntegTests', () => { discoveryRoot: 'test/test-data', }), }); - integTest.runIntegTestCase({ + await integTest.runIntegTestCase({ testCaseName: 'xxxxx.test-with-snapshot', }); @@ -481,7 +482,7 @@ describe('IntegTest runIntegTests', () => { ])); }); - test('git is used and cannot checkout snapshot', () => { + test('git is used and cannot checkout snapshot', async () => { // GIVEN spawnSyncMock = jest.spyOn(child_process, 'spawnSync').mockReturnValueOnce({ status: 0, @@ -510,7 +511,7 @@ describe('IntegTest runIntegTests', () => { discoveryRoot: 'test/test-data', }), }); - integTest.runIntegTestCase({ + await integTest.runIntegTestCase({ testCaseName: 'xxxxx.test-with-snapshot', }); @@ -522,7 +523,7 @@ describe('IntegTest runIntegTests', () => { ])); }); - test('with assets manifest, assets are removed if stackUpdateWorkflow is disabled', () => { + test('with assets manifest, assets are removed if stackUpdateWorkflow is disabled', async () => { const integTest = new IntegTestRunner({ cdk: cdkMock.cdk, test: new IntegTest({ @@ -530,7 +531,7 @@ describe('IntegTest runIntegTests', () => { discoveryRoot: 'test/test-data', }), }); - integTest.runIntegTestCase({ + await integTest.runIntegTestCase({ testCaseName: 'xxxxx.test-with-snapshot-assets', }); @@ -544,7 +545,7 @@ describe('IntegTest runIntegTests', () => { ]); }); - test('with assembly manifest, assets are removed if stackUpdateWorkflow is disabled', () => { + test('with assembly manifest, assets are removed if stackUpdateWorkflow is disabled', async () => { const integTest = new IntegTestRunner({ cdk: cdkMock.cdk, test: new IntegTest({ @@ -552,7 +553,7 @@ describe('IntegTest runIntegTests', () => { discoveryRoot: 'test/test-data', }), }); - integTest.runIntegTestCase({ + await integTest.runIntegTestCase({ testCaseName: 'xxxxx.test-with-snapshot-assets-diff', }); @@ -571,7 +572,7 @@ describe('IntegTest runIntegTests', () => { ${2} | ${undefined} | ${undefined} ${3} | ${true} | ${undefined} ${4} | ${true} | ${true} -`('with verbosity set to $verbosity', ({ verbosity, verbose, debug }) => { +`('with verbosity set to $verbosity', async ({ verbosity, verbose, debug }) => { // WHEN const integTest = new IntegTestRunner({ cdk: cdkMock.cdk, @@ -580,7 +581,7 @@ describe('IntegTest runIntegTests', () => { discoveryRoot: 'test/test-data', }), }); - integTest.runIntegTestCase({ + await integTest.runIntegTestCase({ testCaseName: 'xxxxx.test-with-snapshot', verbosity: verbosity, }); @@ -600,7 +601,7 @@ describe('IntegTest runIntegTests', () => { })); }); - test('with custom app run command', () => { + test('with custom app run command', async () => { // WHEN const integTest = new IntegTestRunner({ cdk: cdkMock.cdk, @@ -610,7 +611,7 @@ describe('IntegTest runIntegTests', () => { appCommand: 'node --no-warnings {filePath}', }), }); - integTest.runIntegTestCase({ + await integTest.runIntegTestCase({ testCaseName: 'xxxxx.test-with-snapshot', }); @@ -655,7 +656,7 @@ describe('IntegTest watchIntegTest', () => { traceLogs: false, deploymentMethod: 'direct', verbose: undefined, - })); + }), expect.anything()); }); test('verbose watch', async () => { @@ -683,20 +684,23 @@ describe('IntegTest watchIntegTest', () => { traceLogs: true, deploymentMethod: 'direct', verbose: undefined, - })); + }), expect.anything()); }); - test('with error', () => { - expect(() => { - // WHEN - new IntegTestRunner({ + test('with error', async () => { + await expect(async () => { + // GIVEN + const runner = new IntegTestRunner({ cdk: cdkMock.cdk, test: new IntegTest({ fileName: 'test/test-data/xxxxx.test-with-error.js', discoveryRoot: 'test/test-data', }), }); + // WHEN + await runner.actualTests(); + // THEN - }).toThrow('xxxxx.test-with-error is a new test. Please use the IntegTest construct to configure the test\nhttps://github.com/aws/aws-cdk/tree/main/packages/%40aws-cdk/integ-tests-alpha'); + }).rejects.toThrow('xxxxx.test-with-error is a new test. Please use the IntegTest construct to configure the test\nhttps://github.com/aws/aws-cdk/tree/main/packages/%40aws-cdk/integ-tests-alpha'); }); }); diff --git a/packages/@aws-cdk/integ-runner/test/runner/integ-test-suite.test.ts b/packages/@aws-cdk/integ-runner/test/runner/integ-test-suite.test.ts index 929b35405..144661d92 100644 --- a/packages/@aws-cdk/integ-runner/test/runner/integ-test-suite.test.ts +++ b/packages/@aws-cdk/integ-runner/test/runner/integ-test-suite.test.ts @@ -138,18 +138,18 @@ describe('Legacy Integration test cases', () => { jest.restoreAllMocks(); }); - test('basic manifest', () => { + test('basic manifest', async () => { // GIVEN mockfs({ [testsFile]: '/// !cdk-integ test-stack', }); listMock = jest.fn().mockImplementation(() => { - return 'stackabc'; + return ['stackabc']; }); cdkMock.mockList(listMock); // WHEN - const testCases = LegacyIntegTestSuite.fromLegacy({ + const testCases = await LegacyIntegTestSuite.fromLegacy({ cdk: cdkMock.cdk, testName: 'test', listOptions: {}, @@ -171,18 +171,18 @@ describe('Legacy Integration test cases', () => { }); }); - test('manifest with pragma', () => { + test('manifest with pragma', async () => { // GIVEN mockfs({ [testsFile]: '/// !cdk-integ test-stack pragma:enable-lookups pragma:disable-update-workflow pragma:include-assets-hashes', }); listMock = jest.fn().mockImplementation(() => { - return 'stackabc'; + return ['stackabc']; }); cdkMock.mockList(listMock); // WHEN - const testCases = LegacyIntegTestSuite.fromLegacy({ + const testCases = await LegacyIntegTestSuite.fromLegacy({ cdk: cdkMock.cdk, testName: 'test', listOptions: {}, @@ -204,18 +204,18 @@ describe('Legacy Integration test cases', () => { }); }); - test('manifest with no pragma', () => { + test('manifest with no pragma', async () => { // GIVEN mockfs({ [testsFile]: '', }); listMock = jest.fn().mockImplementation(() => { - return 'stackabc'; + return ['stackabc']; }); cdkMock.mockList(listMock); // WHEN - const testCases = LegacyIntegTestSuite.fromLegacy({ + const testCases = await LegacyIntegTestSuite.fromLegacy({ cdk: cdkMock.cdk, testName: 'test', listOptions: {}, @@ -237,25 +237,23 @@ describe('Legacy Integration test cases', () => { }); }); - test('manifest with no pragma and multiple stack throws', () => { + test('manifest with no pragma and multiple stack throws', async () => { // GIVEN mockfs({ [testsFile]: '', }); listMock = jest.fn().mockImplementation(() => { - return 'stack1\nstack2'; + return ['stack1', 'stack2']; }); cdkMock.mockList(listMock); // THEN - expect(() => { - LegacyIntegTestSuite.fromLegacy({ - cdk: cdkMock.cdk, - testName: 'test', - listOptions: {}, - integSourceFilePath: testsFile, - }); - }).toThrow(); + await expect(() => LegacyIntegTestSuite.fromLegacy({ + cdk: cdkMock.cdk, + testName: 'test', + listOptions: {}, + integSourceFilePath: testsFile, + })).rejects.toThrow(); }); test('can get context from pragma', () => { diff --git a/packages/@aws-cdk/integ-runner/test/runner/snapshot-test-runner.test.ts b/packages/@aws-cdk/integ-runner/test/runner/snapshot-test-runner.test.ts index 5303a8379..49b61d9e0 100644 --- a/packages/@aws-cdk/integ-runner/test/runner/snapshot-test-runner.test.ts +++ b/packages/@aws-cdk/integ-runner/test/runner/snapshot-test-runner.test.ts @@ -18,7 +18,7 @@ afterAll(() => { beforeEach(() => { cdkMock = new MockCdkProvider({ directory: 'test/test-data' }); - cdkMock.mockAll().list.mockImplementation(() => 'stackabc'); + cdkMock.mockList(jest.fn().mockImplementation(() => ['stackabc'])); jest.spyOn(child_process, 'spawnSync').mockImplementation(); jest.spyOn(process.stderr, 'write').mockImplementation(() => { @@ -50,17 +50,17 @@ afterEach(() => { }); describe('IntegTest runSnapshotTests', () => { - test('with defaults no diff', () => { + test('with defaults no diff', async () => { // WHEN - const results = cdkMock.snapshotTest('xxxxx.test-with-snapshot.js', 'xxxxx.test-with-snapshot.js.snapshot'); + const results = await cdkMock.snapshotTest('xxxxx.test-with-snapshot.js', 'xxxxx.test-with-snapshot.js.snapshot'); // THEN expect(results.diagnostics).toEqual([]); }); - test('new stack in actual', () => { + test('new stack in actual', async () => { // WHEN - const results = cdkMock.snapshotTest('xxxxx.test-with-snapshot.js'); + const results = await cdkMock.snapshotTest('xxxxx.test-with-snapshot.js'); // THEN expect(results.diagnostics).toEqual(expect.arrayContaining([expect.objectContaining({ @@ -70,9 +70,9 @@ describe('IntegTest runSnapshotTests', () => { })])); }); - test('with defaults and diff', () => { + test('with defaults and diff', async () => { // WHEN - const results = cdkMock.snapshotTest('xxxxx.test-with-snapshot.js', 'xxxxx.test-with-snapshot-diff.js.snapshot'); + const results = await cdkMock.snapshotTest('xxxxx.test-with-snapshot.js', 'xxxxx.test-with-snapshot-diff.js.snapshot'); // THEN expect(results.diagnostics).toEqual(expect.arrayContaining([ @@ -95,17 +95,17 @@ describe('IntegTest runSnapshotTests', () => { }]); }); - test('dont diff new asset hashes', () => { + test('dont diff new asset hashes', async () => { // WHEN - const results = cdkMock.snapshotTest('xxxxx.test-with-new-assets-diff.js', 'cdk-integ.out.xxxxx.test-with-new-assets.js.snapshot'); + const results = await cdkMock.snapshotTest('xxxxx.test-with-new-assets-diff.js', 'cdk-integ.out.xxxxx.test-with-new-assets.js.snapshot'); // THEN expect(results.diagnostics).toEqual([]); }); - test('diff new asset hashes', () => { + test('diff new asset hashes', async () => { // WHEN - const results = cdkMock.snapshotTest('xxxxx.test-with-new-assets.js', 'cdk-integ.out.xxxxx.test-with-new-assets-diff.js.snapshot'); + const results = await cdkMock.snapshotTest('xxxxx.test-with-new-assets.js', 'cdk-integ.out.xxxxx.test-with-new-assets-diff.js.snapshot'); // THEN expect(results.diagnostics).toEqual(expect.arrayContaining([expect.objectContaining({ @@ -123,9 +123,9 @@ describe('IntegTest runSnapshotTests', () => { }); describe('Nested Stacks', () => { - test('it will compare snapshots for nested stacks', () => { + test('it will compare snapshots for nested stacks', async () => { // WHEN - const results = cdkMock.snapshotTest('xxxxx.test-with-nested-stack.js', 'xxxxx.test-with-nested-stack-changed.js.snapshot'); + const results = await cdkMock.snapshotTest('xxxxx.test-with-nested-stack.js', 'xxxxx.test-with-nested-stack-changed.js.snapshot'); // THEN expect(results.diagnostics).toEqual(expect.arrayContaining([expect.objectContaining({ @@ -137,9 +137,9 @@ describe('IntegTest runSnapshotTests', () => { })])); }); - test('it will diff assets for nested stacks', () => { + test('it will diff assets for nested stacks', async () => { // WHEN - const results = cdkMock.snapshotTest('xxxxx.test-with-nested-stack.js', 'xxxxx.test-with-asset-in-nested-stack.js.snapshot'); + const results = await cdkMock.snapshotTest('xxxxx.test-with-nested-stack.js', 'xxxxx.test-with-asset-in-nested-stack.js.snapshot'); // THEN expect(results.diagnostics).toEqual(expect.arrayContaining([expect.objectContaining({ @@ -153,9 +153,9 @@ describe('IntegTest runSnapshotTests', () => { }); describe('Legacy parameter based assets ', () => { - test('diff asset hashes', () => { + test('diff asset hashes', async () => { // WHEN - const results = cdkMock.snapshotTest('xxxxx.test-with-snapshot-assets.js', 'xxxxx.test-with-snapshot-assets-diff.js.snapshot'); + const results = await cdkMock.snapshotTest('xxxxx.test-with-snapshot-assets.js', 'xxxxx.test-with-snapshot-assets-diff.js.snapshot'); // THEN expect(results.diagnostics).toEqual(expect.arrayContaining([expect.objectContaining({ @@ -166,9 +166,9 @@ describe('IntegTest runSnapshotTests', () => { })])); }); - test('dont diff asset hashes', () => { + test('dont diff asset hashes', async () => { // WHEN - const results = cdkMock.snapshotTest('xxxxx.test-with-snapshot-assets-diff.js', 'xxxxx.test-with-snapshot-assets.js.snapshot'); + const results = await cdkMock.snapshotTest('xxxxx.test-with-snapshot-assets-diff.js', 'xxxxx.test-with-snapshot-assets.js.snapshot'); // THEN expect(results.diagnostics).toEqual([]); @@ -176,7 +176,7 @@ describe('IntegTest runSnapshotTests', () => { }); describe('Legacy Integ Tests', () => { - test('determine test stack via pragma', () => { + test('determine test stack via pragma', async () => { // WHEN const integTest = new IntegSnapshotRunner({ cdk: cdkMock.cdk, @@ -188,7 +188,7 @@ describe('IntegTest runSnapshotTests', () => { }); // THEN - expect(integTest.actualTests()).toEqual(expect.objectContaining({ + expect(await integTest.actualTests()).toEqual(expect.objectContaining({ 'xxxxx.integ-test1': { diffAssets: false, stackUpdateWorkflow: true, @@ -210,7 +210,7 @@ describe('IntegTest runSnapshotTests', () => { }); // THEN - expect(integTest.actualTests()).toEqual(expect.objectContaining({ + expect(await integTest.actualTests()).toEqual(expect.objectContaining({ 'xxxxx.integ-test2': { diffAssets: false, stackUpdateWorkflow: true, diff --git a/packages/@aws-cdk/integ-runner/test/workers/integ-worker.test.ts b/packages/@aws-cdk/integ-runner/test/workers/integ-worker.test.ts index 0f82c7e50..977d29fbe 100644 --- a/packages/@aws-cdk/integ-runner/test/workers/integ-worker.test.ts +++ b/packages/@aws-cdk/integ-runner/test/workers/integ-worker.test.ts @@ -89,13 +89,13 @@ afterAll(async () => { }); describe('test runner', () => { - test('no snapshot', () => { + test('no snapshot', async () => { // WHEN const test = { fileName: 'test/test-data/xxxxx.integ-test1.js', discoveryRoot: 'test/test-data', }; - integTestWorker({ + await integTestWorker({ tests: [test], region: 'us-east-1', }); @@ -112,7 +112,7 @@ describe('test runner', () => { ); }); - test('legacy test throws', () => { + test('legacy test throws', async () => { // WHEN const test = { fileName: 'test/test-data/xxxxx.integ-test2.js', @@ -129,7 +129,7 @@ describe('test runner', () => { }); // GIVEN - const results = integTestWorker({ + const results = await integTestWorker({ tests: [test], region: 'us-east-1', }); @@ -141,13 +141,13 @@ describe('test runner', () => { }]); }); - test('has snapshot', () => { + test('has snapshot', async () => { // WHEN const test = { fileName: 'test/test-data/xxxxx.test-with-snapshot.js', discoveryRoot: 'test/test-data', }; - const results = integTestWorker({ + const results = await integTestWorker({ tests: [test], region: 'us-east-3', }); @@ -179,7 +179,7 @@ describe('test runner', () => { expect(results).toEqual([]); }); - test('deploy failed', () => { + test('deploy failed', async () => { // WHEN const test = { fileName: 'test/test-data/xxxxx.test-with-snapshot.js', @@ -193,7 +193,7 @@ describe('test runner', () => { output: ['stdout', 'stderr'], signal: null, }); - const results = integTestWorker({ + const results = await integTestWorker({ tests: [test], region: 'us-east-1', }); diff --git a/packages/@aws-cdk/integ-runner/test/workers/mock-extract_worker.ts b/packages/@aws-cdk/integ-runner/test/workers/mock-extract_worker.ts index 5d390a13b..32d1cf4de 100644 --- a/packages/@aws-cdk/integ-runner/test/workers/mock-extract_worker.ts +++ b/packages/@aws-cdk/integ-runner/test/workers/mock-extract_worker.ts @@ -2,7 +2,7 @@ import * as workerpool from 'workerpool'; import type { IntegTestInfo } from '../../lib/runner'; import type { IntegTestBatchRequest } from '../../lib/workers/integ-test-worker'; -function integTestWorker(request: IntegTestBatchRequest): IntegTestInfo[] { +async function integTestWorker(request: IntegTestBatchRequest): Promise { return request.tests; } diff --git a/packages/@aws-cdk/integ-runner/test/workers/snapshot-worker.test.ts b/packages/@aws-cdk/integ-runner/test/workers/snapshot-worker.test.ts index f166dddbf..853269244 100644 --- a/packages/@aws-cdk/integ-runner/test/workers/snapshot-worker.test.ts +++ b/packages/@aws-cdk/integ-runner/test/workers/snapshot-worker.test.ts @@ -27,39 +27,39 @@ afterEach(() => { const directory = path.join(__dirname, '..', 'test-data'); describe('Snapshot tests', () => { - test('no snapshot', () => { + test('no snapshot', async () => { // WHEN const test = { fileName: path.join(directory, 'xxxxx.integ-test1.js'), discoveryRoot: directory, }; - const result = snapshotTestWorker(test); + const result = await snapshotTestWorker(test); // THEN expect(result.length).toEqual(1); expect(result[0]).toEqual(test); }); - test('has snapshot', () => { + test('has snapshot', async () => { // WHEN const test = { fileName: path.join(directory, 'xxxxx.test-with-snapshot.js'), discoveryRoot: directory, }; - const result = snapshotTestWorker(test); + const result = await snapshotTestWorker(test); // THEN expect(result.length).toEqual(1); }); - test('failed snapshot', () => { + test('failed snapshot', async () => { // WHEN const test = { fileName: path.join(directory, 'xxxxx.test-with-snapshot-assets-diff.js'), discoveryRoot: directory, destructiveChanges: [], }; - const result = snapshotTestWorker(test); + const result = await snapshotTestWorker(test); // THEN expect(result.length).toEqual(1); diff --git a/packages/@aws-cdk/integ-runner/tsconfig.dev.json b/packages/@aws-cdk/integ-runner/tsconfig.dev.json index 3fb9f8e25..87111cab2 100644 --- a/packages/@aws-cdk/integ-runner/tsconfig.dev.json +++ b/packages/@aws-cdk/integ-runner/tsconfig.dev.json @@ -8,8 +8,7 @@ "inlineSourceMap": true, "inlineSources": true, "lib": [ - "es2020", - "dom" + "es2020" ], "module": "commonjs", "noEmitOnError": false, @@ -27,6 +26,7 @@ "target": "ES2020", "incremental": true, "skipLibCheck": true, + "isolatedModules": true, "composite": true, "outDir": "lib" }, @@ -52,6 +52,9 @@ }, { "path": "../cloudformation-diff" + }, + { + "path": "../toolkit-lib" } ] } diff --git a/packages/@aws-cdk/integ-runner/tsconfig.json b/packages/@aws-cdk/integ-runner/tsconfig.json index 5a9c6f5a7..972bd7e3c 100644 --- a/packages/@aws-cdk/integ-runner/tsconfig.json +++ b/packages/@aws-cdk/integ-runner/tsconfig.json @@ -10,8 +10,7 @@ "inlineSourceMap": true, "inlineSources": true, "lib": [ - "es2020", - "dom" + "es2020" ], "module": "commonjs", "noEmitOnError": false, @@ -29,6 +28,7 @@ "target": "ES2020", "incremental": true, "skipLibCheck": true, + "isolatedModules": true, "composite": true }, "include": [ @@ -55,6 +55,9 @@ }, { "path": "../cloudformation-diff" + }, + { + "path": "../toolkit-lib" } ] } diff --git a/packages/@aws-cdk/node-bundle/jest.config.json b/packages/@aws-cdk/node-bundle/jest.config.json index 57a049e38..16d45feb1 100644 --- a/packages/@aws-cdk/node-bundle/jest.config.json +++ b/packages/@aws-cdk/node-bundle/jest.config.json @@ -59,8 +59,7 @@ "^.+\\.[t]sx?$": [ "ts-jest", { - "tsconfig": "tsconfig.dev.json", - "isolatedModules": true + "tsconfig": "tsconfig.dev.json" } ] }, diff --git a/packages/@aws-cdk/node-bundle/package.json b/packages/@aws-cdk/node-bundle/package.json index b76741dbc..77e824819 100644 --- a/packages/@aws-cdk/node-bundle/package.json +++ b/packages/@aws-cdk/node-bundle/package.json @@ -47,14 +47,14 @@ "eslint-config-prettier": "^10.1.5", "eslint-import-resolver-typescript": "^3.10.1", "eslint-plugin-import": "^2.31.0", - "eslint-plugin-jest": "^28.13.0", - "eslint-plugin-jsdoc": "^50.7.1", + "eslint-plugin-jest": "^28.14.0", + "eslint-plugin-jsdoc": "^50.8.0", "eslint-plugin-prettier": "^5.4.1", "jest": "^29.7.0", "jest-junit": "^16", "prettier": "^2.8", "standard-version": "^9.5.0", - "ts-jest": "^29.3.4", + "ts-jest": "^29.4.0", "typescript": "5.6" }, "dependencies": { diff --git a/packages/@aws-cdk/node-bundle/src/api/bundle.ts b/packages/@aws-cdk/node-bundle/src/api/bundle.ts index 2db4380f8..a3e7b7317 100644 --- a/packages/@aws-cdk/node-bundle/src/api/bundle.ts +++ b/packages/@aws-cdk/node-bundle/src/api/bundle.ts @@ -113,6 +113,13 @@ export interface BundleProps { * @default false */ readonly minifySyntax?: boolean; + + /** + * Write the metafile into this location. + * + * @default - no metafile is written + */ + readonly metafile?: string; } /** @@ -192,6 +199,7 @@ export class Bundle { private readonly minifyWhitespace?: boolean; private readonly minifyIdentifiers?: boolean; private readonly minifySyntax?: boolean; + private readonly metafile?: string; private _bundle?: esbuild.BuildResult; private _dependencies?: Package[]; @@ -214,6 +222,7 @@ export class Bundle { this.minifyWhitespace = props.minifyWhitespace; this.minifyIdentifiers = props.minifyIdentifiers; this.minifySyntax = props.minifySyntax; + this.metafile = props.metafile; const entryPoints = props.entryPoints ?? (this.manifest.main ? [this.manifest.main] : []); @@ -434,10 +443,10 @@ export class Bundle { const bundle = esbuild.buildSync({ entryPoints: this.entryPoints, bundle: true, - target: 'node14', + target: 'node18', platform: 'node', sourcemap: this.sourcemap, - metafile: true, + metafile: true, // this is always required for some of our validation rules minify: this.minify, minifyWhitespace: this.minifyWhitespace, minifyIdentifiers: this.minifyIdentifiers, @@ -450,6 +459,11 @@ export class Bundle { allowOverwrite: true, }); + // Write metafile only when requested + if (this.metafile) { + fs.writeFileSync(this.metafile, JSON.stringify(bundle.metafile, null, 2)); + } + if (bundle.warnings.length > 0) { // esbuild warnings are usually important, lets try to be strict here. // the warnings themselves are printed on screen. diff --git a/packages/@aws-cdk/node-bundle/src/cli-main.ts b/packages/@aws-cdk/node-bundle/src/cli-main.ts index 2f445f9f2..1b042046f 100644 --- a/packages/@aws-cdk/node-bundle/src/cli-main.ts +++ b/packages/@aws-cdk/node-bundle/src/cli-main.ts @@ -18,6 +18,7 @@ export async function cliMain(cliArgs: string[]) { .option('dont-attribute', { type: 'string', desc: 'Dependencies matching this regular expressions wont be added to the notice file' }) .option('test', { type: 'string', desc: 'Validation command to sanity test the bundle after its created' }) .option('minify-whitespace', { type: 'boolean', default: false, desc: 'Minify whitespace' }) + .option('metafile', { type: 'string', desc: 'Produce a metafile about the build that can be analyzed' }) .command('validate', 'Validate the package is ready for bundling', args => args .option('fix', { type: 'boolean', default: false, alias: 'f', desc: 'Fix any fixable violations' }), ) @@ -83,6 +84,7 @@ export async function cliMain(cliArgs: string[]) { dontAttribute: argv['dont-attribute'], test: argv.test, minifyWhitespace: argv['minify-whitespace'], + metafile: argv.metafile, }; const bundle = new Bundle(props); diff --git a/packages/@aws-cdk/node-bundle/tsconfig.dev.json b/packages/@aws-cdk/node-bundle/tsconfig.dev.json index 7d0394b1d..b0060276c 100644 --- a/packages/@aws-cdk/node-bundle/tsconfig.dev.json +++ b/packages/@aws-cdk/node-bundle/tsconfig.dev.json @@ -26,6 +26,7 @@ "target": "ES2020", "incremental": true, "skipLibCheck": true, + "isolatedModules": true, "composite": true, "outDir": "lib" }, diff --git a/packages/@aws-cdk/node-bundle/tsconfig.json b/packages/@aws-cdk/node-bundle/tsconfig.json index 15be92e41..49a9ebf87 100644 --- a/packages/@aws-cdk/node-bundle/tsconfig.json +++ b/packages/@aws-cdk/node-bundle/tsconfig.json @@ -28,6 +28,7 @@ "target": "ES2020", "incremental": true, "skipLibCheck": true, + "isolatedModules": true, "composite": true }, "include": [ diff --git a/packages/@aws-cdk/toolkit-lib/jest.config.json b/packages/@aws-cdk/toolkit-lib/jest.config.json index 1c85d1ef3..fcfafac2b 100644 --- a/packages/@aws-cdk/toolkit-lib/jest.config.json +++ b/packages/@aws-cdk/toolkit-lib/jest.config.json @@ -47,6 +47,7 @@ ] ], "randomize": true, + "testTimeout": 10000, "setupFilesAfterEnv": [ "/test/_helpers/jest-setup-after-env.ts", "/test/_helpers/jest-custom-matchers.ts" @@ -63,8 +64,7 @@ "^.+\\.[t]sx?$": [ "ts-jest", { - "tsconfig": "tsconfig.dev.json", - "isolatedModules": false + "tsconfig": "tsconfig.dev.json" } ] }, diff --git a/packages/@aws-cdk/toolkit-lib/package.json b/packages/@aws-cdk/toolkit-lib/package.json index f58668fb6..c08ce1537 100644 --- a/packages/@aws-cdk/toolkit-lib/package.json +++ b/packages/@aws-cdk/toolkit-lib/package.json @@ -34,7 +34,7 @@ "organization": true }, "devDependencies": { - "@aws-cdk/aws-service-spec": "^0.1.80", + "@aws-cdk/aws-service-spec": "^0.1.82", "@aws-cdk/cli-plugin-contract": "^0.0.0", "@cdklabs/eslint-plugin": "^1.3.2", "@jest/environment": "^29.7.0", @@ -50,7 +50,7 @@ "@types/split2": "^4.2.3", "@typescript-eslint/eslint-plugin": "^8", "@typescript-eslint/parser": "^8", - "aws-cdk-lib": "^2.200.1", + "aws-cdk-lib": "^2.201.0", "aws-sdk-client-mock": "^4.1.0", "aws-sdk-client-mock-jest": "^4.1.0", "commit-and-tag-version": "^12", @@ -59,8 +59,8 @@ "eslint-config-prettier": "^10.1.5", "eslint-import-resolver-typescript": "^3.10.1", "eslint-plugin-import": "^2.31.0", - "eslint-plugin-jest": "^28.13.0", - "eslint-plugin-jsdoc": "^50.7.1", + "eslint-plugin-jest": "^28.14.0", + "eslint-plugin-jsdoc": "^50.8.0", "eslint-plugin-prettier": "^5.4.1", "fast-check": "^4.1.1", "jest": "^29.7.0", @@ -70,7 +70,7 @@ "license-checker": "^25.0.1", "nock": "13", "prettier": "^2.8", - "ts-jest": "^29.3.4", + "ts-jest": "^29.4.0", "typescript": "5.6", "xml-js": "^1.6.11" }, @@ -109,12 +109,12 @@ "@smithy/util-waiter": "^4.0.5", "archiver": "^7.0.1", "cdk-assets": "^0.0.0", - "cdk-from-cfn": "^0.220.0", + "cdk-from-cfn": "^0.222.0", "chalk": "^4", "chokidar": "^3", "fs-extra": "^9", - "glob": "^11.0.2", - "minimatch": "10.0.1", + "glob": "^11.0.3", + "minimatch": "10.0.3", "p-limit": "^3", "semver": "^7.7.2", "split2": "^4.2.0", diff --git a/packages/@aws-cdk/toolkit-lib/test/actions/deploy-hotswap.test.ts b/packages/@aws-cdk/toolkit-lib/test/actions/deploy-hotswap.test.ts index 5eb203dde..243b27a4e 100644 --- a/packages/@aws-cdk/toolkit-lib/test/actions/deploy-hotswap.test.ts +++ b/packages/@aws-cdk/toolkit-lib/test/actions/deploy-hotswap.test.ts @@ -1,8 +1,6 @@ import { Toolkit } from '../../lib/toolkit'; import { builderFixture, TestIoHost } from '../_helpers'; -jest.setTimeout(10_000); - const ioHost = new TestIoHost(); const toolkit = new Toolkit({ ioHost }); diff --git a/packages/@aws-cdk/toolkit-lib/test/actions/deploy-trace-logs.test.ts b/packages/@aws-cdk/toolkit-lib/test/actions/deploy-trace-logs.test.ts index 9483ea4fc..8039bbd57 100644 --- a/packages/@aws-cdk/toolkit-lib/test/actions/deploy-trace-logs.test.ts +++ b/packages/@aws-cdk/toolkit-lib/test/actions/deploy-trace-logs.test.ts @@ -5,8 +5,6 @@ import { Toolkit } from '../../lib/toolkit'; import { TestIoHost, builderFixture } from '../_helpers'; import { MockSdk } from '../_helpers/mock-sdk'; -jest.setTimeout(10_000); - let ioHost: TestIoHost; let toolkit: Toolkit; diff --git a/packages/@aws-cdk/toolkit-lib/test/actions/deploy.test.ts b/packages/@aws-cdk/toolkit-lib/test/actions/deploy.test.ts index 7ab45ca2e..ab2a6c76b 100644 --- a/packages/@aws-cdk/toolkit-lib/test/actions/deploy.test.ts +++ b/packages/@aws-cdk/toolkit-lib/test/actions/deploy.test.ts @@ -4,8 +4,6 @@ import * as deployments from '../../lib/api/deployments'; import { Toolkit } from '../../lib/toolkit'; import { builderFixture, cdkOutFixture, disposableCloudAssemblySource, TestIoHost } from '../_helpers'; -jest.setTimeout(10_000); - let ioHost: TestIoHost; let toolkit: Toolkit; let mockDeployStack: jest.SpyInstance, [DeployStackOptions]>; diff --git a/packages/@aws-cdk/toolkit-lib/test/actions/diff.test.ts b/packages/@aws-cdk/toolkit-lib/test/actions/diff.test.ts index fc9fc1ad5..4634fa2fc 100644 --- a/packages/@aws-cdk/toolkit-lib/test/actions/diff.test.ts +++ b/packages/@aws-cdk/toolkit-lib/test/actions/diff.test.ts @@ -9,9 +9,6 @@ import { Toolkit } from '../../lib/toolkit'; import { builderFixture, disposableCloudAssemblySource, TestIoHost } from '../_helpers'; import { MockSdk, restoreSdkMocksToDefault, setDefaultSTSMocks } from '../_helpers/mock-sdk'; -// tests using fixtures can sometimes take a bit longer -jest.setTimeout(10_000); - let ioHost: TestIoHost; let toolkit: Toolkit; diff --git a/packages/@aws-cdk/toolkit-lib/test/actions/refactor.test.ts b/packages/@aws-cdk/toolkit-lib/test/actions/refactor.test.ts index 3bc65d14d..50a0b54cd 100644 --- a/packages/@aws-cdk/toolkit-lib/test/actions/refactor.test.ts +++ b/packages/@aws-cdk/toolkit-lib/test/actions/refactor.test.ts @@ -4,9 +4,6 @@ import { SdkProvider } from '../../lib/api/aws-auth/private'; import { builderFixture, TestIoHost } from '../_helpers'; import { mockCloudFormationClient, MockSdk } from '../_helpers/mock-sdk'; -// these tests often run a bit longer than the default -jest.setTimeout(10_000); - const ioHost = new TestIoHost(); const toolkit = new Toolkit({ ioHost, unstableFeatures: ['refactor'] }); diff --git a/packages/@aws-cdk/toolkit-lib/test/actions/synth.test.ts b/packages/@aws-cdk/toolkit-lib/test/actions/synth.test.ts index 62f903c24..5ee8cfe6c 100644 --- a/packages/@aws-cdk/toolkit-lib/test/actions/synth.test.ts +++ b/packages/@aws-cdk/toolkit-lib/test/actions/synth.test.ts @@ -1,9 +1,6 @@ import { Toolkit } from '../../lib/toolkit'; import { appFixture, builderFixture, disposableCloudAssemblySource, TestIoHost } from '../_helpers'; -// these tests often run a bit longer than the default -jest.setTimeout(10_000); - const ioHost = new TestIoHost(); const toolkit = new Toolkit({ ioHost }); diff --git a/packages/@aws-cdk/toolkit-lib/test/api/cloud-assembly/source-builder.test.ts b/packages/@aws-cdk/toolkit-lib/test/api/cloud-assembly/source-builder.test.ts index 4ee86fdba..182c84ba8 100644 --- a/packages/@aws-cdk/toolkit-lib/test/api/cloud-assembly/source-builder.test.ts +++ b/packages/@aws-cdk/toolkit-lib/test/api/cloud-assembly/source-builder.test.ts @@ -8,9 +8,6 @@ import { Toolkit } from '../../../lib/toolkit/toolkit'; import { ToolkitError } from '../../../lib/toolkit/toolkit-error'; import { appFixture, appFixtureConfig, autoCleanOutDir, builderFixture, builderFunctionFromFixture, cdkOutFixture, TestIoHost } from '../../_helpers'; -// these tests often run a bit longer than the default -jest.setTimeout(10_000); - const ioHost = new TestIoHost(); const toolkit = new Toolkit({ ioHost }); diff --git a/packages/@aws-cdk/toolkit-lib/tsconfig.dev.json b/packages/@aws-cdk/toolkit-lib/tsconfig.dev.json index 159996d3c..3c5508f03 100644 --- a/packages/@aws-cdk/toolkit-lib/tsconfig.dev.json +++ b/packages/@aws-cdk/toolkit-lib/tsconfig.dev.json @@ -28,6 +28,7 @@ "incremental": true, "skipLibCheck": true, "isolatedModules": true, + "declarationMap": true, "rootDir": ".", "composite": true, "outDir": "lib" diff --git a/packages/@aws-cdk/toolkit-lib/tsconfig.dts.json b/packages/@aws-cdk/toolkit-lib/tsconfig.dts.json deleted file mode 100644 index c0f4a45a0..000000000 --- a/packages/@aws-cdk/toolkit-lib/tsconfig.dts.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "rootDir": null, - "composite": false - }, - "include": ["lib/**/*.ts"], - "exclude": [] -} diff --git a/packages/@aws-cdk/toolkit-lib/tsconfig.json b/packages/@aws-cdk/toolkit-lib/tsconfig.json index 64d6d20b3..265a2636e 100644 --- a/packages/@aws-cdk/toolkit-lib/tsconfig.json +++ b/packages/@aws-cdk/toolkit-lib/tsconfig.json @@ -30,6 +30,7 @@ "incremental": true, "skipLibCheck": true, "isolatedModules": true, + "declarationMap": true, "composite": true }, "include": [ diff --git a/packages/@aws-cdk/user-input-gen/jest.config.json b/packages/@aws-cdk/user-input-gen/jest.config.json index 5afeb24ce..0304b3297 100644 --- a/packages/@aws-cdk/user-input-gen/jest.config.json +++ b/packages/@aws-cdk/user-input-gen/jest.config.json @@ -59,8 +59,7 @@ "^.+\\.[t]sx?$": [ "ts-jest", { - "tsconfig": "tsconfig.dev.json", - "isolatedModules": true + "tsconfig": "tsconfig.dev.json" } ] }, diff --git a/packages/@aws-cdk/user-input-gen/package.json b/packages/@aws-cdk/user-input-gen/package.json index 0e4e80656..a042ada68 100644 --- a/packages/@aws-cdk/user-input-gen/package.json +++ b/packages/@aws-cdk/user-input-gen/package.json @@ -45,13 +45,13 @@ "eslint-config-prettier": "^10.1.5", "eslint-import-resolver-typescript": "^3.10.1", "eslint-plugin-import": "^2.31.0", - "eslint-plugin-jest": "^28.13.0", - "eslint-plugin-jsdoc": "^50.7.1", + "eslint-plugin-jest": "^28.14.0", + "eslint-plugin-jsdoc": "^50.8.0", "eslint-plugin-prettier": "^5.4.1", "jest": "^29.7.0", "jest-junit": "^16", "prettier": "^2.8", - "ts-jest": "^29.3.4", + "ts-jest": "^29.4.0", "typescript": "5.6" }, "dependencies": { diff --git a/packages/@aws-cdk/user-input-gen/tsconfig.dev.json b/packages/@aws-cdk/user-input-gen/tsconfig.dev.json index 5bfbfa299..1288d35b4 100644 --- a/packages/@aws-cdk/user-input-gen/tsconfig.dev.json +++ b/packages/@aws-cdk/user-input-gen/tsconfig.dev.json @@ -26,6 +26,7 @@ "target": "ES2020", "incremental": true, "skipLibCheck": true, + "isolatedModules": true, "composite": true, "outDir": "lib" }, diff --git a/packages/@aws-cdk/user-input-gen/tsconfig.json b/packages/@aws-cdk/user-input-gen/tsconfig.json index 4fe81a0dd..53800fe80 100644 --- a/packages/@aws-cdk/user-input-gen/tsconfig.json +++ b/packages/@aws-cdk/user-input-gen/tsconfig.json @@ -28,6 +28,7 @@ "target": "ES2020", "incremental": true, "skipLibCheck": true, + "isolatedModules": true, "composite": true }, "include": [ diff --git a/packages/@aws-cdk/yarn-cling/jest.config.json b/packages/@aws-cdk/yarn-cling/jest.config.json index 5afeb24ce..0304b3297 100644 --- a/packages/@aws-cdk/yarn-cling/jest.config.json +++ b/packages/@aws-cdk/yarn-cling/jest.config.json @@ -59,8 +59,7 @@ "^.+\\.[t]sx?$": [ "ts-jest", { - "tsconfig": "tsconfig.dev.json", - "isolatedModules": true + "tsconfig": "tsconfig.dev.json" } ] }, diff --git a/packages/@aws-cdk/yarn-cling/package.json b/packages/@aws-cdk/yarn-cling/package.json index e65372547..519e4077e 100644 --- a/packages/@aws-cdk/yarn-cling/package.json +++ b/packages/@aws-cdk/yarn-cling/package.json @@ -46,14 +46,14 @@ "eslint-config-prettier": "^10.1.5", "eslint-import-resolver-typescript": "^3.10.1", "eslint-plugin-import": "^2.31.0", - "eslint-plugin-jest": "^28.13.0", - "eslint-plugin-jsdoc": "^50.7.1", + "eslint-plugin-jest": "^28.14.0", + "eslint-plugin-jsdoc": "^50.8.0", "eslint-plugin-prettier": "^5.4.1", "fast-check": "^4.1.1", "jest": "^29.7.0", "jest-junit": "^16", "prettier": "^2.8", - "ts-jest": "^29.3.4", + "ts-jest": "^29.4.0", "typescript": "5.6" }, "dependencies": { diff --git a/packages/@aws-cdk/yarn-cling/tsconfig.dev.json b/packages/@aws-cdk/yarn-cling/tsconfig.dev.json index 5bfbfa299..1288d35b4 100644 --- a/packages/@aws-cdk/yarn-cling/tsconfig.dev.json +++ b/packages/@aws-cdk/yarn-cling/tsconfig.dev.json @@ -26,6 +26,7 @@ "target": "ES2020", "incremental": true, "skipLibCheck": true, + "isolatedModules": true, "composite": true, "outDir": "lib" }, diff --git a/packages/@aws-cdk/yarn-cling/tsconfig.json b/packages/@aws-cdk/yarn-cling/tsconfig.json index 4fe81a0dd..53800fe80 100644 --- a/packages/@aws-cdk/yarn-cling/tsconfig.json +++ b/packages/@aws-cdk/yarn-cling/tsconfig.json @@ -28,6 +28,7 @@ "target": "ES2020", "incremental": true, "skipLibCheck": true, + "isolatedModules": true, "composite": true }, "include": [ diff --git a/packages/aws-cdk/.projen/tasks.json b/packages/aws-cdk/.projen/tasks.json index e6d29332f..a43330190 100644 --- a/packages/aws-cdk/.projen/tasks.json +++ b/packages/aws-cdk/.projen/tasks.json @@ -145,7 +145,7 @@ "exec": "mkdir -p dist/js" }, { - "exec": "node-bundle pack --destination dist/js --external fsevents:optional --allowed-license \"Apache-2.0\" --allowed-license \"MIT\" --allowed-license \"BSD-3-Clause\" --allowed-license \"ISC\" --allowed-license \"BSD-2-Clause\" --allowed-license \"0BSD\" --allowed-license \"MIT OR Apache-2.0\" --dont-attribute '^@aws-cdk/|^@cdklabs/|^cdk-assets$|^cdk-cli-wrapper$' --test 'bin/cdk --version' --entrypoint 'lib/index.js'" + "exec": "node-bundle pack --destination dist/js --external fsevents:optional --allowed-license \"Apache-2.0\" --allowed-license \"MIT\" --allowed-license \"BSD-3-Clause\" --allowed-license \"ISC\" --allowed-license \"BSD-2-Clause\" --allowed-license \"0BSD\" --allowed-license \"MIT OR Apache-2.0\" --dont-attribute '^@aws-cdk/|^@cdklabs/|^cdk-assets$|^cdk-cli-wrapper$' --test 'bin/cdk --version' --entrypoint 'lib/index.js' --metafile dist/metafile.json" } ] }, diff --git a/packages/aws-cdk/README.md b/packages/aws-cdk/README.md index 7d76e2aee..b1dcf95b3 100644 --- a/packages/aws-cdk/README.md +++ b/packages/aws-cdk/README.md @@ -9,14 +9,14 @@ -The AWS CDK Toolkit provides the `cdk` command-line interface that can be used to work with AWS CDK applications. +The AWS CDK Toolkit provides the `cdk` command-line interface that can be used to work with AWS CDK applications. This module is part of the [AWS Cloud Development Kit](https://github.com/aws/aws-cdk) project. | Command | Description | -|---------------------------------------|-----------------------------------------------------------------------------------| +| ------------------------------------- | --------------------------------------------------------------------------------- | | [`cdk docs`](#cdk-docs) | Access the online documentation | | [`cdk init`](#cdk-init) | Start a new CDK project (app or library) | | [`cdk list`](#cdk-list) | List stacks and their dependencies in an application | -| [`cdk synth`](#cdk-synthesize) | Synthesize a CDK app to CloudFormation template(s) | +| [`cdk synth`](#cdk-synth) | Synthesize a CDK app to CloudFormation template(s) | | [`cdk diff`](#cdk-diff) | Diff stacks against current state | | [`cdk deploy`](#cdk-deploy) | Deploy a stack into an AWS account | | [`cdk rollback`](#cdk-rollback) | Roll back a failed deployment | @@ -32,29 +32,22 @@ The AWS CDK Toolkit provides the `cdk` command-line interface that can be used t | [`cdk refactor`](#cdk-refactor) | Moves resources between stacks or within the same stack | | [`cdk drift`](#cdk-drift) | Detect drifts in the given CloudFormation stack(s) | -- [Bundling](#bundling) -- [MFA Support](#mfa-support) -- [SSO Support](#sso-support) +## Common topics + +- Usage + - [Asset bundling](#bundling) + - [Preview features](#unstable) +- Authentication + - [MFA Support](#mfa-support) + - [SSO Support](#sso-support) - [Configuration](#configuration) - [Running in CI](#running-in-ci) +## Requirements -This module is part of the [AWS Cloud Development Kit](https://github.com/aws/aws-cdk) project. - -## Global Options - -### `unstable` - -The `--unstable` flag indicates that the scope and API of a feature might still change. -Otherwise the feature is generally production ready and fully supported. For example, -`cdk gc` is gated behind an `--unstable` flag: - -```bash -cdk gc --unstable=gc -``` - -The command will fail if `--unstable=gc` is not passed in, which acknowledges that the user -is aware of the caveats in place for the feature. +You need [Node.js](https://nodejs.org/en/download) or another JavaScript runtime to use the AWS CDK Toolkit CLI. We recommend using the [Node.js version in Active LTS](https://nodejs.org/en/about/previous-releases). +The minimal supported version is **Node.js v18**. +See our [Support Policy](https://docs.aws.amazon.com/cdk/v2/guide/node-versions.html) for full details. ## Commands @@ -124,7 +117,7 @@ $ cdk list --app='node bin/main.js' --long region: bermuda-triangle-3 ``` -### `cdk synthesize` +### `cdk synth` Synthesizes the CDK app and produces a cloud assembly to a designated output (defaults to `cdk.out`) @@ -525,11 +518,11 @@ Hotswapping is currently supported for the following changes You can optionally configure the behavior of your hotswap deployments. Currently you can only configure ECS hotswap behavior: -| Property | Description | Default | -|--------------------------------|--------------------------------------|-------------| -| minimumHealthyPercent | Lower limit on the number of your service's tasks that must remain in the RUNNING state during a deployment, as a percentage of the desiredCount | **REPLICA:** 100, **DAEMON:** 0 | -| maximumHealthyPercent | Upper limit on the number of your service's tasks that are allowed in the RUNNING or PENDING state during a deployment, as a percentage of the desiredCount | **REPLICA:** 200, **DAEMON:**: N/A | -| stabilizationTimeoutSeconds | Number of seconds to wait for a single service to reach stable state, where the desiredCount is equal to the runningCount | 600 | +| Property | Description | Default | +| --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------- | +| minimumHealthyPercent | Lower limit on the number of your service's tasks that must remain in the RUNNING state during a deployment, as a percentage of the desiredCount | **REPLICA:** 100, **DAEMON:** 0 | +| maximumHealthyPercent | Upper limit on the number of your service's tasks that are allowed in the RUNNING or PENDING state during a deployment, as a percentage of the desiredCount | **REPLICA:** 200, **DAEMON:**: N/A | +| stabilizationTimeoutSeconds | Number of seconds to wait for a single service to reach stable state, where the desiredCount is equal to the runningCount | 600 | ##### cdk.json @@ -860,13 +853,13 @@ before deploying the generated application. In practice this is how CDK Migrate generated applications will operate in the following scenarios: -| Situation | Result | -| ------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -| Provided template + stack-name is from a deployed stack in the account/region | The CDK application will deploy as a changeset to the existing stack | -| Provided template has no overlap with resources already in the account/region | The CDK application will deploy a new stack successfully | -| Provided template has overlap with Cloudformation managed resources already in the account/region | The CDK application will not be deployable unless those resources are removed | -| Provided template has overlap with un-managed resources already in the account/region | The CDK application will not be deployable until those resources are adopted with [`cdk import`](#cdk-import) | -| No template has been provided and resources exist in the region the scan is done | The CDK application will be immediatly deployable and will import those resources into a new cloudformation stack upon deploy | +| Situation | Result | +| ------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | +| Provided template + stack-name is from a deployed stack in the account/region | The CDK application will deploy as a changeset to the existing stack | +| Provided template has no overlap with resources already in the account/region | The CDK application will deploy a new stack successfully | +| Provided template has overlap with Cloudformation managed resources already in the account/region | The CDK application will not be deployable unless those resources are removed | +| Provided template has overlap with un-managed resources already in the account/region | The CDK application will not be deployable until those resources are adopted with [`cdk import`](#cdk-import) | +| No template has been provided and resources exist in the region the scan is done | The CDK application will be immediatly deployable and will import those resources into a new cloudformation stack upon deploy | ##### **The provided template is already deployed to CloudFormation in the account/region** @@ -1215,6 +1208,21 @@ $ # Detect drift against the currently-deployed stack with the verbose flag enab $ cdk drift --verbose ``` +## Global Options + +### `unstable` + +The `--unstable` flag indicates that the scope and API of a feature might still change. +Otherwise the feature is generally production ready and fully supported. For example, +`cdk gc` is gated behind an `--unstable` flag: + +```bash +cdk gc --unstable=gc +``` + +The command will fail if `--unstable=gc` is not passed in, which acknowledges that the user +is aware of the caveats in place for the feature. + ## Notices CDK Notices are important messages regarding security vulnerabilities, regressions, and usage of unsupported diff --git a/packages/aws-cdk/THIRD_PARTY_LICENSES b/packages/aws-cdk/THIRD_PARTY_LICENSES index 242d444d4..b652dee76 100644 --- a/packages/aws-cdk/THIRD_PARTY_LICENSES +++ b/packages/aws-cdk/THIRD_PARTY_LICENSES @@ -618,7 +618,7 @@ The aws-cdk package includes the following third-party software/licensing: ---------------- -** @aws-sdk/client-appsync@3.826.0 - https://www.npmjs.com/package/@aws-sdk/client-appsync/v/3.826.0 | Apache-2.0 +** @aws-sdk/client-appsync@3.828.0 - https://www.npmjs.com/package/@aws-sdk/client-appsync/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -824,7 +824,7 @@ The aws-cdk package includes the following third-party software/licensing: ---------------- -** @aws-sdk/client-cloudcontrol@3.826.0 - https://www.npmjs.com/package/@aws-sdk/client-cloudcontrol/v/3.826.0 | Apache-2.0 +** @aws-sdk/client-cloudcontrol@3.828.0 - https://www.npmjs.com/package/@aws-sdk/client-cloudcontrol/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -1030,7 +1030,7 @@ The aws-cdk package includes the following third-party software/licensing: ---------------- -** @aws-sdk/client-cloudformation@3.826.0 - https://www.npmjs.com/package/@aws-sdk/client-cloudformation/v/3.826.0 | Apache-2.0 +** @aws-sdk/client-cloudformation@3.828.0 - https://www.npmjs.com/package/@aws-sdk/client-cloudformation/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -1236,7 +1236,7 @@ The aws-cdk package includes the following third-party software/licensing: ---------------- -** @aws-sdk/client-cloudwatch-logs@3.826.0 - https://www.npmjs.com/package/@aws-sdk/client-cloudwatch-logs/v/3.826.0 | Apache-2.0 +** @aws-sdk/client-cloudwatch-logs@3.828.0 - https://www.npmjs.com/package/@aws-sdk/client-cloudwatch-logs/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -1442,7 +1442,7 @@ The aws-cdk package includes the following third-party software/licensing: ---------------- -** @aws-sdk/client-codebuild@3.826.0 - https://www.npmjs.com/package/@aws-sdk/client-codebuild/v/3.826.0 | Apache-2.0 +** @aws-sdk/client-codebuild@3.828.0 - https://www.npmjs.com/package/@aws-sdk/client-codebuild/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -1648,7 +1648,7 @@ The aws-cdk package includes the following third-party software/licensing: ---------------- -** @aws-sdk/client-cognito-identity@3.826.0 - https://www.npmjs.com/package/@aws-sdk/client-cognito-identity/v/3.826.0 | Apache-2.0 +** @aws-sdk/client-cognito-identity@3.828.0 - https://www.npmjs.com/package/@aws-sdk/client-cognito-identity/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -1854,7 +1854,7 @@ The aws-cdk package includes the following third-party software/licensing: ---------------- -** @aws-sdk/client-ec2@3.826.0 - https://www.npmjs.com/package/@aws-sdk/client-ec2/v/3.826.0 | Apache-2.0 +** @aws-sdk/client-ec2@3.828.0 - https://www.npmjs.com/package/@aws-sdk/client-ec2/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -2060,7 +2060,7 @@ The aws-cdk package includes the following third-party software/licensing: ---------------- -** @aws-sdk/client-ecr@3.826.0 - https://www.npmjs.com/package/@aws-sdk/client-ecr/v/3.826.0 | Apache-2.0 +** @aws-sdk/client-ecr@3.828.0 - https://www.npmjs.com/package/@aws-sdk/client-ecr/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -2266,7 +2266,7 @@ The aws-cdk package includes the following third-party software/licensing: ---------------- -** @aws-sdk/client-ecs@3.826.0 - https://www.npmjs.com/package/@aws-sdk/client-ecs/v/3.826.0 | Apache-2.0 +** @aws-sdk/client-ecs@3.829.0 - https://www.npmjs.com/package/@aws-sdk/client-ecs/v/3.829.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -2472,7 +2472,7 @@ The aws-cdk package includes the following third-party software/licensing: ---------------- -** @aws-sdk/client-elastic-load-balancing-v2@3.826.0 - https://www.npmjs.com/package/@aws-sdk/client-elastic-load-balancing-v2/v/3.826.0 | Apache-2.0 +** @aws-sdk/client-elastic-load-balancing-v2@3.828.0 - https://www.npmjs.com/package/@aws-sdk/client-elastic-load-balancing-v2/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -2678,7 +2678,7 @@ The aws-cdk package includes the following third-party software/licensing: ---------------- -** @aws-sdk/client-iam@3.826.0 - https://www.npmjs.com/package/@aws-sdk/client-iam/v/3.826.0 | Apache-2.0 +** @aws-sdk/client-iam@3.828.0 - https://www.npmjs.com/package/@aws-sdk/client-iam/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -2884,7 +2884,7 @@ The aws-cdk package includes the following third-party software/licensing: ---------------- -** @aws-sdk/client-kms@3.826.0 - https://www.npmjs.com/package/@aws-sdk/client-kms/v/3.826.0 | Apache-2.0 +** @aws-sdk/client-kms@3.829.0 - https://www.npmjs.com/package/@aws-sdk/client-kms/v/3.829.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -3090,7 +3090,7 @@ The aws-cdk package includes the following third-party software/licensing: ---------------- -** @aws-sdk/client-lambda@3.826.0 - https://www.npmjs.com/package/@aws-sdk/client-lambda/v/3.826.0 | Apache-2.0 +** @aws-sdk/client-lambda@3.828.0 - https://www.npmjs.com/package/@aws-sdk/client-lambda/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -3296,7 +3296,7 @@ The aws-cdk package includes the following third-party software/licensing: ---------------- -** @aws-sdk/client-route-53@3.826.0 - https://www.npmjs.com/package/@aws-sdk/client-route-53/v/3.826.0 | Apache-2.0 +** @aws-sdk/client-route-53@3.828.0 - https://www.npmjs.com/package/@aws-sdk/client-route-53/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -3502,7 +3502,7 @@ The aws-cdk package includes the following third-party software/licensing: ---------------- -** @aws-sdk/client-s3@3.826.0 - https://www.npmjs.com/package/@aws-sdk/client-s3/v/3.826.0 | Apache-2.0 +** @aws-sdk/client-s3@3.828.0 - https://www.npmjs.com/package/@aws-sdk/client-s3/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -3708,7 +3708,7 @@ The aws-cdk package includes the following third-party software/licensing: ---------------- -** @aws-sdk/client-secrets-manager@3.826.0 - https://www.npmjs.com/package/@aws-sdk/client-secrets-manager/v/3.826.0 | Apache-2.0 +** @aws-sdk/client-secrets-manager@3.828.0 - https://www.npmjs.com/package/@aws-sdk/client-secrets-manager/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -3914,7 +3914,7 @@ The aws-cdk package includes the following third-party software/licensing: ---------------- -** @aws-sdk/client-sfn@3.826.0 - https://www.npmjs.com/package/@aws-sdk/client-sfn/v/3.826.0 | Apache-2.0 +** @aws-sdk/client-sfn@3.828.0 - https://www.npmjs.com/package/@aws-sdk/client-sfn/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -4120,7 +4120,7 @@ The aws-cdk package includes the following third-party software/licensing: ---------------- -** @aws-sdk/client-ssm@3.826.0 - https://www.npmjs.com/package/@aws-sdk/client-ssm/v/3.826.0 | Apache-2.0 +** @aws-sdk/client-ssm@3.828.0 - https://www.npmjs.com/package/@aws-sdk/client-ssm/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -4326,7 +4326,7 @@ The aws-cdk package includes the following third-party software/licensing: ---------------- -** @aws-sdk/client-sso@3.826.0 - https://www.npmjs.com/package/@aws-sdk/client-sso/v/3.826.0 | Apache-2.0 +** @aws-sdk/client-sso@3.828.0 - https://www.npmjs.com/package/@aws-sdk/client-sso/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -4532,7 +4532,7 @@ The aws-cdk package includes the following third-party software/licensing: ---------------- -** @aws-sdk/client-sts@3.826.0 - https://www.npmjs.com/package/@aws-sdk/client-sts/v/3.826.0 | Apache-2.0 +** @aws-sdk/client-sts@3.828.0 - https://www.npmjs.com/package/@aws-sdk/client-sts/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -4742,7 +4742,7 @@ The aws-cdk package includes the following third-party software/licensing: ---------------- -** @aws-sdk/credential-provider-cognito-identity@3.826.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-cognito-identity/v/3.826.0 | Apache-2.0 +** @aws-sdk/credential-provider-cognito-identity@3.828.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-cognito-identity/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -5157,7 +5157,7 @@ Apache License ---------------- -** @aws-sdk/credential-provider-ini@3.826.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-ini/v/3.826.0 | Apache-2.0 +** @aws-sdk/credential-provider-ini@3.828.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-ini/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -5362,7 +5362,7 @@ Apache License ---------------- -** @aws-sdk/credential-provider-node@3.826.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-node/v/3.826.0 | Apache-2.0 +** @aws-sdk/credential-provider-node@3.828.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-node/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -5772,7 +5772,7 @@ Apache License ---------------- -** @aws-sdk/credential-provider-sso@3.826.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-sso/v/3.826.0 | Apache-2.0 +** @aws-sdk/credential-provider-sso@3.828.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-sso/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -5977,7 +5977,7 @@ Apache License ---------------- -** @aws-sdk/credential-provider-web-identity@3.826.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-web-identity/v/3.826.0 | Apache-2.0 +** @aws-sdk/credential-provider-web-identity@3.828.0 - https://www.npmjs.com/package/@aws-sdk/credential-provider-web-identity/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -6182,7 +6182,7 @@ Apache License ---------------- -** @aws-sdk/credential-providers@3.826.0 - https://www.npmjs.com/package/@aws-sdk/credential-providers/v/3.826.0 | Apache-2.0 +** @aws-sdk/credential-providers@3.828.0 - https://www.npmjs.com/package/@aws-sdk/credential-providers/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -6387,7 +6387,7 @@ Apache License ---------------- -** @aws-sdk/ec2-metadata-service@3.826.0 - https://www.npmjs.com/package/@aws-sdk/ec2-metadata-service/v/3.826.0 | Apache-2.0 +** @aws-sdk/ec2-metadata-service@3.828.0 - https://www.npmjs.com/package/@aws-sdk/ec2-metadata-service/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -6592,7 +6592,7 @@ Apache License ---------------- -** @aws-sdk/lib-storage@3.826.0 - https://www.npmjs.com/package/@aws-sdk/lib-storage/v/3.826.0 | Apache-2.0 +** @aws-sdk/lib-storage@3.828.0 - https://www.npmjs.com/package/@aws-sdk/lib-storage/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -9061,7 +9061,7 @@ Apache License ---------------- -** @aws-sdk/middleware-user-agent@3.826.0 - https://www.npmjs.com/package/@aws-sdk/middleware-user-agent/v/3.826.0 | Apache-2.0 +** @aws-sdk/middleware-user-agent@3.828.0 - https://www.npmjs.com/package/@aws-sdk/middleware-user-agent/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -9267,7 +9267,7 @@ Apache License ---------------- -** @aws-sdk/nested-clients@3.826.0 - https://www.npmjs.com/package/@aws-sdk/nested-clients/v/3.826.0 | Apache-2.0 +** @aws-sdk/nested-clients@3.828.0 - https://www.npmjs.com/package/@aws-sdk/nested-clients/v/3.828.0 | Apache-2.0 ---------------- @@ -9682,7 +9682,7 @@ Apache License ---------------- -** @aws-sdk/token-providers@3.826.0 - https://www.npmjs.com/package/@aws-sdk/token-providers/v/3.826.0 | Apache-2.0 +** @aws-sdk/token-providers@3.828.0 - https://www.npmjs.com/package/@aws-sdk/token-providers/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -10092,7 +10092,7 @@ Apache License ---------------- -** @aws-sdk/util-endpoints@3.821.0 - https://www.npmjs.com/package/@aws-sdk/util-endpoints/v/3.821.0 | Apache-2.0 +** @aws-sdk/util-endpoints@3.828.0 - https://www.npmjs.com/package/@aws-sdk/util-endpoints/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -10502,7 +10502,7 @@ Apache License ---------------- -** @aws-sdk/util-user-agent-node@3.826.0 - https://www.npmjs.com/package/@aws-sdk/util-user-agent-node/v/3.826.0 | Apache-2.0 +** @aws-sdk/util-user-agent-node@3.828.0 - https://www.npmjs.com/package/@aws-sdk/util-user-agent-node/v/3.828.0 | Apache-2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -20885,7 +20885,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI ---------------- -** brace-expansion@2.0.1 - https://www.npmjs.com/package/brace-expansion/v/2.0.1 | MIT +** brace-expansion@2.0.2 - https://www.npmjs.com/package/brace-expansion/v/2.0.2 | MIT MIT License Copyright (c) 2013 Julian Gruber @@ -20989,7 +20989,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI ---------------- -** cdk-from-cfn@0.220.0 - https://www.npmjs.com/package/cdk-from-cfn/v/0.220.0 | MIT OR Apache-2.0 +** cdk-from-cfn@0.222.0 - https://www.npmjs.com/package/cdk-from-cfn/v/0.222.0 | MIT OR Apache-2.0 ---------------- @@ -23269,7 +23269,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ---------------- -** socks@2.8.4 - https://www.npmjs.com/package/socks/v/2.8.4 | MIT +** socks@2.8.5 - https://www.npmjs.com/package/socks/v/2.8.5 | MIT The MIT License (MIT) Copyright (c) 2013 Josh Glazebrook diff --git a/packages/aws-cdk/jest.config.json b/packages/aws-cdk/jest.config.json index 385b75afe..9b1ba75a9 100644 --- a/packages/aws-cdk/jest.config.json +++ b/packages/aws-cdk/jest.config.json @@ -68,8 +68,7 @@ "^.+\\.[t]sx?$": [ "ts-jest", { - "tsconfig": "tsconfig.dev.json", - "isolatedModules": true + "tsconfig": "tsconfig.dev.json" } ] }, diff --git a/packages/aws-cdk/lib/api-private.ts b/packages/aws-cdk/lib/api-private.ts index aed1d1f58..27ab34e2a 100644 --- a/packages/aws-cdk/lib/api-private.ts +++ b/packages/aws-cdk/lib/api-private.ts @@ -1,5 +1,6 @@ /* eslint-disable import/no-relative-packages */ -export { deployStack, DeployStackOptions as DeployStackApiOptions } from '../../@aws-cdk/toolkit-lib/lib/api/deployments/deploy-stack'; +export { deployStack } from '../../@aws-cdk/toolkit-lib/lib/api/deployments/deploy-stack'; +export type { DeployStackOptions as DeployStackApiOptions } from '../../@aws-cdk/toolkit-lib/lib/api/deployments/deploy-stack'; export * as cfnApi from '../../@aws-cdk/toolkit-lib/lib/api/deployments/cfn-api'; export * from '../../@aws-cdk/toolkit-lib/lib/api/io/private'; export * from '../../@aws-cdk/toolkit-lib/lib/api/tags/private'; diff --git a/packages/aws-cdk/lib/api/index.ts b/packages/aws-cdk/lib/api/index.ts index f86b42067..7b6596777 100644 --- a/packages/aws-cdk/lib/api/index.ts +++ b/packages/aws-cdk/lib/api/index.ts @@ -11,7 +11,7 @@ export * from '../../../@aws-cdk/toolkit-lib/lib/api/diff'; export * from '../../../@aws-cdk/toolkit-lib/lib/api/io'; export * from '../../../@aws-cdk/toolkit-lib/lib/api/logs-monitor'; export * from '../../../@aws-cdk/toolkit-lib/lib/api/resource-import'; -export { RWLock, IReadLock } from '../../../@aws-cdk/toolkit-lib/lib/api/rwlock'; +export { RWLock, type IReadLock } from '../../../@aws-cdk/toolkit-lib/lib/api/rwlock'; export * from '../../../@aws-cdk/toolkit-lib/lib/api/toolkit-info'; export { loadTree, some } from '../../../@aws-cdk/toolkit-lib/lib/api/tree'; export * from '../../../@aws-cdk/toolkit-lib/lib/api/work-graph'; diff --git a/packages/aws-cdk/lib/cli/user-configuration.ts b/packages/aws-cdk/lib/cli/user-configuration.ts index bbaff52a0..50b6cef91 100644 --- a/packages/aws-cdk/lib/cli/user-configuration.ts +++ b/packages/aws-cdk/lib/cli/user-configuration.ts @@ -341,7 +341,13 @@ function parseStringContextListToObject(argv: Arguments): any { `User-provided context cannot use keys prefixed with 'aws:', but ${parts[0]} was provided.`, ); } - context[parts[0]] = parts[1]; + let parsedValue: any = parts[1]; + try { + parsedValue = JSON.parse(parts[1]); + } catch { + debug('Non-JSON context value for %s, leaving as string: %s', parts[0], parts[1]); + } + context[parts[0]] = parsedValue; } else { warning( 'Context argument is not an assignment (key=value): %s', diff --git a/packages/aws-cdk/lib/init-templates/.init-version.json b/packages/aws-cdk/lib/init-templates/.init-version.json index 9011953aa..e097445fc 100644 --- a/packages/aws-cdk/lib/init-templates/.init-version.json +++ b/packages/aws-cdk/lib/init-templates/.init-version.json @@ -1 +1 @@ -{"aws-cdk-lib": "2.200.1", "constructs": "^10.0.0"} +{"aws-cdk-lib": "2.201.0", "constructs": "^10.0.0"} diff --git a/packages/aws-cdk/package.json b/packages/aws-cdk/package.json index d8707cd81..2aaa4c56d 100644 --- a/packages/aws-cdk/package.json +++ b/packages/aws-cdk/package.json @@ -50,18 +50,18 @@ "@types/yargs": "^15", "@typescript-eslint/eslint-plugin": "^8", "@typescript-eslint/parser": "^8", - "aws-cdk-lib": "^2.200.1", + "aws-cdk-lib": "^2.201.0", "aws-sdk-client-mock": "^4.1.0", "aws-sdk-client-mock-jest": "^4.1.0", - "axios": "^1.9.0", + "axios": "^1.10.0", "commit-and-tag-version": "^12", "constructs": "^10.0.0", "eslint": "^9", "eslint-config-prettier": "^10.1.5", "eslint-import-resolver-typescript": "^3.10.1", "eslint-plugin-import": "^2.31.0", - "eslint-plugin-jest": "^28.13.0", - "eslint-plugin-jsdoc": "^50.7.1", + "eslint-plugin-jest": "^28.14.0", + "eslint-plugin-jsdoc": "^50.8.0", "eslint-plugin-prettier": "^5.4.1", "fast-check": "^3.23.2", "jest": "^29.7.0", @@ -73,7 +73,7 @@ "nock": "13", "prettier": "^2.8", "sinon": "^19.0.5", - "ts-jest": "^29.3.4", + "ts-jest": "^29.4.0", "ts-mock-imports": "^1.3.17", "typescript": "5.6", "xml-js": "^1.6.11" @@ -81,7 +81,7 @@ "dependencies": { "@aws-cdk/cloud-assembly-schema": "^0.0.0", "@aws-cdk/cloudformation-diff": "^0.0.0", - "@aws-cdk/cx-api": "^2.200.1", + "@aws-cdk/cx-api": "^2.201.0", "@aws-cdk/toolkit-lib": "^0.0.0", "@aws-sdk/client-appsync": "^3", "@aws-sdk/client-cloudcontrol": "^3", @@ -116,13 +116,13 @@ "archiver": "^7.0.1", "camelcase": "^6", "cdk-assets": "^0.0.0", - "cdk-from-cfn": "^0.220.0", + "cdk-from-cfn": "^0.222.0", "chalk": "^4", "chokidar": "^3", "decamelize": "^5", "fs-extra": "^9", - "glob": "^11.0.2", - "minimatch": "10.0.1", + "glob": "^11.0.3", + "minimatch": "10.0.3", "p-limit": "^3", "promptly": "^3.2.0", "proxy-agent": "^6.5.0", diff --git a/packages/aws-cdk/test/cli/configuration.test.ts b/packages/aws-cdk/test/cli/configuration.test.ts index 3e8c0b361..b2db10d60 100644 --- a/packages/aws-cdk/test/cli/configuration.test.ts +++ b/packages/aws-cdk/test/cli/configuration.test.ts @@ -116,3 +116,23 @@ test('providing a build arg', () => { // THEN expect(settings.get(['build'])).toEqual('mvn package'); }); + +test('can parse boolean context from command line arguments', () => { + // GIVEN + const settings1 = commandLineArgumentsToSettings({ context: ['foo=true'], _: [Command.DEPLOY] }); + const settings2 = commandLineArgumentsToSettings({ context: ['foo=false'], _: [Command.DEPLOY] }); + + // THEN + expect(settings1.get(['context']).foo).toEqual( true ); + expect(settings2.get(['context']).foo).toEqual( false ); +}); + +test('can parse number context from command line arguments', () => { + // GIVEN + const settings1 = commandLineArgumentsToSettings({ context: ['foo=5'], _: [Command.DEPLOY] }); + const settings2 = commandLineArgumentsToSettings({ context: ['foo=3.14'], _: [Command.DEPLOY] }); + + // THEN + expect(settings1.get(['context']).foo).toEqual( 5 ); + expect(settings2.get(['context']).foo).toEqual( 3.14 ); +}); diff --git a/packages/aws-cdk/tsconfig.dev.json b/packages/aws-cdk/tsconfig.dev.json index 2ccc9c27e..ab437a3c4 100644 --- a/packages/aws-cdk/tsconfig.dev.json +++ b/packages/aws-cdk/tsconfig.dev.json @@ -28,6 +28,7 @@ "target": "ES2020", "incremental": true, "skipLibCheck": true, + "isolatedModules": true, "composite": true, "outDir": "lib" }, diff --git a/packages/aws-cdk/tsconfig.json b/packages/aws-cdk/tsconfig.json index f4e93ce8d..55d6300fb 100644 --- a/packages/aws-cdk/tsconfig.json +++ b/packages/aws-cdk/tsconfig.json @@ -29,6 +29,7 @@ "target": "ES2020", "incremental": true, "skipLibCheck": true, + "isolatedModules": true, "composite": true }, "include": [ diff --git a/packages/cdk-assets/.projen/deps.json b/packages/cdk-assets/.projen/deps.json index 25cc975b5..5036a920b 100644 --- a/packages/cdk-assets/.projen/deps.json +++ b/packages/cdk-assets/.projen/deps.json @@ -196,6 +196,11 @@ "version": "^2", "type": "runtime" }, + { + "name": "minimatch", + "version": "10.0.1", + "type": "runtime" + }, { "name": "yargs", "type": "runtime" diff --git a/packages/cdk-assets/jest.config.json b/packages/cdk-assets/jest.config.json index 075b5bc80..6cceb79df 100644 --- a/packages/cdk-assets/jest.config.json +++ b/packages/cdk-assets/jest.config.json @@ -60,8 +60,7 @@ "^.+\\.[t]sx?$": [ "ts-jest", { - "tsconfig": "tsconfig.dev.json", - "isolatedModules": true + "tsconfig": "tsconfig.dev.json" } ] }, diff --git a/packages/cdk-assets/package.json b/packages/cdk-assets/package.json index 83245101f..749129691 100644 --- a/packages/cdk-assets/package.json +++ b/packages/cdk-assets/package.json @@ -54,8 +54,8 @@ "eslint-config-prettier": "^10.1.5", "eslint-import-resolver-typescript": "^3.10.1", "eslint-plugin-import": "^2.31.0", - "eslint-plugin-jest": "^28.13.0", - "eslint-plugin-jsdoc": "^50.7.1", + "eslint-plugin-jest": "^28.14.0", + "eslint-plugin-jsdoc": "^50.8.0", "eslint-plugin-prettier": "^5.4.1", "fs-extra": "^11.3.0", "graceful-fs": "^4.2.11", @@ -65,12 +65,12 @@ "license-checker": "^25.0.1", "mock-fs": "^5", "prettier": "^2.8", - "ts-jest": "^29.3.4", + "ts-jest": "^29.4.0", "typescript": "5.6" }, "dependencies": { "@aws-cdk/cloud-assembly-schema": "^0.0.0", - "@aws-cdk/cx-api": "^2.200.1", + "@aws-cdk/cx-api": "^2.201.0", "@aws-sdk/client-ecr": "^3", "@aws-sdk/client-s3": "^3", "@aws-sdk/client-secrets-manager": "^3", @@ -80,8 +80,9 @@ "@smithy/config-resolver": "^4.1.4", "@smithy/node-config-provider": "^4.1.3", "archiver": "^7.0.1", - "glob": "^11.0.2", + "glob": "^11.0.3", "mime": "^2", + "minimatch": "10.0.1", "yargs": "^17.7.2" }, "keywords": [ diff --git a/packages/cdk-assets/tsconfig.dev.json b/packages/cdk-assets/tsconfig.dev.json index 995dbdb33..cf3831a98 100644 --- a/packages/cdk-assets/tsconfig.dev.json +++ b/packages/cdk-assets/tsconfig.dev.json @@ -26,6 +26,7 @@ "target": "ES2020", "incremental": true, "skipLibCheck": true, + "isolatedModules": true, "composite": true, "outDir": "lib" }, diff --git a/packages/cdk-assets/tsconfig.json b/packages/cdk-assets/tsconfig.json index 82b289830..b7a79ab01 100644 --- a/packages/cdk-assets/tsconfig.json +++ b/packages/cdk-assets/tsconfig.json @@ -26,6 +26,7 @@ "target": "ES2020", "incremental": true, "skipLibCheck": true, + "isolatedModules": true, "composite": true }, "include": [ diff --git a/packages/cdk/jest.config.json b/packages/cdk/jest.config.json index 5afeb24ce..0304b3297 100644 --- a/packages/cdk/jest.config.json +++ b/packages/cdk/jest.config.json @@ -59,8 +59,7 @@ "^.+\\.[t]sx?$": [ "ts-jest", { - "tsconfig": "tsconfig.dev.json", - "isolatedModules": true + "tsconfig": "tsconfig.dev.json" } ] }, diff --git a/packages/cdk/package.json b/packages/cdk/package.json index 7c5e6aa0a..ad10e6940 100644 --- a/packages/cdk/package.json +++ b/packages/cdk/package.json @@ -46,14 +46,14 @@ "eslint-config-prettier": "^10.1.5", "eslint-import-resolver-typescript": "^3.10.1", "eslint-plugin-import": "^2.31.0", - "eslint-plugin-jest": "^28.13.0", - "eslint-plugin-jsdoc": "^50.7.1", + "eslint-plugin-jest": "^28.14.0", + "eslint-plugin-jsdoc": "^50.8.0", "eslint-plugin-prettier": "^5.4.1", "jest": "^29.7.0", "jest-junit": "^16", "license-checker": "^25.0.1", "prettier": "^2.8", - "ts-jest": "^29.3.4", + "ts-jest": "^29.4.0", "typescript": "5.6" }, "dependencies": { diff --git a/packages/cdk/tsconfig.dev.json b/packages/cdk/tsconfig.dev.json index 920e1daa4..70fbf2d64 100644 --- a/packages/cdk/tsconfig.dev.json +++ b/packages/cdk/tsconfig.dev.json @@ -26,6 +26,7 @@ "target": "ES2020", "incremental": true, "skipLibCheck": true, + "isolatedModules": true, "composite": true, "outDir": "lib" }, diff --git a/packages/cdk/tsconfig.json b/packages/cdk/tsconfig.json index 69301288c..afacfea3c 100644 --- a/packages/cdk/tsconfig.json +++ b/packages/cdk/tsconfig.json @@ -28,6 +28,7 @@ "target": "ES2020", "incremental": true, "skipLibCheck": true, + "isolatedModules": true, "composite": true }, "include": [ diff --git a/projenrc/bundle.ts b/projenrc/bundle.ts index c9628224f..ab8d55fd8 100644 --- a/projenrc/bundle.ts +++ b/projenrc/bundle.ts @@ -90,6 +90,13 @@ export interface BundleProps { * @default false */ readonly minifySyntax?: boolean; + + /** + * Write a meatafile to the dist directory. + * + * @default false + */ + readonly metafile?: boolean; } /** @@ -138,9 +145,13 @@ export class BundleCli extends pj.Component { project.postCompileTask.exec(['node-bundle', 'validate', '--fix', ...args].join(' ')); // `node-bundle` replaces `npm pack` + const packArgs = [ + ...args, + ...(options.metafile ?? true) ? ['--metafile dist/metafile.json'] : [], + ]; project.packageTask.reset(); project.packageTask.exec('mkdir -p dist/js'); - project.packageTask.exec(['node-bundle', 'pack', '--destination', 'dist/js', ...args].join(' ')); + project.packageTask.exec(['node-bundle', 'pack', '--destination', 'dist/js', ...packArgs].join(' ')); } } diff --git a/projenrc/cdk-cli-integ-tests.ts b/projenrc/cdk-cli-integ-tests.ts index 686c29559..fe0a63548 100644 --- a/projenrc/cdk-cli-integ-tests.ts +++ b/projenrc/cdk-cli-integ-tests.ts @@ -1,6 +1,6 @@ import { yarn } from 'cdklabs-projen-project-types'; import type { javascript, Project } from 'projen'; -import { Component, github } from 'projen'; +import { Component, github, TextFile } from 'projen'; const NOT_FLAGGED_EXPR = "!contains(github.event.pull_request.labels.*.name, 'pr/exempt-integ-test')"; @@ -140,6 +140,65 @@ export class CdkCliIntegTestsWorkflow extends Component { maxWorkersArg = ` --maxWorkers=${props.maxWorkers}`; } + const verdaccioConfig = { + storage: './storage', + auth: { htpasswd: { file: './htpasswd' } }, + uplinks: { npmjs: { url: 'https://registry.npmjs.org/' } }, + packages: {} as Record, + }; + + for (const pack of localPackages) { + const allowUpstream = upstreamVersions.includes(pack); + + verdaccioConfig.packages[pack] = { + access: '$all', + publish: '$all', + proxy: allowUpstream ? 'npmjs' : 'none', + }; + } + verdaccioConfig.packages['**'] = { + access: '$all', + proxy: 'npmjs', + }; + + // bash only expands {...} if there's a , in there, otherwise it will leave the + // braces in literally. So we need to do case analysis here. Thanks, I hate it. + const tarballBashExpr = localPackages.length === 1 + ? `packages/${localPackages[0]}/dist/js/*.tgz` + : `packages/{${localPackages.join(',')}}/dist/js/*.tgz`; + + // Add a script that will upload all packages to Verdaccio. + // + // This is a script because we want to be able to update it on a per-branch basis + // (so this information cannot live in the workflow, because that only takes effect after + // a PR changing it has been merged to `main`). + // + // It also cannot be a simple projen task, because we run the tests disconnected + // from a source checkout and we need to transfer artifacts from the 'prepare' job to + // the 'run' job. + // + // So we create a script file that we send as an artifact, and run in the + // 'run' job. + + new TextFile(repo, '.projen/prepare-verdaccio.sh', { + executable: true, + lines: [ + '#!/bin/bash', + 'npm install -g verdaccio pm2', + 'mkdir -p $HOME/.config/verdaccio', + `echo '${JSON.stringify(verdaccioConfig)}' > $HOME/.config/verdaccio/config.yaml`, + 'pm2 start verdaccio -- --config $HOME/.config/verdaccio/config.yaml', + 'sleep 5', // Wait for Verdaccio to start + // Configure NPM to use local registry + 'echo \'//localhost:4873/:_authToken="MWRjNDU3OTE1NTljYWUyOTFkMWJkOGUyYTIwZWMwNTI6YTgwZjkyNDE0NzgwYWQzNQ=="\' > ~/.npmrc', + 'echo \'registry=http://localhost:4873/\' >> ~/.npmrc', + // Find and locally publish all tarballs + `for pkg in ${tarballBashExpr}; do`, + ' npm publish --loglevel=warn $pkg', + 'done', + ], + }); + runTestsWorkflow.on({ pullRequestTarget: { branches: [], @@ -233,38 +292,32 @@ export class CdkCliIntegTestsWorkflow extends Component { overwrite: 'true', }, }, + { + name: 'Upload scripts', + uses: 'actions/upload-artifact@v4.4.0', + with: { + 'name': 'script-artifact', + 'path': '.projen/*.sh', + 'overwrite': 'true', + 'include-hidden-files': true, + }, + }, ], }); - const verdaccioConfig = { - storage: './storage', - auth: { htpasswd: { file: './htpasswd' } }, - uplinks: { npmjs: { url: 'https://registry.npmjs.org/' } }, - packages: {} as Record, - }; - - for (const pack of localPackages) { - const allowUpstream = upstreamVersions.includes(pack); + // We create a matrix job for the test. + // This job will run all the different test suites in parallel. + const matrixInclude: github.workflows.JobMatrix['include'] = []; + const matrixExclude: github.workflows.JobMatrix['exclude'] = []; - verdaccioConfig.packages[pack] = { - access: '$all', - publish: '$all', - proxy: allowUpstream ? 'npmjs' : 'none', - }; - } - verdaccioConfig.packages['**'] = { - access: '$all', - proxy: 'npmjs', - }; + // In addition to the default runs, run these suites under different Node versions + matrixInclude.push(...['init-typescript-app', 'toolkit-lib-integ-tests'].flatMap( + suite => (props.additionalNodeVersionsToTest ?? []).map(node => ({ suite, node })))); - // bash only expands {...} if there's a , in there, otherwise it will leave the - // braces in literally. So we need to do case analysis here. Thanks, I hate it. - const tarballBashExpr = localPackages.length === 1 - ? `packages/${localPackages[0]}/dist/js/*.tgz` - : `packages/{${localPackages.join(',')}}/dist/js/*.tgz`; + // We are finding that Amplify works on Node 20, but fails on Node >=22.10. Remove the 'lts/*' test and use a Node 20 for now. + matrixExclude.push({ suite: 'tool-integrations', node: 'lts/*' }); + matrixInclude.push({ suite: 'tool-integrations', node: 20 }); - // We create a matrix job for the test. - // This job will run all the different test suites in parallel. const JOB_INTEG_MATRIX = 'integ_matrix'; runTestsWorkflow.addJob(JOB_INTEG_MATRIX, { environment: props.testEnvironment, @@ -307,7 +360,8 @@ export class CdkCliIntegTestsWorkflow extends Component { ], node: ['lts/*'], }, - include: ['init-typescript-app', 'toolkit-lib-integ-tests'].flatMap(suite => (props.additionalNodeVersionsToTest ?? []).map(node => ({ suite, node }))), + include: matrixInclude, + exclude: matrixExclude, }, }, steps: [ @@ -319,6 +373,14 @@ export class CdkCliIntegTestsWorkflow extends Component { path: 'packages', }, }, + { + name: 'Download scripts', + uses: 'actions/download-artifact@v4', + with: { + name: 'script-artifact', + path: '.projen', + }, + }, { name: 'Setup Node.js', uses: 'actions/setup-node@v4', @@ -357,38 +419,8 @@ export class CdkCliIntegTestsWorkflow extends Component { ].join('\n'), }, { - name: 'Install Verdaccio', - run: 'npm install -g verdaccio pm2', - }, - { - name: 'Create Verdaccio config', - run: [ - 'mkdir -p $HOME/.config/verdaccio', - `echo '${JSON.stringify(verdaccioConfig)}' > $HOME/.config/verdaccio/config.yaml`, - ].join('\n'), - }, - { - name: 'Start Verdaccio', - run: [ - 'pm2 start verdaccio -- --config $HOME/.config/verdaccio/config.yaml', - 'sleep 5 # Wait for Verdaccio to start', - ].join('\n'), - }, - { - name: 'Configure npm to use local registry', - run: [ - // This token is a bogus token. It doesn't represent any actual secret, it just needs to exist. - 'echo \'//localhost:4873/:_authToken="MWRjNDU3OTE1NTljYWUyOTFkMWJkOGUyYTIwZWMwNTI6YTgwZjkyNDE0NzgwYWQzNQ=="\' > ~/.npmrc', - 'echo \'registry=http://localhost:4873/\' >> ~/.npmrc', - ].join('\n'), - }, - { - name: 'Find an locally publish all tarballs', - run: [ - `for pkg in ${tarballBashExpr}; do`, - ' npm publish $pkg', - 'done', - ].join('\n'), + name: 'Prepare Verdaccio', + run: 'chmod +x .projen/prepare-verdaccio.sh && .projen/prepare-verdaccio.sh', }, { name: 'Download and install the test artifact', @@ -443,13 +475,26 @@ export class CdkCliIntegTestsWorkflow extends Component { 'fi', ].join('\n'), }, + // Slugify artifact ID, because matrix.node will contain invalid chars + { + name: 'Slugify artifact id', + if: 'always()', + id: 'artifactid', + run: [ + 'slug=$(node -p \'process.env.INPUT.replace(/[^a-z0-9._-]/gi, "-")\')', + 'echo "slug=$slug" >> "$GITHUB_OUTPUT"', + ].join('\n'), + env: { + INPUT: 'logs-${{ matrix.suite }}-${{ matrix.node }}', + }, + }, { name: 'Upload logs', if: 'always()', uses: 'actions/upload-artifact@v4.4.0', id: 'logupload', with: { - name: 'logs-${{ matrix.suite }}', + name: '${{ steps.artifactid.outputs.slug }}', path: 'logs/', overwrite: 'true', }, diff --git a/yarn.lock b/yarn.lock index c12bee60f..745026e4d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -31,26 +31,26 @@ resolved "https://registry.yarnpkg.com/@aws-cdk/asset-node-proxy-agent-v6/-/asset-node-proxy-agent-v6-2.1.0.tgz#6d3c7860354d4856a7e75375f2f0ecab313b4989" integrity sha512-7bY3J8GCVxLupn/kNmpPc5VJz8grx+4RKfnnJiO1LG+uxkZfANZG3RMHhE+qQxxwkyQ9/MfPtTpf748UhR425A== -"@aws-cdk/aws-service-spec@^0.1.80": - version "0.1.80" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-service-spec/-/aws-service-spec-0.1.80.tgz#cacb1f4420dc6a01e7cf4c82012871aa9f6a6430" - integrity sha512-uzGti29w9+cHG86PYNIPAkvM7KbuxlKXoD1BxCTYp7uRxBhzfrxTiNdAKEgUZ5/8YQOqGq+0zbHclrKBRuz6vA== +"@aws-cdk/aws-service-spec@^0.1.82": + version "0.1.82" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-service-spec/-/aws-service-spec-0.1.82.tgz#d9d0b9e918daea01912de11e670e29e669b0f718" + integrity sha512-Vn0qMU00ozjmzxMgAluhS8V8H+/tk0Zk8VwKKf4kDJ3i1uFp15mfQM5vch8JwNs5Tn/xAOCX7jIavh1PiKfKYg== dependencies: - "@aws-cdk/service-spec-types" "^0.0.146" + "@aws-cdk/service-spec-types" "^0.0.148" "@cdklabs/tskb" "^0.0.3" -"@aws-cdk/cloud-assembly-schema@^44.1.0": - version "44.2.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-44.2.0.tgz#1fa94dd99d6d9d0a7ae3abe353f5edb156451323" - integrity sha512-oB3fq8yudGMHsSOyh2rFge5HVUMS6MOiAqK/6a9pyG4kHPkza0xCPlpvLFVCliD8y/VrsfxIcA584x9O0cxDiQ== +"@aws-cdk/cloud-assembly-schema@^44.2.0": + version "44.5.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-44.5.0.tgz#475b4997977c1e3f8ebc379823259f4c85986ce8" + integrity sha512-/dk9YtqF+BnBS6k4m7YWIp7Pd80m7jdjT8ED8gb3Rd9hAuAEUoJubO0M3EOlLFmknIesQNm95LYU6vt/MIQhWg== dependencies: jsonschema "~1.4.1" semver "^7.7.2" -"@aws-cdk/cx-api@^2", "@aws-cdk/cx-api@^2.200.1": - version "2.200.1" - resolved "https://registry.yarnpkg.com/@aws-cdk/cx-api/-/cx-api-2.200.1.tgz#977ac9e8cde7e7ea9f3ab84a6add786795c24475" - integrity sha512-1HVrDXzEL+ZPHvL8A2J/Cw8FVOmlc87PzkmqG3l4PQJDlxLOJ7pTtLzuaxukVpYB1HKSMQOD0f8Sc9s7R35oRA== +"@aws-cdk/cx-api@^2", "@aws-cdk/cx-api@^2.201.0": + version "2.201.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/cx-api/-/cx-api-2.201.0.tgz#7cb93841833eb5a58a4b5ae6e31ba50e8cf3dcd9" + integrity sha512-wNr4vwbZDhj7RhDMOSuisJjvsm3VoWjETxhtXpqLAC6XgeLgiz23Bhq0nmpTzRDKeyvW59JO5eIkbJDSNDpdJA== dependencies: semver "^7.7.2" @@ -59,10 +59,10 @@ resolved "https://registry.yarnpkg.com/@aws-cdk/integ-tests-alpha/-/integ-tests-alpha-2.184.1-alpha.0.tgz#0719db2d294eac42de58f320238b3cd9a0e5b8fc" integrity sha512-9ca8uxcP41USi2Y/ulGFR9iCLEAofq6h8VcSMpJHRvJb3mQtBJ+WYwXIn+uyMtDBIWX4pOyMk/6XZDuZVpwOsg== -"@aws-cdk/service-spec-types@^0.0.146": - version "0.0.146" - resolved "https://registry.yarnpkg.com/@aws-cdk/service-spec-types/-/service-spec-types-0.0.146.tgz#c21aa38d6c85bc6c28e405bca2f76a49a01adb03" - integrity sha512-NXHw/F2kJs5euL9713wMUQJRsTONIt0jMz4vSFmLELEYvzlnL2sghHazD+B5frCV65D5Fp2Q8ibMmHXCyxOJ1Q== +"@aws-cdk/service-spec-types@^0.0.148": + version "0.0.148" + resolved "https://registry.yarnpkg.com/@aws-cdk/service-spec-types/-/service-spec-types-0.0.148.tgz#8ec4fa34d4bbb7e9542bce09da0641a20795f771" + integrity sha512-efHu3o1r/OWpwtz0415EEyXOLtxq7Wd4m7vb+bSg/QybNK9wwwlmYqDQaA8bDzygGJr4Kyq6losvGZhiBuYkiA== dependencies: "@cdklabs/tskb" "^0.0.3" @@ -187,23 +187,23 @@ tslib "^1.8.0" "@aws-sdk/client-appsync@^3": - version "3.826.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-appsync/-/client-appsync-3.826.0.tgz#1587c4810cab411c6743263ec84736148d7a8584" - integrity sha512-w41YIXLT1w7zjTwXrXU+tUkaUiBDnZfhgpT8KHEAV0eujmDztnSm5h4SECgcVos2XhBtOwHdLlYNRKmZ9i7qUQ== + version "3.828.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-appsync/-/client-appsync-3.828.0.tgz#6df9b6cfb481e8a9e0dc9d3c949a0f67aeaa9537" + integrity sha512-gyxuPsMUY6/UqrZAa7G5pQInZIAOnlMAqRtTEJvkrxOgy2RcgADfYHuZGTP/4wZWFEvHbJ6bm94s19qrOryDlA== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" "@aws-sdk/core" "3.826.0" - "@aws-sdk/credential-provider-node" "3.826.0" + "@aws-sdk/credential-provider-node" "3.828.0" "@aws-sdk/middleware-host-header" "3.821.0" "@aws-sdk/middleware-logger" "3.821.0" "@aws-sdk/middleware-recursion-detection" "3.821.0" - "@aws-sdk/middleware-user-agent" "3.826.0" + "@aws-sdk/middleware-user-agent" "3.828.0" "@aws-sdk/region-config-resolver" "3.821.0" "@aws-sdk/types" "3.821.0" - "@aws-sdk/util-endpoints" "3.821.0" + "@aws-sdk/util-endpoints" "3.828.0" "@aws-sdk/util-user-agent-browser" "3.821.0" - "@aws-sdk/util-user-agent-node" "3.826.0" + "@aws-sdk/util-user-agent-node" "3.828.0" "@smithy/config-resolver" "^4.1.4" "@smithy/core" "^3.5.3" "@smithy/fetch-http-handler" "^5.0.4" @@ -233,23 +233,23 @@ tslib "^2.6.2" "@aws-sdk/client-cloudcontrol@^3": - version "3.826.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-cloudcontrol/-/client-cloudcontrol-3.826.0.tgz#2fd5dd160603bb927eef84b4f8d5d0109c297c57" - integrity sha512-tWiRd8Rt8t4BcRuxros5YObXX1/547qKSvVfKyPR3MMuTZSEqJUJFQp4QM9BYbSedk11eYUdNMjiGU228S0Lww== + version "3.828.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-cloudcontrol/-/client-cloudcontrol-3.828.0.tgz#afb87cbf879230f43f4554e9f7dd3a0ed1fe2f41" + integrity sha512-Rrwa8KyZZxgjhqkP6DHGcJ8rjU/CfU28fW4f+l+ol6yXno6dvNenpwvb1dt7PZ3JWomDHejGoVysh8AGPfOkCw== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" "@aws-sdk/core" "3.826.0" - "@aws-sdk/credential-provider-node" "3.826.0" + "@aws-sdk/credential-provider-node" "3.828.0" "@aws-sdk/middleware-host-header" "3.821.0" "@aws-sdk/middleware-logger" "3.821.0" "@aws-sdk/middleware-recursion-detection" "3.821.0" - "@aws-sdk/middleware-user-agent" "3.826.0" + "@aws-sdk/middleware-user-agent" "3.828.0" "@aws-sdk/region-config-resolver" "3.821.0" "@aws-sdk/types" "3.821.0" - "@aws-sdk/util-endpoints" "3.821.0" + "@aws-sdk/util-endpoints" "3.828.0" "@aws-sdk/util-user-agent-browser" "3.821.0" - "@aws-sdk/util-user-agent-node" "3.826.0" + "@aws-sdk/util-user-agent-node" "3.828.0" "@smithy/config-resolver" "^4.1.4" "@smithy/core" "^3.5.3" "@smithy/fetch-http-handler" "^5.0.4" @@ -320,23 +320,23 @@ uuid "^3.0.0" "@aws-sdk/client-cloudformation@^3": - version "3.826.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-cloudformation/-/client-cloudformation-3.826.0.tgz#7ee2c9e101883c7652008d8472952c55fd3813b8" - integrity sha512-jo9d7PSBFbS+gKsYtOh3QZach/miMVi5fOoiPkUxCoXRQVsvEkOeEKyPrL85rp+u4/C77EoIufzDVRoTJq3cKQ== + version "3.828.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-cloudformation/-/client-cloudformation-3.828.0.tgz#86b97b6297578b4fbc9bcf294dfab53d226684e6" + integrity sha512-OvMLQt0/Yn6uiqIdVQR6iZu5FCXoYvAtURZM4igXpFjjfSNtAdEPt/Hh0oxZDsKJSiFOczEORDhqb5AnhWp3Ew== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" "@aws-sdk/core" "3.826.0" - "@aws-sdk/credential-provider-node" "3.826.0" + "@aws-sdk/credential-provider-node" "3.828.0" "@aws-sdk/middleware-host-header" "3.821.0" "@aws-sdk/middleware-logger" "3.821.0" "@aws-sdk/middleware-recursion-detection" "3.821.0" - "@aws-sdk/middleware-user-agent" "3.826.0" + "@aws-sdk/middleware-user-agent" "3.828.0" "@aws-sdk/region-config-resolver" "3.821.0" "@aws-sdk/types" "3.821.0" - "@aws-sdk/util-endpoints" "3.821.0" + "@aws-sdk/util-endpoints" "3.828.0" "@aws-sdk/util-user-agent-browser" "3.821.0" - "@aws-sdk/util-user-agent-node" "3.826.0" + "@aws-sdk/util-user-agent-node" "3.828.0" "@smithy/config-resolver" "^4.1.4" "@smithy/core" "^3.5.3" "@smithy/fetch-http-handler" "^5.0.4" @@ -368,23 +368,23 @@ uuid "^9.0.1" "@aws-sdk/client-cloudwatch-logs@^3": - version "3.826.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-cloudwatch-logs/-/client-cloudwatch-logs-3.826.0.tgz#f4b3ee424f23cc836f6623b4fcc1326b581c84e7" - integrity sha512-eldrBVavaXqSGIMbhje0oKQntGNAdAXGqKeuWPa1Igl10KVGvQke/MA1Qqh7Tp+JL/FSfr2BhCjATdooPDb0hA== + version "3.828.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-cloudwatch-logs/-/client-cloudwatch-logs-3.828.0.tgz#fb4efbc39856bd33459d1e9eb0de1390870552cd" + integrity sha512-EeDYXwwWv+1Xk5lVehpf+9SH0N2xMU1ypJ9o7ifYL/G4dXI0us7k23Ds0UHescziQMFJKGJ9yAmCTY791QAsyw== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" "@aws-sdk/core" "3.826.0" - "@aws-sdk/credential-provider-node" "3.826.0" + "@aws-sdk/credential-provider-node" "3.828.0" "@aws-sdk/middleware-host-header" "3.821.0" "@aws-sdk/middleware-logger" "3.821.0" "@aws-sdk/middleware-recursion-detection" "3.821.0" - "@aws-sdk/middleware-user-agent" "3.826.0" + "@aws-sdk/middleware-user-agent" "3.828.0" "@aws-sdk/region-config-resolver" "3.821.0" "@aws-sdk/types" "3.821.0" - "@aws-sdk/util-endpoints" "3.821.0" + "@aws-sdk/util-endpoints" "3.828.0" "@aws-sdk/util-user-agent-browser" "3.821.0" - "@aws-sdk/util-user-agent-node" "3.826.0" + "@aws-sdk/util-user-agent-node" "3.828.0" "@smithy/config-resolver" "^4.1.4" "@smithy/core" "^3.5.3" "@smithy/eventstream-serde-browser" "^4.0.4" @@ -418,23 +418,23 @@ uuid "^9.0.1" "@aws-sdk/client-codeartifact@^3": - version "3.826.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-codeartifact/-/client-codeartifact-3.826.0.tgz#216236d839b94053f92a6f8873a28cff1c9d9cac" - integrity sha512-W8TGLo9SqvpBSMmHyNET7M06npE6yjJeVchWsCNYtvs+9pOA5exStMqzukDyPmNW71kpPLCJJXT4hRr23X1vSA== + version "3.828.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-codeartifact/-/client-codeartifact-3.828.0.tgz#8d38c72cad6b3c36bbd5d376fffed31d1335fcb7" + integrity sha512-NUoEKhMs6ry1nSEIbfaZ/kEqSx+KmFP1oaqj8uJWts1E1VWk6nCV0+H6eFicWx7wtF5Iyk4GDE0eNkWWplI34w== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" "@aws-sdk/core" "3.826.0" - "@aws-sdk/credential-provider-node" "3.826.0" + "@aws-sdk/credential-provider-node" "3.828.0" "@aws-sdk/middleware-host-header" "3.821.0" "@aws-sdk/middleware-logger" "3.821.0" "@aws-sdk/middleware-recursion-detection" "3.821.0" - "@aws-sdk/middleware-user-agent" "3.826.0" + "@aws-sdk/middleware-user-agent" "3.828.0" "@aws-sdk/region-config-resolver" "3.821.0" "@aws-sdk/types" "3.821.0" - "@aws-sdk/util-endpoints" "3.821.0" + "@aws-sdk/util-endpoints" "3.828.0" "@aws-sdk/util-user-agent-browser" "3.821.0" - "@aws-sdk/util-user-agent-node" "3.826.0" + "@aws-sdk/util-user-agent-node" "3.828.0" "@smithy/config-resolver" "^4.1.4" "@smithy/core" "^3.5.3" "@smithy/fetch-http-handler" "^5.0.4" @@ -464,23 +464,23 @@ tslib "^2.6.2" "@aws-sdk/client-codebuild@^3": - version "3.826.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-codebuild/-/client-codebuild-3.826.0.tgz#5ebd97eea1c787ce10609d2b77c98463d5a75a5c" - integrity sha512-qCCoB/vInZ+Q3OsMZl96FC+vzMJBTVWVJbqI0YrVmK6DA6KJiRgnQMzed8IGRLHfcW2M9cH+5ifc4K/nHG5Fbw== + version "3.828.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-codebuild/-/client-codebuild-3.828.0.tgz#d860e6ceefa932f1d3ad42054da37e6a82ffeedc" + integrity sha512-i/UOXJduvqoBxlx1WQ5ZJ2/0J2/1qPPkQ/9Rfbci9grkfxblw5eB+3AYCvh6BDucPXDqlvvSQMq0iw1ZwQgo+A== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" "@aws-sdk/core" "3.826.0" - "@aws-sdk/credential-provider-node" "3.826.0" + "@aws-sdk/credential-provider-node" "3.828.0" "@aws-sdk/middleware-host-header" "3.821.0" "@aws-sdk/middleware-logger" "3.821.0" "@aws-sdk/middleware-recursion-detection" "3.821.0" - "@aws-sdk/middleware-user-agent" "3.826.0" + "@aws-sdk/middleware-user-agent" "3.828.0" "@aws-sdk/region-config-resolver" "3.821.0" "@aws-sdk/types" "3.821.0" - "@aws-sdk/util-endpoints" "3.821.0" + "@aws-sdk/util-endpoints" "3.828.0" "@aws-sdk/util-user-agent-browser" "3.821.0" - "@aws-sdk/util-user-agent-node" "3.826.0" + "@aws-sdk/util-user-agent-node" "3.828.0" "@smithy/config-resolver" "^4.1.4" "@smithy/core" "^3.5.3" "@smithy/fetch-http-handler" "^5.0.4" @@ -508,24 +508,24 @@ "@smithy/util-utf8" "^4.0.0" tslib "^2.6.2" -"@aws-sdk/client-cognito-identity@3.826.0": - version "3.826.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.826.0.tgz#8071e4d44d03c5e8c35ba7bd2f7fedc785370e34" - integrity sha512-3SStkRCHoB7a2Q4aGA++Zvlps8qxJhtCgSRs9cOSL9ldoYGCjOATkMCYmQD9iySge/WULPDEPf5qYlAyGfoRCg== +"@aws-sdk/client-cognito-identity@3.828.0": + version "3.828.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.828.0.tgz#782bdc15aa8a701493c36cb7e982d47c085e7f0f" + integrity sha512-If4vBVbOxFfTW6JP92lWQGhis5fIt4PIS071DoSBf931ss/mISDnslpGGz1rXp6vyS8l7fODb3LDMAzSPyooNg== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" "@aws-sdk/core" "3.826.0" - "@aws-sdk/credential-provider-node" "3.826.0" + "@aws-sdk/credential-provider-node" "3.828.0" "@aws-sdk/middleware-host-header" "3.821.0" "@aws-sdk/middleware-logger" "3.821.0" "@aws-sdk/middleware-recursion-detection" "3.821.0" - "@aws-sdk/middleware-user-agent" "3.826.0" + "@aws-sdk/middleware-user-agent" "3.828.0" "@aws-sdk/region-config-resolver" "3.821.0" "@aws-sdk/types" "3.821.0" - "@aws-sdk/util-endpoints" "3.821.0" + "@aws-sdk/util-endpoints" "3.828.0" "@aws-sdk/util-user-agent-browser" "3.821.0" - "@aws-sdk/util-user-agent-node" "3.826.0" + "@aws-sdk/util-user-agent-node" "3.828.0" "@smithy/config-resolver" "^4.1.4" "@smithy/core" "^3.5.3" "@smithy/fetch-http-handler" "^5.0.4" @@ -554,24 +554,24 @@ tslib "^2.6.2" "@aws-sdk/client-ec2@^3": - version "3.826.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-ec2/-/client-ec2-3.826.0.tgz#c9f62a99618eec33c0dc9e19fed7fdc092468e94" - integrity sha512-Y+UWUgkgkdY9H+/ZDKodOEd3IGYoZR9x/QTEQv52ZHbLT1hkVFKbGH7LuyTKiwusC/JD/yV3SZYvxaNoPdT1aw== + version "3.828.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-ec2/-/client-ec2-3.828.0.tgz#e1b3dd9735bc65fd1dbf8c9c9a9545979cd29dcb" + integrity sha512-Z409xIR6BBmoXlU6OiNd5yHjbR866uUUkc9MvJepUbhDpSRwVfBRkkX5GO8V7gYu1UAykIt+OjAVgPETMdPbbg== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" "@aws-sdk/core" "3.826.0" - "@aws-sdk/credential-provider-node" "3.826.0" + "@aws-sdk/credential-provider-node" "3.828.0" "@aws-sdk/middleware-host-header" "3.821.0" "@aws-sdk/middleware-logger" "3.821.0" "@aws-sdk/middleware-recursion-detection" "3.821.0" "@aws-sdk/middleware-sdk-ec2" "3.826.0" - "@aws-sdk/middleware-user-agent" "3.826.0" + "@aws-sdk/middleware-user-agent" "3.828.0" "@aws-sdk/region-config-resolver" "3.821.0" "@aws-sdk/types" "3.821.0" - "@aws-sdk/util-endpoints" "3.821.0" + "@aws-sdk/util-endpoints" "3.828.0" "@aws-sdk/util-user-agent-browser" "3.821.0" - "@aws-sdk/util-user-agent-node" "3.826.0" + "@aws-sdk/util-user-agent-node" "3.828.0" "@smithy/config-resolver" "^4.1.4" "@smithy/core" "^3.5.3" "@smithy/fetch-http-handler" "^5.0.4" @@ -603,23 +603,23 @@ uuid "^9.0.1" "@aws-sdk/client-ecr-public@^3": - version "3.826.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-ecr-public/-/client-ecr-public-3.826.0.tgz#87f1c2d121f85274d9d614eb7555feec3ebfa4bb" - integrity sha512-br7b3maWdFS+XThMtMp6/pwA67qm1TcgzelbSGzfqnsj3HzFRuD6jLthaacyAFKrSSnWj5NTKtCX6eMUO0sTBw== + version "3.828.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-ecr-public/-/client-ecr-public-3.828.0.tgz#da24cd1faaa7fc6ae337a93661d96c874e8c8295" + integrity sha512-sfYb9Xlo26e7Dz6dmeNSRdJYAUi88Og1XCgLmHDbKzwiI1C4fYcMWLuzDQY3ZW7/lrArtYqAomjtil82+Px8vA== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" "@aws-sdk/core" "3.826.0" - "@aws-sdk/credential-provider-node" "3.826.0" + "@aws-sdk/credential-provider-node" "3.828.0" "@aws-sdk/middleware-host-header" "3.821.0" "@aws-sdk/middleware-logger" "3.821.0" "@aws-sdk/middleware-recursion-detection" "3.821.0" - "@aws-sdk/middleware-user-agent" "3.826.0" + "@aws-sdk/middleware-user-agent" "3.828.0" "@aws-sdk/region-config-resolver" "3.821.0" "@aws-sdk/types" "3.821.0" - "@aws-sdk/util-endpoints" "3.821.0" + "@aws-sdk/util-endpoints" "3.828.0" "@aws-sdk/util-user-agent-browser" "3.821.0" - "@aws-sdk/util-user-agent-node" "3.826.0" + "@aws-sdk/util-user-agent-node" "3.828.0" "@smithy/config-resolver" "^4.1.4" "@smithy/core" "^3.5.3" "@smithy/fetch-http-handler" "^5.0.4" @@ -648,23 +648,23 @@ tslib "^2.6.2" "@aws-sdk/client-ecr@^3": - version "3.826.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-ecr/-/client-ecr-3.826.0.tgz#37982168dcb85b0128fe179949fd28a9af0f71d7" - integrity sha512-ijkwk6UjvcOzsDh6sY1uaopOVlUHDbQhnwIsnMnbyruU9nytom4Ga4NYOUhRu/3Fb3gHen8lbyTRAjcMExFljQ== + version "3.828.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-ecr/-/client-ecr-3.828.0.tgz#cecc827f92a42afb0f7480a523bbfafaa4df614d" + integrity sha512-sFONWwumdY9u7UNmk0+/MMnQZES6qgPkdkxWTMwwxd+W5QZg4iGDO1EwCBxMwlReOALYZ33pijy5rZF35wQUZQ== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" "@aws-sdk/core" "3.826.0" - "@aws-sdk/credential-provider-node" "3.826.0" + "@aws-sdk/credential-provider-node" "3.828.0" "@aws-sdk/middleware-host-header" "3.821.0" "@aws-sdk/middleware-logger" "3.821.0" "@aws-sdk/middleware-recursion-detection" "3.821.0" - "@aws-sdk/middleware-user-agent" "3.826.0" + "@aws-sdk/middleware-user-agent" "3.828.0" "@aws-sdk/region-config-resolver" "3.821.0" "@aws-sdk/types" "3.821.0" - "@aws-sdk/util-endpoints" "3.821.0" + "@aws-sdk/util-endpoints" "3.828.0" "@aws-sdk/util-user-agent-browser" "3.821.0" - "@aws-sdk/util-user-agent-node" "3.826.0" + "@aws-sdk/util-user-agent-node" "3.828.0" "@smithy/config-resolver" "^4.1.4" "@smithy/core" "^3.5.3" "@smithy/fetch-http-handler" "^5.0.4" @@ -694,23 +694,23 @@ tslib "^2.6.2" "@aws-sdk/client-ecs@^3": - version "3.826.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-ecs/-/client-ecs-3.826.0.tgz#e4d24be7de7e1717b3505619c0152ea8801cdf8d" - integrity sha512-A7Bkq9LA3j6K5J6kjP8W2xgCwdupV+roYiA94J5lKF4XK8oeXM1/HlCB3/pRZuI5FDZUVZPPw+P6ancobYz09w== + version "3.829.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-ecs/-/client-ecs-3.829.0.tgz#aa4f97bcfb1dcb0a17fc8aa5f61ac545ecdc5928" + integrity sha512-taFPBBHuID0BGTxAFbTYrkCjrBIYgm0/U5BIW1EKcHLY+yNUlorKujX0/pvkoF7dJVFk4gUn5mF7Thm/yjQwHw== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" "@aws-sdk/core" "3.826.0" - "@aws-sdk/credential-provider-node" "3.826.0" + "@aws-sdk/credential-provider-node" "3.828.0" "@aws-sdk/middleware-host-header" "3.821.0" "@aws-sdk/middleware-logger" "3.821.0" "@aws-sdk/middleware-recursion-detection" "3.821.0" - "@aws-sdk/middleware-user-agent" "3.826.0" + "@aws-sdk/middleware-user-agent" "3.828.0" "@aws-sdk/region-config-resolver" "3.821.0" "@aws-sdk/types" "3.821.0" - "@aws-sdk/util-endpoints" "3.821.0" + "@aws-sdk/util-endpoints" "3.828.0" "@aws-sdk/util-user-agent-browser" "3.821.0" - "@aws-sdk/util-user-agent-node" "3.826.0" + "@aws-sdk/util-user-agent-node" "3.828.0" "@smithy/config-resolver" "^4.1.4" "@smithy/core" "^3.5.3" "@smithy/fetch-http-handler" "^5.0.4" @@ -742,23 +742,23 @@ uuid "^9.0.1" "@aws-sdk/client-elastic-load-balancing-v2@^3": - version "3.826.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-elastic-load-balancing-v2/-/client-elastic-load-balancing-v2-3.826.0.tgz#b83577c453115b903934ceaa59e7d41c5eaa18a9" - integrity sha512-lXgUKLQYcm4gzZJkgDkpTjZdRMrb8fcinsF9xElLo818Jgi9qVeZhyP105HdtcFgDx6maxkz7vlYLIV/e/i2rA== + version "3.828.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-elastic-load-balancing-v2/-/client-elastic-load-balancing-v2-3.828.0.tgz#e6560566c61da9816b7a9e4a209cf700c1612a2f" + integrity sha512-HPfCiUpwBAx/EhZRqRUtUwv+GPiXxr29yINceds6fI9LsyKr6ZTAk4/6r1V/aqvNGwwu817J5NqJ5CYsZwKqkw== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" "@aws-sdk/core" "3.826.0" - "@aws-sdk/credential-provider-node" "3.826.0" + "@aws-sdk/credential-provider-node" "3.828.0" "@aws-sdk/middleware-host-header" "3.821.0" "@aws-sdk/middleware-logger" "3.821.0" "@aws-sdk/middleware-recursion-detection" "3.821.0" - "@aws-sdk/middleware-user-agent" "3.826.0" + "@aws-sdk/middleware-user-agent" "3.828.0" "@aws-sdk/region-config-resolver" "3.821.0" "@aws-sdk/types" "3.821.0" - "@aws-sdk/util-endpoints" "3.821.0" + "@aws-sdk/util-endpoints" "3.828.0" "@aws-sdk/util-user-agent-browser" "3.821.0" - "@aws-sdk/util-user-agent-node" "3.826.0" + "@aws-sdk/util-user-agent-node" "3.828.0" "@smithy/config-resolver" "^4.1.4" "@smithy/core" "^3.5.3" "@smithy/fetch-http-handler" "^5.0.4" @@ -788,23 +788,23 @@ tslib "^2.6.2" "@aws-sdk/client-iam@^3": - version "3.826.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-iam/-/client-iam-3.826.0.tgz#bba725261027423edbd20555075a96298191ad90" - integrity sha512-QbsdS0ZTlIczQXGtX613P48cdMixP+ngGkypTg9P4t9MhCZm3JxMmAybXBzUJBXUUiR0yWce5Oh017ZHyGEUIg== + version "3.828.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-iam/-/client-iam-3.828.0.tgz#8cf704f1b9370fe6b7bce9750fe9668972fd9c21" + integrity sha512-fuWJ/YzlMKWNtID48Y91h/l84kGocqgSWDOuIeT/k8oJO4XqiO/PA72HHvUVOSUXRjyUyW06sYCe1tFLZ4Vhqw== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" "@aws-sdk/core" "3.826.0" - "@aws-sdk/credential-provider-node" "3.826.0" + "@aws-sdk/credential-provider-node" "3.828.0" "@aws-sdk/middleware-host-header" "3.821.0" "@aws-sdk/middleware-logger" "3.821.0" "@aws-sdk/middleware-recursion-detection" "3.821.0" - "@aws-sdk/middleware-user-agent" "3.826.0" + "@aws-sdk/middleware-user-agent" "3.828.0" "@aws-sdk/region-config-resolver" "3.821.0" "@aws-sdk/types" "3.821.0" - "@aws-sdk/util-endpoints" "3.821.0" + "@aws-sdk/util-endpoints" "3.828.0" "@aws-sdk/util-user-agent-browser" "3.821.0" - "@aws-sdk/util-user-agent-node" "3.826.0" + "@aws-sdk/util-user-agent-node" "3.828.0" "@smithy/config-resolver" "^4.1.4" "@smithy/core" "^3.5.3" "@smithy/fetch-http-handler" "^5.0.4" @@ -834,23 +834,23 @@ tslib "^2.6.2" "@aws-sdk/client-kms@^3": - version "3.826.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-kms/-/client-kms-3.826.0.tgz#b43e096717c5b46beff3e1227758eb24dfa6d0ae" - integrity sha512-97UFikkyIbeul0USWmn5TE+L41uufkhPt8ASHX6wFrkQ7iWvSXO1JJym0jNJeg5TWBVYUUZARZSl8/a+QiG7Lg== + version "3.829.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-kms/-/client-kms-3.829.0.tgz#9028fc8292672685fd21172de4b24ca2bb0833bb" + integrity sha512-yc/oYR3zOe0SJPlO2ij0e2wEVgC52RBD4jX5sSHzi7BgH6L/Jkrg1XsUvAGNzOP7TaSAqfbqtX+yyvB6ndNv1g== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" "@aws-sdk/core" "3.826.0" - "@aws-sdk/credential-provider-node" "3.826.0" + "@aws-sdk/credential-provider-node" "3.828.0" "@aws-sdk/middleware-host-header" "3.821.0" "@aws-sdk/middleware-logger" "3.821.0" "@aws-sdk/middleware-recursion-detection" "3.821.0" - "@aws-sdk/middleware-user-agent" "3.826.0" + "@aws-sdk/middleware-user-agent" "3.828.0" "@aws-sdk/region-config-resolver" "3.821.0" "@aws-sdk/types" "3.821.0" - "@aws-sdk/util-endpoints" "3.821.0" + "@aws-sdk/util-endpoints" "3.828.0" "@aws-sdk/util-user-agent-browser" "3.821.0" - "@aws-sdk/util-user-agent-node" "3.826.0" + "@aws-sdk/util-user-agent-node" "3.828.0" "@smithy/config-resolver" "^4.1.4" "@smithy/core" "^3.5.3" "@smithy/fetch-http-handler" "^5.0.4" @@ -879,23 +879,23 @@ tslib "^2.6.2" "@aws-sdk/client-lambda@^3": - version "3.826.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-lambda/-/client-lambda-3.826.0.tgz#dedcd3f4c324b325dab4ab68b90e2dd49b0b7375" - integrity sha512-RWkzP6yZ7YZ856ibtab9TYC8zzm7uc0zOcG78moNrIwr3b9yacXrIjRAcRQ6RApYhiVEr4F5CIHyrjgwcDfelQ== + version "3.828.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-lambda/-/client-lambda-3.828.0.tgz#99b2522c450bd1f6e654bc14ccc88f1602fa4203" + integrity sha512-iAOTfVUWz4ZeFoADr599PLmArM0xI25mzGeCbYugSErrVnlGs86Od17sOjitypGNOoSOcOTxBHTSV0+OsOFnsg== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" "@aws-sdk/core" "3.826.0" - "@aws-sdk/credential-provider-node" "3.826.0" + "@aws-sdk/credential-provider-node" "3.828.0" "@aws-sdk/middleware-host-header" "3.821.0" "@aws-sdk/middleware-logger" "3.821.0" "@aws-sdk/middleware-recursion-detection" "3.821.0" - "@aws-sdk/middleware-user-agent" "3.826.0" + "@aws-sdk/middleware-user-agent" "3.828.0" "@aws-sdk/region-config-resolver" "3.821.0" "@aws-sdk/types" "3.821.0" - "@aws-sdk/util-endpoints" "3.821.0" + "@aws-sdk/util-endpoints" "3.828.0" "@aws-sdk/util-user-agent-browser" "3.821.0" - "@aws-sdk/util-user-agent-node" "3.826.0" + "@aws-sdk/util-user-agent-node" "3.828.0" "@smithy/config-resolver" "^4.1.4" "@smithy/core" "^3.5.3" "@smithy/eventstream-serde-browser" "^4.0.4" @@ -929,24 +929,24 @@ tslib "^2.6.2" "@aws-sdk/client-route-53@^3": - version "3.826.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-route-53/-/client-route-53-3.826.0.tgz#f154b46bf6dce6530f48208ca5e2ec5be72f9a7f" - integrity sha512-3oi4JHO4ke9Or25bNYV3F9I+eaCE6eSzt3kb+m2pqkt34Wj3vbGtdn5S6n+NIHQEdm0C5q8pC7BltwtpSNIgDg== + version "3.828.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-route-53/-/client-route-53-3.828.0.tgz#ffba4ad9669a1da641c3a518fc2a1d148431eb1f" + integrity sha512-lol+WuTPa9Iw8hcvz9CatQb8yB76MWrUsTA98wiwNuAsYJ1nVmQHLiENdDE7miiObXPI3I/HEGw9pHWpsUxQXA== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" "@aws-sdk/core" "3.826.0" - "@aws-sdk/credential-provider-node" "3.826.0" + "@aws-sdk/credential-provider-node" "3.828.0" "@aws-sdk/middleware-host-header" "3.821.0" "@aws-sdk/middleware-logger" "3.821.0" "@aws-sdk/middleware-recursion-detection" "3.821.0" "@aws-sdk/middleware-sdk-route53" "3.821.0" - "@aws-sdk/middleware-user-agent" "3.826.0" + "@aws-sdk/middleware-user-agent" "3.828.0" "@aws-sdk/region-config-resolver" "3.821.0" "@aws-sdk/types" "3.821.0" - "@aws-sdk/util-endpoints" "3.821.0" + "@aws-sdk/util-endpoints" "3.828.0" "@aws-sdk/util-user-agent-browser" "3.821.0" - "@aws-sdk/util-user-agent-node" "3.826.0" + "@aws-sdk/util-user-agent-node" "3.828.0" "@aws-sdk/xml-builder" "3.821.0" "@smithy/config-resolver" "^4.1.4" "@smithy/core" "^3.5.3" @@ -977,15 +977,15 @@ tslib "^2.6.2" "@aws-sdk/client-s3@^3": - version "3.826.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.826.0.tgz#e6fdc589d5691f2c1212653ec6bb37f47b383897" - integrity sha512-odX3C3CEbcBoxB06vgBjJ9jQheFsIFwHmvCIMXn8duuVyIL/klgp14+ICzbEwIgPv7xVjSlycaiURcKS876QHA== + version "3.828.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.828.0.tgz#f026b618aa1cdae696a34c47aabb5712606ce0d7" + integrity sha512-TvFyrEfJkf9NN3cq5mXCgFv/sPaA8Rm5tEPgV5emuLedeGsORlWmVpdSKqfZ4lSoED1tMfNM6LY4uA9D8/RS5g== dependencies: "@aws-crypto/sha1-browser" "5.2.0" "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" "@aws-sdk/core" "3.826.0" - "@aws-sdk/credential-provider-node" "3.826.0" + "@aws-sdk/credential-provider-node" "3.828.0" "@aws-sdk/middleware-bucket-endpoint" "3.821.0" "@aws-sdk/middleware-expect-continue" "3.821.0" "@aws-sdk/middleware-flexible-checksums" "3.826.0" @@ -995,13 +995,13 @@ "@aws-sdk/middleware-recursion-detection" "3.821.0" "@aws-sdk/middleware-sdk-s3" "3.826.0" "@aws-sdk/middleware-ssec" "3.821.0" - "@aws-sdk/middleware-user-agent" "3.826.0" + "@aws-sdk/middleware-user-agent" "3.828.0" "@aws-sdk/region-config-resolver" "3.821.0" "@aws-sdk/signature-v4-multi-region" "3.826.0" "@aws-sdk/types" "3.821.0" - "@aws-sdk/util-endpoints" "3.821.0" + "@aws-sdk/util-endpoints" "3.828.0" "@aws-sdk/util-user-agent-browser" "3.821.0" - "@aws-sdk/util-user-agent-node" "3.826.0" + "@aws-sdk/util-user-agent-node" "3.828.0" "@aws-sdk/xml-builder" "3.821.0" "@smithy/config-resolver" "^4.1.4" "@smithy/core" "^3.5.3" @@ -1039,23 +1039,23 @@ tslib "^2.6.2" "@aws-sdk/client-secrets-manager@^3": - version "3.826.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.826.0.tgz#9f9fdc44cafcfb4e37b8fdb4c5b478eadae7f2e0" - integrity sha512-Uqy9UyQqhsMoxOk0HLv0c7RMwMu2tRnjHKL6be0Spsy41Q+cZuJRjPvq1AmHUblvam8olbQwud99A6cFO/8Efw== + version "3.828.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.828.0.tgz#d05a959e8373a6a23074977d6005e61a3e0d08c8" + integrity sha512-q6PO03nzWn4DCaZjwobB9GPjhaF2C0PUeCsmqymNbSjMPn1rVgpi1fbeCE6ZnS2jmv1lOF6FTAXfG0cGF+iT4Q== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" "@aws-sdk/core" "3.826.0" - "@aws-sdk/credential-provider-node" "3.826.0" + "@aws-sdk/credential-provider-node" "3.828.0" "@aws-sdk/middleware-host-header" "3.821.0" "@aws-sdk/middleware-logger" "3.821.0" "@aws-sdk/middleware-recursion-detection" "3.821.0" - "@aws-sdk/middleware-user-agent" "3.826.0" + "@aws-sdk/middleware-user-agent" "3.828.0" "@aws-sdk/region-config-resolver" "3.821.0" "@aws-sdk/types" "3.821.0" - "@aws-sdk/util-endpoints" "3.821.0" + "@aws-sdk/util-endpoints" "3.828.0" "@aws-sdk/util-user-agent-browser" "3.821.0" - "@aws-sdk/util-user-agent-node" "3.826.0" + "@aws-sdk/util-user-agent-node" "3.828.0" "@smithy/config-resolver" "^4.1.4" "@smithy/core" "^3.5.3" "@smithy/fetch-http-handler" "^5.0.4" @@ -1086,23 +1086,23 @@ uuid "^9.0.1" "@aws-sdk/client-sfn@^3": - version "3.826.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sfn/-/client-sfn-3.826.0.tgz#39e2cec3b592e8f4ce90afa315e028d3a4f54411" - integrity sha512-6sGDwiQo1zJ1X6oCzqDZTHq3iPTfH8GJPqOob0v2xSol/ZKzN0przQdCrKv0pXK5n1DUbYFHm2lnPfVr9SeHug== + version "3.828.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sfn/-/client-sfn-3.828.0.tgz#c1431340458b2db6c5795add4c95988c5b8f202a" + integrity sha512-OrlLBQrz9m8gotoH5o3dw6BKSdQudCosYLsN6d78BnnQ/yg6nPoaCq3YjyBIM8Bwq7leEe6Y8kaEHxDVhN5uaA== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" "@aws-sdk/core" "3.826.0" - "@aws-sdk/credential-provider-node" "3.826.0" + "@aws-sdk/credential-provider-node" "3.828.0" "@aws-sdk/middleware-host-header" "3.821.0" "@aws-sdk/middleware-logger" "3.821.0" "@aws-sdk/middleware-recursion-detection" "3.821.0" - "@aws-sdk/middleware-user-agent" "3.826.0" + "@aws-sdk/middleware-user-agent" "3.828.0" "@aws-sdk/region-config-resolver" "3.821.0" "@aws-sdk/types" "3.821.0" - "@aws-sdk/util-endpoints" "3.821.0" + "@aws-sdk/util-endpoints" "3.828.0" "@aws-sdk/util-user-agent-browser" "3.821.0" - "@aws-sdk/util-user-agent-node" "3.826.0" + "@aws-sdk/util-user-agent-node" "3.828.0" "@smithy/config-resolver" "^4.1.4" "@smithy/core" "^3.5.3" "@smithy/fetch-http-handler" "^5.0.4" @@ -1133,23 +1133,23 @@ uuid "^9.0.1" "@aws-sdk/client-sns@^3": - version "3.826.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sns/-/client-sns-3.826.0.tgz#d1c05df5620c1f356e939b9c2e20014ff7a6f74d" - integrity sha512-nGx2B2EbdeZu4mkeFUf7cnxQjtCj6zuhLXg/Liswz4+UfjQ/fS45Mxv2I932Xz2XmXscciJBRz7V5V/zG70SXw== + version "3.828.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sns/-/client-sns-3.828.0.tgz#e6f71f5db6127bdd2893250f8fbab9f4707b5c28" + integrity sha512-Cef9yC3UJJHjx6fzMPnIPZQeJkgflvS+ic3RqNCVUO1j2FuDwHVwgXPzu6zkz8sxbg48QZGuXRqzaZRDfrTW1g== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" "@aws-sdk/core" "3.826.0" - "@aws-sdk/credential-provider-node" "3.826.0" + "@aws-sdk/credential-provider-node" "3.828.0" "@aws-sdk/middleware-host-header" "3.821.0" "@aws-sdk/middleware-logger" "3.821.0" "@aws-sdk/middleware-recursion-detection" "3.821.0" - "@aws-sdk/middleware-user-agent" "3.826.0" + "@aws-sdk/middleware-user-agent" "3.828.0" "@aws-sdk/region-config-resolver" "3.821.0" "@aws-sdk/types" "3.821.0" - "@aws-sdk/util-endpoints" "3.821.0" + "@aws-sdk/util-endpoints" "3.828.0" "@aws-sdk/util-user-agent-browser" "3.821.0" - "@aws-sdk/util-user-agent-node" "3.826.0" + "@aws-sdk/util-user-agent-node" "3.828.0" "@smithy/config-resolver" "^4.1.4" "@smithy/core" "^3.5.3" "@smithy/fetch-http-handler" "^5.0.4" @@ -1178,23 +1178,23 @@ tslib "^2.6.2" "@aws-sdk/client-ssm@^3": - version "3.826.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-ssm/-/client-ssm-3.826.0.tgz#5b31e307a9737a8c58aed7db6adcc572eb415fa3" - integrity sha512-MK4CV6gs8JHSepPhTSu87Ms5eRGKI+tthahbB/h+CHo5yco9wKjKwclg5KXSL+Xp8FwKlf3mQd3PXn5RN54UBQ== + version "3.828.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-ssm/-/client-ssm-3.828.0.tgz#cc80f398454129f2d031c3c24b7033feb8266411" + integrity sha512-X0wXx8nx7l6oBV8WyW7ka1Ya9ePqCpbaNr6rzbqcusOWJAsuf+c3/zk3xUT/MYi5LnYUGKs9nmvbpyM9Pw8DEg== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" "@aws-sdk/core" "3.826.0" - "@aws-sdk/credential-provider-node" "3.826.0" + "@aws-sdk/credential-provider-node" "3.828.0" "@aws-sdk/middleware-host-header" "3.821.0" "@aws-sdk/middleware-logger" "3.821.0" "@aws-sdk/middleware-recursion-detection" "3.821.0" - "@aws-sdk/middleware-user-agent" "3.826.0" + "@aws-sdk/middleware-user-agent" "3.828.0" "@aws-sdk/region-config-resolver" "3.821.0" "@aws-sdk/types" "3.821.0" - "@aws-sdk/util-endpoints" "3.821.0" + "@aws-sdk/util-endpoints" "3.828.0" "@aws-sdk/util-user-agent-browser" "3.821.0" - "@aws-sdk/util-user-agent-node" "3.826.0" + "@aws-sdk/util-user-agent-node" "3.828.0" "@smithy/config-resolver" "^4.1.4" "@smithy/core" "^3.5.3" "@smithy/fetch-http-handler" "^5.0.4" @@ -1225,10 +1225,10 @@ tslib "^2.6.2" uuid "^9.0.1" -"@aws-sdk/client-sso@3.826.0", "@aws-sdk/client-sso@^3": - version "3.826.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.826.0.tgz#8e0aeb3d830c2cf54ecf43d6052ae9bfd75b276b" - integrity sha512-/FEKnUC3xPkLL4RuRydwzx+y4b55HIX6qLPbGnyIs+sNmCUyc/62ijtV1Ml+b++YzEF6jWNBsJOxeyZdgrJ3Ig== +"@aws-sdk/client-sso@3.828.0", "@aws-sdk/client-sso@^3": + version "3.828.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.828.0.tgz#ad37249c8424d4250b5cb4f9452a5bbdb9f3199b" + integrity sha512-qxw8JcPTaFaBwTBUr4YmLajaMh3En65SuBWAKEtjctbITRRekzR7tvr/TkwoyVOh+XoAtkwOn+BQeQbX+/wgHw== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" @@ -1236,12 +1236,12 @@ "@aws-sdk/middleware-host-header" "3.821.0" "@aws-sdk/middleware-logger" "3.821.0" "@aws-sdk/middleware-recursion-detection" "3.821.0" - "@aws-sdk/middleware-user-agent" "3.826.0" + "@aws-sdk/middleware-user-agent" "3.828.0" "@aws-sdk/region-config-resolver" "3.821.0" "@aws-sdk/types" "3.821.0" - "@aws-sdk/util-endpoints" "3.821.0" + "@aws-sdk/util-endpoints" "3.828.0" "@aws-sdk/util-user-agent-browser" "3.821.0" - "@aws-sdk/util-user-agent-node" "3.826.0" + "@aws-sdk/util-user-agent-node" "3.828.0" "@smithy/config-resolver" "^4.1.4" "@smithy/core" "^3.5.3" "@smithy/fetch-http-handler" "^5.0.4" @@ -1270,23 +1270,23 @@ tslib "^2.6.2" "@aws-sdk/client-sts@^3": - version "3.826.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.826.0.tgz#32f2c48158b5bc94e973931fe129c03601dd74d8" - integrity sha512-WqBxqsRyh0/OOjliVUGEUZ6lpZ3nNALOBSTN7U2ZjFaYSLlmBvLdNegwMNZfLxGxnyQWAATlHFkasOTHJM7qTQ== + version "3.828.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.828.0.tgz#7b3456b97426bcead66b9271719515c66d9d18bf" + integrity sha512-hxTJVbFQLPcXHvu0kpI3U8IR0w1hvszVeYOkLhwTJ+m0MEvZPBjjKdQKIQOBGCJm6VKBbmSYSR2TiZMCEF5Lvg== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" "@aws-sdk/core" "3.826.0" - "@aws-sdk/credential-provider-node" "3.826.0" + "@aws-sdk/credential-provider-node" "3.828.0" "@aws-sdk/middleware-host-header" "3.821.0" "@aws-sdk/middleware-logger" "3.821.0" "@aws-sdk/middleware-recursion-detection" "3.821.0" - "@aws-sdk/middleware-user-agent" "3.826.0" + "@aws-sdk/middleware-user-agent" "3.828.0" "@aws-sdk/region-config-resolver" "3.821.0" "@aws-sdk/types" "3.821.0" - "@aws-sdk/util-endpoints" "3.821.0" + "@aws-sdk/util-endpoints" "3.828.0" "@aws-sdk/util-user-agent-browser" "3.821.0" - "@aws-sdk/util-user-agent-node" "3.826.0" + "@aws-sdk/util-user-agent-node" "3.828.0" "@smithy/config-resolver" "^4.1.4" "@smithy/core" "^3.5.3" "@smithy/fetch-http-handler" "^5.0.4" @@ -1343,12 +1343,12 @@ fast-xml-parser "4.4.1" tslib "^2.6.2" -"@aws-sdk/credential-provider-cognito-identity@3.826.0": - version "3.826.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.826.0.tgz#b2b50d47d2eebe2eef360a59499a7850854f50ae" - integrity sha512-WnHLJD1iy0Gqyv0S7PXI+c1c9xBY8L5XnESOzYM78Sx1zlVHw557ZtQM1lKtHa6DiGMN4apYZr0lmalgmtHpQQ== +"@aws-sdk/credential-provider-cognito-identity@3.828.0": + version "3.828.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.828.0.tgz#e4fe748281e07dd2926ce5e90c50456625ca2649" + integrity sha512-JmQivvkif6KLVeIKCSybl80aZgbVXREAAa0VwhJg3z2E3r8dm9qnH3XeDAzzoZrJAQmK3czuowWpwlI/PHVX8w== dependencies: - "@aws-sdk/client-cognito-identity" "3.826.0" + "@aws-sdk/client-cognito-identity" "3.828.0" "@aws-sdk/types" "3.821.0" "@smithy/property-provider" "^4.0.4" "@smithy/types" "^4.3.1" @@ -1406,18 +1406,18 @@ "@aws-sdk/shared-ini-file-loader" "3.0.0" tslib "^1.8.0" -"@aws-sdk/credential-provider-ini@3.826.0": - version "3.826.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.826.0.tgz#806bb1287d88e75b1c1679308f555dfaf313fee3" - integrity sha512-g7n+qSklq/Lzjxe2Ke5QFNCgYn26a3ydZnbFIk8QqYin4pzG+qiunaqJjpV3c/EeHMlfK8bBc7MXAylKzGRccQ== +"@aws-sdk/credential-provider-ini@3.828.0": + version "3.828.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.828.0.tgz#1947ecd69161fe0f174ceacfd682aa6493478b55" + integrity sha512-T3DJMo2/j7gCPpFg2+xEHWgua05t8WP89ye7PaZxA2Fc6CgScHkZsJZTri1QQIU2h+eOZ75EZWkeFLIPgN0kRQ== dependencies: "@aws-sdk/core" "3.826.0" "@aws-sdk/credential-provider-env" "3.826.0" "@aws-sdk/credential-provider-http" "3.826.0" "@aws-sdk/credential-provider-process" "3.826.0" - "@aws-sdk/credential-provider-sso" "3.826.0" - "@aws-sdk/credential-provider-web-identity" "3.826.0" - "@aws-sdk/nested-clients" "3.826.0" + "@aws-sdk/credential-provider-sso" "3.828.0" + "@aws-sdk/credential-provider-web-identity" "3.828.0" + "@aws-sdk/nested-clients" "3.828.0" "@aws-sdk/types" "3.821.0" "@smithy/credential-provider-imds" "^4.0.6" "@smithy/property-provider" "^4.0.4" @@ -1437,17 +1437,17 @@ "@aws-sdk/property-provider" "3.0.0" tslib "^1.8.0" -"@aws-sdk/credential-provider-node@3.826.0": - version "3.826.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.826.0.tgz#eab3b67bb0b99ee47b87174dd84b1cc7ceaffb3d" - integrity sha512-UfIJXxHjmSxH6bea00HBPLkjNI2D04enQA/xNLZvB+4xtzt1/gYdCis1P4/73f5aGVVVB4/zQMobBbnjkrmbQw== +"@aws-sdk/credential-provider-node@3.828.0": + version "3.828.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.828.0.tgz#aa5757f00481534617b83115a2be582b08887ff0" + integrity sha512-9z3iPwVYOQYNzVZj8qycZaS/BOSKRXWA+QVNQlfEnQ4sA4sOcKR4kmV2h+rJcuBsSFfmOF62ZDxyIBGvvM4t/w== dependencies: "@aws-sdk/credential-provider-env" "3.826.0" "@aws-sdk/credential-provider-http" "3.826.0" - "@aws-sdk/credential-provider-ini" "3.826.0" + "@aws-sdk/credential-provider-ini" "3.828.0" "@aws-sdk/credential-provider-process" "3.826.0" - "@aws-sdk/credential-provider-sso" "3.826.0" - "@aws-sdk/credential-provider-web-identity" "3.826.0" + "@aws-sdk/credential-provider-sso" "3.828.0" + "@aws-sdk/credential-provider-web-identity" "3.828.0" "@aws-sdk/types" "3.821.0" "@smithy/credential-provider-imds" "^4.0.6" "@smithy/property-provider" "^4.0.4" @@ -1477,48 +1477,48 @@ "@smithy/types" "^4.3.1" tslib "^2.6.2" -"@aws-sdk/credential-provider-sso@3.826.0": - version "3.826.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.826.0.tgz#1daab189052eff0b7bfed934a0be19a89912d894" - integrity sha512-F19J3zcfoom6OnQ0MyAtvduVKQXPgkz9i5ExSO01J2CzjbyMhCDA99qAjHYe+LwhW+W7P/jzBPd0+uOQ2Nhh9Q== +"@aws-sdk/credential-provider-sso@3.828.0": + version "3.828.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.828.0.tgz#32105dd1fb67423c691fa7c24ba317dd7271e73f" + integrity sha512-9CEAXzUDSzOjOCb3XfM15TZhTaM+l07kumZyx2z8NC6T2U4qbCJqn4h8mFlRvYrs6cBj2SN40sD3r5Wp0Cq2Kw== dependencies: - "@aws-sdk/client-sso" "3.826.0" + "@aws-sdk/client-sso" "3.828.0" "@aws-sdk/core" "3.826.0" - "@aws-sdk/token-providers" "3.826.0" + "@aws-sdk/token-providers" "3.828.0" "@aws-sdk/types" "3.821.0" "@smithy/property-provider" "^4.0.4" "@smithy/shared-ini-file-loader" "^4.0.4" "@smithy/types" "^4.3.1" tslib "^2.6.2" -"@aws-sdk/credential-provider-web-identity@3.826.0": - version "3.826.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.826.0.tgz#0c02845b2af3eb22bc3ef795b2edf17892021cb2" - integrity sha512-o27GZ6Hy7qhuvMFVUL2eFEpBzf33Jaa/x3u3SHwU0nL7ko7jmbpeF0x4+wmagpI9X2IvVlUxIs0VaQ3YayPLEA== +"@aws-sdk/credential-provider-web-identity@3.828.0": + version "3.828.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.828.0.tgz#b14085bd47284be79c05149f44b8151111d2ec0f" + integrity sha512-MguDhGHlQBeK9CQ/P4NOY0whAJ4HJU4x+f1dphg3I1sGlccFqfB8Moor2vXNKu0Th2kvAwkn9pr7gGb/+NGR9g== dependencies: "@aws-sdk/core" "3.826.0" - "@aws-sdk/nested-clients" "3.826.0" + "@aws-sdk/nested-clients" "3.828.0" "@aws-sdk/types" "3.821.0" "@smithy/property-provider" "^4.0.4" "@smithy/types" "^4.3.1" tslib "^2.6.2" -"@aws-sdk/credential-providers@^3", "@aws-sdk/credential-providers@^3.821.0": - version "3.826.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-providers/-/credential-providers-3.826.0.tgz#bbb547f1a612892a82510b4abbcebc59697dd3cb" - integrity sha512-2wuJFyI5I1LTN3dAF9AzyPDX5zn8/3hWxE8+M3Q1iAP/JH4dBB3SFyvE88Ts01iQ/n4Hu8cAlU5Ke1dnrCxUnw== +"@aws-sdk/credential-providers@^3", "@aws-sdk/credential-providers@^3.826.0": + version "3.828.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-providers/-/credential-providers-3.828.0.tgz#954e3c0351a8b456a9a18aeaeef83a4c36cbcd5f" + integrity sha512-PuLp94Brs3lpZ+H8Ata0nolqUEdmV1geiggEzRdLt93cggs7UXPJG9TG87py6W4qPmRvkE34QSwO/1NXpm4eGw== dependencies: - "@aws-sdk/client-cognito-identity" "3.826.0" + "@aws-sdk/client-cognito-identity" "3.828.0" "@aws-sdk/core" "3.826.0" - "@aws-sdk/credential-provider-cognito-identity" "3.826.0" + "@aws-sdk/credential-provider-cognito-identity" "3.828.0" "@aws-sdk/credential-provider-env" "3.826.0" "@aws-sdk/credential-provider-http" "3.826.0" - "@aws-sdk/credential-provider-ini" "3.826.0" - "@aws-sdk/credential-provider-node" "3.826.0" + "@aws-sdk/credential-provider-ini" "3.828.0" + "@aws-sdk/credential-provider-node" "3.828.0" "@aws-sdk/credential-provider-process" "3.826.0" - "@aws-sdk/credential-provider-sso" "3.826.0" - "@aws-sdk/credential-provider-web-identity" "3.826.0" - "@aws-sdk/nested-clients" "3.826.0" + "@aws-sdk/credential-provider-sso" "3.828.0" + "@aws-sdk/credential-provider-web-identity" "3.828.0" + "@aws-sdk/nested-clients" "3.828.0" "@aws-sdk/types" "3.821.0" "@smithy/config-resolver" "^4.1.4" "@smithy/core" "^3.5.3" @@ -1529,9 +1529,9 @@ tslib "^2.6.2" "@aws-sdk/ec2-metadata-service@^3": - version "3.826.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/ec2-metadata-service/-/ec2-metadata-service-3.826.0.tgz#1aca67a00796a1c82e9c4ec4ce93e4ec50d2e465" - integrity sha512-VjR+qQTKuadiljlaMWToqKuHFdFoCCnhbE/0q29pOIAuHYkM2sMkOU3c5hwygfchp680WieEJV73EvY2zGDTeQ== + version "3.828.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/ec2-metadata-service/-/ec2-metadata-service-3.828.0.tgz#b2929e50d47c13a97de17b5148c9952851dab5cc" + integrity sha512-nHXePDoxiOtxYFc00XNapPu6Wyz6LXblJ6LS4Cmtse6yf/h2NiOiOBYAftGd6JI6bL61h+WHUekFqe6K2Gujsw== dependencies: "@aws-sdk/types" "3.821.0" "@smithy/node-config-provider" "^4.1.3" @@ -1574,9 +1574,9 @@ tslib "^1.8.0" "@aws-sdk/lib-storage@^3": - version "3.826.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/lib-storage/-/lib-storage-3.826.0.tgz#b29f961913ccbea4351d0a3fcc0d5cb48fd94460" - integrity sha512-NmZJVnP09ZGTVVz8ZCD8sQeVMfvyX5c2/NEJHSdavmWi2sJHuln09i/YQg90LFGL4eCFslzME/mP3pMtLQEeKQ== + version "3.828.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/lib-storage/-/lib-storage-3.828.0.tgz#4a28d461420d6b3d9a76e55f5d67e86f9c89ffec" + integrity sha512-nBJmRzveYtdqL0u76tv62JGtkUfvyyZhAKNHFlzO8lCO7lxa0muRTG/ptUSS0ruFHq1K2MXHnDtLX90xiErIsQ== dependencies: "@smithy/abort-controller" "^4.0.4" "@smithy/middleware-endpoint" "^4.1.11" @@ -1791,23 +1791,23 @@ "@aws-sdk/protocol-http" "3.0.0" tslib "^1.8.0" -"@aws-sdk/middleware-user-agent@3.826.0": - version "3.826.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.826.0.tgz#715ef8f7207eeb0c66b5dd31f72e8a1bdc18c994" - integrity sha512-j404+EcfBbtTlAhyObjXbdKwwDXO1pCxHvR5Fw8FXNvp/H330j6YnXgs3SJ6d3bZUwUJ/ztPx2S5AlBbLVLDFw== +"@aws-sdk/middleware-user-agent@3.828.0": + version "3.828.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.828.0.tgz#195ed26c87727fb5f78f9bce5d6ab947f1273dcd" + integrity sha512-nixvI/SETXRdmrVab4D9LvXT3lrXkwAWGWk2GVvQvzlqN1/M/RfClj+o37Sn4FqRkGH9o9g7Fqb1YqZ4mqDAtA== dependencies: "@aws-sdk/core" "3.826.0" "@aws-sdk/types" "3.821.0" - "@aws-sdk/util-endpoints" "3.821.0" + "@aws-sdk/util-endpoints" "3.828.0" "@smithy/core" "^3.5.3" "@smithy/protocol-http" "^5.1.2" "@smithy/types" "^4.3.1" tslib "^2.6.2" -"@aws-sdk/nested-clients@3.826.0": - version "3.826.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/nested-clients/-/nested-clients-3.826.0.tgz#ef7eaf6546dc7f04187f74a297f6f6d57eb9d8cc" - integrity sha512-p7olPq0uTtHqGuXI1GSc/gzKDvV55PMbLtnmupEDfnY9SoRu+QatbWQ6da9sI1lhOcNmRMgiNQBXFzaUFrG+SQ== +"@aws-sdk/nested-clients@3.828.0": + version "3.828.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/nested-clients/-/nested-clients-3.828.0.tgz#2af1c0e8c3f108472d544f0fb174c92b308e8eca" + integrity sha512-xmeOILiR9LvfC8MctgeRXXN8nQTwbOvO4wHvgE8tDRsjnBpyyO0j50R4+viHXdMUGtgGkHEXRv8fFNBq54RgnA== dependencies: "@aws-crypto/sha256-browser" "5.2.0" "@aws-crypto/sha256-js" "5.2.0" @@ -1815,12 +1815,12 @@ "@aws-sdk/middleware-host-header" "3.821.0" "@aws-sdk/middleware-logger" "3.821.0" "@aws-sdk/middleware-recursion-detection" "3.821.0" - "@aws-sdk/middleware-user-agent" "3.826.0" + "@aws-sdk/middleware-user-agent" "3.828.0" "@aws-sdk/region-config-resolver" "3.821.0" "@aws-sdk/types" "3.821.0" - "@aws-sdk/util-endpoints" "3.821.0" + "@aws-sdk/util-endpoints" "3.828.0" "@aws-sdk/util-user-agent-browser" "3.821.0" - "@aws-sdk/util-user-agent-node" "3.826.0" + "@aws-sdk/util-user-agent-node" "3.828.0" "@smithy/config-resolver" "^4.1.4" "@smithy/core" "^3.5.3" "@smithy/fetch-http-handler" "^5.0.4" @@ -1950,13 +1950,13 @@ "@aws-sdk/middleware-stack" "3.0.0" tslib "^1.8.0" -"@aws-sdk/token-providers@3.826.0": - version "3.826.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.826.0.tgz#c6901e2d92e11b6c9cdc395b7dab3eb68200cbec" - integrity sha512-iCOcVAqGPSHtQL8ZBXifZMEcHyUl9wJ8HvLZ5l1ohA/3ZNP+dqEPGi7jfhR5jZKs+xyp2jxByFqfil9PjI9c5A== +"@aws-sdk/token-providers@3.828.0": + version "3.828.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.828.0.tgz#423f00ffc68a7f96ade2792acec4eddaa52a5f53" + integrity sha512-JdOjI/TxkfQpY/bWbdGMdCiePESXTbtl6MfnJxz35zZ3tfHvBnxAWCoYJirdmjzY/j/dFo5oEyS6mQuXAG9w2w== dependencies: "@aws-sdk/core" "3.826.0" - "@aws-sdk/nested-clients" "3.826.0" + "@aws-sdk/nested-clients" "3.828.0" "@aws-sdk/types" "3.821.0" "@smithy/property-provider" "^4.0.4" "@smithy/shared-ini-file-loader" "^4.0.4" @@ -2037,10 +2037,10 @@ "@aws-sdk/is-array-buffer" "3.0.0" tslib "^1.8.0" -"@aws-sdk/util-endpoints@3.821.0": - version "3.821.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.821.0.tgz#8883370bc3218e532fb9b7358e23369dc0a77201" - integrity sha512-Uknt/zUZnLE76zaAAPEayOeF5/4IZ2puTFXvcSCWHsi9m3tqbb9UozlnlVqvCZLCRWfQryZQoG2W4XSS3qgk5A== +"@aws-sdk/util-endpoints@3.828.0": + version "3.828.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.828.0.tgz#a02f9c99d9749123fabad38d3b6cd51f4c8489db" + integrity sha512-RvKch111SblqdkPzg3oCIdlGxlQs+k+P7Etory9FmxPHyPDvsP1j1c74PmgYqtzzMWmoXTjd+c9naUHh9xG8xg== dependencies: "@aws-sdk/types" "3.821.0" "@smithy/types" "^4.3.1" @@ -2110,12 +2110,12 @@ dependencies: tslib "^1.8.0" -"@aws-sdk/util-user-agent-node@3.826.0": - version "3.826.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.826.0.tgz#dab7b0865545db4a0f60e3b89a51ce2e8ce8b12b" - integrity sha512-wHw6bZQWIMcFF/8r03aY9Itp6JLBYY4absGGhCDK1dc3tPEfi8NVSdb05a/Oz+g4TVaDdxLo0OQ/OKMS1DFRHQ== +"@aws-sdk/util-user-agent-node@3.828.0": + version "3.828.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.828.0.tgz#f47192429a9407a43c94d7e980c32f330bba4cad" + integrity sha512-LdN6fTBzTlQmc8O8f1wiZN0qF3yBWVGis7NwpWK7FUEzP9bEZRxYfIkV9oV9zpt6iNRze1SedK3JQVB/udxBoA== dependencies: - "@aws-sdk/middleware-user-agent" "3.826.0" + "@aws-sdk/middleware-user-agent" "3.828.0" "@aws-sdk/types" "3.821.0" "@smithy/node-config-provider" "^4.1.3" "@smithy/types" "^4.3.1" @@ -2436,12 +2436,12 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@cdklabs/cdk-atmosphere-client@^0.0.53": - version "0.0.53" - resolved "https://registry.yarnpkg.com/@cdklabs/cdk-atmosphere-client/-/cdk-atmosphere-client-0.0.53.tgz#6d17ef11e0e7a59ad7a33f468d2698f0ab7544c0" - integrity sha512-EVFzl8gmgMzvDUtmyils2+9anTSbHDmbMvjotivIjI8j95tHGOXFFaxhZ7yrjQ8rANfSv7LAaZEEVEcv3fDI2g== +"@cdklabs/cdk-atmosphere-client@^0.0.54": + version "0.0.54" + resolved "https://registry.yarnpkg.com/@cdklabs/cdk-atmosphere-client/-/cdk-atmosphere-client-0.0.54.tgz#3d645f57a96fec20e9f5fb574e0bc5513075e01c" + integrity sha512-ESgmWBUdz20w0d82/bKs594rtsQOSLiTsIt5HcGFJQ6Tv6/9vDuWmM9EWbQzeeqkz2She+wAM/+JdjPDWdxdPA== dependencies: - "@aws-sdk/credential-providers" "^3.821.0" + "@aws-sdk/credential-providers" "^3.826.0" aws4fetch "^1.0.20" "@cdklabs/eslint-plugin@^1.3.2": @@ -2674,19 +2674,19 @@ resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== -"@eslint/config-array@^0.20.0": - version "0.20.0" - resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.20.0.tgz#7a1232e82376712d3340012a2f561a2764d1988f" - integrity sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ== +"@eslint/config-array@^0.20.1": + version "0.20.1" + resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.20.1.tgz#454f89be82b0e5b1ae872c154c7e2f3dd42c3979" + integrity sha512-OL0RJzC/CBzli0DrrR31qzj6d6i6Mm3HByuhflhl4LOBiWxN+3i6/t/ZQQNii4tjksXi8r2CRW1wMpWA2ULUEw== dependencies: "@eslint/object-schema" "^2.1.6" debug "^4.3.1" minimatch "^3.1.2" "@eslint/config-helpers@^0.2.1": - version "0.2.2" - resolved "https://registry.yarnpkg.com/@eslint/config-helpers/-/config-helpers-0.2.2.tgz#3779f76b894de3a8ec4763b79660e6d54d5b1010" - integrity sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg== + version "0.2.3" + resolved "https://registry.yarnpkg.com/@eslint/config-helpers/-/config-helpers-0.2.3.tgz#39d6da64ed05d7662659aa7035b54cd55a9f3672" + integrity sha512-u180qk2Um1le4yf0ruXH3PYFeEZeYC3p/4wCTKrr2U1CmGdzGi3KtY0nuPDH48UJxlKCC5RDzbcbh4X0XlqgHg== "@eslint/core@^0.14.0": version "0.14.0" @@ -2695,6 +2695,13 @@ dependencies: "@types/json-schema" "^7.0.15" +"@eslint/core@^0.15.0": + version "0.15.0" + resolved "https://registry.yarnpkg.com/@eslint/core/-/core-0.15.0.tgz#8fc04709a7b9a179d9f7d93068fc000cb8c5603d" + integrity sha512-b7ePw78tEWWkpgZCDYkbqDOP8dmM6qe+AOC6iuJqlq1R/0ahMAeH3qynpnqKFGkMltrp44ohV4ubGyvLX28tzw== + dependencies: + "@types/json-schema" "^7.0.15" + "@eslint/eslintrc@^3.3.1": version "3.3.1" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.3.1.tgz#e55f7f1dd400600dd066dbba349c4c0bac916964" @@ -2710,10 +2717,10 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@9.28.0": - version "9.28.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.28.0.tgz#7822ccc2f8cae7c3cd4f902377d520e9ae03f844" - integrity sha512-fnqSjGWd/CoIp4EXIxWVK/sHA6DOHN4+8Ix2cX5ycOY7LG0UY8nHCU5pIp2eaE1Mc7Qd8kHspYNzYXT2ojPLzg== +"@eslint/js@9.29.0": + version "9.29.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.29.0.tgz#dc6fd117c19825f8430867a662531da36320fe56" + integrity sha512-3PIF4cBw/y+1u2EazflInpV+lYsSG0aByVIQzAgb1m1MhHFSbqTyNqtBKHgWf/9Ykud+DhILS9EGkmekVhbKoQ== "@eslint/object-schema@^2.1.6": version "2.1.6" @@ -2721,11 +2728,11 @@ integrity sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA== "@eslint/plugin-kit@^0.3.1": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.3.1.tgz#b71b037b2d4d68396df04a8c35a49481e5593067" - integrity sha512-0J+zgWxHN+xXONWIyPWKFMgVuJoZuGiIFu8yxk7RJjxkzpGmyja5wRFqZIVtjDVOQpV+Rw0iOAjYPE2eQyjr0w== + version "0.3.2" + resolved "https://registry.yarnpkg.com/@eslint/plugin-kit/-/plugin-kit-0.3.2.tgz#0cad96b134d23a653348e3342f485636b5ef4732" + integrity sha512-4SaFZCNfJqvk/kenHpI8xvN42DMaoycy4PzKc5otHxRswww1kAt82OlBuwRVLofCACCTZEcla2Ydxv8scMXaTg== dependencies: - "@eslint/core" "^0.14.0" + "@eslint/core" "^0.15.0" levn "^0.4.1" "@graphql-tools/merge@8.3.1": @@ -2830,6 +2837,18 @@ resolved "https://registry.yarnpkg.com/@iarna/toml/-/toml-2.2.5.tgz#b32366c89b43c6f8cefbdefac778b9c828e3ba8c" integrity sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg== +"@isaacs/balanced-match@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz#3081dadbc3460661b751e7591d7faea5df39dd29" + integrity sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ== + +"@isaacs/brace-expansion@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz#4b3dabab7d8e75a429414a96bd67bf4c1d13e0f3" + integrity sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA== + dependencies: + "@isaacs/balanced-match" "^4.0.1" + "@isaacs/cliui@^8.0.2": version "8.0.2" resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" @@ -2916,6 +2935,11 @@ slash "^3.0.0" strip-ansi "^6.0.0" +"@jest/diff-sequences@30.0.0": + version "30.0.0" + resolved "https://registry.yarnpkg.com/@jest/diff-sequences/-/diff-sequences-30.0.0.tgz#402d27d14e9d5161dedfca98bf181018a8931eb1" + integrity sha512-xMbtoCeKJDto86GW6AiwVv7M4QAuI56R7dVBr1RNGYbOT44M2TIzOiske2RxopBqkumDY+A1H55pGvuribRY9A== + "@jest/environment@^29.7.0": version "29.7.0" resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7" @@ -2926,6 +2950,13 @@ "@types/node" "*" jest-mock "^29.7.0" +"@jest/expect-utils@30.0.0": + version "30.0.0" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-30.0.0.tgz#118d41d9df420db61d307308848a9e12f0fc1fad" + integrity sha512-UiWfsqNi/+d7xepfOv8KDcbbzcYtkWBe3a3kVDtg6M1kuN6CJ7b4HzIp5e1YHrSaQaVS8sdCoyCMCZClTLNKFQ== + dependencies: + "@jest/get-type" "30.0.0" + "@jest/expect-utils@^29.7.0": version "29.7.0" resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6" @@ -2953,6 +2984,11 @@ jest-mock "^29.7.0" jest-util "^29.7.0" +"@jest/get-type@30.0.0": + version "30.0.0" + resolved "https://registry.yarnpkg.com/@jest/get-type/-/get-type-30.0.0.tgz#59dcb5a9cbd9eb0004d3a2ed2fa9c9c3abfbf005" + integrity sha512-VZWMjrBzqfDKngQ7sUctKeLxanAbsBFoZnPxNIG6CmxK7Gv6K44yqd0nzveNIBfuhGZMmk1n5PGbvdSTOu0yTg== + "@jest/globals@^29.7.0": version "29.7.0" resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.7.0.tgz#8d9290f9ec47ff772607fa864ca1d5a2efae1d4d" @@ -2963,6 +2999,14 @@ "@jest/types" "^29.6.3" jest-mock "^29.7.0" +"@jest/pattern@30.0.0": + version "30.0.0" + resolved "https://registry.yarnpkg.com/@jest/pattern/-/pattern-30.0.0.tgz#2d1f04c8b64b31f1bfa71ccb60593a4415d0d452" + integrity sha512-k+TpEThzLVXMkbdxf8KHjZ83Wl+G54ytVJoDIGWwS96Ql4xyASRjc6SU1hs5jHVql+hpyK9G8N7WuFhLpGHRpQ== + dependencies: + "@types/node" "*" + jest-regex-util "30.0.0" + "@jest/reporters@^29.7.0": version "29.7.0" resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.7.0.tgz#04b262ecb3b8faa83b0b3d321623972393e8f4c7" @@ -2993,6 +3037,13 @@ strip-ansi "^6.0.0" v8-to-istanbul "^9.0.1" +"@jest/schemas@30.0.0": + version "30.0.0" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-30.0.0.tgz#427b862696c65ea6f6a138a9221326519877555f" + integrity sha512-NID2VRyaEkevCRz6badhfqYwri/RvMbiHY81rk3AkK/LaiB0LSxi1RdVZ7MpZdTjNugtZeGfpL0mLs9Kp3MrQw== + dependencies: + "@sinclair/typebox" "^0.34.0" + "@jest/schemas@^29.6.3": version "29.6.3" resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" @@ -3050,6 +3101,19 @@ slash "^3.0.0" write-file-atomic "^4.0.2" +"@jest/types@30.0.0": + version "30.0.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-30.0.0.tgz#7afb1d34937f722f667b621eb9c653f0f8fda07e" + integrity sha512-1Nox8mAL52PKPfEnUQWBvKU/bp8FTT6AiDu76bFDEJj/qsRFSAVSldfCH3XYMqialti2zHXKvD5gN0AaHc0yKA== + dependencies: + "@jest/pattern" "30.0.0" + "@jest/schemas" "30.0.0" + "@types/istanbul-lib-coverage" "^2.0.6" + "@types/istanbul-reports" "^3.0.4" + "@types/node" "*" + "@types/yargs" "^17.0.33" + chalk "^4.1.2" + "@jest/types@^29.6.3": version "29.6.3" resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" @@ -3169,7 +3233,7 @@ "@emnapi/runtime" "^1.1.0" "@tybys/wasm-util" "^0.9.0" -"@napi-rs/wasm-runtime@^0.2.10": +"@napi-rs/wasm-runtime@^0.2.11": version "0.2.11" resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.11.tgz#192c1610e1625048089ab4e35bc0649ce478500e" integrity sha512-9DPkXtvHydrcOsopiYpUgPHpmj0HWZKMUnL2dZqpvC42lsratuBG06V5ipyno0fUek5VlFsNQ+AcFATSrJXgMA== @@ -3616,9 +3680,9 @@ integrity sha512-nYxaSb/MtlSI+JWcwTHQxyNmWeWrUXJJ/G4liLrGG7+tS4vAz6LF3xRXqLH6wPIVUoZQel2Fs4ddLx4NCpiIYg== "@sigstore/protobuf-specs@^0.4.0", "@sigstore/protobuf-specs@^0.4.1": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@sigstore/protobuf-specs/-/protobuf-specs-0.4.2.tgz#3bf49423ad50c681c5df8a3d6a47f441f8af512b" - integrity sha512-F2ye+n1INNhqT0MW+LfUEvTUPc/nS70vICJcxorKl7/gV9CO39+EDCw+qHNKEqvsDWk++yGVKCbzK1qLPvmC8g== + version "0.4.3" + resolved "https://registry.yarnpkg.com/@sigstore/protobuf-specs/-/protobuf-specs-0.4.3.tgz#5d974eb16c0a1d44a3f0af6e3e7219b35ac57953" + integrity sha512-fk2zjD9117RL9BjqEwF7fwv7Q/P9yGsMV4MUJZ/DocaQJ6+3pKr+syBq1owU5Q5qGw5CUbXzm+4yJ2JVRDQeSA== "@sigstore/sign@^3.1.0": version "3.1.0" @@ -3654,6 +3718,11 @@ resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== +"@sinclair/typebox@^0.34.0": + version "0.34.35" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.34.35.tgz#185c57551d5edf9a2f6e9d012822b06f942cfbfc" + integrity sha512-C6ypdODf2VZkgRT6sFM8E1F8vR+HcffniX0Kp8MsU8PIfrlXbNCBz0jzj17GjdmjTx1OtZzdH8+iALL21UjF5A== + "@sinonjs/commons@^1.6.0", "@sinonjs/commons@^1.7.0", "@sinonjs/commons@^1.8.1": version "1.8.6" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.6.tgz#80c516a4dc264c2a69115e7578d62581ff455ed9" @@ -4473,7 +4542,7 @@ dependencies: "@types/node" "*" -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1", "@types/istanbul-lib-coverage@^2.0.6": version "2.0.6" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== @@ -4485,7 +4554,7 @@ dependencies: "@types/istanbul-lib-coverage" "*" -"@types/istanbul-reports@^3.0.0": +"@types/istanbul-reports@^3.0.0", "@types/istanbul-reports@^3.0.4": version "3.0.4" resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== @@ -4576,11 +4645,11 @@ integrity sha512-vpuuVxCnCEM0OakYNoyFs40mjJFJFJahBHyx0Z0Piysof+YwlDJzNO4V1weRvYySAmtAvlb0UHtxVO2IfTcykw== "@types/node@*", "@types/node@ts5.6": - version "22.15.30" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.15.30.tgz#3a20431783e28dd0b0326f84ab386a2ec81d921d" - integrity sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA== + version "24.0.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-24.0.1.tgz#e9bfcb1c35547437c294403b7bec497772a88b0a" + integrity sha512-MX4Zioh39chHlDJbKmEgydJDS3tspMP/lnQC67G3SWsTnb9NeYVWOjkxpOSy4oMfPs4StcWHwBrvUb4ybfnuaw== dependencies: - undici-types "~6.21.0" + undici-types "~7.8.0" "@types/node@^16": version "16.18.126" @@ -4647,7 +4716,7 @@ dependencies: "@types/node" "*" -"@types/stack-utils@^2.0.0": +"@types/stack-utils@^2.0.0", "@types/stack-utils@^2.0.3": version "2.0.3" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== @@ -4703,77 +4772,77 @@ integrity sha512-GD4Fk15UoP5NLCNor51YdfL9MSdldKCqOC9EssrRw3HVfar9wUZ5y8Lfnp+qVD6hIinLr8ygklDYnmlnlQo12Q== "@typescript-eslint/eslint-plugin@^8": - version "8.33.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.33.1.tgz#532641b416ed2afd5be893cddb2a58e9cd1f7a3e" - integrity sha512-TDCXj+YxLgtvxvFlAvpoRv9MAncDLBV2oT9Bd7YBGC/b/sEURoOYuIwLI99rjWOfY3QtDzO+mk0n4AmdFExW8A== + version "8.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.34.0.tgz#96c9f818782fe24cd5883a5d517ca1826d3fa9c2" + integrity sha512-QXwAlHlbcAwNlEEMKQS2RCgJsgXrTJdjXT08xEgbPFa2yYQgVjBymxP5DrfrE7X7iodSzd9qBUHUycdyVJTW1w== dependencies: "@eslint-community/regexpp" "^4.10.0" - "@typescript-eslint/scope-manager" "8.33.1" - "@typescript-eslint/type-utils" "8.33.1" - "@typescript-eslint/utils" "8.33.1" - "@typescript-eslint/visitor-keys" "8.33.1" + "@typescript-eslint/scope-manager" "8.34.0" + "@typescript-eslint/type-utils" "8.34.0" + "@typescript-eslint/utils" "8.34.0" + "@typescript-eslint/visitor-keys" "8.34.0" graphemer "^1.4.0" ignore "^7.0.0" natural-compare "^1.4.0" ts-api-utils "^2.1.0" "@typescript-eslint/parser@^8": - version "8.33.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.33.1.tgz#ef9a5ee6aa37a6b4f46cc36d08a14f828238afe2" - integrity sha512-qwxv6dq682yVvgKKp2qWwLgRbscDAYktPptK4JPojCwwi3R9cwrvIxS4lvBpzmcqzR4bdn54Z0IG1uHFskW4dA== - dependencies: - "@typescript-eslint/scope-manager" "8.33.1" - "@typescript-eslint/types" "8.33.1" - "@typescript-eslint/typescript-estree" "8.33.1" - "@typescript-eslint/visitor-keys" "8.33.1" + version "8.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.34.0.tgz#703270426ac529304ae6988482f487c856d9c13f" + integrity sha512-vxXJV1hVFx3IXz/oy2sICsJukaBrtDEQSBiV48/YIV5KWjX1dO+bcIr/kCPrW6weKXvsaGKFNlwH0v2eYdRRbA== + dependencies: + "@typescript-eslint/scope-manager" "8.34.0" + "@typescript-eslint/types" "8.34.0" + "@typescript-eslint/typescript-estree" "8.34.0" + "@typescript-eslint/visitor-keys" "8.34.0" debug "^4.3.4" -"@typescript-eslint/project-service@8.33.1": - version "8.33.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.33.1.tgz#c85e7d9a44d6a11fe64e73ac1ed47de55dc2bf9f" - integrity sha512-DZR0efeNklDIHHGRpMpR5gJITQpu6tLr9lDJnKdONTC7vvzOlLAG/wcfxcdxEWrbiZApcoBCzXqU/Z458Za5Iw== +"@typescript-eslint/project-service@8.34.0": + version "8.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/project-service/-/project-service-8.34.0.tgz#449119b72fe9fae185013a6bdbaf1ffbfee6bcaf" + integrity sha512-iEgDALRf970/B2YExmtPMPF54NenZUf4xpL3wsCRx/lgjz6ul/l13R81ozP/ZNuXfnLCS+oPmG7JIxfdNYKELw== dependencies: - "@typescript-eslint/tsconfig-utils" "^8.33.1" - "@typescript-eslint/types" "^8.33.1" + "@typescript-eslint/tsconfig-utils" "^8.34.0" + "@typescript-eslint/types" "^8.34.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@8.33.1": - version "8.33.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.33.1.tgz#d1e0efb296da5097d054bc9972e69878a2afea73" - integrity sha512-dM4UBtgmzHR9bS0Rv09JST0RcHYearoEoo3pG5B6GoTR9XcyeqX87FEhPo+5kTvVfKCvfHaHrcgeJQc6mrDKrA== +"@typescript-eslint/scope-manager@8.34.0": + version "8.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.34.0.tgz#9fedaec02370cf79c018a656ab402eb00dc69e67" + integrity sha512-9Ac0X8WiLykl0aj1oYQNcLZjHgBojT6cW68yAgZ19letYu+Hxd0rE0veI1XznSSst1X5lwnxhPbVdwjDRIomRw== dependencies: - "@typescript-eslint/types" "8.33.1" - "@typescript-eslint/visitor-keys" "8.33.1" + "@typescript-eslint/types" "8.34.0" + "@typescript-eslint/visitor-keys" "8.34.0" -"@typescript-eslint/tsconfig-utils@8.33.1", "@typescript-eslint/tsconfig-utils@^8.33.1": - version "8.33.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.33.1.tgz#7836afcc097a4657a5ed56670851a450d8b70ab8" - integrity sha512-STAQsGYbHCF0/e+ShUQ4EatXQ7ceh3fBCXkNU7/MZVKulrlq1usH7t2FhxvCpuCi5O5oi1vmVaAjrGeL71OK1g== +"@typescript-eslint/tsconfig-utils@8.34.0", "@typescript-eslint/tsconfig-utils@^8.34.0": + version "8.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.34.0.tgz#97d0a24e89a355e9308cebc8e23f255669bf0979" + integrity sha512-+W9VYHKFIzA5cBeooqQxqNriAP0QeQ7xTiDuIOr71hzgffm3EL2hxwWBIIj4GuofIbKxGNarpKqIq6Q6YrShOA== -"@typescript-eslint/type-utils@8.33.1": - version "8.33.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.33.1.tgz#d73ee1a29d8a0abe60d4abbff4f1d040f0de15fa" - integrity sha512-1cG37d9xOkhlykom55WVwG2QRNC7YXlxMaMzqw2uPeJixBFfKWZgaP/hjAObqMN/u3fr5BrTwTnc31/L9jQ2ww== +"@typescript-eslint/type-utils@8.34.0": + version "8.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.34.0.tgz#03e7eb3776129dfd751ba1cac0c6ea4b0fab5ec6" + integrity sha512-n7zSmOcUVhcRYC75W2pnPpbO1iwhJY3NLoHEtbJwJSNlVAZuwqu05zY3f3s2SDWWDSo9FdN5szqc73DCtDObAg== dependencies: - "@typescript-eslint/typescript-estree" "8.33.1" - "@typescript-eslint/utils" "8.33.1" + "@typescript-eslint/typescript-estree" "8.34.0" + "@typescript-eslint/utils" "8.34.0" debug "^4.3.4" ts-api-utils "^2.1.0" -"@typescript-eslint/types@8.33.1", "@typescript-eslint/types@^8.11.0", "@typescript-eslint/types@^8.33.1": - version "8.33.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.33.1.tgz#b693111bc2180f8098b68e9958cf63761657a55f" - integrity sha512-xid1WfizGhy/TKMTwhtVOgalHwPtV8T32MS9MaH50Cwvz6x6YqRIPdD2WvW0XaqOzTV9p5xdLY0h/ZusU5Lokg== +"@typescript-eslint/types@8.34.0", "@typescript-eslint/types@^8.11.0", "@typescript-eslint/types@^8.34.0": + version "8.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.34.0.tgz#18000f205c59c9aff7f371fc5426b764cf2890fb" + integrity sha512-9V24k/paICYPniajHfJ4cuAWETnt7Ssy+R0Rbcqo5sSFr3QEZ/8TSoUi9XeXVBGXCaLtwTOKSLGcInCAvyZeMA== -"@typescript-eslint/typescript-estree@8.33.1", "@typescript-eslint/typescript-estree@^8.23.0": - version "8.33.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.33.1.tgz#d271beed470bc915b8764e22365d4925c2ea265d" - integrity sha512-+s9LYcT8LWjdYWu7IWs7FvUxpQ/DGkdjZeE/GGulHvv8rvYwQvVaUZ6DE+j5x/prADUgSbbCWZ2nPI3usuVeOA== +"@typescript-eslint/typescript-estree@8.34.0", "@typescript-eslint/typescript-estree@^8.23.0": + version "8.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.34.0.tgz#c9f3feec511339ef64e9e4884516c3e558f1b048" + integrity sha512-rOi4KZxI7E0+BMqG7emPSK1bB4RICCpF7QD3KCLXn9ZvWoESsOMlHyZPAHyG04ujVplPaHbmEvs34m+wjgtVtg== dependencies: - "@typescript-eslint/project-service" "8.33.1" - "@typescript-eslint/tsconfig-utils" "8.33.1" - "@typescript-eslint/types" "8.33.1" - "@typescript-eslint/visitor-keys" "8.33.1" + "@typescript-eslint/project-service" "8.34.0" + "@typescript-eslint/tsconfig-utils" "8.34.0" + "@typescript-eslint/types" "8.34.0" + "@typescript-eslint/visitor-keys" "8.34.0" debug "^4.3.4" fast-glob "^3.3.2" is-glob "^4.0.3" @@ -4781,142 +4850,152 @@ semver "^7.6.0" ts-api-utils "^2.1.0" -"@typescript-eslint/utils@8.33.1", "@typescript-eslint/utils@^6.0.0 || ^7.0.0 || ^8.0.0", "@typescript-eslint/utils@^8.13.0": - version "8.33.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.33.1.tgz#ea22f40d3553da090f928cf17907e963643d4b96" - integrity sha512-52HaBiEQUaRYqAXpfzWSR2U3gxk92Kw006+xZpElaPMg3C4PgM+A5LqwoQI1f9E5aZ/qlxAZxzm42WX+vn92SQ== +"@typescript-eslint/utils@8.34.0", "@typescript-eslint/utils@^6.0.0 || ^7.0.0 || ^8.0.0", "@typescript-eslint/utils@^8.13.0": + version "8.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.34.0.tgz#7844beebc1153b4d3ec34135c2da53a91e076f8d" + integrity sha512-8L4tWatGchV9A1cKbjaavS6mwYwp39jql8xUmIIKJdm+qiaeHy5KMKlBrf30akXAWBzn2SqKsNOtSENWUwg7XQ== dependencies: "@eslint-community/eslint-utils" "^4.7.0" - "@typescript-eslint/scope-manager" "8.33.1" - "@typescript-eslint/types" "8.33.1" - "@typescript-eslint/typescript-estree" "8.33.1" + "@typescript-eslint/scope-manager" "8.34.0" + "@typescript-eslint/types" "8.34.0" + "@typescript-eslint/typescript-estree" "8.34.0" -"@typescript-eslint/visitor-keys@8.33.1": - version "8.33.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.33.1.tgz#6c6e002c24d13211df3df851767f24dfdb4f42bc" - integrity sha512-3i8NrFcZeeDHJ+7ZUuDkGT+UHq+XoFGsymNK2jZCOHcfEzRQ0BdpRtdpSx/Iyf3MHLWIcLS0COuOPibKQboIiQ== +"@typescript-eslint/visitor-keys@8.34.0": + version "8.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.34.0.tgz#c7a149407be31d755dba71980617d638a40ac099" + integrity sha512-qHV7pW7E85A0x6qyrFn+O+q1k1p3tQCsqIZ1KZ5ESLXY57aTvUd3/a4rdPTeXisvhXn2VQG0VSKUqs8KHF2zcA== dependencies: - "@typescript-eslint/types" "8.33.1" + "@typescript-eslint/types" "8.34.0" eslint-visitor-keys "^4.2.0" -"@unrs/resolver-binding-darwin-arm64@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.7.11.tgz#092f763c73fc6c7e1ad197742a4f08d7eb8d2178" - integrity sha512-i3/wlWjQJXMh1uiGtiv7k1EYvrrS3L1hdwmWJJiz1D8jWy726YFYPIxQWbEIVPVAgrfRR0XNlLrTQwq17cuCGw== - -"@unrs/resolver-binding-darwin-x64@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.7.11.tgz#fde84773e7b5730fe5900ee06df1973d9dae72a7" - integrity sha512-8XXyFvc6w6kmMmi6VYchZhjd5CDcp+Lv6Cn1YmUme0ypsZ/0Kzd+9ESrWtDrWibKPTgSteDTxp75cvBOY64FQQ== - -"@unrs/resolver-binding-freebsd-x64@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.7.11.tgz#1fe453406f6e1ebde6124eab7e4fc55310c7a171" - integrity sha512-0qJBYzP8Qk24CZ05RSWDQUjdiQUeIJGfqMMzbtXgCKl/a5xa6thfC0MQkGIr55LCLd6YmMyO640ifYUa53lybQ== - -"@unrs/resolver-binding-linux-arm-gnueabihf@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.7.11.tgz#cbbefaa8c945d8bdf6261a79adf191f196526d5b" - integrity sha512-1sGwpgvx+WZf0GFT6vkkOm6UJ+mlsVnjw+Yv9esK71idWeRAG3bbpkf3AoY8KIqKqmnzJExi0uKxXpakQ5Pcbg== - -"@unrs/resolver-binding-linux-arm-musleabihf@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.7.11.tgz#8c7e26185a36c9669f6c02512f303a8e65bf179d" - integrity sha512-D/1F/2lTe+XAl3ohkYj51NjniVly8sIqkA/n1aOND3ZMO418nl2JNU95iVa1/RtpzaKcWEsNTtHRogykrUflJg== - -"@unrs/resolver-binding-linux-arm64-gnu@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.7.11.tgz#679669d5293253a48c0a013986ee078602a84c1b" - integrity sha512-7vFWHLCCNFLEQlmwKQfVy066ohLLArZl+AV/AdmrD1/pD1FlmqM+FKbtnONnIwbHtgetFUCV/SRi1q4D49aTlw== - -"@unrs/resolver-binding-linux-arm64-musl@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.7.11.tgz#eaf6370c73dfd2d37992f5328f301acb2bc0dcce" - integrity sha512-tYkGIx8hjWPh4zcn17jLEHU8YMmdP2obRTGkdaB3BguGHh31VCS3ywqC4QjTODjmhhNyZYkj/1Dz/+0kKvg9YA== - -"@unrs/resolver-binding-linux-ppc64-gnu@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.7.11.tgz#8fd74f66d6d7a082f7462f994c4627e74b274360" - integrity sha512-6F328QIUev29vcZeRX6v6oqKxfUoGwIIAhWGD8wSysnBYFY0nivp25jdWmAb1GildbCCaQvOKEhCok7YfWkj4Q== - -"@unrs/resolver-binding-linux-riscv64-gnu@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.7.11.tgz#272114018eda67de6889cbf038a96b1fe31346fd" - integrity sha512-NqhWmiGJGdzbZbeucPZIG9Iav4lyYLCarEnxAceguMx9qlpeEF7ENqYKOwB8Zqk7/CeuYMEcLYMaW2li6HyDzQ== - -"@unrs/resolver-binding-linux-riscv64-musl@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.7.11.tgz#70705442bf570cefbc83e8304ed812af5e5c40ab" - integrity sha512-J2RPIFKMdTrLtBdfR1cUMKl8Gcy05nlQ+bEs/6al7EdWLk9cs3tnDREHZ7mV9uGbeghpjo4i8neNZNx3PYUY9w== - -"@unrs/resolver-binding-linux-s390x-gnu@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.7.11.tgz#77a2084e2354566d612dc005387b005dd9702c83" - integrity sha512-bDpGRerHvvHdhun7MmFUNDpMiYcJSqWckwAVVRTJf8F+RyqYJOp/mx04PDc7DhpNPeWdnTMu91oZRMV+gGaVcQ== - -"@unrs/resolver-binding-linux-x64-gnu@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.7.11.tgz#ab14b632f9524bd264319135250859074c890887" - integrity sha512-G9U7bVmylzRLma3cK39RBm3guoD1HOvY4o0NS4JNm37AD0lS7/xyMt7kn0JejYyc0Im8J+rH69/dXGM9DAJcSQ== - -"@unrs/resolver-binding-linux-x64-musl@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.7.11.tgz#86192443e8560c5ca9eb20b6fed3cbfad223a831" - integrity sha512-7qL20SBKomekSunm7M9Fe5L93bFbn+FbHiGJbfTlp0RKhPVoJDP73vOxf1QrmJHyDPECsGWPFnKa/f8fO2FsHw== - -"@unrs/resolver-binding-wasm32-wasi@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.7.11.tgz#9520459c7b82a9d4de9cdafbf7979dcfedb5db14" - integrity sha512-jisvIva8MidjI+B1lFRZZMfCPaCISePgTyR60wNT1MeQvIh5Ksa0G3gvI+Iqyj3jqYbvOHByenpa5eDGcSdoSg== - dependencies: - "@napi-rs/wasm-runtime" "^0.2.10" - -"@unrs/resolver-binding-win32-arm64-msvc@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.7.11.tgz#bfa57ec8a06b52735acccc2d5ca81b40b11cb8d6" - integrity sha512-G+H5nQZ8sRZ8ebMY6mRGBBvTEzMYEcgVauLsNHpvTUavZoCCRVP1zWkCZgOju2dW3O22+8seTHniTdl1/uLz3g== - -"@unrs/resolver-binding-win32-ia32-msvc@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.7.11.tgz#185dcb5b15245ab89e91fde77adba4b83f906ef9" - integrity sha512-Hfy46DBfFzyv0wgR0MMOwFFib2W2+Btc8oE5h4XlPhpelnSyA6nFxkVIyTgIXYGTdFaLoZFNn62fmqx3rjEg3A== - -"@unrs/resolver-binding-win32-x64-msvc@1.7.11": - version "1.7.11" - resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.7.11.tgz#18364383f30140cc8e4a012fad8f9edef22d564a" - integrity sha512-7L8NdsQlCJ8T106Gbz/AjzM4QKWVsoQbKpB9bMBGcIZswUuAnJMHpvbqGW3RBqLHCIwX4XZ5fxSBHEFcK2h9wA== +"@unrs/resolver-binding-android-arm-eabi@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.9.0.tgz#e91317973356eb845c9186db5f9ec43e8d0002eb" + integrity sha512-h1T2c2Di49ekF2TE8ZCoJkb+jwETKUIPDJ/nO3tJBKlLFPu+fyd93f0rGP/BvArKx2k2HlRM4kqkNarj3dvZlg== + +"@unrs/resolver-binding-android-arm64@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.9.0.tgz#fbdd79b2a8e478e02e1c0751dfbc100017522161" + integrity sha512-sG1NHtgXtX8owEkJ11yn34vt0Xqzi3k9TJ8zppDmyG8GZV4kVWw44FHwKwHeEFl07uKPeC4ZoyuQaGh5ruJYPA== + +"@unrs/resolver-binding-darwin-arm64@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.9.0.tgz#24bb42710227ae2f4fea191151f3acc6a75b50d6" + integrity sha512-nJ9z47kfFnCxN1z/oYZS7HSNsFh43y2asePzTEZpEvK7kGyuShSl3RRXnm/1QaqFL+iP+BjMwuB+DYUymOkA5A== + +"@unrs/resolver-binding-darwin-x64@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.9.0.tgz#4a205940ec311ac8396c3f25043644b78cc98a20" + integrity sha512-TK+UA1TTa0qS53rjWn7cVlEKVGz2B6JYe0C++TdQjvWYIyx83ruwh0wd4LRxYBM5HeuAzXcylA9BH2trARXJTw== + +"@unrs/resolver-binding-freebsd-x64@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.9.0.tgz#ed82e000f7248011696ecc8894f574caa197b0be" + integrity sha512-6uZwzMRFcD7CcCd0vz3Hp+9qIL2jseE/bx3ZjaLwn8t714nYGwiE84WpaMCYjU+IQET8Vu/+BNAGtYD7BG/0yA== + +"@unrs/resolver-binding-linux-arm-gnueabihf@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.9.0.tgz#534a8b32118590f7fb9edd21c6576243a89a8aad" + integrity sha512-bPUBksQfrgcfv2+mm+AZinaKq8LCFvt5PThYqRotqSuuZK1TVKkhbVMS/jvSRfYl7jr3AoZLYbDkItxgqMKRkg== + +"@unrs/resolver-binding-linux-arm-musleabihf@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.9.0.tgz#b31718752e77cecbbcf7ba1e01dea97c1a5ee7e0" + integrity sha512-uT6E7UBIrTdCsFQ+y0tQd3g5oudmrS/hds5pbU3h4s2t/1vsGWbbSKhBSCD9mcqaqkBwoqlECpUrRJCmldl8PA== + +"@unrs/resolver-binding-linux-arm64-gnu@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.9.0.tgz#0f11ba195020cfa869533fb74733d68162349d14" + integrity sha512-vdqBh911wc5awE2bX2zx3eflbyv8U9xbE/jVKAm425eRoOVv/VseGZsqi3A3SykckSpF4wSROkbQPvbQFn8EsA== + +"@unrs/resolver-binding-linux-arm64-musl@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.9.0.tgz#8b6bc086cf9efaa22e8f2fef381786d6636b8e19" + integrity sha512-/8JFZ/SnuDr1lLEVsxsuVwrsGquTvT51RZGvyDB/dOK3oYK2UqeXzgeyq6Otp8FZXQcEYqJwxb9v+gtdXn03eQ== + +"@unrs/resolver-binding-linux-ppc64-gnu@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.9.0.tgz#5cd15899af31c2bbf90bfca5f798f64a16770e23" + integrity sha512-FkJjybtrl+rajTw4loI3L6YqSOpeZfDls4SstL/5lsP2bka9TiHUjgMBjygeZEis1oC8LfJTS8FSgpKPaQx2tQ== + +"@unrs/resolver-binding-linux-riscv64-gnu@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.9.0.tgz#4f2c75af52437eb10b48ea5b72750fb65fb174be" + integrity sha512-w/NZfHNeDusbqSZ8r/hp8iL4S39h4+vQMc9/vvzuIKMWKppyUGKm3IST0Qv0aOZ1rzIbl9SrDeIqK86ZpUK37w== + +"@unrs/resolver-binding-linux-riscv64-musl@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.9.0.tgz#6a87e82e0dd39d34ff37ddba6accf73cdb396e86" + integrity sha512-bEPBosut8/8KQbUixPry8zg/fOzVOWyvwzOfz0C0Rw6dp+wIBseyiHKjkcSyZKv/98edrbMknBaMNJfA/UEdqw== + +"@unrs/resolver-binding-linux-s390x-gnu@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.9.0.tgz#6524cc3c01309022de86c4a7317fe7d9f9fb855c" + integrity sha512-LDtMT7moE3gK753gG4pc31AAqGUC86j3AplaFusc717EUGF9ZFJ356sdQzzZzkBk1XzMdxFyZ4f/i35NKM/lFA== + +"@unrs/resolver-binding-linux-x64-gnu@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.9.0.tgz#85fb8a45dccf3823cd73ea4b61b2c3f2e8ab6653" + integrity sha512-WmFd5KINHIXj8o1mPaT8QRjA9HgSXhN1gl9Da4IZihARihEnOylu4co7i/yeaIpcfsI6sYs33cNZKyHYDh0lrA== + +"@unrs/resolver-binding-linux-x64-musl@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.9.0.tgz#235e539da5872df51c03e0e050a1c715e25044ca" + integrity sha512-CYuXbANW+WgzVRIl8/QvZmDaZxrqvOldOwlbUjIM4pQ46FJ0W5cinJ/Ghwa/Ng1ZPMJMk1VFdsD/XwmCGIXBWg== + +"@unrs/resolver-binding-wasm32-wasi@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.9.0.tgz#1bc614ce2ba61330c16bffa1e50f41d95d25c0a6" + integrity sha512-6Rp2WH0OoitMYR57Z6VE8Y6corX8C6QEMWLgOV6qXiJIeZ1F9WGXY/yQ8yDC4iTraotyLOeJ2Asea0urWj2fKQ== + dependencies: + "@napi-rs/wasm-runtime" "^0.2.11" + +"@unrs/resolver-binding-win32-arm64-msvc@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.9.0.tgz#0d8704275a9f2634d81b35d8a00a2f4bd8dec7fa" + integrity sha512-rknkrTRuvujprrbPmGeHi8wYWxmNVlBoNW8+4XF2hXUnASOjmuC9FNF1tGbDiRQWn264q9U/oGtixyO3BT8adQ== + +"@unrs/resolver-binding-win32-ia32-msvc@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.9.0.tgz#46909cbeb9a38b3f31a64833fe03aa1aebb8da2b" + integrity sha512-Ceymm+iBl+bgAICtgiHyMLz6hjxmLJKqBim8tDzpX61wpZOx2bPK6Gjuor7I2RiUynVjvvkoRIkrPyMwzBzF3A== + +"@unrs/resolver-binding-win32-x64-msvc@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.9.0.tgz#708b957d5d66543c45240b4c6b45ee63ed59b6b7" + integrity sha512-k59o9ZyeyS0hAlcaKFezYSH2agQeRFEB7KoQLXl3Nb3rgkqT1NY9Vwy+SqODiLmYnEjxWJVRE/yq2jFVqdIxZw== "@vitest/expect@>1.6.0": - version "3.2.2" - resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-3.2.2.tgz#187a1cb9de72ca8d723cd99d85fc3daa27af5b53" - integrity sha512-ipHw0z669vEMjzz3xQE8nJX1s0rQIb7oEl4jjl35qWTwm/KIHERIg/p/zORrjAaZKXfsv7IybcNGHwhOOAPMwQ== + version "3.2.3" + resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-3.2.3.tgz#45be98d6036c6dedbbbc51abdeca3bbd1f12450d" + integrity sha512-W2RH2TPWVHA1o7UmaFKISPvdicFJH+mjykctJFoAkUw+SPTJTGjUNdKscFBrqM7IPnCVu6zihtKYa7TkZS1dkQ== dependencies: "@types/chai" "^5.2.2" - "@vitest/spy" "3.2.2" - "@vitest/utils" "3.2.2" + "@vitest/spy" "3.2.3" + "@vitest/utils" "3.2.3" chai "^5.2.0" tinyrainbow "^2.0.0" -"@vitest/pretty-format@3.2.2": - version "3.2.2" - resolved "https://registry.yarnpkg.com/@vitest/pretty-format/-/pretty-format-3.2.2.tgz#f89611e5cf7988709a80c679a6e12bff12c81d18" - integrity sha512-FY4o4U1UDhO9KMd2Wee5vumwcaHw7Vg4V7yR4Oq6uK34nhEJOmdRYrk3ClburPRUA09lXD/oXWZ8y/Sdma0aUQ== +"@vitest/pretty-format@3.2.3": + version "3.2.3" + resolved "https://registry.yarnpkg.com/@vitest/pretty-format/-/pretty-format-3.2.3.tgz#ddd30f689fdd8191dbfd0cce8ae769e5de6b7f23" + integrity sha512-yFglXGkr9hW/yEXngO+IKMhP0jxyFw2/qys/CK4fFUZnSltD+MU7dVYGrH8rvPcK/O6feXQA+EU33gjaBBbAng== dependencies: tinyrainbow "^2.0.0" -"@vitest/spy@3.2.2": - version "3.2.2" - resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-3.2.2.tgz#aee82909c0255f9b14d9a27892a194514200538a" - integrity sha512-6Utxlx3o7pcTxvp0u8kUiXtRFScMrUg28KjB3R2hon7w4YqOFAEA9QwzPVVS1QNL3smo4xRNOpNZClRVfpMcYg== +"@vitest/spy@3.2.3": + version "3.2.3" + resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-3.2.3.tgz#c91715ca4db58a1f0dec636d393a76cf9945b695" + integrity sha512-JHu9Wl+7bf6FEejTCREy+DmgWe+rQKbK+y32C/k5f4TBIAlijhJbRBIRIOCEpVevgRsCQR2iHRUH2/qKVM/plw== dependencies: tinyspy "^4.0.3" -"@vitest/utils@3.2.2": - version "3.2.2" - resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-3.2.2.tgz#829a6634c3cbb953bcf1053a6cdbec8f1fa70554" - integrity sha512-qJYMllrWpF/OYfWHP32T31QCaLa3BAzT/n/8mNGhPdVcjY+JYazQFO1nsJvXU12Kp1xMpNY4AGuljPTNjQve6A== +"@vitest/utils@3.2.3": + version "3.2.3" + resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-3.2.3.tgz#388afbed1fb3c25ca64c5846a9afb904e3d63bf2" + integrity sha512-4zFBCU5Pf+4Z6v+rwnZ1HU1yzOKKvDkMXZrymE2PBlbjKJRlrOxbvpfPSvJTGRIwGoahaOGvp+kbCoxifhzJ1Q== dependencies: - "@vitest/pretty-format" "3.2.2" + "@vitest/pretty-format" "3.2.3" loupe "^3.1.3" tinyrainbow "^2.0.0" @@ -5037,7 +5116,7 @@ acorn-walk@^8.1.1: dependencies: acorn "^8.11.0" -acorn@^8.11.0, acorn@^8.14.0, acorn@^8.4.1: +acorn@^8.11.0, acorn@^8.15.0, acorn@^8.4.1: version "8.15.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.15.0.tgz#a360898bc415edaac46c8241f6383975b930b816" integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== @@ -5155,7 +5234,7 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" -ansi-styles@^5.0.0: +ansi-styles@^5.0.0, ansi-styles@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== @@ -5395,14 +5474,14 @@ available-typed-arrays@^1.0.7: dependencies: possible-typed-array-names "^1.0.0" -aws-cdk-lib@^2.200.1: - version "2.200.1" - resolved "https://registry.yarnpkg.com/aws-cdk-lib/-/aws-cdk-lib-2.200.1.tgz#32865efd815b009387175669b60b9f5a1bb6c2cb" - integrity sha512-kLeDtMJPYX3qSAGPONNa3XZk8Z/K3d0As8ui10/Hbv0ohsEsphxSy0xRoxdyj58/hGxOwj1TZsBezMp+TuPPrg== +aws-cdk-lib@^2.201.0: + version "2.201.0" + resolved "https://registry.yarnpkg.com/aws-cdk-lib/-/aws-cdk-lib-2.201.0.tgz#602e3195c11604c874c4d5885aaa950ea934cb0f" + integrity sha512-0ioqzM5dkJl02uchOfgeCY3thV3jTn9YkyZ/UF5P4Hq9iNGHQqmPu5xE/VcAV7+P72Z/zV+QLV0xkVT6iLF/bw== dependencies: "@aws-cdk/asset-awscli-v1" "2.2.237" "@aws-cdk/asset-node-proxy-agent-v6" "^2.1.0" - "@aws-cdk/cloud-assembly-schema" "^44.1.0" + "@aws-cdk/cloud-assembly-schema" "^44.2.0" "@balena/dockerignore" "^1.0.2" case "1.6.3" fs-extra "^11.3.0" @@ -5438,10 +5517,10 @@ aws4fetch@^1.0.20: resolved "https://registry.yarnpkg.com/aws4fetch/-/aws4fetch-1.0.20.tgz#090d6c65e32c6df645dd5e5acf04cc56da575cbe" integrity sha512-/djoAN709iY65ETD6LKCtyyEI04XIBP5xVvfmNxsEP0uJB5tyaGBztSryRr4HqMStr9R06PisQE7m9zDTXKu6g== -axios@^1, axios@^1.8.3, axios@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.9.0.tgz#25534e3b72b54540077d33046f77e3b8d7081901" - integrity sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg== +axios@^1, axios@^1.10.0, axios@^1.8.3: + version "1.10.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.10.0.tgz#af320aee8632eaf2a400b6a1979fa75856f38d54" + integrity sha512-/1xYAC4MP/HEG+3duIhFr4ZQXR4sQXOIe+o6sdqzeykGLx6Upp/1p8MHqhINOvGeP7xyNHe7tsiJByc4SSVUxw== dependencies: follow-redirects "^1.15.6" form-data "^4.0.0" @@ -5604,17 +5683,17 @@ bowser@^2.11.0: integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA== brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + version "1.1.12" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.12.tgz#ab9b454466e5a8cc3a187beaad580412a9c5b843" + integrity sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg== dependencies: balanced-match "^1.0.0" concat-map "0.0.1" brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + version "2.0.2" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.2.tgz#54fc53237a613d854c7bd37463aad17df87214e7" + integrity sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ== dependencies: balanced-match "^1.0.0" @@ -5767,19 +5846,19 @@ camelcase@^6, camelcase@^6.2.0, camelcase@^6.3.0: integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-lite@^1.0.30001718: - version "1.0.30001721" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001721.tgz#36b90cd96901f8c98dd6698bf5c8af7d4c6872d7" - integrity sha512-cOuvmUVtKrtEaoKiO0rSc29jcjwMwX5tOHDy4MgVFEWiUXj4uBMJkwI8MDySkgXidpMiHUcviogAvFi4pA2hDQ== + version "1.0.30001723" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001723.tgz#c4f3174f02089720736e1887eab345e09bb10944" + integrity sha512-1R/elMjtehrFejxwmexeXAtae5UO9iSyFn6G/I806CYC/BLyyBk1EPhrKBkWhy6wM6Xnm47dSJQec+tLJ39WHw== case@1.6.3, case@^1.6.3: version "1.6.3" resolved "https://registry.yarnpkg.com/case/-/case-1.6.3.tgz#0a4386e3e9825351ca2e6216c60467ff5f1ea1c9" integrity sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ== -cdk-from-cfn@^0.220.0: - version "0.220.0" - resolved "https://registry.yarnpkg.com/cdk-from-cfn/-/cdk-from-cfn-0.220.0.tgz#6dc6f88f276358c3ae123c79bf7713da257f260d" - integrity sha512-khVnUNqEfRrkkCkEKzSmibqgVHrt7jl/5by8JOyR8reaXbXOIWubLuKdu+QZpRvuRXIci1BpbvxczQKEsl+ldw== +cdk-from-cfn@^0.222.0: + version "0.222.0" + resolved "https://registry.yarnpkg.com/cdk-from-cfn/-/cdk-from-cfn-0.222.0.tgz#ceb56684473da6596cdfc09b7d9c45a6e2f1ad05" + integrity sha512-SMI2z2xZMYFkfMAoVy/e4McCTkmjuIvP4hv3T0O0xMabvnpb+gS6m8zq5ZXwI69zLfTVuy6KxLIK2yEb7FyB/A== cdklabs-projen-project-types@^0.3.1: version "0.3.1" @@ -5861,7 +5940,7 @@ ci-info@^3.2.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== -ci-info@^4.0.0, ci-info@^4.1.0: +ci-info@^4.0.0, ci-info@^4.1.0, ci-info@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-4.2.0.tgz#cbd21386152ebfe1d56f280a3b5feccbd96764c7" integrity sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg== @@ -6939,9 +7018,9 @@ ejs@^3.1.10: jake "^10.8.5" electron-to-chromium@^1.5.160: - version "1.5.165" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.165.tgz#477b0957e42f071905a86f7c905a9848f95d2bdb" - integrity sha512-naiMx1Z6Nb2TxPU6fiFrUrDTjyPMLdTtaOd2oLmG8zVSg2hCWGkhPyxwk+qRmZ1ytwVqUv0u7ZcDA5+ALhaUtw== + version "1.5.167" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.167.tgz#dab251d7161985306c54d9df2b7c1e651589a4d2" + integrity sha512-LxcRvnYO5ez2bMOFpbuuVuAI5QNeY1ncVytE/KXaL6ZNfzX1yPlAO0nSOyIHx2fVAuUprMqPs/TdVhUFZy7SIQ== emittery@^0.13.1: version "0.13.1" @@ -7284,17 +7363,17 @@ eslint-plugin-import@^2.31.0: string.prototype.trimend "^1.0.8" tsconfig-paths "^3.15.0" -eslint-plugin-jest@^28.13.0: - version "28.13.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-28.13.0.tgz#f215195915cefe3ed14145f841b6e7c90d60a672" - integrity sha512-4AuBcFWOriOeEqy6s4Zup/dQ7E1EPTyyfDaMYmM2YP9xEWPWwK3yYifH1dzY6aHRvyx7y53qMSIyT5s+jrorsQ== +eslint-plugin-jest@^28.14.0: + version "28.14.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-28.14.0.tgz#02da77dc27d7b4c5480df3552ea26de056857b36" + integrity sha512-P9s/qXSMTpRTerE2FQ0qJet2gKbcGyFTPAJipoKxmWqR6uuFqIqk8FuEfg5yBieOezVrEfAMZrEwJ6yEp+1MFQ== dependencies: "@typescript-eslint/utils" "^6.0.0 || ^7.0.0 || ^8.0.0" -eslint-plugin-jsdoc@^50.7.1: - version "50.7.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.7.1.tgz#f3475c5545473f1d3e5fb272ad2f3988283b42e5" - integrity sha512-XBnVA5g2kUVokTNUiE1McEPse5n9/mNUmuJcx52psT6zBs2eVcXSmQBvjfa7NZdfLVSy3u1pEDDUxoxpwy89WA== +eslint-plugin-jsdoc@^50.8.0: + version "50.8.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.8.0.tgz#a8d192ccca26df368a2fbaff17c9dddefacd773f" + integrity sha512-UyGb5755LMFWPrZTEqqvTJ3urLz1iqj+bYOHFNag+sw3NvaMWP9K2z+uIn37XfNALmQLQyrBlJ5mkiVPL7ADEg== dependencies: "@es-joy/jsdoccomment" "~0.50.2" are-docs-informative "^0.0.2" @@ -7315,10 +7394,10 @@ eslint-plugin-prettier@^5.4.1: prettier-linter-helpers "^1.0.0" synckit "^0.11.7" -eslint-scope@^8.3.0: - version "8.3.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.3.0.tgz#10cd3a918ffdd722f5f3f7b5b83db9b23c87340d" - integrity sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ== +eslint-scope@^8.4.0: + version "8.4.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.4.0.tgz#88e646a207fad61436ffa39eb505147200655c82" + integrity sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" @@ -7328,23 +7407,23 @@ eslint-visitor-keys@^3.4.3: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== -eslint-visitor-keys@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz#687bacb2af884fcdda8a6e7d65c606f46a14cd45" - integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw== +eslint-visitor-keys@^4.2.0, eslint-visitor-keys@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz#4cfea60fe7dd0ad8e816e1ed026c1d5251b512c1" + integrity sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ== eslint@^9: - version "9.28.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.28.0.tgz#b0bcbe82a16945a40906924bea75e8b4980ced7d" - integrity sha512-ocgh41VhRlf9+fVpe7QKzwLj9c92fDiqOj8Y3Sd4/ZmVA4Btx4PlUYPq4pp9JDyupkf1upbEXecxL2mwNV7jPQ== + version "9.29.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.29.0.tgz#65e3db3b7e5a5b04a8af541741a0f3648d0a81a6" + integrity sha512-GsGizj2Y1rCWDu6XoEekL3RLilp0voSePurjZIkxL3wlm5o5EC9VpgaP7lrCvjnkuLvzFBQWB3vWB3K5KQTveQ== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.12.1" - "@eslint/config-array" "^0.20.0" + "@eslint/config-array" "^0.20.1" "@eslint/config-helpers" "^0.2.1" "@eslint/core" "^0.14.0" "@eslint/eslintrc" "^3.3.1" - "@eslint/js" "9.28.0" + "@eslint/js" "9.29.0" "@eslint/plugin-kit" "^0.3.1" "@humanfs/node" "^0.16.6" "@humanwhocodes/module-importer" "^1.0.1" @@ -7356,9 +7435,9 @@ eslint@^9: cross-spawn "^7.0.6" debug "^4.3.2" escape-string-regexp "^4.0.0" - eslint-scope "^8.3.0" - eslint-visitor-keys "^4.2.0" - espree "^10.3.0" + eslint-scope "^8.4.0" + eslint-visitor-keys "^4.2.1" + espree "^10.4.0" esquery "^1.5.0" esutils "^2.0.2" fast-deep-equal "^3.1.3" @@ -7374,14 +7453,14 @@ eslint@^9: natural-compare "^1.4.0" optionator "^0.9.3" -espree@^10.0.1, espree@^10.3.0: - version "10.3.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-10.3.0.tgz#29267cf5b0cb98735b65e64ba07e0ed49d1eed8a" - integrity sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg== +espree@^10.0.1, espree@^10.3.0, espree@^10.4.0: + version "10.4.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-10.4.0.tgz#d54f4949d4629005a1fa168d937c3ff1f7e2a837" + integrity sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ== dependencies: - acorn "^8.14.0" + acorn "^8.15.0" acorn-jsx "^5.3.2" - eslint-visitor-keys "^4.2.0" + eslint-visitor-keys "^4.2.1" esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" @@ -7475,7 +7554,19 @@ exit@^0.1.2: resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== -expect@>28.1.3, expect@^29.0.0, expect@^29.7.0: +expect@>28.1.3: + version "30.0.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-30.0.0.tgz#460dfda282e0a8de8302aabee951dba7e79a5a53" + integrity sha512-xCdPp6gwiR9q9lsPCHANarIkFTN/IMZso6Kkq03sOm9IIGtzK/UJqml0dkhHibGh8HKOj8BIDIpZ0BZuU7QK6w== + dependencies: + "@jest/expect-utils" "30.0.0" + "@jest/get-type" "30.0.0" + jest-matcher-utils "30.0.0" + jest-message-util "30.0.0" + jest-mock "30.0.0" + jest-util "30.0.0" + +expect@^29.0.0, expect@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== @@ -7627,9 +7718,9 @@ fb-watchman@^2.0.0: bser "2.1.1" fdir@^6.4.4: - version "6.4.5" - resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.4.5.tgz#328e280f3a23699362f95f2e82acf978a0c0cb49" - integrity sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw== + version "6.4.6" + resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.4.6.tgz#2b268c0232697063111bbf3f64810a2a741ba281" + integrity sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w== figures@3.2.0, figures@^3.1.0, figures@^3.2.0: version "3.2.0" @@ -7762,7 +7853,7 @@ for-each@^0.3.3, for-each@^0.3.5: dependencies: is-callable "^1.2.7" -foreground-child@^3.1.0: +foreground-child@^3.1.0, foreground-child@^3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.1.tgz#32e8e9ed1b68a3497befb9ac2b6adf92a638576f" integrity sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw== @@ -8067,14 +8158,14 @@ glob@^10.0.0, glob@^10.2.2, glob@^10.4.5: package-json-from-dist "^1.0.0" path-scurry "^1.11.1" -glob@^11.0.2: - version "11.0.2" - resolved "https://registry.yarnpkg.com/glob/-/glob-11.0.2.tgz#3261e3897bbc603030b041fd77ba636022d51ce0" - integrity sha512-YT7U7Vye+t5fZ/QMkBFrTJ7ZQxInIUjwyAjVj84CYXqgBdv30MFUPGnBR6sQaVq6Is15wYJUsnzTuWaGRBhBAQ== +glob@^11.0.3: + version "11.0.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-11.0.3.tgz#9d8087e6d72ddb3c4707b1d2778f80ea3eaefcd6" + integrity sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA== dependencies: - foreground-child "^3.1.0" - jackspeak "^4.0.1" - minimatch "^10.0.0" + foreground-child "^3.3.1" + jackspeak "^4.1.1" + minimatch "^10.0.3" minipass "^7.1.2" package-json-from-dist "^1.0.0" path-scurry "^2.0.0" @@ -8863,7 +8954,7 @@ jackspeak@^3.1.2: optionalDependencies: "@pkgjs/parseargs" "^0.11.0" -jackspeak@^4.0.1: +jackspeak@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-4.1.1.tgz#96876030f450502047fc7e8c7fcf8ce8124e43ae" integrity sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ== @@ -8960,6 +9051,16 @@ jest-config@^29.7.0: slash "^3.0.0" strip-json-comments "^3.1.1" +jest-diff@30.0.0: + version "30.0.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-30.0.0.tgz#d3d4f75e257e3c2cb8729438fe9cec66098f6176" + integrity sha512-TgT1+KipV8JTLXXeFX0qSvIJR/UXiNNojjxb/awh3vYlBZyChU/NEmyKmq+wijKjWEztyrGJFL790nqMqNjTHA== + dependencies: + "@jest/diff-sequences" "30.0.0" + "@jest/get-type" "30.0.0" + chalk "^4.1.2" + pretty-format "30.0.0" + jest-diff@^29.4.1, jest-diff@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" @@ -9052,6 +9153,16 @@ jest-leak-detector@^29.7.0: jest-get-type "^29.6.3" pretty-format "^29.7.0" +jest-matcher-utils@30.0.0: + version "30.0.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-30.0.0.tgz#f72a65e248c0462795f7e14386682bfee6ad4386" + integrity sha512-m5mrunqopkrqwG1mMdJxe1J4uGmS9AHHKYUmoxeQOxBcLjEvirIrIDwuKmUYrecPHVB/PUBpXs2gPoeA2FSSLQ== + dependencies: + "@jest/get-type" "30.0.0" + chalk "^4.1.2" + jest-diff "30.0.0" + pretty-format "30.0.0" + jest-matcher-utils@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12" @@ -9062,6 +9173,21 @@ jest-matcher-utils@^29.7.0: jest-get-type "^29.6.3" pretty-format "^29.7.0" +jest-message-util@30.0.0: + version "30.0.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-30.0.0.tgz#b115d408cd877a6e3e711485a3bd240c7a27503c" + integrity sha512-pV3qcrb4utEsa/U7UI2VayNzSDQcmCllBZLSoIucrESRu0geKThFZOjjh0kACDJFJRAQwsK7GVsmS6SpEceD8w== + dependencies: + "@babel/code-frame" "^7.27.1" + "@jest/types" "30.0.0" + "@types/stack-utils" "^2.0.3" + chalk "^4.1.2" + graceful-fs "^4.2.11" + micromatch "^4.0.8" + pretty-format "30.0.0" + slash "^3.0.0" + stack-utils "^2.0.6" + jest-message-util@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3" @@ -9077,6 +9203,15 @@ jest-message-util@^29.7.0: slash "^3.0.0" stack-utils "^2.0.3" +jest-mock@30.0.0: + version "30.0.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-30.0.0.tgz#f3b3115cd80c3eec7df93809430ab1feaeeb7229" + integrity sha512-W2sRA4ALXILrEetEOh2ooZG6fZ01iwVs0OWMKSSWRcUlaLr4ESHuiKXDNTg+ZVgOq8Ei5445i/Yxrv59VT+XkA== + dependencies: + "@jest/types" "30.0.0" + "@types/node" "*" + jest-util "30.0.0" + jest-mock@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.7.0.tgz#4e836cf60e99c6fcfabe9f99d017f3fdd50a6347" @@ -9091,6 +9226,11 @@ jest-pnp-resolver@^1.2.2: resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== +jest-regex-util@30.0.0: + version "30.0.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-30.0.0.tgz#031f385ebb947e770e409ede703d200b3405413e" + integrity sha512-rT84010qRu/5OOU7a9TeidC2Tp3Qgt9Sty4pOZ/VSDuEmRupIjKZAb53gU3jr4ooMlhwScrgC9UixJxWzVu9oQ== + jest-regex-util@^29.6.3: version "29.6.3" resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" @@ -9200,7 +9340,19 @@ jest-snapshot@^29.7.0: pretty-format "^29.7.0" semver "^7.5.3" -jest-util@^29.0.0, jest-util@^29.7.0: +jest-util@30.0.0: + version "30.0.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-30.0.0.tgz#d4f20f59e1fd72c7143143f4aa961bb71aeddad0" + integrity sha512-fhNBBM9uSUbd4Lzsf8l/kcAdaHD/4SgoI48en3HXcBEMwKwoleKFMZ6cYEYs21SB779PRuRCyNLmymApAm8tZw== + dependencies: + "@jest/types" "30.0.0" + "@types/node" "*" + chalk "^4.1.2" + ci-info "^4.2.0" + graceful-fs "^4.2.11" + picomatch "^4.0.2" + +jest-util@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== @@ -9387,9 +9539,9 @@ jsii-reflect@^1.112.0: yargs "^16.2.0" jsii-rosetta@5.6: - version "5.6.19" - resolved "https://registry.yarnpkg.com/jsii-rosetta/-/jsii-rosetta-5.6.19.tgz#25818a48e8a53f2eb5ecdf3503f4c482044b3113" - integrity sha512-Hyuy9TnqSCL4D9/dlKr5pmmLPi9I/i5LNMDl0vZ59SvXejliqJHoBwGSROj/Ye9PbB/yywYUKJCRPvqa8qSN8A== + version "5.6.20" + resolved "https://registry.yarnpkg.com/jsii-rosetta/-/jsii-rosetta-5.6.20.tgz#694b7229759104c0b50c9119601f615027d5295b" + integrity sha512-XPErczwwxUgKWoKObyU3GyIEUXpNeiYFHZg72Y4/Aqdo8pneF9c9XlGCOw46Lz2ZKWD4/jdQKblWlVXN84kilA== dependencies: "@jsii/check-node" "1.112.0" "@jsii/spec" "^1.112.0" @@ -9406,9 +9558,9 @@ jsii-rosetta@5.6: yargs "^17.7.2" jsii@5.6, jsii@~5.6.0: - version "5.6.21" - resolved "https://registry.yarnpkg.com/jsii/-/jsii-5.6.21.tgz#f662091c2af92af71e6b0c8eb316c1497901f027" - integrity sha512-njPMxFLUVVhdDr0U0/j+oJJQaWGei+TchSuL5+QF/gcGFN0UcVdBpwWb1mzreP0HYWkWdlgXd9pArbO0jfPKMg== + version "5.6.22" + resolved "https://registry.yarnpkg.com/jsii/-/jsii-5.6.22.tgz#fb28c889d47af112931ad4b737f6300b44b6c0b1" + integrity sha512-hsjZDLs7pw4116XT3CfFkhIILYAxBVi7BiaxkPejImEIKQTZVaudxHZ1hwyxacRZF0sHUJTfYkT3qBTnzSPUhA== dependencies: "@jsii/check-node" "1.112.0" "@jsii/spec" "^1.112.0" @@ -10026,13 +10178,20 @@ min-indent@^1.0.0: resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== -minimatch@10.0.1, minimatch@^10.0.0: +minimatch@10.0.1: version "10.0.1" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.0.1.tgz#ce0521856b453c86e25f2c4c0d03e6ff7ddc440b" integrity sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ== dependencies: brace-expansion "^2.0.1" +minimatch@10.0.3, minimatch@^10.0.3: + version "10.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.0.3.tgz#cf7a0314a16c4d9ab73a7730a0e8e3c3502d47aa" + integrity sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw== + dependencies: + "@isaacs/brace-expansion" "^5.0.0" + minimatch@9.0.3: version "9.0.3" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" @@ -11246,9 +11405,9 @@ postcss-values-parser@^6.0.2: quote-unquote "^1.0.0" postcss@^8.5.1, postcss@^8.5.3: - version "8.5.4" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.4.tgz#d61014ac00e11d5f58458ed7247d899bd65f99c0" - integrity sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w== + version "8.5.5" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.5.tgz#04de7797f6911fb1c96550e96616d08681537ef3" + integrity sha512-d/jtm+rdNT8tpXuHY5MMtcbJFBkhXE6593XVR9UoGCH8jSFGci7jGvMGH5RYd5PBJW+00NZQt6gf7CbagJCrhg== dependencies: nanoid "^3.3.11" picocolors "^1.1.1" @@ -11292,6 +11451,15 @@ prettier@^2.8: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== +pretty-format@30.0.0: + version "30.0.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-30.0.0.tgz#a3137bed442af87eadea2c427a1b201189e590a4" + integrity sha512-18NAOUr4ZOQiIR+BgI5NhQE7uREdx4ZyV0dyay5izh4yfQ+1T7BSvggxvRGoXocrRyevqW5OhScUjbi9GB8R8Q== + dependencies: + "@jest/schemas" "30.0.0" + ansi-styles "^5.2.0" + react-is "^18.3.1" + pretty-format@^29.0.0, pretty-format@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" @@ -11328,10 +11496,10 @@ proggy@^3.0.0: resolved "https://registry.yarnpkg.com/proggy/-/proggy-3.0.0.tgz#874e91fed27fe00a511758e83216a6b65148bd6c" integrity sha512-QE8RApCM3IaRRxVzxrjbgNMpQEX6Wu0p0KBeoSiSEw5/bsGwZHsshF4LCxH2jp/r6BU+bqA3LrMDEYNfJnpD8Q== -projen@^0.92.9: - version "0.92.9" - resolved "https://registry.yarnpkg.com/projen/-/projen-0.92.9.tgz#36c5640b651e519dddc0b6522f682f4444e903bc" - integrity sha512-bagWBR8FSaQqBAVQdJufDo2y2tNfOdWRLNOacGV9Ow1PtxCQdtNWEnv3du3Vjp61x7c9iN/zd/XO7QJXRtA3xw== +projen@^0.92.10: + version "0.92.10" + resolved "https://registry.yarnpkg.com/projen/-/projen-0.92.10.tgz#88fff4d31725d972d5873270d55abc631f9dea37" + integrity sha512-c60xtQbkPt1tseUhMdCCUURdzcYaV5/Z5OxLJlNQzONwh/0VmpHKEW/creY8X7tw8hk4WgtMKhwisajJHkcf0Q== dependencies: "@iarna/toml" "^2.2.5" case "^1.6.3" @@ -11518,7 +11686,7 @@ rc@^1.2.8: minimist "^1.2.0" strip-json-comments "~2.0.1" -react-is@^18.0.0: +react-is@^18.0.0, react-is@^18.3.1: version "18.3.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== @@ -12206,9 +12374,9 @@ socks-proxy-agent@^8.0.3, socks-proxy-agent@^8.0.5: socks "^2.8.3" socks@^2.6.2, socks@^2.8.3: - version "2.8.4" - resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.4.tgz#07109755cdd4da03269bda4725baa061ab56d5cc" - integrity sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ== + version "2.8.5" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.5.tgz#bfe18f5ead1efc93f5ec90c79fa8bdccbcee2e64" + integrity sha512-iF+tNDQla22geJdTyJB1wM/qrX9DMRwWrciEPwWLPRWAUEM8sQiyxgckLxWT1f7+9VabJS0jTGGr4QgBuvi6Ww== dependencies: ip-address "^9.0.5" smart-buffer "^4.2.0" @@ -12348,7 +12516,7 @@ stable-hash@^0.0.5: resolved "https://registry.yarnpkg.com/stable-hash/-/stable-hash-0.0.5.tgz#94e8837aaeac5b4d0f631d2972adef2924b40269" integrity sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA== -stack-utils@^2.0.3: +stack-utils@^2.0.3, stack-utils@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== @@ -12874,15 +13042,14 @@ ts-graphviz@^2.1.2: "@ts-graphviz/common" "^2.1.5" "@ts-graphviz/core" "^2.0.7" -ts-jest@^29, ts-jest@^29.3.4: - version "29.3.4" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.3.4.tgz#9354472aceae1d3867a80e8e02014ea5901aee41" - integrity sha512-Iqbrm8IXOmV+ggWHOTEbjwyCf2xZlUMv5npExksXohL+tk8va4Fjhb+X2+Rt9NBmgO7bJ8WpnMLOwih/DnMlFA== +ts-jest@^29, ts-jest@^29.4.0: + version "29.4.0" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.4.0.tgz#bef0ee98d94c83670af7462a1617bf2367a83740" + integrity sha512-d423TJMnJGu80/eSgfQ5w/R+0zFJvdtTxwtF9KzFFunOpSeD+79lHJQIiAhluJoyGRbvj9NZJsl9WjCUo0ND7Q== dependencies: bs-logger "^0.2.6" ejs "^3.1.10" fast-json-stable-stringify "^2.1.0" - jest-util "^29.0.0" json5 "^2.2.3" lodash.memoize "^4.1.2" make-error "^1.3.6" @@ -12943,10 +13110,10 @@ tslib@^2.0.0, tslib@^2.0.1, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1, tslib@^2.4 resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== -tsx@^4.19.4: - version "4.19.4" - resolved "https://registry.yarnpkg.com/tsx/-/tsx-4.19.4.tgz#647b4141f4fdd9d773a9b564876773d2846901f4" - integrity sha512-gK5GVzDkJK1SI1zwHf32Mqxf2tSJkNx+eYcNly5+nHvWqXUJYUkWBQtKauoESz3ymezAI++ZwT855x5p5eop+Q== +tsx@^4.20.3: + version "4.20.3" + resolved "https://registry.yarnpkg.com/tsx/-/tsx-4.20.3.tgz#f913e4911d59ad177c1bcee19d1035ef8dd6e2fb" + integrity sha512-qjbnuR9Tr+FJOMBqJCW5ehvIo/buZq7vH7qD7JziU98h6l3qGy0a/yPFjwO+y0/T7GFpNgNAvEcPPVfyT8rrPQ== dependencies: esbuild "~0.25.0" get-tsconfig "^4.7.5" @@ -13121,10 +13288,10 @@ undici-types@~5.26.4: resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== -undici-types@~6.21.0: - version "6.21.0" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.21.0.tgz#691d00af3909be93a7faa13be61b3a5b50ef12cb" - integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ== +undici-types@~7.8.0: + version "7.8.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.8.0.tgz#de00b85b710c54122e44fbfd911f8d70174cd294" + integrity sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw== unique-filename@^4.0.0: version "4.0.0" @@ -13161,29 +13328,31 @@ unpipe@1.0.0, unpipe@~1.0.0: integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== unrs-resolver@^1.6.2, unrs-resolver@^1.7.11: - version "1.7.11" - resolved "https://registry.yarnpkg.com/unrs-resolver/-/unrs-resolver-1.7.11.tgz#c8615311785eb1bc7a454270468066e8a8778cf3" - integrity sha512-OhuAzBImFPjKNgZ2JwHMfGFUA6NSbRegd1+BPjC1Y0E6X9Y/vJ4zKeGmIMqmlYboj6cMNEwKI+xQisrg4J0HaQ== + version "1.9.0" + resolved "https://registry.yarnpkg.com/unrs-resolver/-/unrs-resolver-1.9.0.tgz#22877e2e0f1ba3f848f75f7be5ecb81b634066dc" + integrity sha512-wqaRu4UnzBD2ABTC1kLfBjAqIDZ5YUTr/MLGa7By47JV1bJDSW7jq/ZSLigB7enLe7ubNaJhtnBXgrc/50cEhg== dependencies: napi-postinstall "^0.2.2" optionalDependencies: - "@unrs/resolver-binding-darwin-arm64" "1.7.11" - "@unrs/resolver-binding-darwin-x64" "1.7.11" - "@unrs/resolver-binding-freebsd-x64" "1.7.11" - "@unrs/resolver-binding-linux-arm-gnueabihf" "1.7.11" - "@unrs/resolver-binding-linux-arm-musleabihf" "1.7.11" - "@unrs/resolver-binding-linux-arm64-gnu" "1.7.11" - "@unrs/resolver-binding-linux-arm64-musl" "1.7.11" - "@unrs/resolver-binding-linux-ppc64-gnu" "1.7.11" - "@unrs/resolver-binding-linux-riscv64-gnu" "1.7.11" - "@unrs/resolver-binding-linux-riscv64-musl" "1.7.11" - "@unrs/resolver-binding-linux-s390x-gnu" "1.7.11" - "@unrs/resolver-binding-linux-x64-gnu" "1.7.11" - "@unrs/resolver-binding-linux-x64-musl" "1.7.11" - "@unrs/resolver-binding-wasm32-wasi" "1.7.11" - "@unrs/resolver-binding-win32-arm64-msvc" "1.7.11" - "@unrs/resolver-binding-win32-ia32-msvc" "1.7.11" - "@unrs/resolver-binding-win32-x64-msvc" "1.7.11" + "@unrs/resolver-binding-android-arm-eabi" "1.9.0" + "@unrs/resolver-binding-android-arm64" "1.9.0" + "@unrs/resolver-binding-darwin-arm64" "1.9.0" + "@unrs/resolver-binding-darwin-x64" "1.9.0" + "@unrs/resolver-binding-freebsd-x64" "1.9.0" + "@unrs/resolver-binding-linux-arm-gnueabihf" "1.9.0" + "@unrs/resolver-binding-linux-arm-musleabihf" "1.9.0" + "@unrs/resolver-binding-linux-arm64-gnu" "1.9.0" + "@unrs/resolver-binding-linux-arm64-musl" "1.9.0" + "@unrs/resolver-binding-linux-ppc64-gnu" "1.9.0" + "@unrs/resolver-binding-linux-riscv64-gnu" "1.9.0" + "@unrs/resolver-binding-linux-riscv64-musl" "1.9.0" + "@unrs/resolver-binding-linux-s390x-gnu" "1.9.0" + "@unrs/resolver-binding-linux-x64-gnu" "1.9.0" + "@unrs/resolver-binding-linux-x64-musl" "1.9.0" + "@unrs/resolver-binding-wasm32-wasi" "1.9.0" + "@unrs/resolver-binding-win32-arm64-msvc" "1.9.0" + "@unrs/resolver-binding-win32-ia32-msvc" "1.9.0" + "@unrs/resolver-binding-win32-x64-msvc" "1.9.0" update-browserslist-db@^1.1.3: version "1.1.3"