diff --git a/.projenrc.ts b/.projenrc.ts index fbece9b4f..efb42e0f2 100644 --- a/.projenrc.ts +++ b/.projenrc.ts @@ -821,8 +821,8 @@ const cli = configureProject( '/lib/user-input.ts', '/lib/convert-to-user-input.ts', ], - testEnvironment: './test/jest-bufferedconsole.ts', - setupFilesAfterEnv: ['/test/jest-setup-after-env.ts'], + testEnvironment: './test/_helpers/jest-bufferedconsole.ts', + setupFilesAfterEnv: ['/test/_helpers/jest-setup-after-env.ts'], }, }), diff --git a/packages/@aws-cdk/toolkit-lib/lib/api/aws-cdk.ts b/packages/@aws-cdk/toolkit-lib/lib/api/aws-cdk.ts index 4d987c5c7..f7fbd6e52 100644 --- a/packages/@aws-cdk/toolkit-lib/lib/api/aws-cdk.ts +++ b/packages/@aws-cdk/toolkit-lib/lib/api/aws-cdk.ts @@ -30,4 +30,4 @@ export { guessExecutable } from '../../../../aws-cdk/lib/api/cxapp/exec'; // @todo Should not use! investigate how to replace export { versionNumber } from '../../../../aws-cdk/lib/cli/version'; -export { CliIoHost } from '../../../../aws-cdk/lib/toolkit/cli-io-host'; +export { CliIoHost } from '../../../../aws-cdk/lib/cli/io-host'; diff --git a/packages/@aws-cdk/user-input-gen/test/user-input-gen.test.ts b/packages/@aws-cdk/user-input-gen/test/user-input-gen.test.ts index 5de64fb3f..ea3767a67 100644 --- a/packages/@aws-cdk/user-input-gen/test/user-input-gen.test.ts +++ b/packages/@aws-cdk/user-input-gen/test/user-input-gen.test.ts @@ -33,10 +33,12 @@ describe('render', () => { commands: { deploy: { description: 'Deploy a stack', + aliases: ['ship-it'], options: { all: { type: 'boolean', desc: 'Deploy all stacks', + alias: 'A', default: false, }, }, @@ -70,6 +72,8 @@ describe('render', () => { /** * Deploy a stack + * + * aliases: ship-it */ readonly deploy?: DeployOptions; } @@ -119,12 +123,16 @@ describe('render', () => { /** * Deploy a stack * + * aliases: ship-it + * * @struct */ export interface DeployOptions { /** * Deploy all stacks * + * aliases: A + * * @default - false */ readonly all?: boolean; diff --git a/packages/@aws-cdk/user-input-gen/test/yargs-gen.test.ts b/packages/@aws-cdk/user-input-gen/test/yargs-gen.test.ts index fb6840d1f..36276dff6 100644 --- a/packages/@aws-cdk/user-input-gen/test/yargs-gen.test.ts +++ b/packages/@aws-cdk/user-input-gen/test/yargs-gen.test.ts @@ -78,6 +78,7 @@ describe('render', () => { commands: { test: { description: 'the action under test', + aliases: ['spec'], options: { one: { type: 'boolean', @@ -104,7 +105,7 @@ describe('render', () => { return yargs .env('CDK') .usage('Usage: cdk -a COMMAND') - .command('test', 'the action under test', (yargs: Argv) => + .command(['test', 'spec'], 'the action under test', (yargs: Argv) => yargs .option('one', { default: undefined, diff --git a/packages/aws-cdk/jest.config.json b/packages/aws-cdk/jest.config.json index b2d2b32ef..be8b208ed 100644 --- a/packages/aws-cdk/jest.config.json +++ b/packages/aws-cdk/jest.config.json @@ -5,7 +5,7 @@ "js" ], "maxWorkers": "80%", - "testEnvironment": "./test/jest-bufferedconsole.ts", + "testEnvironment": "./test/_helpers/jest-bufferedconsole.ts", "coverageThreshold": { "global": { "statements": 84, @@ -53,7 +53,7 @@ "randomize": true, "testTimeout": 60000, "setupFilesAfterEnv": [ - "/test/jest-setup-after-env.ts" + "/test/_helpers/jest-setup-after-env.ts" ], "clearMocks": true, "coverageDirectory": "coverage", diff --git a/packages/aws-cdk/lib/api/aws-auth/awscli-compatible.ts b/packages/aws-cdk/lib/api/aws-auth/awscli-compatible.ts index 38e76d0e9..fb5b6f1c3 100644 --- a/packages/aws-cdk/lib/api/aws-auth/awscli-compatible.ts +++ b/packages/aws-cdk/lib/api/aws-auth/awscli-compatible.ts @@ -8,8 +8,8 @@ import { ProxyAgent } from 'proxy-agent'; import { makeCachingProvider } from './provider-caching'; import type { SdkHttpOptions } from './sdk-provider'; import { readIfPossible } from './util'; +import { AuthenticationError } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import { debug } from '../../logging'; -import { AuthenticationError } from '../../toolkit/error'; const DEFAULT_CONNECTION_TIMEOUT = 10000; const DEFAULT_TIMEOUT = 300000; diff --git a/packages/aws-cdk/lib/api/aws-auth/credential-plugins.ts b/packages/aws-cdk/lib/api/aws-auth/credential-plugins.ts index d37ec7f58..474c07164 100644 --- a/packages/aws-cdk/lib/api/aws-auth/credential-plugins.ts +++ b/packages/aws-cdk/lib/api/aws-auth/credential-plugins.ts @@ -2,8 +2,8 @@ import { inspect } from 'util'; import type { CredentialProviderSource, ForReading, ForWriting, PluginProviderResult, SDKv2CompatibleCredentials, SDKv3CompatibleCredentialProvider, SDKv3CompatibleCredentials } from '@aws-cdk/cli-plugin-contract'; import type { AwsCredentialIdentity, AwsCredentialIdentityProvider } from '@smithy/types'; import { credentialsAboutToExpire, makeCachingProvider } from './provider-caching'; +import { AuthenticationError } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import { debug, warning } from '../../logging'; -import { AuthenticationError } from '../../toolkit/error'; import { formatErrorMessage } from '../../util'; import type { Mode } from '../plugin/mode'; import { PluginHost } from '../plugin/plugin'; diff --git a/packages/aws-cdk/lib/api/aws-auth/sdk-provider.ts b/packages/aws-cdk/lib/api/aws-auth/sdk-provider.ts index ec53a9237..db1cf712b 100644 --- a/packages/aws-cdk/lib/api/aws-auth/sdk-provider.ts +++ b/packages/aws-cdk/lib/api/aws-auth/sdk-provider.ts @@ -12,8 +12,8 @@ import { CredentialPlugins } from './credential-plugins'; import { makeCachingProvider } from './provider-caching'; import { SDK } from './sdk'; import { callTrace, traceMemberMethods } from './tracing'; +import { AuthenticationError } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import { debug, warning } from '../../logging'; -import { AuthenticationError } from '../../toolkit/error'; import { formatErrorMessage } from '../../util'; import { Mode } from '../plugin/mode'; diff --git a/packages/aws-cdk/lib/api/aws-auth/sdk.ts b/packages/aws-cdk/lib/api/aws-auth/sdk.ts index 7bd177dce..da1dc46c4 100644 --- a/packages/aws-cdk/lib/api/aws-auth/sdk.ts +++ b/packages/aws-cdk/lib/api/aws-auth/sdk.ts @@ -346,8 +346,8 @@ import { cachedAsync } from './cached'; import type { Account } from './sdk-provider'; import { traceMemberMethods } from './tracing'; import { defaultCliUserAgent } from './user-agent'; +import { AuthenticationError } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import { debug } from '../../logging'; -import { AuthenticationError } from '../../toolkit/error'; import { formatErrorMessage } from '../../util'; export interface S3ClientOptions { diff --git a/packages/aws-cdk/lib/api/bootstrap/bootstrap-environment.ts b/packages/aws-cdk/lib/api/bootstrap/bootstrap-environment.ts index 1fbfa2ac6..f32fdaa68 100644 --- a/packages/aws-cdk/lib/api/bootstrap/bootstrap-environment.ts +++ b/packages/aws-cdk/lib/api/bootstrap/bootstrap-environment.ts @@ -4,9 +4,9 @@ import type * as cxapi from '@aws-cdk/cx-api'; import type { BootstrapEnvironmentOptions, BootstrappingParameters } from './bootstrap-props'; import { BootstrapStack, bootstrapVersionFromTemplate } from './deploy-bootstrap'; import { legacyBootstrapTemplate } from './legacy-template'; +import { ToolkitError } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import type { IoHelper } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private'; import { warn } from '../../cli/messages'; -import { ToolkitError } from '../../toolkit/error'; import { bundledPackageRootDir, loadStructuredFile, serializeStructure } from '../../util'; import type { SDK, SdkProvider } from '../aws-auth'; import type { SuccessfulDeployStackResult } from '../deployments'; diff --git a/packages/aws-cdk/lib/api/context.ts b/packages/aws-cdk/lib/api/context.ts index 0ed422cff..a7bbdd834 100644 --- a/packages/aws-cdk/lib/api/context.ts +++ b/packages/aws-cdk/lib/api/context.ts @@ -1,5 +1,5 @@ import { Settings } from './settings'; -import { ToolkitError } from '../toolkit/error'; +import { ToolkitError } from '../../../@aws-cdk/tmp-toolkit-helpers/src/api'; export { TRANSIENT_CONTEXT_KEY } from './settings'; export const PROJECT_CONTEXT = 'cdk.context.json'; diff --git a/packages/aws-cdk/lib/api/cxapp/cloud-assembly.ts b/packages/aws-cdk/lib/api/cxapp/cloud-assembly.ts index 0bf9eec44..9ae64af3c 100644 --- a/packages/aws-cdk/lib/api/cxapp/cloud-assembly.ts +++ b/packages/aws-cdk/lib/api/cxapp/cloud-assembly.ts @@ -4,8 +4,8 @@ import { type StackDetails } from '@aws-cdk/tmp-toolkit-helpers'; import * as chalk from 'chalk'; import { minimatch } from 'minimatch'; import * as semver from 'semver'; +import { AssemblyError, ToolkitError } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import { info } from '../../logging'; -import { AssemblyError, ToolkitError } from '../../toolkit/error'; import { flatten } from '../../util'; export enum DefaultSelection { diff --git a/packages/aws-cdk/lib/api/cxapp/cloud-executable.ts b/packages/aws-cdk/lib/api/cxapp/cloud-executable.ts index 2b1ef9c69..31bfc9c64 100644 --- a/packages/aws-cdk/lib/api/cxapp/cloud-executable.ts +++ b/packages/aws-cdk/lib/api/cxapp/cloud-executable.ts @@ -1,9 +1,9 @@ import type * as cxapi from '@aws-cdk/cx-api'; import { CloudAssembly } from './cloud-assembly'; +import { ToolkitError } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import type { Configuration } from '../../cli/user-configuration'; import * as contextproviders from '../../context-providers'; import { debug } from '../../logging'; -import { ToolkitError } from '../../toolkit/error'; import type { SdkProvider } from '../aws-auth'; /** diff --git a/packages/aws-cdk/lib/api/cxapp/environments.ts b/packages/aws-cdk/lib/api/cxapp/environments.ts index ddc58396d..2e381e858 100644 --- a/packages/aws-cdk/lib/api/cxapp/environments.ts +++ b/packages/aws-cdk/lib/api/cxapp/environments.ts @@ -1,7 +1,7 @@ import type * as cxapi from '@aws-cdk/cx-api'; import { minimatch } from 'minimatch'; import type { StackCollection } from './cloud-assembly'; -import { ToolkitError } from '../../toolkit/error'; +import { ToolkitError } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import type { SdkProvider } from '../aws-auth'; export function looksLikeGlob(environment: string) { diff --git a/packages/aws-cdk/lib/api/cxapp/exec.ts b/packages/aws-cdk/lib/api/cxapp/exec.ts index 7f5f0c9db..abfea2c3e 100644 --- a/packages/aws-cdk/lib/api/cxapp/exec.ts +++ b/packages/aws-cdk/lib/api/cxapp/exec.ts @@ -5,11 +5,11 @@ import * as cxschema from '@aws-cdk/cloud-assembly-schema'; import * as cxapi from '@aws-cdk/cx-api'; import * as fs from 'fs-extra'; import * as semver from 'semver'; +import { ToolkitError } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import type { Configuration } from '../../cli/user-configuration'; import { PROJECT_CONFIG, USER_DEFAULTS } from '../../cli/user-configuration'; import { versionNumber } from '../../cli/version'; import { debug, warning } from '../../logging'; -import { ToolkitError } from '../../toolkit/error'; import { loadTree, some } from '../../tree'; import { splitBySize } from '../../util'; import type { SdkProvider } from '../aws-auth'; diff --git a/packages/aws-cdk/lib/api/deployments/asset-publishing.ts b/packages/aws-cdk/lib/api/deployments/asset-publishing.ts index 0bce3ad11..fd8aeb90c 100644 --- a/packages/aws-cdk/lib/api/deployments/asset-publishing.ts +++ b/packages/aws-cdk/lib/api/deployments/asset-publishing.ts @@ -15,10 +15,9 @@ import { AssetPublishing, } from 'cdk-assets'; import type { SDK } from '..'; -import type { IoHelper } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private'; -import { formatMessage } from '../../cli/messages'; -import type { IoMessageLevel } from '../../toolkit/cli-io-host'; -import { ToolkitError } from '../../toolkit/error'; +import { ToolkitError } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api'; +import type { IoMessageMaker, IoHelper } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private'; +import { IO } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private'; import type { SdkProvider } from '../aws-auth'; import { Mode } from '../plugin'; @@ -169,17 +168,17 @@ export class PublishingAws implements IAws { } } -export const EVENT_TO_LEVEL: Record = { - build: 'debug', - cached: 'debug', - check: 'debug', - debug: 'debug', - fail: 'error', - found: 'debug', - start: 'info', - success: 'info', - upload: 'debug', - shell_open: 'debug', +const EVENT_TO_MSG_MAKER: Record | false> = { + build: IO.DEFAULT_TOOLKIT_DEBUG, + cached: IO.DEFAULT_TOOLKIT_DEBUG, + check: IO.DEFAULT_TOOLKIT_DEBUG, + debug: IO.DEFAULT_TOOLKIT_DEBUG, + fail: IO.DEFAULT_TOOLKIT_ERROR, + found: IO.DEFAULT_TOOLKIT_DEBUG, + start: IO.DEFAULT_TOOLKIT_INFO, + success: IO.DEFAULT_TOOLKIT_INFO, + upload: IO.DEFAULT_TOOLKIT_DEBUG, + shell_open: IO.DEFAULT_TOOLKIT_DEBUG, shell_stderr: false, shell_stdout: false, shell_close: false, @@ -195,15 +194,9 @@ export abstract class BasePublishProgressListener implements IPublishProgressLis protected abstract getMessage(type: EventType, event: IPublishProgress): string; public onPublishEvent(type: EventType, event: IPublishProgress): void { - const level = EVENT_TO_LEVEL[type]; - if (level) { - void this.ioHelper.notify( - formatMessage({ - level, - message: this.getMessage(type, event), - data: undefined, - }), - ); + const maker = EVENT_TO_MSG_MAKER[type]; + if (maker) { + void this.ioHelper.notify(maker.msg(this.getMessage(type, event))); } } } diff --git a/packages/aws-cdk/lib/api/deployments/assets.ts b/packages/aws-cdk/lib/api/deployments/assets.ts index 458bc0f2d..62fcd0578 100644 --- a/packages/aws-cdk/lib/api/deployments/assets.ts +++ b/packages/aws-cdk/lib/api/deployments/assets.ts @@ -4,9 +4,9 @@ import * as cxschema from '@aws-cdk/cloud-assembly-schema'; import * as cxapi from '@aws-cdk/cx-api'; import * as chalk from 'chalk'; import type { AssetManifestBuilder } from './asset-manifest-builder'; +import { ToolkitError } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import type { IoHelper } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private'; import { debug } from '../../cli/messages'; -import { ToolkitError } from '../../toolkit/error'; import type { EnvironmentResources } from '../environment'; import type { ToolkitInfo } from '../toolkit-info'; diff --git a/packages/aws-cdk/lib/api/deployments/checks.ts b/packages/aws-cdk/lib/api/deployments/checks.ts index 7448a6e0b..e57e1d6e4 100644 --- a/packages/aws-cdk/lib/api/deployments/checks.ts +++ b/packages/aws-cdk/lib/api/deployments/checks.ts @@ -1,6 +1,6 @@ +import { ToolkitError } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import type { IoHelper } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private'; import { debug } from '../../cli/messages'; -import { ToolkitError } from '../../toolkit/error'; import type { SDK } from '../aws-auth'; export async function determineAllowCrossAccountAssetPublishing( diff --git a/packages/aws-cdk/lib/api/deployments/cloudformation.ts b/packages/aws-cdk/lib/api/deployments/cloudformation.ts index ce071bb68..7375d3287 100644 --- a/packages/aws-cdk/lib/api/deployments/cloudformation.ts +++ b/packages/aws-cdk/lib/api/deployments/cloudformation.ts @@ -14,9 +14,9 @@ import type { FileManifestEntry } from 'cdk-assets'; import { AssetManifest } from 'cdk-assets'; import { AssetManifestBuilder } from './asset-manifest-builder'; import type { Deployments } from './deployments'; +import { ToolkitError } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import type { IoHelper } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private'; import { debug } from '../../cli/messages'; -import { ToolkitError } from '../../toolkit/error'; import { formatErrorMessage, deserializeStructure } from '../../util'; import type { ICloudFormationClient, SdkProvider } from '../aws-auth'; import { StackStatus } from '../stack-events'; diff --git a/packages/aws-cdk/lib/api/deployments/deploy-stack.ts b/packages/aws-cdk/lib/api/deployments/deploy-stack.ts index 1ecd99c82..4a6953beb 100644 --- a/packages/aws-cdk/lib/api/deployments/deploy-stack.ts +++ b/packages/aws-cdk/lib/api/deployments/deploy-stack.ts @@ -30,8 +30,8 @@ import { import type { ChangeSetDeploymentMethod, DeploymentMethod } from './deployment-method'; import type { DeployStackResult, SuccessfulDeployStackResult } from './deployment-result'; import { tryHotswapDeployment } from './hotswap-deployments'; +import { ToolkitError } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import { IO, type IoHelper } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private'; -import { ToolkitError } from '../../toolkit/error'; import { formatErrorMessage } from '../../util'; import type { SDK, SdkProvider, ICloudFormationClient } from '../aws-auth'; import type { EnvironmentResources } from '../environment'; diff --git a/packages/aws-cdk/lib/api/deployments/deployment-result.ts b/packages/aws-cdk/lib/api/deployments/deployment-result.ts index cc7f2677a..95a41938a 100644 --- a/packages/aws-cdk/lib/api/deployments/deployment-result.ts +++ b/packages/aws-cdk/lib/api/deployments/deployment-result.ts @@ -1,4 +1,4 @@ -import { ToolkitError } from '../../toolkit/error'; +import { ToolkitError } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api'; export type DeployStackResult = | SuccessfulDeployStackResult diff --git a/packages/aws-cdk/lib/api/deployments/deployments.ts b/packages/aws-cdk/lib/api/deployments/deployments.ts index 4152938c4..fe664a391 100644 --- a/packages/aws-cdk/lib/api/deployments/deployments.ts +++ b/packages/aws-cdk/lib/api/deployments/deployments.ts @@ -26,9 +26,9 @@ import { loadCurrentTemplateWithNestedStacks, type RootTemplateWithNestedStacks, } from './nested-stack-helpers'; +import { ToolkitError } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import type { IoHelper } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private'; import { debug, warn } from '../../cli/messages'; -import { ToolkitError } from '../../toolkit/error'; import { formatErrorMessage } from '../../util'; import type { SdkProvider } from '../aws-auth/sdk-provider'; import { type EnvironmentResources, EnvironmentAccess } from '../environment'; diff --git a/packages/aws-cdk/lib/api/deployments/hotswap-deployments.ts b/packages/aws-cdk/lib/api/deployments/hotswap-deployments.ts index afff84526..c7c316384 100644 --- a/packages/aws-cdk/lib/api/deployments/hotswap-deployments.ts +++ b/packages/aws-cdk/lib/api/deployments/hotswap-deployments.ts @@ -11,7 +11,7 @@ import type { SDK, SdkProvider } from '../aws-auth'; import type { CloudFormationStack } from './cloudformation'; import type { NestedStackTemplates } from './nested-stack-helpers'; import { loadCurrentTemplateWithNestedStacks } from './nested-stack-helpers'; -import { ToolkitError } from '../../toolkit/error'; +import { ToolkitError } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import { formatErrorMessage } from '../../util'; import { EvaluateCloudFormationTemplate } from '../evaluate-cloudformation-template'; import { isHotswappableAppSyncChange } from '../hotswap/appsync-mapping-templates'; diff --git a/packages/aws-cdk/lib/api/environment/environment-access.ts b/packages/aws-cdk/lib/api/environment/environment-access.ts index 888d9aea3..a17fa3da9 100644 --- a/packages/aws-cdk/lib/api/environment/environment-access.ts +++ b/packages/aws-cdk/lib/api/environment/environment-access.ts @@ -2,9 +2,9 @@ import type * as cxapi from '@aws-cdk/cx-api'; import type { SDK } from '../aws-auth'; import type { EnvironmentResources } from './environment-resources'; import { EnvironmentResourcesRegistry } from './environment-resources'; +import { ToolkitError } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import type { IoHelper } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private'; import { warn } from '../../cli/messages'; -import { ToolkitError } from '../../toolkit/error'; import { formatErrorMessage } from '../../util'; import type { CredentialsOptions, SdkForEnvironment, SdkProvider } from '../aws-auth/sdk-provider'; import { Mode } from '../plugin/mode'; diff --git a/packages/aws-cdk/lib/api/environment/environment-resources.ts b/packages/aws-cdk/lib/api/environment/environment-resources.ts index 5cb64f809..56e44b476 100644 --- a/packages/aws-cdk/lib/api/environment/environment-resources.ts +++ b/packages/aws-cdk/lib/api/environment/environment-resources.ts @@ -1,8 +1,8 @@ import type { Environment } from '@aws-cdk/cx-api'; +import { ToolkitError } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import type { IoHelper } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private'; import { debug, warn } from '../../cli/messages'; import { Notices } from '../../notices'; -import { ToolkitError } from '../../toolkit/error'; import { formatErrorMessage } from '../../util'; import type { SDK } from '../aws-auth'; import { type EcrRepositoryInfo, ToolkitInfo } from '../toolkit-info'; diff --git a/packages/aws-cdk/lib/api/evaluate-cloudformation-template.ts b/packages/aws-cdk/lib/api/evaluate-cloudformation-template.ts index 2a94143c4..7b8bf4d31 100644 --- a/packages/aws-cdk/lib/api/evaluate-cloudformation-template.ts +++ b/packages/aws-cdk/lib/api/evaluate-cloudformation-template.ts @@ -2,9 +2,9 @@ import type { CloudFormationStackArtifact } from '@aws-cdk/cx-api'; import type { Export, ListExportsCommandOutput, StackResourceSummary } from '@aws-sdk/client-cloudformation'; import type { SDK } from './aws-auth'; import type { NestedStackTemplates } from './deployments'; +import { ToolkitError } from '../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import { resourceMetadata } from '../../../@aws-cdk/tmp-toolkit-helpers/src/api/resource-metadata/resource-metadata'; import type { ResourceMetadata } from '../../../@aws-cdk/tmp-toolkit-helpers/src/api/resource-metadata/resource-metadata'; -import { ToolkitError } from '../toolkit/error'; export interface ListStackResources { listStackResources(): Promise; diff --git a/packages/aws-cdk/lib/api/garbage-collection/garbage-collector.ts b/packages/aws-cdk/lib/api/garbage-collection/garbage-collector.ts index efc130703..cccb9c52d 100644 --- a/packages/aws-cdk/lib/api/garbage-collection/garbage-collector.ts +++ b/packages/aws-cdk/lib/api/garbage-collection/garbage-collector.ts @@ -7,9 +7,9 @@ import type { IECRClient, IS3Client, SDK, SdkProvider } from '../aws-auth'; import { DEFAULT_TOOLKIT_STACK_NAME, ToolkitInfo } from '../toolkit-info'; import { ProgressPrinter } from './progress-printer'; import { ActiveAssetCache, BackgroundStackRefresh, refreshStacks } from './stack-refresh'; +import { ToolkitError } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import type { IoHelper } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private'; import { debug, info } from '../../cli/messages'; -import { ToolkitError } from '../../toolkit/error'; import { Mode } from '../plugin/mode'; // Must use a require() otherwise esbuild complains diff --git a/packages/aws-cdk/lib/api/garbage-collection/progress-printer.ts b/packages/aws-cdk/lib/api/garbage-collection/progress-printer.ts index 55faab525..978f5d89d 100644 --- a/packages/aws-cdk/lib/api/garbage-collection/progress-printer.ts +++ b/packages/aws-cdk/lib/api/garbage-collection/progress-printer.ts @@ -1,8 +1,8 @@ import * as chalk from 'chalk'; import type { GcAsset as GCAsset } from './garbage-collector'; +import { ToolkitError } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import type { IoHelper } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private'; import { info } from '../../cli/messages'; -import { ToolkitError } from '../../toolkit/error'; export class ProgressPrinter { private ioHelper: IoHelper; diff --git a/packages/aws-cdk/lib/api/garbage-collection/stack-refresh.ts b/packages/aws-cdk/lib/api/garbage-collection/stack-refresh.ts index ead2f55b2..3b4330688 100644 --- a/packages/aws-cdk/lib/api/garbage-collection/stack-refresh.ts +++ b/packages/aws-cdk/lib/api/garbage-collection/stack-refresh.ts @@ -1,7 +1,7 @@ import type { ParameterDeclaration } from '@aws-sdk/client-cloudformation'; +import { ToolkitError } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import type { IoHelper } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private'; import { debug } from '../../cli/messages'; -import { ToolkitError } from '../../toolkit/error'; import type { ICloudFormationClient } from '../aws-auth'; export class ActiveAssetCache { diff --git a/packages/aws-cdk/lib/api/hotswap/appsync-mapping-templates.ts b/packages/aws-cdk/lib/api/hotswap/appsync-mapping-templates.ts index 9c8ef74cf..7e1d8cfac 100644 --- a/packages/aws-cdk/lib/api/hotswap/appsync-mapping-templates.ts +++ b/packages/aws-cdk/lib/api/hotswap/appsync-mapping-templates.ts @@ -6,8 +6,8 @@ import { type HotswapChange, classifyChanges, } from './common'; +import { ToolkitError } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import type { ResourceChange } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/payloads/hotswap'; -import { ToolkitError } from '../../toolkit/error'; import { lowerCaseFirstCharacter, transformObjectKeys } from '../../util'; import type { SDK } from '../aws-auth'; diff --git a/packages/aws-cdk/lib/api/hotswap/common.ts b/packages/aws-cdk/lib/api/hotswap/common.ts index bccc23dc8..c668d0b14 100644 --- a/packages/aws-cdk/lib/api/hotswap/common.ts +++ b/packages/aws-cdk/lib/api/hotswap/common.ts @@ -1,7 +1,7 @@ import type { PropertyDifference } from '@aws-cdk/cloudformation-diff'; +import { ToolkitError } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import type { HotswappableChange, NonHotswappableChange, ResourceChange } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/payloads/hotswap'; import { NonHotswappableReason } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/payloads/hotswap'; -import { ToolkitError } from '../../toolkit/error'; import type { SDK } from '../aws-auth'; export const ICON = '✨'; diff --git a/packages/aws-cdk/lib/api/hotswap/lambda-functions.ts b/packages/aws-cdk/lib/api/hotswap/lambda-functions.ts index 0cbec1906..d2ac13514 100644 --- a/packages/aws-cdk/lib/api/hotswap/lambda-functions.ts +++ b/packages/aws-cdk/lib/api/hotswap/lambda-functions.ts @@ -3,8 +3,8 @@ import type { PropertyDifference } from '@aws-cdk/cloudformation-diff'; import type { FunctionConfiguration, UpdateFunctionConfigurationCommandInput } from '@aws-sdk/client-lambda'; import type { HotswapChange } from './common'; import { classifyChanges } from './common'; +import { ToolkitError } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import type { AffectedResource, ResourceChange } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/payloads/hotswap'; -import { ToolkitError } from '../../toolkit/error'; import { flatMap } from '../../util'; import type { ILambdaClient, SDK } from '../aws-auth'; import { CfnEvaluationException, type EvaluateCloudFormationTemplate } from '../evaluate-cloudformation-template'; diff --git a/packages/aws-cdk/lib/api/plugin/plugin.ts b/packages/aws-cdk/lib/api/plugin/plugin.ts index e18cf77a9..5e2f241a4 100644 --- a/packages/aws-cdk/lib/api/plugin/plugin.ts +++ b/packages/aws-cdk/lib/api/plugin/plugin.ts @@ -3,8 +3,8 @@ import type { CredentialProviderSource, IPluginHost, Plugin } from '@aws-cdk/cli import * as chalk from 'chalk'; import { type ContextProviderPlugin, isContextProviderPlugin } from './context-provider-plugin'; +import { ToolkitError } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import { error } from '../../logging'; -import { ToolkitError } from '../../toolkit/error'; export let TESTING = false; diff --git a/packages/aws-cdk/lib/api/resource-import/importer.ts b/packages/aws-cdk/lib/api/resource-import/importer.ts index a9ed91313..c345f7d4c 100644 --- a/packages/aws-cdk/lib/api/resource-import/importer.ts +++ b/packages/aws-cdk/lib/api/resource-import/importer.ts @@ -5,9 +5,9 @@ import type * as cxapi from '@aws-cdk/cx-api'; import * as chalk from 'chalk'; import * as fs from 'fs-extra'; import * as promptly from 'promptly'; +import { ToolkitError } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import type { IoHelper } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private'; import { error, info, warn } from '../../cli/messages'; -import { ToolkitError } from '../../toolkit/error'; import type { DeploymentMethod, ResourceIdentifierProperties, ResourcesToImport, Deployments } from '../deployments'; import { assertIsSuccessfulDeployStackResult } from '../deployments'; import type { Tag } from '../tags'; diff --git a/packages/aws-cdk/lib/api/settings.ts b/packages/aws-cdk/lib/api/settings.ts index c00550ab4..4f0734d35 100644 --- a/packages/aws-cdk/lib/api/settings.ts +++ b/packages/aws-cdk/lib/api/settings.ts @@ -1,8 +1,8 @@ import * as os from 'os'; import * as fs_path from 'path'; import * as fs from 'fs-extra'; +import { ToolkitError } from '../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import { warning } from '../logging'; -import { ToolkitError } from '../toolkit/error'; import * as util from '../util'; export type SettingsMap = { [key: string]: any }; diff --git a/packages/aws-cdk/lib/api/toolkit-info.ts b/packages/aws-cdk/lib/api/toolkit-info.ts index 648129ea0..2d65d7a8c 100644 --- a/packages/aws-cdk/lib/api/toolkit-info.ts +++ b/packages/aws-cdk/lib/api/toolkit-info.ts @@ -11,9 +11,9 @@ import { REPOSITORY_NAME_OUTPUT, } from './bootstrap/bootstrap-props'; import { type CloudFormationStack, stabilizeStack } from './deployments/cloudformation'; +import { ToolkitError } from '../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import type { IoHelper } from '../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private'; import { debug } from '../cli/messages'; -import { ToolkitError } from '../toolkit/error'; export const DEFAULT_TOOLKIT_STACK_NAME = 'CDKToolkit'; diff --git a/packages/aws-cdk/lib/api/util/rwlock.ts b/packages/aws-cdk/lib/api/util/rwlock.ts index 219680c29..fdb1d2e2d 100644 --- a/packages/aws-cdk/lib/api/util/rwlock.ts +++ b/packages/aws-cdk/lib/api/util/rwlock.ts @@ -1,6 +1,6 @@ import { promises as fs } from 'fs'; import * as path from 'path'; -import { ToolkitError } from '../../toolkit/error'; +import { ToolkitError } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api'; /** * A single-writer/multi-reader lock on a directory diff --git a/packages/aws-cdk/lib/api/util/template-body-parameter.ts b/packages/aws-cdk/lib/api/util/template-body-parameter.ts index 2f5658ae2..1f307d133 100644 --- a/packages/aws-cdk/lib/api/util/template-body-parameter.ts +++ b/packages/aws-cdk/lib/api/util/template-body-parameter.ts @@ -4,8 +4,8 @@ import { HeadObjectCommand, S3Client } from '@aws-sdk/client-s3'; import { getEndpointFromInstructions } from '@smithy/middleware-endpoint'; import * as chalk from 'chalk'; import * as fs from 'fs-extra'; +import { ToolkitError } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import { debug, error } from '../../logging'; -import { ToolkitError } from '../../toolkit/error'; import { contentHash, toYAML } from '../../util'; import { type AssetManifestBuilder } from '../deployments'; import type { EnvironmentResources } from '../environment'; diff --git a/packages/aws-cdk/lib/api/work-graph/work-graph-builder.ts b/packages/aws-cdk/lib/api/work-graph/work-graph-builder.ts index f714e11d5..a2c87781e 100644 --- a/packages/aws-cdk/lib/api/work-graph/work-graph-builder.ts +++ b/packages/aws-cdk/lib/api/work-graph/work-graph-builder.ts @@ -3,8 +3,8 @@ import { AssetManifest, type IManifestEntry } from 'cdk-assets'; import { WorkGraph } from './work-graph'; import type { AssetBuildNode, WorkNode } from './work-graph-types'; import { DeploymentState } from './work-graph-types'; +import { ToolkitError } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import type { IoHelper } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private'; -import { ToolkitError } from '../../toolkit/error'; import { contentHashAny } from '../../util'; export class WorkGraphBuilder { diff --git a/packages/aws-cdk/lib/api/work-graph/work-graph.ts b/packages/aws-cdk/lib/api/work-graph/work-graph.ts index 450435789..7c0991a81 100644 --- a/packages/aws-cdk/lib/api/work-graph/work-graph.ts +++ b/packages/aws-cdk/lib/api/work-graph/work-graph.ts @@ -1,8 +1,8 @@ import type { WorkNode, StackNode, AssetBuildNode, AssetPublishNode } from './work-graph-types'; import { DeploymentState } from './work-graph-types'; +import { ToolkitError } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import type { IoHelper } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private'; import { debug, trace } from '../../cli/messages'; -import { ToolkitError } from '../../toolkit/error'; import { parallelPromises } from '../../util'; export type Concurrency = number | Record; diff --git a/packages/aws-cdk/lib/cli/activity-printer/base.ts b/packages/aws-cdk/lib/cli/activity-printer/base.ts index b5f9f0bf7..ce9e9b432 100644 --- a/packages/aws-cdk/lib/cli/activity-printer/base.ts +++ b/packages/aws-cdk/lib/cli/activity-printer/base.ts @@ -1,8 +1,8 @@ import type { CloudFormationStackArtifact } from '@aws-cdk/cx-api'; -import { type StackActivity, type StackProgress } from '@aws-cdk/tmp-toolkit-helpers'; +import { type StackActivity, type StackProgress } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import { IO } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private'; -import type { IoMessage } from '../../toolkit/cli-io-host'; import { maxResourceTypeLength, stackEventHasErrorMessage } from '../../util'; +import type { IoMessage } from '../io-host/cli-io-host'; export interface IActivityPrinter { notify(msg: IoMessage): void; diff --git a/packages/aws-cdk/lib/cli/cdk-toolkit.ts b/packages/aws-cdk/lib/cli/cdk-toolkit.ts index ba797c62c..6b116e219 100644 --- a/packages/aws-cdk/lib/cli/cdk-toolkit.ts +++ b/packages/aws-cdk/lib/cli/cdk-toolkit.ts @@ -8,6 +8,7 @@ import * as promptly from 'promptly'; import * as uuid from 'uuid'; import type { Configuration } from './user-configuration'; import { PROJECT_CONFIG } from './user-configuration'; +import { ToolkitError } from '../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import { asIoHelper } from '../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private'; import { DEFAULT_TOOLKIT_STACK_NAME } from '../api'; import type { SdkProvider } from '../api/aws-auth'; @@ -35,6 +36,8 @@ import { tagsForStack, type Tag } from '../api/tags'; import type { AssetBuildNode, AssetPublishNode, Concurrency, StackNode, WorkGraph } from '../api/work-graph'; import { WorkGraphBuilder } from '../api/work-graph/work-graph-builder'; import { StackActivityProgress } from '../commands/deploy'; +import { printSecurityDiff, printStackDiff, RequireApproval } from '../commands/diff'; +import { listStacks } from '../commands/list-stacks'; import type { FromScan, GenerateTemplateOutput, @@ -55,11 +58,8 @@ import { isThereAWarning, buildCfnClient, } from '../commands/migrate'; -import { printSecurityDiff, printStackDiff, RequireApproval } from '../diff'; -import { listStacks } from '../list-stacks'; import { result as logResult, debug, error, highlight, info, success, warning } from '../logging'; -import { CliIoHost } from '../toolkit/cli-io-host'; -import { ToolkitError } from '../toolkit/error'; +import { CliIoHost } from './io-host'; import { numberFromBool, partition, validateSnsTopicArn, formatErrorMessage, deserializeStructure, obscureTemplate, serializeStructure, formatTime } from '../util'; // Must use a require() otherwise esbuild complains about calling a namespace diff --git a/packages/aws-cdk/lib/cli/cli-config.ts b/packages/aws-cdk/lib/cli/cli-config.ts index f8c74beb3..55f1819e4 100644 --- a/packages/aws-cdk/lib/cli/cli-config.ts +++ b/packages/aws-cdk/lib/cli/cli-config.ts @@ -2,8 +2,8 @@ import { CliHelpers, type CliConfig } from '@aws-cdk/user-input-gen'; import * as cdk_from_cfn from 'cdk-from-cfn'; import { StackActivityProgress } from '../commands/deploy'; -import { RequireApproval } from '../diff'; -import { availableInitLanguages } from '../init'; +import { RequireApproval } from '../commands/diff'; +import { availableInitLanguages } from '../commands/init'; export const YARGS_HELPERS = new CliHelpers('./util/yargs-helpers'); diff --git a/packages/aws-cdk/lib/cli/cli.ts b/packages/aws-cdk/lib/cli/cli.ts index 4bea45abb..d0a8c0ef7 100644 --- a/packages/aws-cdk/lib/cli/cli.ts +++ b/packages/aws-cdk/lib/cli/cli.ts @@ -2,10 +2,14 @@ import * as cxapi from '@aws-cdk/cx-api'; import * as chalk from 'chalk'; import { CdkToolkit, AssetBuildTime } from './cdk-toolkit'; import { ciSystemIsStdErrSafe } from './ci-systems'; +import type { IoMessageLevel } from './io-host'; +import { CliIoHost } from './io-host'; import { parseCommandLineArguments } from './parse-command-line-arguments'; import { checkForPlatformWarnings } from './platform-warnings'; - +import type { Command } from './user-configuration'; +import { Configuration } from './user-configuration'; import * as version from './version'; +import { ToolkitError } from '../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import { asIoHelper } from '../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private'; import { SdkProvider } from '../api/aws-auth'; import { SdkToCliLogger } from '../api/aws-auth/sdk-logger'; @@ -26,16 +30,10 @@ import type { ILock } from '../api/util/rwlock'; import { contextHandler as context } from '../commands/context'; import { docs } from '../commands/docs'; import { doctor } from '../commands/doctor'; +import { cliInit, printAvailableTemplates } from '../commands/init'; import { getMigrateScanType } from '../commands/migrate'; -import { cliInit, printAvailableTemplates } from '../init'; import { result, debug, error, info } from '../logging'; import { Notices } from '../notices'; -import type { Command } from './user-configuration'; -import { Configuration } from './user-configuration'; -import type { IoMessageLevel } from '../toolkit/cli-io-host'; -import { CliIoHost } from '../toolkit/cli-io-host'; -import { ToolkitError } from '../toolkit/error'; - /* eslint-disable max-len */ /* eslint-disable @typescript-eslint/no-shadow */ // yargs diff --git a/packages/aws-cdk/lib/toolkit/cli-io-host.ts b/packages/aws-cdk/lib/cli/io-host/cli-io-host.ts similarity index 97% rename from packages/aws-cdk/lib/toolkit/cli-io-host.ts rename to packages/aws-cdk/lib/cli/io-host/cli-io-host.ts index 7e50643e7..007c627f7 100644 --- a/packages/aws-cdk/lib/toolkit/cli-io-host.ts +++ b/packages/aws-cdk/lib/cli/io-host/cli-io-host.ts @@ -2,12 +2,12 @@ import * as util from 'node:util'; import { RequireApproval } from '@aws-cdk/cloud-assembly-schema'; import * as chalk from 'chalk'; import * as promptly from 'promptly'; -import { ToolkitError } from './error'; -import { type IIoHost, type IoMessage, type IoMessageCode, type IoMessageLevel, type IoRequest, type ToolkitAction } from '../../../@aws-cdk/tmp-toolkit-helpers/src/api/io'; -import { IO, isMessageRelevantForLevel } from '../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private'; -import type { ActivityPrinterProps, IActivityPrinter } from '../cli/activity-printer'; -import { CurrentActivityPrinter, HistoryActivityPrinter } from '../cli/activity-printer'; -import { StackActivityProgress } from '../commands/deploy'; +import { ToolkitError } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api'; +import type { IIoHost, IoMessage, IoMessageCode, IoMessageLevel, IoRequest, ToolkitAction } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api'; +import { IO, isMessageRelevantForLevel } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private'; +import { StackActivityProgress } from '../../commands/deploy'; +import { CurrentActivityPrinter, HistoryActivityPrinter } from '../activity-printer'; +import type { ActivityPrinterProps, IActivityPrinter } from '../activity-printer'; export type { IIoHost, IoMessage, IoMessageCode, IoMessageLevel, IoRequest }; diff --git a/packages/aws-cdk/lib/cli/io-host/index.ts b/packages/aws-cdk/lib/cli/io-host/index.ts new file mode 100644 index 000000000..059bd2f4c --- /dev/null +++ b/packages/aws-cdk/lib/cli/io-host/index.ts @@ -0,0 +1 @@ +export * from './cli-io-host'; diff --git a/packages/aws-cdk/lib/cli/messages.ts b/packages/aws-cdk/lib/cli/messages.ts index 933747edb..eca29d3ab 100644 --- a/packages/aws-cdk/lib/cli/messages.ts +++ b/packages/aws-cdk/lib/cli/messages.ts @@ -2,9 +2,9 @@ // The CLI cannot depend on the toolkit yet, because the toolkit currently depends on the CLI. // Once we have complete the repo split, we will create a temporary, private library package // for all code that is shared between CLI and toolkit. This is where this file will then live. +import type { IoMessageCode, IoMessageLevel } from './io-host'; import type { ActionLessMessage } from '../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private'; import type { IoMessageCodeCategory } from '../logging'; -import type { IoMessageCode, IoMessageLevel } from '../toolkit/cli-io-host'; type Optional = Pick, K> & Omit; type SimplifiedMessage = Omit, 'time'>; diff --git a/packages/aws-cdk/lib/cli/root-dir.ts b/packages/aws-cdk/lib/cli/root-dir.ts index c522ff956..7b58df3cc 100644 --- a/packages/aws-cdk/lib/cli/root-dir.ts +++ b/packages/aws-cdk/lib/cli/root-dir.ts @@ -1,6 +1,6 @@ import * as fs from 'fs'; import * as path from 'path'; -import { ToolkitError } from '../toolkit/error'; +import { ToolkitError } from '../../../@aws-cdk/tmp-toolkit-helpers/src/api'; /** * From the current file, find the directory that contains the CLI's package.json diff --git a/packages/aws-cdk/lib/cli/user-configuration.ts b/packages/aws-cdk/lib/cli/user-configuration.ts index bbc2d7d84..e11577252 100644 --- a/packages/aws-cdk/lib/cli/user-configuration.ts +++ b/packages/aws-cdk/lib/cli/user-configuration.ts @@ -1,8 +1,8 @@ +import { ToolkitError } from '../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import { Context, PROJECT_CONTEXT } from '../api/context'; import { Settings } from '../api/settings'; import type { Tag } from '../api/tags'; import { debug, warning } from '../logging'; -import { ToolkitError } from '../toolkit/error'; export const PROJECT_CONFIG = 'cdk.json'; export { PROJECT_CONTEXT } from '../api/context'; diff --git a/packages/aws-cdk/lib/cli/util/npm.ts b/packages/aws-cdk/lib/cli/util/npm.ts index 6bda584e8..b4bd194d4 100644 --- a/packages/aws-cdk/lib/cli/util/npm.ts +++ b/packages/aws-cdk/lib/cli/util/npm.ts @@ -1,8 +1,8 @@ import { exec as _exec } from 'child_process'; import { promisify } from 'util'; import * as semver from 'semver'; +import { ToolkitError } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import { debug } from '../../logging'; -import { ToolkitError } from '../../toolkit/error'; const exec = promisify(_exec); diff --git a/packages/aws-cdk/lib/cli/util/yargs-helpers.ts b/packages/aws-cdk/lib/cli/util/yargs-helpers.ts index 23f7c9fee..67c3108cc 100644 --- a/packages/aws-cdk/lib/cli/util/yargs-helpers.ts +++ b/packages/aws-cdk/lib/cli/util/yargs-helpers.ts @@ -1,6 +1,6 @@ import * as version from '../version'; -export { isCI } from '../../toolkit/cli-io-host'; +export { isCI } from '../io-host'; /** * yargs middleware to negate an option if a negative alias is provided diff --git a/packages/aws-cdk/lib/cli/version.ts b/packages/aws-cdk/lib/cli/version.ts index b6c58c861..656fb9ae6 100644 --- a/packages/aws-cdk/lib/cli/version.ts +++ b/packages/aws-cdk/lib/cli/version.ts @@ -3,8 +3,8 @@ import * as path from 'path'; import * as chalk from 'chalk'; import * as fs from 'fs-extra'; import * as semver from 'semver'; +import { ToolkitError } from '../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import { debug, info } from '../logging'; -import { ToolkitError } from '../toolkit/error'; import { cdkCacheDir } from '../util'; import { cliRootDir } from './root-dir'; import { formatAsBanner } from './util/console-formatters'; diff --git a/packages/aws-cdk/lib/commands/context.ts b/packages/aws-cdk/lib/commands/context.ts index f960ec0d8..1d40ad9d5 100644 --- a/packages/aws-cdk/lib/commands/context.ts +++ b/packages/aws-cdk/lib/commands/context.ts @@ -1,11 +1,11 @@ import * as chalk from 'chalk'; import { minimatch } from 'minimatch'; +import { ToolkitError } from '../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import type { Context } from '../api/context'; import { renderTable } from '../cli/tables'; import { PROJECT_CONFIG, PROJECT_CONTEXT, USER_DEFAULTS } from '../cli/user-configuration'; import * as version from '../cli/version'; import { error, warning, info, result } from '../logging'; -import { ToolkitError } from '../toolkit/error'; /** * Options for the context command diff --git a/packages/aws-cdk/lib/diff.ts b/packages/aws-cdk/lib/commands/diff.ts similarity index 97% rename from packages/aws-cdk/lib/diff.ts rename to packages/aws-cdk/lib/commands/diff.ts index 74a2cd041..8f5b04c92 100644 --- a/packages/aws-cdk/lib/diff.ts +++ b/packages/aws-cdk/lib/commands/diff.ts @@ -11,9 +11,9 @@ import { } from '@aws-cdk/cloudformation-diff'; import type * as cxapi from '@aws-cdk/cx-api'; import * as chalk from 'chalk'; -import { type NestedStackTemplates } from './api/deployments'; -import { info, warning } from './logging'; -import { ToolkitError } from './toolkit/error'; +import { ToolkitError } from '../../../@aws-cdk/tmp-toolkit-helpers/src/api'; +import { type NestedStackTemplates } from '../api/deployments'; +import { info, warning } from '../logging'; /** * Pretty-prints the differences between two template states to the console. diff --git a/packages/aws-cdk/lib/commands/init/index.ts b/packages/aws-cdk/lib/commands/init/index.ts new file mode 100644 index 000000000..094199629 --- /dev/null +++ b/packages/aws-cdk/lib/commands/init/index.ts @@ -0,0 +1 @@ +export * from './init'; diff --git a/packages/aws-cdk/lib/init-hooks.ts b/packages/aws-cdk/lib/commands/init/init-hooks.ts similarity index 95% rename from packages/aws-cdk/lib/init-hooks.ts rename to packages/aws-cdk/lib/commands/init/init-hooks.ts index fc3cc27f4..5668be299 100644 --- a/packages/aws-cdk/lib/init-hooks.ts +++ b/packages/aws-cdk/lib/commands/init/init-hooks.ts @@ -1,7 +1,7 @@ import * as path from 'path'; import { shell } from './os'; -import { ToolkitError } from './toolkit/error'; -import { formatErrorMessage } from './util'; +import { ToolkitError } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api'; +import { formatErrorMessage } from '../../util'; export type SubstitutePlaceholders = (...fileNames: string[]) => Promise; diff --git a/packages/aws-cdk/lib/init.ts b/packages/aws-cdk/lib/commands/init/init.ts similarity index 97% rename from packages/aws-cdk/lib/init.ts rename to packages/aws-cdk/lib/commands/init/init.ts index 5e11debc0..7da8915ff 100644 --- a/packages/aws-cdk/lib/init.ts +++ b/packages/aws-cdk/lib/commands/init/init.ts @@ -2,12 +2,12 @@ import * as childProcess from 'child_process'; import * as path from 'path'; import * as chalk from 'chalk'; import * as fs from 'fs-extra'; -import { cliRootDir } from './cli/root-dir'; -import { versionNumber } from './cli/version'; import { invokeBuiltinHooks } from './init-hooks'; -import { error, info, warning } from './logging'; -import { ToolkitError } from './toolkit/error'; -import { cdkHomeDir, formatErrorMessage, rangeFromSemver } from './util'; +import { ToolkitError } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api'; +import { cliRootDir } from '../../cli/root-dir'; +import { versionNumber } from '../../cli/version'; +import { error, info, warning } from '../../logging'; +import { cdkHomeDir, formatErrorMessage, rangeFromSemver } from '../../util'; /* eslint-disable @typescript-eslint/no-var-requires */ // Packages don't have @types module // eslint-disable-next-line @typescript-eslint/no-require-imports @@ -500,7 +500,7 @@ interface Versions { * This has been built into the CLI at build time. */ async function loadInitVersions(): Promise { - const initVersionFile = path.join(__dirname, './init-templates/.init-version.json'); + const initVersionFile = path.join(cliRootDir(), 'lib', 'init-templates', '.init-version.json'); const contents = JSON.parse(await fs.readFile(initVersionFile, { encoding: 'utf-8' })); const ret = { @@ -524,6 +524,6 @@ async function loadInitVersions(): Promise { * These have been built into the CLI at build time. */ export async function currentlyRecommendedAwsCdkLibFlags() { - const recommendedFlagsFile = path.join(__dirname, './init-templates/.recommended-feature-flags.json'); + const recommendedFlagsFile = path.join(cliRootDir(), 'lib', 'init-templates', '.recommended-feature-flags.json'); return JSON.parse(await fs.readFile(recommendedFlagsFile, { encoding: 'utf-8' })); } diff --git a/packages/aws-cdk/lib/os.ts b/packages/aws-cdk/lib/commands/init/os.ts similarity index 95% rename from packages/aws-cdk/lib/os.ts rename to packages/aws-cdk/lib/commands/init/os.ts index 660a83a6b..b73fa20aa 100644 --- a/packages/aws-cdk/lib/os.ts +++ b/packages/aws-cdk/lib/commands/init/os.ts @@ -1,7 +1,7 @@ import * as child_process from 'child_process'; import * as chalk from 'chalk'; -import { debug } from './logging'; -import { ToolkitError } from './toolkit/error'; +import { ToolkitError } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api'; +import { debug } from '../../logging'; /** * OS helpers diff --git a/packages/aws-cdk/lib/list-stacks.ts b/packages/aws-cdk/lib/commands/list-stacks.ts similarity index 84% rename from packages/aws-cdk/lib/list-stacks.ts rename to packages/aws-cdk/lib/commands/list-stacks.ts index 0f0ef774e..a3400f10f 100644 --- a/packages/aws-cdk/lib/list-stacks.ts +++ b/packages/aws-cdk/lib/commands/list-stacks.ts @@ -1,6 +1,6 @@ import type { StackDetails } from '@aws-cdk/tmp-toolkit-helpers'; -import { DefaultSelection, ExtendedStackSelection } from './api/cxapp/cloud-assembly'; -import type { CdkToolkit } from './cli/cdk-toolkit'; +import { DefaultSelection, ExtendedStackSelection } from '../api/cxapp/cloud-assembly'; +import type { CdkToolkit } from '../cli/cdk-toolkit'; /** * Options for List Stacks diff --git a/packages/aws-cdk/lib/commands/migrate.ts b/packages/aws-cdk/lib/commands/migrate.ts index 7c26cbf0e..519f12609 100644 --- a/packages/aws-cdk/lib/commands/migrate.ts +++ b/packages/aws-cdk/lib/commands/migrate.ts @@ -19,11 +19,11 @@ import type { } from '@aws-sdk/client-cloudformation'; import * as cdk_from_cfn from 'cdk-from-cfn'; import * as chalk from 'chalk'; -import { cliInit } from '../../lib/init'; +import { cliInit } from './init'; +import { ToolkitError } from '../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import { info } from '../../lib/logging'; import type { ICloudFormationClient, SdkProvider } from '../api/aws-auth'; import { CloudFormationStack } from '../api/deployments'; -import { ToolkitError } from '../toolkit/error'; import { zipDirectory } from '../util'; const camelCase = require('camelcase'); const decamelize = require('decamelize'); diff --git a/packages/aws-cdk/lib/context-providers/ami.ts b/packages/aws-cdk/lib/context-providers/ami.ts index af4986602..559b16b57 100644 --- a/packages/aws-cdk/lib/context-providers/ami.ts +++ b/packages/aws-cdk/lib/context-providers/ami.ts @@ -1,8 +1,8 @@ import type { AmiContextQuery } from '@aws-cdk/cloud-assembly-schema'; +import { ContextProviderError } from '../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import { type SdkProvider, initContextProviderSdk } from '../api/aws-auth/sdk-provider'; import type { ContextProviderPlugin } from '../api/plugin'; import { debug, info } from '../logging'; -import { ContextProviderError } from '../toolkit/error'; /** * Plugin to search AMIs for the current account diff --git a/packages/aws-cdk/lib/context-providers/cc-api-provider.ts b/packages/aws-cdk/lib/context-providers/cc-api-provider.ts index c02532fd6..bd26a6ee5 100644 --- a/packages/aws-cdk/lib/context-providers/cc-api-provider.ts +++ b/packages/aws-cdk/lib/context-providers/cc-api-provider.ts @@ -1,8 +1,8 @@ import type { CcApiContextQuery } from '@aws-cdk/cloud-assembly-schema'; +import { ContextProviderError } from '../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import type { ICloudControlClient } from '../api'; import { type SdkProvider, initContextProviderSdk } from '../api/aws-auth/sdk-provider'; import type { ContextProviderPlugin } from '../api/plugin'; -import { ContextProviderError } from '../toolkit/error'; import { findJsonValue, getResultObj } from '../util'; export class CcApiContextProviderPlugin implements ContextProviderPlugin { diff --git a/packages/aws-cdk/lib/context-providers/hosted-zones.ts b/packages/aws-cdk/lib/context-providers/hosted-zones.ts index 9c24ac664..604556ce1 100644 --- a/packages/aws-cdk/lib/context-providers/hosted-zones.ts +++ b/packages/aws-cdk/lib/context-providers/hosted-zones.ts @@ -1,10 +1,10 @@ import type { HostedZoneContextQuery } from '@aws-cdk/cloud-assembly-schema'; import type { HostedZone } from '@aws-sdk/client-route-53'; +import { ContextProviderError } from '../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import type { IRoute53Client } from '../api'; import { type SdkProvider, initContextProviderSdk } from '../api/aws-auth/sdk-provider'; import type { ContextProviderPlugin } from '../api/plugin'; import { debug } from '../logging'; -import { ContextProviderError } from '../toolkit/error'; export class HostedZoneContextProviderPlugin implements ContextProviderPlugin { constructor(private readonly aws: SdkProvider) { diff --git a/packages/aws-cdk/lib/context-providers/index.ts b/packages/aws-cdk/lib/context-providers/index.ts index 51221209a..53f2857d6 100644 --- a/packages/aws-cdk/lib/context-providers/index.ts +++ b/packages/aws-cdk/lib/context-providers/index.ts @@ -10,6 +10,7 @@ import { LoadBalancerContextProviderPlugin, LoadBalancerListenerContextProviderP import { SecurityGroupContextProviderPlugin } from './security-groups'; import { SSMContextProviderPlugin } from './ssm-parameters'; import { VpcNetworkContextProviderPlugin } from './vpcs'; +import { ContextProviderError } from '../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import type { SdkProvider } from '../api'; import type { Context } from '../api/context'; import { TRANSIENT_CONTEXT_KEY } from '../api/context'; @@ -17,7 +18,6 @@ import { PluginHost } from '../api/plugin'; import type { ContextProviderPlugin } from '../api/plugin/context-provider-plugin'; import { replaceEnvPlaceholders } from '../api/util/placeholders'; import { debug } from '../logging'; -import { ContextProviderError } from '../toolkit/error'; import { formatErrorMessage } from '../util'; export type ContextProviderFactory = ((sdk: SdkProvider) => ContextProviderPlugin); diff --git a/packages/aws-cdk/lib/context-providers/keys.ts b/packages/aws-cdk/lib/context-providers/keys.ts index 152d79a7d..5ea0cda2a 100644 --- a/packages/aws-cdk/lib/context-providers/keys.ts +++ b/packages/aws-cdk/lib/context-providers/keys.ts @@ -1,11 +1,11 @@ import type { KeyContextQuery } from '@aws-cdk/cloud-assembly-schema'; import type { KeyContextResponse } from '@aws-cdk/cx-api'; import type { AliasListEntry, ListAliasesCommandOutput } from '@aws-sdk/client-kms'; +import { ContextProviderError } from '../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import type { IKMSClient } from '../api'; import { type SdkProvider, initContextProviderSdk } from '../api/aws-auth/sdk-provider'; import type { ContextProviderPlugin } from '../api/plugin'; import { debug } from '../logging'; -import { ContextProviderError } from '../toolkit/error'; export class KeyContextProviderPlugin implements ContextProviderPlugin { constructor(private readonly aws: SdkProvider) { diff --git a/packages/aws-cdk/lib/context-providers/load-balancers.ts b/packages/aws-cdk/lib/context-providers/load-balancers.ts index dcb2a9ded..f10cb99b7 100644 --- a/packages/aws-cdk/lib/context-providers/load-balancers.ts +++ b/packages/aws-cdk/lib/context-providers/load-balancers.ts @@ -7,10 +7,10 @@ import { LoadBalancerIpAddressType, } from '@aws-cdk/cx-api'; import type { LoadBalancer, Listener, TagDescription } from '@aws-sdk/client-elastic-load-balancing-v2'; +import { ContextProviderError } from '../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import type { IElasticLoadBalancingV2Client } from '../api'; import { type SdkProvider, initContextProviderSdk } from '../api/aws-auth/sdk-provider'; import type { ContextProviderPlugin } from '../api/plugin'; -import { ContextProviderError } from '../toolkit/error'; /** * Provides load balancer context information. diff --git a/packages/aws-cdk/lib/context-providers/security-groups.ts b/packages/aws-cdk/lib/context-providers/security-groups.ts index 451a3e21a..6168d3052 100644 --- a/packages/aws-cdk/lib/context-providers/security-groups.ts +++ b/packages/aws-cdk/lib/context-providers/security-groups.ts @@ -1,9 +1,9 @@ import type { SecurityGroupContextQuery } from '@aws-cdk/cloud-assembly-schema'; import type { SecurityGroupContextResponse } from '@aws-cdk/cx-api'; import type { Filter, SecurityGroup } from '@aws-sdk/client-ec2'; +import { ContextProviderError } from '../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import { type SdkProvider, initContextProviderSdk } from '../api/aws-auth/sdk-provider'; import type { ContextProviderPlugin } from '../api/plugin'; -import { ContextProviderError } from '../toolkit/error'; export class SecurityGroupContextProviderPlugin implements ContextProviderPlugin { constructor(private readonly aws: SdkProvider) { diff --git a/packages/aws-cdk/lib/context-providers/ssm-parameters.ts b/packages/aws-cdk/lib/context-providers/ssm-parameters.ts index 7571c085d..e3fd18ce0 100644 --- a/packages/aws-cdk/lib/context-providers/ssm-parameters.ts +++ b/packages/aws-cdk/lib/context-providers/ssm-parameters.ts @@ -1,9 +1,9 @@ import type { SSMParameterContextQuery } from '@aws-cdk/cloud-assembly-schema'; import type { GetParameterCommandOutput } from '@aws-sdk/client-ssm'; +import { ContextProviderError } from '../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import { type SdkProvider, initContextProviderSdk } from '../api/aws-auth/sdk-provider'; import type { ContextProviderPlugin } from '../api/plugin'; import { debug } from '../logging'; -import { ContextProviderError } from '../toolkit/error'; /** * Plugin to read arbitrary SSM parameter names diff --git a/packages/aws-cdk/lib/context-providers/vpcs.ts b/packages/aws-cdk/lib/context-providers/vpcs.ts index d3cb5f785..2dd7d312e 100644 --- a/packages/aws-cdk/lib/context-providers/vpcs.ts +++ b/packages/aws-cdk/lib/context-providers/vpcs.ts @@ -1,11 +1,11 @@ import type { VpcContextQuery } from '@aws-cdk/cloud-assembly-schema'; import { type VpcContextResponse, type VpcSubnetGroup, VpcSubnetGroupType } from '@aws-cdk/cx-api'; import type { Filter, RouteTable, Tag, Vpc } from '@aws-sdk/client-ec2'; +import { ContextProviderError } from '../../../@aws-cdk/tmp-toolkit-helpers/src/api'; import type { IEC2Client } from '../api'; import { type SdkProvider, initContextProviderSdk } from '../api/aws-auth/sdk-provider'; import type { ContextProviderPlugin } from '../api/plugin'; import { debug } from '../logging'; -import { ContextProviderError } from '../toolkit/error'; export class VpcNetworkContextProviderPlugin implements ContextProviderPlugin { constructor(private readonly aws: SdkProvider) { } diff --git a/packages/aws-cdk/lib/legacy-exports-source.ts b/packages/aws-cdk/lib/legacy-exports-source.ts index 029517409..1fa54ea72 100644 --- a/packages/aws-cdk/lib/legacy-exports-source.ts +++ b/packages/aws-cdk/lib/legacy-exports-source.ts @@ -15,14 +15,14 @@ export { Settings } from './api/settings'; export { Bootstrapper } from './api/bootstrap'; export { CloudExecutable } from './api/cxapp/cloud-executable'; export { execProgram } from './api/cxapp/exec'; -export { RequireApproval } from './diff'; +export { RequireApproval } from './commands/diff'; export { formatAsBanner } from './cli/util/console-formatters'; export { setSdkTracing as enableTracing } from './api/aws-auth/tracing'; export { aliases, command, describe } from './commands/docs'; export { Deployments } from './api/deployments'; export { cliRootDir as rootDir } from './cli/root-dir'; export { latestVersionIfHigher, versionNumber } from './cli/version'; -export { availableInitTemplates } from './init'; +export { availableInitTemplates } from './commands/init'; export { cached } from './api/aws-auth/cached'; export { CfnEvaluationException } from './api/evaluate-cloudformation-template'; export { CredentialPlugins } from './api/aws-auth/credential-plugins'; diff --git a/packages/aws-cdk/lib/logging.ts b/packages/aws-cdk/lib/logging.ts index 0e4260a15..f7dea2bc2 100644 --- a/packages/aws-cdk/lib/logging.ts +++ b/packages/aws-cdk/lib/logging.ts @@ -1,6 +1,6 @@ import * as chalk from 'chalk'; -import type { IoMessageLevel } from './toolkit/cli-io-host'; -import { CliIoHost } from './toolkit/cli-io-host'; +import type { IoMessageLevel } from './cli/io-host/cli-io-host'; +import { CliIoHost } from './cli/io-host/cli-io-host'; import { asIoHelper, IoDefaultMessages } from '../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private'; export type IoMessageCodeCategory = 'TOOLKIT' | 'SDK' | 'ASSETS'; diff --git a/packages/aws-cdk/lib/notices.ts b/packages/aws-cdk/lib/notices.ts index 67a223aac..d3d5df268 100644 --- a/packages/aws-cdk/lib/notices.ts +++ b/packages/aws-cdk/lib/notices.ts @@ -8,12 +8,12 @@ import * as semver from 'semver'; import type { SdkHttpOptions } from './api'; import { AwsCliCompatible } from './api/aws-auth/awscli-compatible'; import type { Context } from './api/context'; +import type { IIoHost } from './cli/io-host'; import { versionNumber } from './cli/version'; -import type { IIoHost } from './toolkit/cli-io-host'; -import { ToolkitError } from './toolkit/error'; import type { ConstructTreeNode } from './tree'; import { loadTreeFromDir } from './tree'; import { cdkCacheDir, formatErrorMessage } from './util'; +import { ToolkitError } from '../../@aws-cdk/tmp-toolkit-helpers/src/api'; import { IO, asIoHelper, IoDefaultMessages } from '../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private'; const CACHE_FILE_PATH = path.join(cdkCacheDir(), 'notices.json'); diff --git a/packages/aws-cdk/lib/toolkit/error.ts b/packages/aws-cdk/lib/toolkit/error.ts deleted file mode 100644 index dc2d7cc23..000000000 --- a/packages/aws-cdk/lib/toolkit/error.ts +++ /dev/null @@ -1 +0,0 @@ -export * from '../../../@aws-cdk/tmp-toolkit-helpers/src/api/toolkit-error'; diff --git a/packages/aws-cdk/test/_helpers/as-mock.ts b/packages/aws-cdk/test/_helpers/as-mock.ts new file mode 100644 index 000000000..5a369f585 --- /dev/null +++ b/packages/aws-cdk/test/_helpers/as-mock.ts @@ -0,0 +1,48 @@ +/** + * Return a mocked instance of a class, given its constructor + * + * I don't understand why jest doesn't provide this by default, + * but there you go. + * + * FIXME: Currently very limited. Doesn't support inheritance, getters or + * automatic detection of properties (as those exist on instances, not + * classes). + */ +export function instanceMockFrom(ctr: new (...args: any[]) => A): jest.Mocked { + const ret: any = {}; + for (const methodName of Object.getOwnPropertyNames(ctr.prototype)) { + ret[methodName] = jest.fn(); + } + return ret; +} + +export function withMocked( + obj: A, + key: K, + block: (fn: jest.Mocked[K]) => B, +): B { + const original = obj[key]; + const mockFn = jest.fn(); + (obj as any)[key] = mockFn; + + let asyncFinally: boolean = false; + try { + const ret = block(mockFn as any); + if (!isPromise(ret)) { + return ret; + } + + asyncFinally = true; + return ret.finally(() => { + obj[key] = original; + }) as any; + } finally { + if (!asyncFinally) { + obj[key] = original; + } + } +} + +function isPromise(object: any): object is Promise { + return Promise.resolve(object) === object; +} diff --git a/packages/aws-cdk/test/util.ts b/packages/aws-cdk/test/_helpers/assembly.ts similarity index 78% rename from packages/aws-cdk/test/util.ts rename to packages/aws-cdk/test/_helpers/assembly.ts index 3b23cdaa4..626afffa5 100644 --- a/packages/aws-cdk/test/util.ts +++ b/packages/aws-cdk/test/_helpers/assembly.ts @@ -2,10 +2,10 @@ import * as fs from 'fs'; import * as path from 'path'; import { ArtifactMetadataEntryType, ArtifactType, type AssetManifest, type AssetMetadataEntry, type AwsCloudFormationStackProperties, type MetadataEntry, type MissingContext } from '@aws-cdk/cloud-assembly-schema'; import { type CloudAssembly, CloudAssemblyBuilder, type CloudFormationStackArtifact, type StackMetadata } from '@aws-cdk/cx-api'; -import { cxapiAssemblyWithForcedVersion } from './api/cxapp/assembly-versions'; -import { MockSdkProvider } from './util/mock-sdk'; -import { CloudExecutable } from '../lib/api/cxapp/cloud-executable'; -import { Configuration } from '../lib/cli/user-configuration'; +import { cxapiAssemblyWithForcedVersion } from '../api/cxapp/assembly-versions'; +import { MockSdkProvider } from '../util/mock-sdk'; +import { CloudExecutable } from '../../lib/api/cxapp/cloud-executable'; +import { Configuration } from '../../lib/cli/user-configuration'; export const DEFAULT_FAKE_TEMPLATE = { No: 'Resources' }; @@ -114,7 +114,7 @@ function addNestedStacks(templatePath: string, outdir: string, rootStackTemplate if (!template) { const templatePathWithDir = path.join('nested-stack-templates', templatePath); - template = JSON.parse(fs.readFileSync(path.join(__dirname, templatePathWithDir)).toString()); + template = JSON.parse(fs.readFileSync(path.join(__dirname, '..', templatePathWithDir)).toString()); fs.writeFileSync(path.join(outdir, templatePath), JSON.stringify(template, undefined, 2)); } @@ -174,56 +174,3 @@ export function testStack(stack: TestStackArtifact): CloudFormationStackArtifact const assembly = testAssembly({ stacks: [stack] }); return assembly.getStackByName(stack.stackName); } - -/** - * Return a mocked instance of a class, given its constructor - * - * I don't understand why jest doesn't provide this by default, - * but there you go. - * - * FIXME: Currently very limited. Doesn't support inheritance, getters or - * automatic detection of properties (as those exist on instances, not - * classes). - */ -export function instanceMockFrom(ctr: new (...args: any[]) => A): jest.Mocked { - const ret: any = {}; - for (const methodName of Object.getOwnPropertyNames(ctr.prototype)) { - ret[methodName] = jest.fn(); - } - return ret; -} - -export function withMocked( - obj: A, - key: K, - block: (fn: jest.Mocked[K]) => B, -): B { - const original = obj[key]; - const mockFn = jest.fn(); - (obj as any)[key] = mockFn; - - let asyncFinally: boolean = false; - try { - const ret = block(mockFn as any); - if (!isPromise(ret)) { - return ret; - } - - asyncFinally = true; - return ret.finally(() => { - obj[key] = original; - }) as any; - } finally { - if (!asyncFinally) { - obj[key] = original; - } - } -} - -function isPromise(object: any): object is Promise { - return Promise.resolve(object) === object; -} - -export async function sleep(ms: number) { - return new Promise((ok) => setTimeout(ok, ms)); -} diff --git a/packages/aws-cdk/test/_helpers/index.ts b/packages/aws-cdk/test/_helpers/index.ts new file mode 100644 index 000000000..bbd3c446a --- /dev/null +++ b/packages/aws-cdk/test/_helpers/index.ts @@ -0,0 +1,4 @@ +export * from './as-mock'; +export * from './assembly'; +export * from './bockfs'; +export * from './sleep'; diff --git a/packages/aws-cdk/test/jest-bufferedconsole.ts b/packages/aws-cdk/test/_helpers/jest-bufferedconsole.ts similarity index 100% rename from packages/aws-cdk/test/jest-bufferedconsole.ts rename to packages/aws-cdk/test/_helpers/jest-bufferedconsole.ts diff --git a/packages/aws-cdk/test/jest-setup-after-env.ts b/packages/aws-cdk/test/_helpers/jest-setup-after-env.ts similarity index 100% rename from packages/aws-cdk/test/jest-setup-after-env.ts rename to packages/aws-cdk/test/_helpers/jest-setup-after-env.ts diff --git a/packages/aws-cdk/test/_helpers/sleep.ts b/packages/aws-cdk/test/_helpers/sleep.ts new file mode 100644 index 000000000..430da15f5 --- /dev/null +++ b/packages/aws-cdk/test/_helpers/sleep.ts @@ -0,0 +1,3 @@ +export async function sleep(ms: number) { + return new Promise((ok) => setTimeout(ok, ms)); +} diff --git a/packages/aws-cdk/test/api/_helpers/hotswap-test-setup.ts b/packages/aws-cdk/test/api/_helpers/hotswap-test-setup.ts index 4802221e5..e8b0e50a3 100644 --- a/packages/aws-cdk/test/api/_helpers/hotswap-test-setup.ts +++ b/packages/aws-cdk/test/api/_helpers/hotswap-test-setup.ts @@ -5,7 +5,7 @@ import { ICloudFormationClient, SuccessfulDeployStackResult } from '../../../lib import { CloudFormationStack, Template } from '../../../lib/api/deployments'; import * as deployments from '../../../lib/api/deployments/hotswap-deployments'; import { HotswapMode, HotswapPropertyOverrides } from '../../../lib/api/hotswap/common'; -import { testStack, TestStackArtifact } from '../../util'; +import { testStack, TestStackArtifact } from '../../_helpers/assembly'; import { mockCloudFormationClient, mockLambdaClient, diff --git a/packages/aws-cdk/test/api/aws-auth/account-cache.test.ts b/packages/aws-cdk/test/api/aws-auth/account-cache.test.ts index ea0f4b5e2..a61f817f8 100644 --- a/packages/aws-cdk/test/api/aws-auth/account-cache.test.ts +++ b/packages/aws-cdk/test/api/aws-auth/account-cache.test.ts @@ -2,7 +2,7 @@ import * as path from 'path'; import bockfs from '../../_helpers/bockfs'; import * as fs from 'fs-extra'; import { AccountAccessKeyCache } from '../../../lib/api/aws-auth/account-cache'; -import { withMocked } from '../../util'; +import { withMocked } from '../../_helpers/as-mock'; async function makeCache() { const dir = await fs.mkdtemp('/tmp/account-cache-test'); diff --git a/packages/aws-cdk/test/api/aws-auth/sdk-provider.test.ts b/packages/aws-cdk/test/api/aws-auth/sdk-provider.test.ts index bd0446894..204a4f289 100644 --- a/packages/aws-cdk/test/api/aws-auth/sdk-provider.test.ts +++ b/packages/aws-cdk/test/api/aws-auth/sdk-provider.test.ts @@ -24,8 +24,8 @@ import { AwsCliCompatible } from '../../../lib/api/aws-auth/awscli-compatible'; import { defaultCliUserAgent } from '../../../lib/api/aws-auth/user-agent'; import { PluginHost } from '../../../lib/api/plugin'; import { Mode } from '../../../lib/api/plugin/mode'; -import { CliIoHost } from '../../../lib/toolkit/cli-io-host'; -import { withMocked } from '../../util'; +import { CliIoHost } from '../../../lib/cli/io-host'; +import { withMocked } from '../../_helpers/as-mock'; import { undoAllSdkMocks } from '../../util/mock-sdk'; // As part of the imports above we import `mock-sdk.ts` which automatically mocks diff --git a/packages/aws-cdk/test/api/bootstrap/bootstrap2.test.ts b/packages/aws-cdk/test/api/bootstrap/bootstrap2.test.ts index 572a31015..088fea5ea 100644 --- a/packages/aws-cdk/test/api/bootstrap/bootstrap2.test.ts +++ b/packages/aws-cdk/test/api/bootstrap/bootstrap2.test.ts @@ -10,7 +10,7 @@ import { MockSdkProvider, restoreSdkMocksToDefault, setDefaultSTSMocks, } from '../../util/mock-sdk'; -import { IIoHost } from '../../../lib/toolkit/cli-io-host'; +import { IIoHost } from '../../../lib/cli/io-host'; import { asIoHelper } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private'; const mockDeployStack = jest.spyOn(deployStack, 'deployStack'); diff --git a/packages/aws-cdk/test/api/cxapp/cloud-assembly.test.ts b/packages/aws-cdk/test/api/cxapp/cloud-assembly.test.ts index 03daf6b9d..58a750b99 100644 --- a/packages/aws-cdk/test/api/cxapp/cloud-assembly.test.ts +++ b/packages/aws-cdk/test/api/cxapp/cloud-assembly.test.ts @@ -1,7 +1,7 @@ /* eslint-disable import/order */ import * as cxschema from '@aws-cdk/cloud-assembly-schema'; import { DefaultSelection } from '../../../lib/api/cxapp/cloud-assembly'; -import { MockCloudExecutable } from '../../util'; +import { MockCloudExecutable } from '../../_helpers/assembly'; import { cliAssemblyWithForcedVersion } from './assembly-versions'; test('select all top level stacks in the presence of nested assemblies', async () => { diff --git a/packages/aws-cdk/test/api/cxapp/cloud-executable.test.ts b/packages/aws-cdk/test/api/cxapp/cloud-executable.test.ts index 33f6881f4..ca66dda83 100644 --- a/packages/aws-cdk/test/api/cxapp/cloud-executable.test.ts +++ b/packages/aws-cdk/test/api/cxapp/cloud-executable.test.ts @@ -2,7 +2,7 @@ import * as cxschema from '@aws-cdk/cloud-assembly-schema'; import { DefaultSelection } from '../../../lib/api/cxapp/cloud-assembly'; import { registerContextProvider } from '../../../lib/context-providers'; -import { MockCloudExecutable } from '../../util'; +import { MockCloudExecutable } from '../../_helpers/assembly'; describe('AWS::CDK::Metadata', () => { test('is not generated for new frameworks', async () => { diff --git a/packages/aws-cdk/test/api/cxapp/exec.test.ts b/packages/aws-cdk/test/api/cxapp/exec.test.ts index 031426871..76bb323ab 100644 --- a/packages/aws-cdk/test/api/cxapp/exec.test.ts +++ b/packages/aws-cdk/test/api/cxapp/exec.test.ts @@ -8,12 +8,12 @@ import * as sinon from 'sinon'; import { ImportMock } from 'ts-mock-imports'; import { execProgram } from '../../../lib/api/cxapp/exec'; import { Configuration } from '../../../lib/cli/user-configuration'; -import { testAssembly } from '../../util'; +import { testAssembly } from '../../_helpers/assembly'; import { mockSpawn } from '../../util/mock-child_process'; import { MockSdkProvider } from '../../util/mock-sdk'; import { RWLock } from '../../../lib/api/util/rwlock'; import { rewriteManifestVersion } from './assembly-versions'; -import { CliIoHost } from '../../../lib/toolkit/cli-io-host'; +import { CliIoHost } from '../../../lib/cli/io-host'; let sdkProvider: MockSdkProvider; let config: Configuration; diff --git a/packages/aws-cdk/test/api/deployments/assets.test.ts b/packages/aws-cdk/test/api/deployments/assets.test.ts index 27d97bd64..203574e11 100644 --- a/packages/aws-cdk/test/api/deployments/assets.test.ts +++ b/packages/aws-cdk/test/api/deployments/assets.test.ts @@ -1,6 +1,6 @@ /* eslint-disable import/order */ import { AssetMetadataEntry } from '@aws-cdk/cloud-assembly-schema'; -import { testStack, withMocked } from '../../util'; +import { testStack, withMocked } from '../../_helpers'; import { addMetadataAssetsToManifest } from '../../../lib/api/deployments/assets'; import { AssetManifestBuilder } from '../../../lib/api/deployments'; import { EnvironmentResources, EnvironmentResourcesRegistry } from '../../../lib/api/environment'; diff --git a/packages/aws-cdk/test/api/deployments/cloudformation-deployments.test.ts b/packages/aws-cdk/test/api/deployments/cloudformation-deployments.test.ts index b49959724..e0650199d 100644 --- a/packages/aws-cdk/test/api/deployments/cloudformation-deployments.test.ts +++ b/packages/aws-cdk/test/api/deployments/cloudformation-deployments.test.ts @@ -16,7 +16,7 @@ import { CloudFormationStack, createChangeSet, Deployments } from '../../../lib/ import { deployStack } from '../../../lib/api/deployments/deploy-stack'; import { HotswapMode } from '../../../lib/api/hotswap/common'; import { ToolkitInfo } from '../../../lib/api/toolkit-info'; -import { testStack } from '../../util'; +import { testStack } from '../../_helpers/assembly'; import { mockBootstrapStack, mockCloudFormationClient, diff --git a/packages/aws-cdk/test/api/deployments/deploy-stack.test.ts b/packages/aws-cdk/test/api/deployments/deploy-stack.test.ts index 12275fbe0..6b32eec1a 100644 --- a/packages/aws-cdk/test/api/deployments/deploy-stack.test.ts +++ b/packages/aws-cdk/test/api/deployments/deploy-stack.test.ts @@ -21,7 +21,7 @@ import { deployStack, DeployStackOptions } from '../../../lib/api/deployments/de import { tryHotswapDeployment } from '../../../lib/api/deployments/hotswap-deployments'; import { NoBootstrapStackEnvironmentResources } from '../../../lib/api/environment'; import { HotswapMode } from '../../../lib/api/hotswap/common'; -import { DEFAULT_FAKE_TEMPLATE, testStack } from '../../util'; +import { DEFAULT_FAKE_TEMPLATE, testStack } from '../../_helpers/assembly'; import { mockCloudFormationClient, mockResolvedEnvironment, diff --git a/packages/aws-cdk/test/api/hotswap/nested-stacks-hotswap.test.ts b/packages/aws-cdk/test/api/hotswap/nested-stacks-hotswap.test.ts index 2235832a5..2c48ecc18 100644 --- a/packages/aws-cdk/test/api/hotswap/nested-stacks-hotswap.test.ts +++ b/packages/aws-cdk/test/api/hotswap/nested-stacks-hotswap.test.ts @@ -1,7 +1,7 @@ import { PublishVersionCommand, UpdateFunctionCodeCommand } from '@aws-sdk/client-lambda'; import * as setup from '../_helpers/hotswap-test-setup'; import { HotswapMode } from '../../../lib/api/hotswap/common'; -import { testStack } from '../../util'; +import { testStack } from '../../_helpers/assembly'; import { mockLambdaClient } from '../../util/mock-sdk'; import { silentTest } from '../../util/silent'; diff --git a/packages/aws-cdk/test/api/logs/find-cloudwatch-logs.test.ts b/packages/aws-cdk/test/api/logs/find-cloudwatch-logs.test.ts index 60c679d95..8c5c4895b 100644 --- a/packages/aws-cdk/test/api/logs/find-cloudwatch-logs.test.ts +++ b/packages/aws-cdk/test/api/logs/find-cloudwatch-logs.test.ts @@ -7,8 +7,8 @@ import { } from '@aws-sdk/client-cloudformation'; import { SdkProvider } from '../../../lib/api'; import { findCloudWatchLogGroups } from '../../../lib/api/logs/find-cloudwatch-logs'; -import { CliIoHost, IoMessaging } from '../../../lib/toolkit/cli-io-host'; -import { testStack, TestStackArtifact } from '../../util'; +import { CliIoHost, IoMessaging } from '../../../lib/cli/io-host'; +import { testStack, TestStackArtifact } from '../../_helpers/assembly'; import { mockCloudFormationClient, MockSdk, diff --git a/packages/aws-cdk/test/api/logs/logging.test.ts b/packages/aws-cdk/test/api/logs/logging.test.ts index 1ac4fc951..067bd78d0 100644 --- a/packages/aws-cdk/test/api/logs/logging.test.ts +++ b/packages/aws-cdk/test/api/logs/logging.test.ts @@ -1,5 +1,5 @@ import { result, success, highlight, error, warning, info, debug, trace } from '../../../lib/logging'; -import { CliIoHost } from '../../../lib/toolkit/cli-io-host'; +import { CliIoHost } from '../../../lib/cli/io-host'; describe('logging', () => { const ioHost = CliIoHost.instance({}, true); diff --git a/packages/aws-cdk/test/api/logs/logs-monitor.test.ts b/packages/aws-cdk/test/api/logs/logs-monitor.test.ts index 304bd7eb7..b5d120720 100644 --- a/packages/aws-cdk/test/api/logs/logs-monitor.test.ts +++ b/packages/aws-cdk/test/api/logs/logs-monitor.test.ts @@ -1,6 +1,6 @@ import { FilterLogEventsCommand, type FilteredLogEvent } from '@aws-sdk/client-cloudwatch-logs'; import { CloudWatchLogEventMonitor } from '../../../lib/api/logs/logs-monitor'; -import { sleep } from '../../util'; +import { sleep } from '../../_helpers/sleep'; import { MockSdk, mockCloudWatchClient } from '../../util/mock-sdk'; import { asIoHelper, TestIoHost } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private'; diff --git a/packages/aws-cdk/test/api/resource-import/import.test.ts b/packages/aws-cdk/test/api/resource-import/import.test.ts index a79cb6f79..bb41f0e25 100644 --- a/packages/aws-cdk/test/api/resource-import/import.test.ts +++ b/packages/aws-cdk/test/api/resource-import/import.test.ts @@ -17,7 +17,7 @@ import { import * as promptly from 'promptly'; import { Deployments } from '../../../lib/api/deployments'; import { ResourceImporter, ImportMap, ResourceImporterProps } from '../../../lib/api/resource-import'; -import { testStack } from '../../util'; +import { testStack } from '../../_helpers/assembly'; import { MockSdkProvider, mockCloudFormationClient, restoreSdkMocksToDefault } from '../../util/mock-sdk'; import { asIoHelper, TestIoHost } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private'; diff --git a/packages/aws-cdk/test/rwlock.test.ts b/packages/aws-cdk/test/api/rwlock.test.ts similarity index 95% rename from packages/aws-cdk/test/rwlock.test.ts rename to packages/aws-cdk/test/api/rwlock.test.ts index 4ffa95cee..e0b8618bd 100644 --- a/packages/aws-cdk/test/rwlock.test.ts +++ b/packages/aws-cdk/test/api/rwlock.test.ts @@ -1,7 +1,7 @@ /* eslint-disable import/order */ import * as os from 'os'; import * as path from 'path'; -import { RWLock } from '../lib/api/util/rwlock'; +import { RWLock } from '../../lib/api/util/rwlock'; function testDir() { return path.join(os.tmpdir(), 'rwlock-tests'); diff --git a/packages/aws-cdk/test/api/stack-events/stack-activity-monitor.test.ts b/packages/aws-cdk/test/api/stack-events/stack-activity-monitor.test.ts index ff155f10e..f9e45ce94 100644 --- a/packages/aws-cdk/test/api/stack-events/stack-activity-monitor.test.ts +++ b/packages/aws-cdk/test/api/stack-events/stack-activity-monitor.test.ts @@ -6,7 +6,7 @@ import { } from '@aws-sdk/client-cloudformation'; import { MockSdk, mockCloudFormationClient, restoreSdkMocksToDefault } from '../../util/mock-sdk'; import { StackActivityMonitor } from '../../../lib/api/stack-events'; -import { testStack } from '../../util'; +import { testStack } from '../../_helpers/assembly'; import { asIoHelper } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private'; import { IIoHost } from '../../../../@aws-cdk/tmp-toolkit-helpers/src/api/io'; diff --git a/packages/aws-cdk/test/api/work-graph/work-graph-builder.test.ts b/packages/aws-cdk/test/api/work-graph/work-graph-builder.test.ts index 53c11d684..05c7b11c3 100644 --- a/packages/aws-cdk/test/api/work-graph/work-graph-builder.test.ts +++ b/packages/aws-cdk/test/api/work-graph/work-graph-builder.test.ts @@ -7,7 +7,7 @@ import { CloudAssemblyBuilder } from '@aws-cdk/cx-api'; import { expect } from '@jest/globals'; import { WorkGraph, WorkGraphBuilder } from '../../../lib/api/work-graph'; import type { AssetBuildNode, AssetPublishNode, StackNode, WorkNode } from '../../../lib/api/work-graph'; -import { CliIoHost, IoMessaging } from '../../../lib/toolkit/cli-io-host'; +import { CliIoHost, IoMessaging } from '../../../lib/cli/io-host'; let rootBuilder: CloudAssemblyBuilder; let mockMsg: IoMessaging = { diff --git a/packages/aws-cdk/test/cli/activity-monitor/history.test.ts b/packages/aws-cdk/test/cli/activity-monitor/history.test.ts index f82e0af19..4bc85f0c7 100644 --- a/packages/aws-cdk/test/cli/activity-monitor/history.test.ts +++ b/packages/aws-cdk/test/cli/activity-monitor/history.test.ts @@ -1,7 +1,7 @@ import { ResourceStatus } from "@aws-sdk/client-cloudformation"; import { HistoryActivityPrinter } from "../../../lib/cli/activity-printer"; -import { CliIoHost } from "../../../lib/toolkit/cli-io-host"; -import { testStack } from "../../util"; +import { CliIoHost } from "../../../lib/cli/io-host"; +import { testStack } from "../../_helpers"; import { stderr } from "../_helpers/console-listener"; import * as chalk from 'chalk'; diff --git a/packages/aws-cdk/test/cli/cdk-toolkit.test.ts b/packages/aws-cdk/test/cli/cdk-toolkit.test.ts index dace50c48..8a15c69ad 100644 --- a/packages/aws-cdk/test/cli/cdk-toolkit.test.ts +++ b/packages/aws-cdk/test/cli/cdk-toolkit.test.ts @@ -85,10 +85,11 @@ import { Mode } from '../../lib/api/plugin'; import { Tag } from '../../lib/api/tags'; import { CdkToolkit, markTesting } from '../../lib/cli/cdk-toolkit'; import { Configuration } from '../../lib/cli/user-configuration'; -import { RequireApproval } from '../../lib/diff'; -import { CliIoHost } from '../../lib/toolkit/cli-io-host'; +import { RequireApproval } from '../../lib/commands/diff'; +import { CliIoHost } from '../../lib/cli/io-host'; import { flatten } from '../../lib/util'; -import { instanceMockFrom, MockCloudExecutable, TestStackArtifact } from '../util'; +import { MockCloudExecutable, TestStackArtifact } from '../_helpers/assembly'; +import { instanceMockFrom } from '../_helpers/as-mock'; import { mockCloudFormationClient, MockSdk, diff --git a/packages/aws-cdk/test/cli/cli.test.ts b/packages/aws-cdk/test/cli/cli.test.ts index 39193119e..5528eb244 100644 --- a/packages/aws-cdk/test/cli/cli.test.ts +++ b/packages/aws-cdk/test/cli/cli.test.ts @@ -1,5 +1,5 @@ import { exec } from '../../lib/cli/cli'; -import { CliIoHost } from '../../lib/toolkit/cli-io-host'; +import { CliIoHost } from '../../lib/cli/io-host'; // Store original version module exports so we don't conflict with other tests const originalVersion = jest.requireActual('../../lib/cli/version'); diff --git a/packages/aws-cdk/test/toolkit/cli-io-host-corked.test.ts b/packages/aws-cdk/test/cli/io-host/cli-io-host-corked.test.ts similarity index 94% rename from packages/aws-cdk/test/toolkit/cli-io-host-corked.test.ts rename to packages/aws-cdk/test/cli/io-host/cli-io-host-corked.test.ts index 455ce4b45..31bb26396 100644 --- a/packages/aws-cdk/test/toolkit/cli-io-host-corked.test.ts +++ b/packages/aws-cdk/test/cli/io-host/cli-io-host-corked.test.ts @@ -1,5 +1,5 @@ -import { debug, error, info, success, warning } from '../../lib/logging'; -import { CliIoHost } from '../../lib/toolkit/cli-io-host'; +import { debug, error, info, success, warning } from '../../../lib/logging'; +import { CliIoHost } from '../../../lib/cli/io-host'; const ioHost = CliIoHost.instance({}, true); let mockStderr: jest.Mock; diff --git a/packages/aws-cdk/test/toolkit/cli-io-host.test.ts b/packages/aws-cdk/test/cli/io-host/cli-io-host.test.ts similarity index 99% rename from packages/aws-cdk/test/toolkit/cli-io-host.test.ts rename to packages/aws-cdk/test/cli/io-host/cli-io-host.test.ts index d9ac00d75..e5562717e 100644 --- a/packages/aws-cdk/test/toolkit/cli-io-host.test.ts +++ b/packages/aws-cdk/test/cli/io-host/cli-io-host.test.ts @@ -1,6 +1,6 @@ import { PassThrough } from 'stream'; import * as chalk from 'chalk'; -import { CliIoHost, IoMessage, IoMessageLevel, IoRequest } from '../../lib/toolkit/cli-io-host'; +import { CliIoHost, IoMessage, IoMessageLevel, IoRequest } from '../../../lib/cli/io-host'; import { RequireApproval } from '@aws-cdk/cloud-assembly-schema'; let passThrough: PassThrough; diff --git a/packages/aws-cdk/test/bootstrap.test.ts b/packages/aws-cdk/test/commands/bootstrap.test.ts similarity index 90% rename from packages/aws-cdk/test/bootstrap.test.ts rename to packages/aws-cdk/test/commands/bootstrap.test.ts index 9fb3a474e..248345d52 100644 --- a/packages/aws-cdk/test/bootstrap.test.ts +++ b/packages/aws-cdk/test/commands/bootstrap.test.ts @@ -1,5 +1,5 @@ -import { Bootstrapper } from '../lib/api/bootstrap/bootstrap-environment'; -import { exec } from '../lib/cli/cli'; +import { Bootstrapper } from '../../lib/api/bootstrap/bootstrap-environment'; +import { exec } from '../../lib/cli/cli'; beforeEach(() => { jest.clearAllMocks(); diff --git a/packages/aws-cdk/test/cdk-docs.test.ts b/packages/aws-cdk/test/commands/cdk-docs.test.ts similarity index 95% rename from packages/aws-cdk/test/cdk-docs.test.ts rename to packages/aws-cdk/test/commands/cdk-docs.test.ts index 34d1b7e97..7a24b1dd0 100644 --- a/packages/aws-cdk/test/cdk-docs.test.ts +++ b/packages/aws-cdk/test/commands/cdk-docs.test.ts @@ -1,6 +1,6 @@ import * as child_process from 'child_process'; import { mocked } from 'jest-mock'; -import { docs } from '../lib/commands/docs'; +import { docs } from '../../lib/commands/docs'; // eslint-disable-next-line no-console console.log = jest.fn(); diff --git a/packages/aws-cdk/test/cdk-doctor.test.ts b/packages/aws-cdk/test/commands/cdk-doctor.test.ts similarity index 81% rename from packages/aws-cdk/test/cdk-doctor.test.ts rename to packages/aws-cdk/test/commands/cdk-doctor.test.ts index 9947ea92e..728e65613 100644 --- a/packages/aws-cdk/test/cdk-doctor.test.ts +++ b/packages/aws-cdk/test/commands/cdk-doctor.test.ts @@ -1,4 +1,4 @@ -import { doctor } from '../lib/commands/doctor'; +import { doctor } from '../../lib/commands/doctor'; // eslint-disable-next-line no-console console.log = jest.fn(); diff --git a/packages/aws-cdk/test/diff.test.ts b/packages/aws-cdk/test/commands/diff.test.ts similarity index 98% rename from packages/aws-cdk/test/diff.test.ts rename to packages/aws-cdk/test/commands/diff.test.ts index edd6701ce..5e37c8fbc 100644 --- a/packages/aws-cdk/test/diff.test.ts +++ b/packages/aws-cdk/test/commands/diff.test.ts @@ -6,11 +6,11 @@ import { StringDecoder } from 'string_decoder'; import * as cxschema from '@aws-cdk/cloud-assembly-schema'; import { CloudFormationStackArtifact } from '@aws-cdk/cx-api'; import { DescribeChangeSetCommandOutput } from '@aws-sdk/client-cloudformation'; -import { instanceMockFrom, MockCloudExecutable } from './util'; -import { Deployments, PrepareChangeSetOptions, type NestedStackTemplates } from '../lib/api/deployments'; -import * as cfn from '../lib/api/deployments/cloudformation'; -import { CdkToolkit } from '../lib/cli/cdk-toolkit'; -import { IoMessaging } from '../lib/toolkit/cli-io-host'; +import { instanceMockFrom, MockCloudExecutable } from '../_helpers'; +import { Deployments, PrepareChangeSetOptions, type NestedStackTemplates } from '../../lib/api/deployments'; +import * as cfn from '../../lib/api/deployments/cloudformation'; +import { CdkToolkit } from '../../lib/cli/cdk-toolkit'; +import type { IoHelper } from '../../../@aws-cdk/tmp-toolkit-helpers/src/api/io/private'; let cloudExecutable: MockCloudExecutable; let cloudFormation: jest.Mocked; @@ -110,7 +110,7 @@ describe('fixed template', () => { describe('imports', () => { let createDiffChangeSet: jest.SpyInstance< Promise, - [msg: IoMessaging, options: PrepareChangeSetOptions], + [ioHelper: IoHelper, options: PrepareChangeSetOptions], any >; diff --git a/packages/aws-cdk/test/init.test.ts b/packages/aws-cdk/test/commands/init.test.ts similarity index 97% rename from packages/aws-cdk/test/init.test.ts rename to packages/aws-cdk/test/commands/init.test.ts index fb21e3c15..1eff6ffe9 100644 --- a/packages/aws-cdk/test/init.test.ts +++ b/packages/aws-cdk/test/commands/init.test.ts @@ -2,7 +2,7 @@ import * as os from 'os'; import * as path from 'path'; import * as cxapi from '@aws-cdk/cx-api'; import * as fs from 'fs-extra'; -import { availableInitLanguages, availableInitTemplates, cliInit, currentlyRecommendedAwsCdkLibFlags, expandPlaceholders, printAvailableTemplates } from '../lib/init'; +import { availableInitLanguages, availableInitTemplates, cliInit, currentlyRecommendedAwsCdkLibFlags, expandPlaceholders, printAvailableTemplates } from '../../lib/commands/init'; describe('constructs version', () => { cliTest('create a TypeScript library project', async (workDir) => { @@ -225,7 +225,7 @@ describe('constructs version', () => { }); cliTest('CLI uses recommended feature flags from data file to initialize context', async (workDir) => { - const recommendedFlagsFile = path.join(__dirname, '..', 'lib', 'init-templates', '.recommended-feature-flags.json'); + const recommendedFlagsFile = path.join(__dirname, '..', '..', 'lib', 'init-templates', '.recommended-feature-flags.json'); await withReplacedFile(recommendedFlagsFile, JSON.stringify({ banana: 'yellow' }), () => cliInit({ type: 'app', language: 'typescript', @@ -239,7 +239,7 @@ describe('constructs version', () => { }); cliTest('CLI uses init versions file to initialize template', async (workDir) => { - const recommendedFlagsFile = path.join(__dirname, '..', 'lib', 'init-templates', '.init-version.json'); + const recommendedFlagsFile = path.join(__dirname, '..', '..', 'lib', 'init-templates', '.init-version.json'); await withReplacedFile(recommendedFlagsFile, JSON.stringify({ 'aws-cdk-lib': '100.1.1', 'constructs': '^200.2.2' }), () => cliInit({ type: 'app', language: 'typescript', diff --git a/packages/aws-cdk/test/list-stacks.test.ts b/packages/aws-cdk/test/commands/list-stacks.test.ts similarity index 98% rename from packages/aws-cdk/test/list-stacks.test.ts rename to packages/aws-cdk/test/commands/list-stacks.test.ts index 0d607b5d8..b93cb394f 100644 --- a/packages/aws-cdk/test/list-stacks.test.ts +++ b/packages/aws-cdk/test/commands/list-stacks.test.ts @@ -1,9 +1,9 @@ import * as cxschema from '@aws-cdk/cloud-assembly-schema';; -import { instanceMockFrom, MockCloudExecutable, TestStackArtifact } from './util'; -import { Bootstrapper } from '../lib/api/bootstrap'; -import { Deployments } from '../lib/api/deployments'; -import { CdkToolkit } from '../lib/cli/cdk-toolkit'; -import { listStacks } from '../lib/list-stacks'; +import { instanceMockFrom, MockCloudExecutable, TestStackArtifact } from '../_helpers'; +import { Bootstrapper } from '../../lib/api/bootstrap'; +import { Deployments } from '../../lib/api/deployments'; +import { CdkToolkit } from '../../lib/cli/cdk-toolkit'; +import { listStacks } from '../../lib/commands/list-stacks'; describe('list', () => { let cloudFormation: jest.Mocked;