diff --git a/.eslintrc.json b/.eslintrc.json index 8e927659..20b91330 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -175,9 +175,7 @@ } } ], - "import/no-duplicates": [ - "error" - ], + "import/no-duplicates": "error", "no-shadow": [ "off" ], @@ -303,9 +301,6 @@ ] } ], - "no-duplicate-imports": [ - "error" - ], "no-console": [ "error" ], diff --git a/.projenrc.ts b/.projenrc.ts index a1b86da9..803fc662 100644 --- a/.projenrc.ts +++ b/.projenrc.ts @@ -720,6 +720,11 @@ tmpToolkitHelpers.package.addField('exports', { './util': './lib/util/index.js', }); +tmpToolkitHelpers.eslint?.addRules({ + '@cdklabs/no-throw-default-error': 'error', + '@typescript-eslint/consistent-type-imports': 'error', +}); + ////////////////////////////////////////////////////////////////////// let CLI_SDK_VERSION: '2' | '3' = ('3' as any); @@ -1219,7 +1224,8 @@ new S3DocsPublishing(toolkitLib, { // Eslint rules toolkitLib.eslint?.addRules({ - '@cdklabs/no-throw-default-error': ['error'], + '@cdklabs/no-throw-default-error': 'error', + '@typescript-eslint/consistent-type-imports': 'error', 'import/no-restricted-paths': ['error', { zones: [{ target: './', diff --git a/packages/@aws-cdk/cdk-build-tools/.eslintrc.json b/packages/@aws-cdk/cdk-build-tools/.eslintrc.json index 691af85e..d45b6fa3 100644 --- a/packages/@aws-cdk/cdk-build-tools/.eslintrc.json +++ b/packages/@aws-cdk/cdk-build-tools/.eslintrc.json @@ -78,9 +78,7 @@ } } ], - "import/no-duplicates": [ - "error" - ], + "import/no-duplicates": "error", "no-shadow": [ "off" ], @@ -274,9 +272,6 @@ ] } ], - "no-duplicate-imports": [ - "error" - ], "semi": [ "error", "always" diff --git a/packages/@aws-cdk/cdk-cli-wrapper/.eslintrc.json b/packages/@aws-cdk/cdk-cli-wrapper/.eslintrc.json index 691af85e..d45b6fa3 100644 --- a/packages/@aws-cdk/cdk-cli-wrapper/.eslintrc.json +++ b/packages/@aws-cdk/cdk-cli-wrapper/.eslintrc.json @@ -78,9 +78,7 @@ } } ], - "import/no-duplicates": [ - "error" - ], + "import/no-duplicates": "error", "no-shadow": [ "off" ], @@ -274,9 +272,6 @@ ] } ], - "no-duplicate-imports": [ - "error" - ], "semi": [ "error", "always" diff --git a/packages/@aws-cdk/cli-lib-alpha/.eslintrc.json b/packages/@aws-cdk/cli-lib-alpha/.eslintrc.json index 43235402..d6feae45 100644 --- a/packages/@aws-cdk/cli-lib-alpha/.eslintrc.json +++ b/packages/@aws-cdk/cli-lib-alpha/.eslintrc.json @@ -75,9 +75,7 @@ } } ], - "import/no-duplicates": [ - "error" - ], + "import/no-duplicates": "error", "no-shadow": [ "off" ], @@ -271,9 +269,6 @@ ] } ], - "no-duplicate-imports": [ - "error" - ], "semi": [ "error", "always" diff --git a/packages/@aws-cdk/cli-plugin-contract/.eslintrc.json b/packages/@aws-cdk/cli-plugin-contract/.eslintrc.json index 691af85e..d45b6fa3 100644 --- a/packages/@aws-cdk/cli-plugin-contract/.eslintrc.json +++ b/packages/@aws-cdk/cli-plugin-contract/.eslintrc.json @@ -78,9 +78,7 @@ } } ], - "import/no-duplicates": [ - "error" - ], + "import/no-duplicates": "error", "no-shadow": [ "off" ], @@ -274,9 +272,6 @@ ] } ], - "no-duplicate-imports": [ - "error" - ], "semi": [ "error", "always" diff --git a/packages/@aws-cdk/cloud-assembly-schema/.eslintrc.json b/packages/@aws-cdk/cloud-assembly-schema/.eslintrc.json index 691af85e..d45b6fa3 100644 --- a/packages/@aws-cdk/cloud-assembly-schema/.eslintrc.json +++ b/packages/@aws-cdk/cloud-assembly-schema/.eslintrc.json @@ -78,9 +78,7 @@ } } ], - "import/no-duplicates": [ - "error" - ], + "import/no-duplicates": "error", "no-shadow": [ "off" ], @@ -274,9 +272,6 @@ ] } ], - "no-duplicate-imports": [ - "error" - ], "semi": [ "error", "always" diff --git a/packages/@aws-cdk/cloudformation-diff/.eslintrc.json b/packages/@aws-cdk/cloudformation-diff/.eslintrc.json index 691af85e..d45b6fa3 100644 --- a/packages/@aws-cdk/cloudformation-diff/.eslintrc.json +++ b/packages/@aws-cdk/cloudformation-diff/.eslintrc.json @@ -78,9 +78,7 @@ } } ], - "import/no-duplicates": [ - "error" - ], + "import/no-duplicates": "error", "no-shadow": [ "off" ], @@ -274,9 +272,6 @@ ] } ], - "no-duplicate-imports": [ - "error" - ], "semi": [ "error", "always" diff --git a/packages/@aws-cdk/node-bundle/.eslintrc.json b/packages/@aws-cdk/node-bundle/.eslintrc.json index 8df41e01..327aa204 100644 --- a/packages/@aws-cdk/node-bundle/.eslintrc.json +++ b/packages/@aws-cdk/node-bundle/.eslintrc.json @@ -78,9 +78,7 @@ } } ], - "import/no-duplicates": [ - "error" - ], + "import/no-duplicates": "error", "no-shadow": [ "off" ], @@ -274,9 +272,6 @@ ] } ], - "no-duplicate-imports": [ - "error" - ], "semi": [ "error", "always" diff --git a/packages/@aws-cdk/tmp-toolkit-helpers/.eslintrc.json b/packages/@aws-cdk/tmp-toolkit-helpers/.eslintrc.json index 691af85e..12b52ecc 100644 --- a/packages/@aws-cdk/tmp-toolkit-helpers/.eslintrc.json +++ b/packages/@aws-cdk/tmp-toolkit-helpers/.eslintrc.json @@ -78,9 +78,7 @@ } } ], - "import/no-duplicates": [ - "error" - ], + "import/no-duplicates": "error", "no-shadow": [ "off" ], @@ -274,9 +272,6 @@ ] } ], - "no-duplicate-imports": [ - "error" - ], "semi": [ "error", "always" @@ -318,7 +313,9 @@ "jest/no-focused-tests": "error", "prettier/prettier": [ "off" - ] + ], + "@cdklabs/no-throw-default-error": "error", + "@typescript-eslint/consistent-type-imports": "error" }, "overrides": [] } diff --git a/packages/@aws-cdk/tmp-toolkit-helpers/src/api/io/io-host.ts b/packages/@aws-cdk/tmp-toolkit-helpers/src/api/io/io-host.ts index 90deee3d..9ee4dc92 100644 --- a/packages/@aws-cdk/tmp-toolkit-helpers/src/api/io/io-host.ts +++ b/packages/@aws-cdk/tmp-toolkit-helpers/src/api/io/io-host.ts @@ -1,4 +1,4 @@ -import { IoMessage, IoRequest } from './io-message'; +import type { IoMessage, IoRequest } from './io-message'; export interface IIoHost { /** diff --git a/packages/@aws-cdk/tmp-toolkit-helpers/src/api/io/io-message.ts b/packages/@aws-cdk/tmp-toolkit-helpers/src/api/io/io-message.ts index d4de60f4..6a685511 100644 --- a/packages/@aws-cdk/tmp-toolkit-helpers/src/api/io/io-message.ts +++ b/packages/@aws-cdk/tmp-toolkit-helpers/src/api/io/io-message.ts @@ -1,4 +1,4 @@ -import { ToolkitAction } from './toolkit-action'; +import type { ToolkitAction } from './toolkit-action'; /** * The reporting level of the message. diff --git a/packages/@aws-cdk/tmp-toolkit-helpers/src/api/io/private/action-aware.ts b/packages/@aws-cdk/tmp-toolkit-helpers/src/api/io/private/action-aware.ts index 4859dc7e..e87a5c7f 100644 --- a/packages/@aws-cdk/tmp-toolkit-helpers/src/api/io/private/action-aware.ts +++ b/packages/@aws-cdk/tmp-toolkit-helpers/src/api/io/private/action-aware.ts @@ -1,6 +1,6 @@ -import { IIoHost } from '../io-host'; -import { IoMessage, IoRequest } from '../io-message'; -import { ToolkitAction } from '../toolkit-action'; +import type { IIoHost } from '../io-host'; +import type { IoMessage, IoRequest } from '../io-message'; +import type { ToolkitAction } from '../toolkit-action'; export type Optional = Pick, K> & Omit; export type SimplifiedMessage = Pick, 'level' | 'code' | 'message' | 'data'>; diff --git a/packages/@aws-cdk/tmp-toolkit-helpers/src/api/io/private/message-maker.ts b/packages/@aws-cdk/tmp-toolkit-helpers/src/api/io/private/message-maker.ts index 279d09f5..94a048f0 100644 --- a/packages/@aws-cdk/tmp-toolkit-helpers/src/api/io/private/message-maker.ts +++ b/packages/@aws-cdk/tmp-toolkit-helpers/src/api/io/private/message-maker.ts @@ -1,5 +1,5 @@ -import { IoMessageCode, IoMessageLevel } from '../io-message'; -import { ActionLessMessage, ActionLessRequest } from './action-aware'; +import type { IoMessageCode, IoMessageLevel } from '../io-message'; +import type { ActionLessMessage, ActionLessRequest } from './action-aware'; /** * Information for each IO Message Code. diff --git a/packages/@aws-cdk/tmp-toolkit-helpers/src/util/objects.ts b/packages/@aws-cdk/tmp-toolkit-helpers/src/util/objects.ts index d12d4501..9161794d 100644 --- a/packages/@aws-cdk/tmp-toolkit-helpers/src/util/objects.ts +++ b/packages/@aws-cdk/tmp-toolkit-helpers/src/util/objects.ts @@ -1,4 +1,5 @@ -import { isArray, isObject, Obj } from './types'; +import type { Obj } from './types'; +import { isArray, isObject } from './types'; import { ToolkitError } from '../api/toolkit-error'; /** diff --git a/packages/@aws-cdk/tmp-toolkit-helpers/src/util/yaml-cfn.ts b/packages/@aws-cdk/tmp-toolkit-helpers/src/util/yaml-cfn.ts index 9ee9c69f..bf55f3e3 100644 --- a/packages/@aws-cdk/tmp-toolkit-helpers/src/util/yaml-cfn.ts +++ b/packages/@aws-cdk/tmp-toolkit-helpers/src/util/yaml-cfn.ts @@ -1,5 +1,5 @@ import * as yaml from 'yaml'; -import * as yaml_cst from 'yaml/parse-cst'; +import type * as yaml_cst from 'yaml/parse-cst'; import * as yaml_types from 'yaml/types'; /** diff --git a/packages/@aws-cdk/toolkit-lib/.eslintrc.json b/packages/@aws-cdk/toolkit-lib/.eslintrc.json index b91584eb..e4e1adfd 100644 --- a/packages/@aws-cdk/toolkit-lib/.eslintrc.json +++ b/packages/@aws-cdk/toolkit-lib/.eslintrc.json @@ -75,9 +75,7 @@ } } ], - "import/no-duplicates": [ - "error" - ], + "import/no-duplicates": "error", "no-shadow": [ "off" ], @@ -271,9 +269,6 @@ ] } ], - "no-duplicate-imports": [ - "error" - ], "semi": [ "error", "always" @@ -316,9 +311,8 @@ "prettier/prettier": [ "off" ], - "@cdklabs/no-throw-default-error": [ - "error" - ], + "@cdklabs/no-throw-default-error": "error", + "@typescript-eslint/consistent-type-imports": "error", "import/no-restricted-paths": [ "error", { diff --git a/packages/@aws-cdk/toolkit-lib/lib/actions/bootstrap/index.ts b/packages/@aws-cdk/toolkit-lib/lib/actions/bootstrap/index.ts index a44fb6bb..9ee31fc4 100644 --- a/packages/@aws-cdk/toolkit-lib/lib/actions/bootstrap/index.ts +++ b/packages/@aws-cdk/toolkit-lib/lib/actions/bootstrap/index.ts @@ -1,4 +1,4 @@ -import * as cxapi from '@aws-cdk/cx-api'; +import type * as cxapi from '@aws-cdk/cx-api'; import { environmentsFromDescriptors } from './private'; import type { Tag } from '../../api/aws-cdk'; import type { ICloudAssemblySource } from '../../api/cloud-assembly'; diff --git a/packages/@aws-cdk/toolkit-lib/lib/actions/bootstrap/private/helpers.ts b/packages/@aws-cdk/toolkit-lib/lib/actions/bootstrap/private/helpers.ts index 6c965319..3cd42d21 100644 --- a/packages/@aws-cdk/toolkit-lib/lib/actions/bootstrap/private/helpers.ts +++ b/packages/@aws-cdk/toolkit-lib/lib/actions/bootstrap/private/helpers.ts @@ -1,4 +1,4 @@ -import * as cxapi from '@aws-cdk/cx-api'; +import type * as cxapi from '@aws-cdk/cx-api'; import { ToolkitError } from '../../../api/shared-public'; /** diff --git a/packages/@aws-cdk/toolkit-lib/lib/actions/deploy/index.ts b/packages/@aws-cdk/toolkit-lib/lib/actions/deploy/index.ts index 7c33cac3..26bdb231 100644 --- a/packages/@aws-cdk/toolkit-lib/lib/actions/deploy/index.ts +++ b/packages/@aws-cdk/toolkit-lib/lib/actions/deploy/index.ts @@ -1,4 +1,4 @@ -import { CloudFormationStackArtifact } from '@aws-cdk/cx-api'; +import type { CloudFormationStackArtifact } from '@aws-cdk/cx-api'; import type { BaseDeployOptions } from './private/deploy-options'; import type { Tag } from '../../api/aws-cdk'; diff --git a/packages/@aws-cdk/toolkit-lib/lib/actions/deploy/private/deploy-options.ts b/packages/@aws-cdk/toolkit-lib/lib/actions/deploy/private/deploy-options.ts index e5706f3c..9effc35a 100644 --- a/packages/@aws-cdk/toolkit-lib/lib/actions/deploy/private/deploy-options.ts +++ b/packages/@aws-cdk/toolkit-lib/lib/actions/deploy/private/deploy-options.ts @@ -1,4 +1,4 @@ -import { DeploymentMethod, DeployOptions, HotswapMode } from '..'; +import type { DeploymentMethod, DeployOptions, HotswapMode } from '..'; import type { CloudWatchLogEventMonitor } from '../../../api/aws-cdk'; import type { StackSelector } from '../../../api/cloud-assembly'; diff --git a/packages/@aws-cdk/toolkit-lib/lib/actions/deploy/private/helpers.ts b/packages/@aws-cdk/toolkit-lib/lib/actions/deploy/private/helpers.ts index 47ced640..3f9d19a7 100644 --- a/packages/@aws-cdk/toolkit-lib/lib/actions/deploy/private/helpers.ts +++ b/packages/@aws-cdk/toolkit-lib/lib/actions/deploy/private/helpers.ts @@ -1,5 +1,6 @@ -import { DeployOptions, HotswapProperties } from '..'; -import { Deployments, EcsHotswapProperties, HotswapPropertyOverrides, type WorkGraph } from '../../../api/aws-cdk'; +import type { DeployOptions, HotswapProperties } from '..'; +import type { Deployments, WorkGraph } from '../../../api/aws-cdk'; +import { EcsHotswapProperties, HotswapPropertyOverrides } from '../../../api/aws-cdk'; export function buildParameterMap(parameters?: Map): { [name: string]: { [name: string]: string | undefined } } { const parameterMap: { diff --git a/packages/@aws-cdk/toolkit-lib/lib/actions/diff/private/helpers.ts b/packages/@aws-cdk/toolkit-lib/lib/actions/diff/private/helpers.ts index 95d204c7..46386eaa 100644 --- a/packages/@aws-cdk/toolkit-lib/lib/actions/diff/private/helpers.ts +++ b/packages/@aws-cdk/toolkit-lib/lib/actions/diff/private/helpers.ts @@ -1,5 +1,6 @@ -import { DescribeChangeSetOutput, fullDiff } from '@aws-cdk/cloudformation-diff'; -import * as cxapi from '@aws-cdk/cx-api'; +import type { DescribeChangeSetOutput } from '@aws-cdk/cloudformation-diff'; +import { fullDiff } from '@aws-cdk/cloudformation-diff'; +import type * as cxapi from '@aws-cdk/cx-api'; import { ToolkitError } from '../../../api/shared-public'; import { RequireApproval } from '../../deploy'; diff --git a/packages/@aws-cdk/toolkit-lib/lib/api/cloud-assembly/private/cached-source.ts b/packages/@aws-cdk/toolkit-lib/lib/api/cloud-assembly/private/cached-source.ts index 647d094c..f790acc0 100644 --- a/packages/@aws-cdk/toolkit-lib/lib/api/cloud-assembly/private/cached-source.ts +++ b/packages/@aws-cdk/toolkit-lib/lib/api/cloud-assembly/private/cached-source.ts @@ -1,5 +1,5 @@ -import { CloudAssembly } from '@aws-cdk/cx-api'; -import { ICloudAssemblySource } from '../types'; +import type { CloudAssembly } from '@aws-cdk/cx-api'; +import type { ICloudAssemblySource } from '../types'; /** * A CloudAssemblySource that is caching its result once produced. diff --git a/packages/@aws-cdk/toolkit-lib/lib/api/cloud-assembly/private/context-aware-source.ts b/packages/@aws-cdk/toolkit-lib/lib/api/cloud-assembly/private/context-aware-source.ts index 4846bc4e..ac7f98ca 100644 --- a/packages/@aws-cdk/toolkit-lib/lib/api/cloud-assembly/private/context-aware-source.ts +++ b/packages/@aws-cdk/toolkit-lib/lib/api/cloud-assembly/private/context-aware-source.ts @@ -1,11 +1,11 @@ import type { MissingContext } from '@aws-cdk/cloud-assembly-schema'; -import * as cxapi from '@aws-cdk/cx-api'; -import { ToolkitServices } from '../../../toolkit/private'; +import type * as cxapi from '@aws-cdk/cx-api'; +import type { ToolkitServices } from '../../../toolkit/private'; import { type Context, contextproviders, PROJECT_CONTEXT } from '../../aws-cdk'; import { CODES } from '../../io/private'; -import { ActionAwareIoHost } from '../../shared-private'; +import type { ActionAwareIoHost } from '../../shared-private'; import { ToolkitError } from '../../shared-public'; -import { ICloudAssemblySource } from '../types'; +import type { ICloudAssemblySource } from '../types'; export interface ContextAwareCloudAssemblyProps { /** diff --git a/packages/@aws-cdk/toolkit-lib/lib/api/cloud-assembly/private/identity-source.ts b/packages/@aws-cdk/toolkit-lib/lib/api/cloud-assembly/private/identity-source.ts index 3121645c..997bd609 100644 --- a/packages/@aws-cdk/toolkit-lib/lib/api/cloud-assembly/private/identity-source.ts +++ b/packages/@aws-cdk/toolkit-lib/lib/api/cloud-assembly/private/identity-source.ts @@ -1,5 +1,5 @@ import type * as cxapi from '@aws-cdk/cx-api'; -import { ICloudAssemblySource } from '../types'; +import type { ICloudAssemblySource } from '../types'; /** * A CloudAssemblySource that is representing a already existing and produced CloudAssembly. diff --git a/packages/@aws-cdk/toolkit-lib/lib/api/cloud-assembly/private/prepare-source.ts b/packages/@aws-cdk/toolkit-lib/lib/api/cloud-assembly/private/prepare-source.ts index fc8e8e04..3c6f3cb0 100644 --- a/packages/@aws-cdk/toolkit-lib/lib/api/cloud-assembly/private/prepare-source.ts +++ b/packages/@aws-cdk/toolkit-lib/lib/api/cloud-assembly/private/prepare-source.ts @@ -7,9 +7,9 @@ import * as fs from 'fs-extra'; import { lte } from 'semver'; import { prepareDefaultEnvironment as oldPrepare, prepareContext, spaceAvailableForContext, Settings, loadTree, some, versionNumber } from '../../../api/aws-cdk'; import { splitBySize } from '../../../private/util'; -import { ToolkitServices } from '../../../toolkit/private'; +import type { ToolkitServices } from '../../../toolkit/private'; import { CODES } from '../../io/private'; -import { ActionAwareIoHost } from '../../shared-private'; +import type { ActionAwareIoHost } from '../../shared-private'; import { ToolkitError } from '../../shared-public'; import type { AppSynthOptions, LoadAssemblyOptions } from '../source-builder'; diff --git a/packages/@aws-cdk/toolkit-lib/lib/api/cloud-assembly/private/source-builder.ts b/packages/@aws-cdk/toolkit-lib/lib/api/cloud-assembly/private/source-builder.ts index 41dd4870..970c823b 100644 --- a/packages/@aws-cdk/toolkit-lib/lib/api/cloud-assembly/private/source-builder.ts +++ b/packages/@aws-cdk/toolkit-lib/lib/api/cloud-assembly/private/source-builder.ts @@ -1,14 +1,16 @@ import * as cxapi from '@aws-cdk/cx-api'; import * as fs from 'fs-extra'; import type { AssemblyDirectoryProps, AssemblySourceProps, ICloudAssemblySource } from '../'; -import { ContextAwareCloudAssembly, ContextAwareCloudAssemblyProps } from './context-aware-source'; +import type { ContextAwareCloudAssemblyProps } from './context-aware-source'; +import { ContextAwareCloudAssembly } from './context-aware-source'; import { execInChildProcess } from './exec'; import { assemblyFromDirectory, changeDir, determineOutputDirectory, guessExecutable, prepareDefaultEnvironment, withContext, withEnv } from './prepare-source'; -import { ToolkitServices } from '../../../toolkit/private'; -import { Context, ILock, RWLock, Settings } from '../../aws-cdk'; +import type { ToolkitServices } from '../../../toolkit/private'; +import type { ILock } from '../../aws-cdk'; +import { Context, RWLock, Settings } from '../../aws-cdk'; import { CODES } from '../../io/private'; import { ToolkitError, AssemblyError } from '../../shared-public'; -import { AssemblyBuilder } from '../source-builder'; +import type { AssemblyBuilder } from '../source-builder'; export abstract class CloudAssemblySourceBuilder { /** diff --git a/packages/@aws-cdk/toolkit-lib/lib/api/cloud-assembly/private/stack-assembly.ts b/packages/@aws-cdk/toolkit-lib/lib/api/cloud-assembly/private/stack-assembly.ts index 53b9388f..aa77946f 100644 --- a/packages/@aws-cdk/toolkit-lib/lib/api/cloud-assembly/private/stack-assembly.ts +++ b/packages/@aws-cdk/toolkit-lib/lib/api/cloud-assembly/private/stack-assembly.ts @@ -1,9 +1,10 @@ -import * as cxapi from '@aws-cdk/cx-api'; +import type * as cxapi from '@aws-cdk/cx-api'; import { major } from 'semver'; import { CloudAssembly, sanitizePatterns, StackCollection, ExtendedStackSelection as CliExtendedStackSelection } from '../../aws-cdk'; import { ToolkitError } from '../../shared-public'; -import { ExpandStackSelection, StackSelectionStrategy, StackSelector } from '../stack-selector'; -import { ICloudAssemblySource } from '../types'; +import type { StackSelector } from '../stack-selector'; +import { ExpandStackSelection, StackSelectionStrategy } from '../stack-selector'; +import type { ICloudAssemblySource } from '../types'; /** * A single Cloud Assembly wrapped to provide additional stack operations. diff --git a/packages/@aws-cdk/toolkit-lib/lib/api/cloud-assembly/private/stack-selectors.ts b/packages/@aws-cdk/toolkit-lib/lib/api/cloud-assembly/private/stack-selectors.ts index 31f114b9..49c2d67f 100644 --- a/packages/@aws-cdk/toolkit-lib/lib/api/cloud-assembly/private/stack-selectors.ts +++ b/packages/@aws-cdk/toolkit-lib/lib/api/cloud-assembly/private/stack-selectors.ts @@ -1,4 +1,5 @@ -import { StackSelectionStrategy, StackSelector } from '../stack-selector'; +import type { StackSelector } from '../stack-selector'; +import { StackSelectionStrategy } from '../stack-selector'; export const ALL_STACKS: StackSelector = { strategy: StackSelectionStrategy.ALL_STACKS, diff --git a/packages/@aws-cdk/toolkit-lib/lib/api/io/private/timer.ts b/packages/@aws-cdk/toolkit-lib/lib/api/io/private/timer.ts index 95117d64..d083df1c 100644 --- a/packages/@aws-cdk/toolkit-lib/lib/api/io/private/timer.ts +++ b/packages/@aws-cdk/toolkit-lib/lib/api/io/private/timer.ts @@ -1,7 +1,7 @@ import { format } from 'util'; import { CODES } from './codes'; import { formatTime } from '../../../private/util'; -import { ActionAwareIoHost } from '../../shared-private'; +import type { ActionAwareIoHost } from '../../shared-private'; /** * Helper class to measure the time of code. diff --git a/packages/@aws-cdk/toolkit-lib/lib/toolkit/private/index.ts b/packages/@aws-cdk/toolkit-lib/lib/toolkit/private/index.ts index b2bc975e..40f1d654 100644 --- a/packages/@aws-cdk/toolkit-lib/lib/toolkit/private/index.ts +++ b/packages/@aws-cdk/toolkit-lib/lib/toolkit/private/index.ts @@ -1,8 +1,8 @@ -import { SdkProvider } from '../../api/aws-cdk'; -import { ICloudAssemblySource } from '../../api/cloud-assembly'; +import type { SdkProvider } from '../../api/aws-cdk'; +import type { ICloudAssemblySource } from '../../api/cloud-assembly'; import { CachedCloudAssemblySource, StackAssembly } from '../../api/cloud-assembly/private'; -import { ActionAwareIoHost } from '../../api/shared-private'; +import type { ActionAwareIoHost } from '../../api/shared-private'; /** * Helper struct to pass internal services around. diff --git a/packages/@aws-cdk/toolkit-lib/lib/toolkit/toolkit.ts b/packages/@aws-cdk/toolkit-lib/lib/toolkit/toolkit.ts index 0d7b94d2..88472b64 100644 --- a/packages/@aws-cdk/toolkit-lib/lib/toolkit/toolkit.ts +++ b/packages/@aws-cdk/toolkit-lib/lib/toolkit/toolkit.ts @@ -3,9 +3,11 @@ import * as cxapi from '@aws-cdk/cx-api'; import * as chalk from 'chalk'; import * as chokidar from 'chokidar'; import * as fs from 'fs-extra'; -import { assemblyFromSource, ToolkitServices } from './private'; -import { AssemblyData } from './types'; -import { BootstrapEnvironments, BootstrapOptions, BootstrapSource } from '../actions/bootstrap'; +import type { ToolkitServices } from './private'; +import { assemblyFromSource } from './private'; +import type { AssemblyData } from './types'; +import type { BootstrapEnvironments, BootstrapOptions } from '../actions/bootstrap'; +import { BootstrapSource } from '../actions/bootstrap'; import { AssetBuildTime, type DeployOptions, RequireApproval } from '../actions/deploy'; import { type ExtendedDeployOptions, buildParameterMap, createHotswapPropertyOverrides, removePublishedAssets } from '../actions/deploy/private'; import { type DestroyOptions } from '../actions/destroy'; @@ -13,16 +15,21 @@ import { diffRequiresApproval } from '../actions/diff/private'; import { type ListOptions } from '../actions/list'; import { type RollbackOptions } from '../actions/rollback'; import { type SynthOptions } from '../actions/synth'; -import { WatchOptions } from '../actions/watch'; +import type { WatchOptions } from '../actions/watch'; import { patternsArrayForWatch } from '../actions/watch/private'; import { type SdkConfig } from '../api/aws-auth'; -import { DEFAULT_TOOLKIT_STACK_NAME, Bootstrapper, SdkProvider, SuccessfulDeployStackResult, StackCollection, Deployments, HotswapMode, ResourceMigrator, tagsForStack, CliIoHost, Concurrency, WorkGraphBuilder, AssetBuildNode, AssetPublishNode, StackNode, CloudWatchLogEventMonitor, findCloudWatchLogGroups, StackDetails } from '../api/aws-cdk'; -import { ICloudAssemblySource, StackSelectionStrategy } from '../api/cloud-assembly'; -import { ALL_STACKS, CloudAssemblySourceBuilder, IdentityCloudAssemblySource, StackAssembly } from '../api/cloud-assembly/private'; -import { IIoHost, IoMessageLevel } from '../api/io'; +import type { SuccessfulDeployStackResult, StackCollection, Concurrency, AssetBuildNode, AssetPublishNode, StackNode, StackDetails } from '../api/aws-cdk'; +import { DEFAULT_TOOLKIT_STACK_NAME, Bootstrapper, SdkProvider, Deployments, HotswapMode, ResourceMigrator, tagsForStack, CliIoHost, WorkGraphBuilder, CloudWatchLogEventMonitor, findCloudWatchLogGroups } from '../api/aws-cdk'; +import type { ICloudAssemblySource } from '../api/cloud-assembly'; +import { StackSelectionStrategy } from '../api/cloud-assembly'; +import type { StackAssembly } from '../api/cloud-assembly/private'; +import { ALL_STACKS, CloudAssemblySourceBuilder, IdentityCloudAssemblySource } from '../api/cloud-assembly/private'; +import type { IIoHost, IoMessageLevel } from '../api/io'; import { Timer, CODES, asSdkLogger, withoutColor, withoutEmojis, withTrimmedWhitespace } from '../api/io/private'; -import { ActionAwareIoHost, withAction } from '../api/shared-private'; -import { ToolkitAction, ToolkitError } from '../api/shared-public'; +import type { ActionAwareIoHost } from '../api/shared-private'; +import { withAction } from '../api/shared-private'; +import type { ToolkitAction } from '../api/shared-public'; +import { ToolkitError } from '../api/shared-public'; import { obscureTemplate, serializeStructure, validateSnsTopicArn, formatTime, formatErrorMessage } from '../private/util'; import { pLimit } from '../util/concurrency'; diff --git a/packages/@aws-cdk/toolkit-lib/lib/toolkit/types.ts b/packages/@aws-cdk/toolkit-lib/lib/toolkit/types.ts index 9b5fd436..4c29336a 100644 --- a/packages/@aws-cdk/toolkit-lib/lib/toolkit/types.ts +++ b/packages/@aws-cdk/toolkit-lib/lib/toolkit/types.ts @@ -1,4 +1,4 @@ -import { SuccessfulDeployStackResult as _SuccessfulDeployStackResult } from '../api/aws-cdk'; +import type { SuccessfulDeployStackResult as _SuccessfulDeployStackResult } from '../api/aws-cdk'; /** * Assembly data returned in the payload of an IO Message. diff --git a/packages/@aws-cdk/toolkit-lib/lib/util/concurrency.ts b/packages/@aws-cdk/toolkit-lib/lib/util/concurrency.ts index e59afc99..55b9d624 100644 --- a/packages/@aws-cdk/toolkit-lib/lib/util/concurrency.ts +++ b/packages/@aws-cdk/toolkit-lib/lib/util/concurrency.ts @@ -3,5 +3,5 @@ */ // Must use a require() otherwise esbuild complains about calling a namespace // eslint-disable-next-line @typescript-eslint/no-require-imports -const pLimit: typeof import('p-limit') = require('p-limit'); +import pLimit = require('p-limit'); export { pLimit }; diff --git a/packages/@aws-cdk/toolkit-lib/test/_helpers/index.ts b/packages/@aws-cdk/toolkit-lib/test/_helpers/index.ts index 94fd8b47..7c64d3df 100644 --- a/packages/@aws-cdk/toolkit-lib/test/_helpers/index.ts +++ b/packages/@aws-cdk/toolkit-lib/test/_helpers/index.ts @@ -1,6 +1,7 @@ import * as fs from 'node:fs'; import * as path from 'node:path'; -import { AssemblyDirectoryProps, Toolkit, ToolkitError } from '../../lib'; +import type { AssemblyDirectoryProps, Toolkit } from '../../lib'; +import { ToolkitError } from '../../lib'; import { determineOutputDirectory } from '../../lib/api/cloud-assembly/private'; export * from './test-io-host'; diff --git a/packages/@aws-cdk/toolkit-lib/test/_helpers/jest-bufferedconsole.ts b/packages/@aws-cdk/toolkit-lib/test/_helpers/jest-bufferedconsole.ts index 470cb208..043b819e 100644 --- a/packages/@aws-cdk/toolkit-lib/test/_helpers/jest-bufferedconsole.ts +++ b/packages/@aws-cdk/toolkit-lib/test/_helpers/jest-bufferedconsole.ts @@ -3,7 +3,7 @@ * A Jest environment that buffers outputs to `console.log()` and only shows it for failing tests. */ import type { EnvironmentContext, JestEnvironment, JestEnvironmentConfig } from '@jest/environment'; -import { Circus } from '@jest/types'; +import type { Circus } from '@jest/types'; import { TestEnvironment as NodeEnvironment } from 'jest-environment-node'; interface ConsoleMessage { diff --git a/packages/@aws-cdk/toolkit-lib/test/_helpers/test-cloud-assembly-source.ts b/packages/@aws-cdk/toolkit-lib/test/_helpers/test-cloud-assembly-source.ts index 8d1819aa..dcf5094c 100644 --- a/packages/@aws-cdk/toolkit-lib/test/_helpers/test-cloud-assembly-source.ts +++ b/packages/@aws-cdk/toolkit-lib/test/_helpers/test-cloud-assembly-source.ts @@ -1,8 +1,9 @@ import * as fs from 'fs'; import * as path from 'path'; -import { ArtifactType, ArtifactMetadataEntryType, AssetManifest, AssetMetadataEntry, AwsCloudFormationStackProperties, MetadataEntry, MissingContext } from '@aws-cdk/cloud-assembly-schema'; +import type { AssetManifest, AssetMetadataEntry, AwsCloudFormationStackProperties, MetadataEntry, MissingContext } from '@aws-cdk/cloud-assembly-schema'; +import { ArtifactType, ArtifactMetadataEntryType } from '@aws-cdk/cloud-assembly-schema'; import * as cxapi from '@aws-cdk/cx-api'; -import { ICloudAssemblySource } from '../../lib'; +import type { ICloudAssemblySource } from '../../lib'; const DEFAULT_FAKE_TEMPLATE = { No: 'Resources' }; const SOME_RECENT_SCHEMA_VERSION = '30.0.0'; diff --git a/packages/@aws-cdk/toolkit-lib/test/_helpers/test-io-host.ts b/packages/@aws-cdk/toolkit-lib/test/_helpers/test-io-host.ts index 440dc594..fe2975bf 100644 --- a/packages/@aws-cdk/toolkit-lib/test/_helpers/test-io-host.ts +++ b/packages/@aws-cdk/toolkit-lib/test/_helpers/test-io-host.ts @@ -1,4 +1,4 @@ -import { IIoHost, IoMessage, IoMessageLevel, IoRequest } from '../../lib'; +import type { IIoHost, IoMessage, IoMessageLevel, IoRequest } from '../../lib'; import { isMessageRelevantForLevel } from '../../lib/api/io/private/level-priority'; /** diff --git a/packages/@aws-cdk/toolkit-lib/test/actions/bootstrap.test.ts b/packages/@aws-cdk/toolkit-lib/test/actions/bootstrap.test.ts index 4e32790c..9a657923 100644 --- a/packages/@aws-cdk/toolkit-lib/test/actions/bootstrap.test.ts +++ b/packages/@aws-cdk/toolkit-lib/test/actions/bootstrap.test.ts @@ -1,14 +1,15 @@ import * as path from 'node:path'; +import type { Stack } from '@aws-sdk/client-cloudformation'; import { CreateChangeSetCommand, DeleteChangeSetCommand, DescribeChangeSetCommand, DescribeStacksCommand, ExecuteChangeSetCommand, - Stack, } from '@aws-sdk/client-cloudformation'; import { bold } from 'chalk'; -import { BootstrapEnvironments, BootstrapOptions, BootstrapSource, BootstrapStackParameters } from '../../lib/actions/bootstrap'; +import type { BootstrapOptions } from '../../lib/actions/bootstrap'; +import { BootstrapEnvironments, BootstrapSource, BootstrapStackParameters } from '../../lib/actions/bootstrap'; import { SdkProvider } from '../../lib/api/aws-cdk'; import { Toolkit } from '../../lib/toolkit'; import { TestIoHost, builderFixture } from '../_helpers'; diff --git a/packages/@aws-cdk/toolkit-lib/test/actions/list.test.ts b/packages/@aws-cdk/toolkit-lib/test/actions/list.test.ts index bfb96d28..53c48f74 100644 --- a/packages/@aws-cdk/toolkit-lib/test/actions/list.test.ts +++ b/packages/@aws-cdk/toolkit-lib/test/actions/list.test.ts @@ -2,7 +2,8 @@ import { ArtifactMetadataEntryType } from '@aws-cdk/cloud-assembly-schema'; import { StackSelectionStrategy } from '../../lib'; import { Toolkit } from '../../lib/toolkit'; import { TestIoHost } from '../_helpers'; -import { TestCloudAssemblySource, TestStackArtifact } from '../_helpers/test-cloud-assembly-source'; +import type { TestStackArtifact } from '../_helpers/test-cloud-assembly-source'; +import { TestCloudAssemblySource } from '../_helpers/test-cloud-assembly-source'; const ioHost = new TestIoHost(); const toolkit = new Toolkit({ ioHost }); diff --git a/packages/@aws-cdk/user-input-gen/.eslintrc.json b/packages/@aws-cdk/user-input-gen/.eslintrc.json index 691af85e..d45b6fa3 100644 --- a/packages/@aws-cdk/user-input-gen/.eslintrc.json +++ b/packages/@aws-cdk/user-input-gen/.eslintrc.json @@ -78,9 +78,7 @@ } } ], - "import/no-duplicates": [ - "error" - ], + "import/no-duplicates": "error", "no-shadow": [ "off" ], @@ -274,9 +272,6 @@ ] } ], - "no-duplicate-imports": [ - "error" - ], "semi": [ "error", "always" diff --git a/packages/@aws-cdk/yarn-cling/.eslintrc.json b/packages/@aws-cdk/yarn-cling/.eslintrc.json index 691af85e..d45b6fa3 100644 --- a/packages/@aws-cdk/yarn-cling/.eslintrc.json +++ b/packages/@aws-cdk/yarn-cling/.eslintrc.json @@ -78,9 +78,7 @@ } } ], - "import/no-duplicates": [ - "error" - ], + "import/no-duplicates": "error", "no-shadow": [ "off" ], @@ -274,9 +272,6 @@ ] } ], - "no-duplicate-imports": [ - "error" - ], "semi": [ "error", "always" diff --git a/packages/aws-cdk/.eslintrc.json b/packages/aws-cdk/.eslintrc.json index adc00fd8..acd4d9b6 100644 --- a/packages/aws-cdk/.eslintrc.json +++ b/packages/aws-cdk/.eslintrc.json @@ -76,9 +76,7 @@ } } ], - "import/no-duplicates": [ - "error" - ], + "import/no-duplicates": "error", "no-shadow": [ "off" ], @@ -272,9 +270,6 @@ ] } ], - "no-duplicate-imports": [ - "error" - ], "semi": [ "error", "always" diff --git a/packages/cdk-assets/.eslintrc.json b/packages/cdk-assets/.eslintrc.json index a98cc2ab..3754aaa5 100644 --- a/packages/cdk-assets/.eslintrc.json +++ b/packages/cdk-assets/.eslintrc.json @@ -78,9 +78,7 @@ } } ], - "import/no-duplicates": [ - "error" - ], + "import/no-duplicates": "error", "no-shadow": [ "off" ], @@ -274,9 +272,6 @@ ] } ], - "no-duplicate-imports": [ - "error" - ], "semi": [ "error", "always" diff --git a/packages/cdk/.eslintrc.json b/packages/cdk/.eslintrc.json index 691af85e..d45b6fa3 100644 --- a/packages/cdk/.eslintrc.json +++ b/packages/cdk/.eslintrc.json @@ -78,9 +78,7 @@ } } ], - "import/no-duplicates": [ - "error" - ], + "import/no-duplicates": "error", "no-shadow": [ "off" ], @@ -274,9 +272,6 @@ ] } ], - "no-duplicate-imports": [ - "error" - ], "semi": [ "error", "always" diff --git a/projenrc/eslint.ts b/projenrc/eslint.ts index a4df9d08..406ea414 100644 --- a/projenrc/eslint.ts +++ b/projenrc/eslint.ts @@ -62,7 +62,8 @@ export const ESLINT_RULES = { ], // Cannot import from the same module twice - 'no-duplicate-imports': ['error'], + // we prefer `import/no-duplicate` over `no-duplicate-imports` since the former can handle type imports + 'import/no-duplicates': 'error', // Cannot shadow names 'no-shadow': ['off'],