From c03e83ed97199c4860de350c05ad9a0f7045ab75 Mon Sep 17 00:00:00 2001 From: jagan Date: Mon, 24 Nov 2025 15:07:44 -0600 Subject: [PATCH 1/4] Fixed bare bone pattern rule for typed imports --- package.json | 2 +- src/aws/require-aws-bare-bones.spec.ts | 4 ++++ src/aws/require-aws-bare-bones.ts | 11 ++++------- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 5ef36ea..5416506 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@checkdigit/eslint-plugin", - "version": "7.17.0", + "version": "7.17.1", "description": "Check Digit eslint plugins", "keywords": [ "eslint", diff --git a/src/aws/require-aws-bare-bones.spec.ts b/src/aws/require-aws-bare-bones.spec.ts index 9000f2d..a0fdcf3 100644 --- a/src/aws/require-aws-bare-bones.spec.ts +++ b/src/aws/require-aws-bare-bones.spec.ts @@ -110,6 +110,10 @@ createTester().run(ruleId, rule, { { code: `import { type UploadOptions } from '@aws-sdk/lib-storage';`, }, + { + code: `import type { Credentials } from '@aws-sdk/client-sts';`, + only: true, + }, ], invalid: [ { diff --git a/src/aws/require-aws-bare-bones.ts b/src/aws/require-aws-bare-bones.ts index aa66731..c3fcc6e 100644 --- a/src/aws/require-aws-bare-bones.ts +++ b/src/aws/require-aws-bare-bones.ts @@ -6,8 +6,8 @@ import getDocumentationUrl from '../get-documentation-url.ts'; export const ruleId = 'require-aws-bare-bones'; export const MESSAGE_ID_AGGREGATED_CLIENT = 'noAggregatedClient'; -const BARE_BONES_SUFFIXES = new Set(['Client', 'Command', 'Exception', 'Input', 'Output']); -const AWS_LIB_AGGREGATED_SUFFIXES = new Set(['Document', 'Paginator', 'Utils', 'Service', 'Collection', 'Manager']); +const BARE_BONES_SUFFIXES = ['Client', 'Command', 'Exception', 'Input', 'Output']; +const AWS_LIB_AGGREGATED_SUFFIXES = ['Document', 'Paginator', 'Utils', 'Service', 'Collection', 'Manager']; const AWS_SDK_CLIENT = '@aws-sdk/client-'; const AWS_SDK_LIB = '@aws-sdk/lib-'; @@ -22,7 +22,7 @@ const kebabToPascal = (str: string): string => .map((item) => item.charAt(0).toUpperCase() + item.slice(1)) .join(''); -const endsWithAnySuffix = (name: string, suffixes: Set): boolean => { +const endsWithAnySuffix = (name: string, suffixes: string[]): boolean => { for (const suffix of suffixes) { if (name.endsWith(suffix)) { return true; @@ -64,16 +64,13 @@ const rule: ESLintUtils.RuleModule = create create(context) { return { ImportDeclaration(node) { - if (!isAwsSdkClientModule(node)) { + if (node.importKind === 'type' || !isAwsSdkClientModule(node)) { return; } for (const specifier of node.specifiers) { - const isTypeImport = specifier.type === AST_NODE_TYPES.ImportSpecifier && specifier.importKind === 'type'; - if ( specifier.type === AST_NODE_TYPES.ImportSpecifier && - !isTypeImport && isAggregatedClient(specifier.local.name, node.source.value) ) { context.report({ From 98a06742ee545af4c49158f0ef06df578e83eaeb Mon Sep 17 00:00:00 2001 From: jagan Date: Mon, 24 Nov 2025 15:08:19 -0600 Subject: [PATCH 2/4] Fixed bare bone pattern rule for typed imports --- package-lock.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index dd2fdcd..7389dda 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@checkdigit/eslint-plugin", - "version": "7.17.0", + "version": "7.17.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@checkdigit/eslint-plugin", - "version": "7.17.0", + "version": "7.17.1", "license": "MIT", "dependencies": { "@typescript-eslint/type-utils": "^8.46.0", From abdbb5466de7ba6ec1e5c5b6ac29afb4fe90e572 Mon Sep 17 00:00:00 2001 From: jagan Date: Mon, 24 Nov 2025 15:11:51 -0600 Subject: [PATCH 3/4] Fixed bare bone pattern rule for typed imports --- src/aws/require-aws-bare-bones.spec.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/aws/require-aws-bare-bones.spec.ts b/src/aws/require-aws-bare-bones.spec.ts index a0fdcf3..9cc2ec7 100644 --- a/src/aws/require-aws-bare-bones.spec.ts +++ b/src/aws/require-aws-bare-bones.spec.ts @@ -112,7 +112,6 @@ createTester().run(ruleId, rule, { }, { code: `import type { Credentials } from '@aws-sdk/client-sts';`, - only: true, }, ], invalid: [ From ea348b22298135bc5d106ea843a3342c3f10c859 Mon Sep 17 00:00:00 2001 From: jagan Date: Mon, 24 Nov 2025 15:42:33 -0600 Subject: [PATCH 4/4] Fixed bare bone pattern rule for typed imports --- src/aws/require-aws-bare-bones.spec.ts | 3 +++ src/aws/require-aws-bare-bones.ts | 1 + 2 files changed, 4 insertions(+) diff --git a/src/aws/require-aws-bare-bones.spec.ts b/src/aws/require-aws-bare-bones.spec.ts index 9cc2ec7..d390ca7 100644 --- a/src/aws/require-aws-bare-bones.spec.ts +++ b/src/aws/require-aws-bare-bones.spec.ts @@ -113,6 +113,9 @@ createTester().run(ruleId, rule, { { code: `import type { Credentials } from '@aws-sdk/client-sts';`, }, + { + code: `import { S3Client, type S3 } from '@aws-sdk/client-s3';`, + }, ], invalid: [ { diff --git a/src/aws/require-aws-bare-bones.ts b/src/aws/require-aws-bare-bones.ts index c3fcc6e..d80cd55 100644 --- a/src/aws/require-aws-bare-bones.ts +++ b/src/aws/require-aws-bare-bones.ts @@ -71,6 +71,7 @@ const rule: ESLintUtils.RuleModule = create for (const specifier of node.specifiers) { if ( specifier.type === AST_NODE_TYPES.ImportSpecifier && + specifier.importKind !== 'type' && isAggregatedClient(specifier.local.name, node.source.value) ) { context.report({