Skip to content

Commit e623543

Browse files
authored
Use filter API to shortlist import declarations to be deleted (#321)
1 parent 9a501bf commit e623543

File tree

7 files changed

+31
-11
lines changed

7 files changed

+31
-11
lines changed

.changeset/nervous-worms-grin.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"aws-sdk-js-codemod": patch
3+
---
4+
5+
Use filter API to shortlist import declarations to be deleted
Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,13 @@
1-
import { getServiceImportOutput } from "./getServiceImportOutput";
1+
import { CLIENTS_TO_TEST } from "./config";
2+
import { getV3ClientsNewExpressionCode } from "./getV3ClientsNewExpressionCode";
3+
import { getV3PackageImportsCode } from "./getV3PackageImportsCode";
24

3-
export const getServiceImportDeepOutput = getServiceImportOutput;
5+
export const getServiceImportDeepOutput = (codegenComment: string) => {
6+
let serviceImportOutputContent = `${codegenComment}\n`;
7+
8+
serviceImportOutputContent += getV3PackageImportsCode(CLIENTS_TO_TEST);
9+
serviceImportOutputContent += `\n`;
10+
serviceImportOutputContent += getV3ClientsNewExpressionCode(CLIENTS_TO_TEST);
11+
12+
return serviceImportOutputContent;
13+
};

scripts/generateNewClientTests/getServiceImportInput.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,7 @@ import { getV2ClientsNewExpressionCode } from "./getV2ClientsNewExpressionCode";
44
export const getServiceImportInput = (codegenComment: string) => {
55
let serviceImportInputContent = `${codegenComment}\n`;
66

7-
for (const clientName of CLIENTS_TO_TEST) {
8-
serviceImportInputContent += `import { ${clientName} } from "aws-sdk";\n`;
9-
}
7+
serviceImportInputContent += `import { ${CLIENTS_TO_TEST.join(", ")} } from "aws-sdk";\n`;
108
serviceImportInputContent += `\n`;
119
serviceImportInputContent += getV2ClientsNewExpressionCode(CLIENTS_TO_TEST);
1210

scripts/generateNewClientTests/getServiceImportOutput.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
import { CLIENTS_TO_TEST } from "./config";
2+
import { getClientNamesSortedByPackageName } from "./getClientNamesSortedByPackageName";
23
import { getV3ClientsNewExpressionCode } from "./getV3ClientsNewExpressionCode";
34
import { getV3PackageImportsCode } from "./getV3PackageImportsCode";
45

56
export const getServiceImportOutput = (codegenComment: string) => {
67
let serviceImportOutputContent = `${codegenComment}\n`;
78

8-
serviceImportOutputContent += getV3PackageImportsCode(CLIENTS_TO_TEST);
9+
serviceImportOutputContent += getV3PackageImportsCode(
10+
getClientNamesSortedByPackageName(CLIENTS_TO_TEST)
11+
);
912
serviceImportOutputContent += `\n`;
1013
serviceImportOutputContent += getV3ClientsNewExpressionCode(CLIENTS_TO_TEST);
1114

src/transforms/v2-to-v3/__fixtures__/new-client/service-import.input.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
// This file is generated by scripts/generateNewClientTests/index.ts
22
// Do not edit this file directly. Instead, edit the script and run it to regenerate this file.
33
"use strict";
4-
import { ACM } from "aws-sdk";
5-
import { AccessAnalyzer } from "aws-sdk";
6-
import { Discovery } from "aws-sdk";
4+
import { ACM, AccessAnalyzer, Discovery } from "aws-sdk";
75

86
new ACM();
97
new AccessAnalyzer();

src/transforms/v2-to-v3/__fixtures__/new-client/service-import.output.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
// This file is generated by scripts/generateNewClientTests/index.ts
22
// Do not edit this file directly. Instead, edit the script and run it to regenerate this file.
33
"use strict";
4-
import { ACM } from "@aws-sdk/client-acm";
54
import { AccessAnalyzer } from "@aws-sdk/client-accessanalyzer";
5+
import { ACM } from "@aws-sdk/client-acm";
66
import { ApplicationDiscoveryService as Discovery } from "@aws-sdk/client-application-discovery-service";
77

88
new ACM();

src/transforms/v2-to-v3/modules/removeImportNamed.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,15 @@ export const removeImportNamed = (
1313
) => {
1414
source
1515
.find(j.ImportDeclaration, {
16-
specifiers: [{ local: { name: localName } }],
1716
source: { value: sourceValue },
1817
})
18+
.filter(
19+
(importDeclaration) =>
20+
importDeclaration.value.specifiers !== undefined &&
21+
importDeclaration.value.specifiers.some(
22+
(specifier) => specifier.type === "ImportSpecifier" && specifier.local?.name === localName
23+
)
24+
)
1925
.forEach((declarationPath) => {
2026
// Remove named import from ImportDeclaration if there is a match.
2127
declarationPath.value.specifiers = declarationPath.value.specifiers?.filter((specifier) => {

0 commit comments

Comments
 (0)