Skip to content

Commit 34c3fb7

Browse files
authored
Add utils remove(Require|Import)IdentifierName (#74)
1 parent 38a16cc commit 34c3fb7

File tree

7 files changed

+43
-65
lines changed

7 files changed

+43
-65
lines changed

.changeset/cold-clouds-hope.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+
Add utils remove(Require|Import)IdentifierName
Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { Collection, JSCodeshift } from "jscodeshift";
22

33
import { containsRequire } from "./containsRequire";
4-
import { removeDefaultImport } from "./removeDefaultImport";
5-
import { removeDefaultRequire } from "./removeDefaultRequire";
4+
import { removeImportIdentifierName } from "./removeImportIdentifierName";
5+
import { removeRequireIdentifierName } from "./removeRequireIdentifierName";
66

77
export const removeDefaultModuleIfNotUsed = (
88
j: JSCodeshift,
@@ -13,10 +13,14 @@ export const removeDefaultModuleIfNotUsed = (
1313

1414
// Only usage is import/require.
1515
if (identifierUsages.size() === 1) {
16+
const removeIdentifierNameOptions = {
17+
identifierName: defaultModuleName,
18+
literalValue: "aws-sdk",
19+
};
1620
if (containsRequire(j, source)) {
17-
removeDefaultRequire(j, source, defaultModuleName);
21+
removeRequireIdentifierName(j, source, removeIdentifierNameOptions);
1822
} else {
19-
removeDefaultImport(j, source, defaultModuleName);
23+
removeImportIdentifierName(j, source, removeIdentifierNameOptions);
2024
}
2125
}
2226
};

src/transforms/v2-to-v3/utils/removeDefaultImport.ts renamed to src/transforms/v2-to-v3/utils/removeImportIdentifierName.ts

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,24 @@
11
import { Collection, JSCodeshift } from "jscodeshift";
22

3-
export const removeDefaultImport = (
3+
export interface RemoveImportIdentifierNameOptions {
4+
identifierName: string;
5+
literalValue: string;
6+
}
7+
8+
export const removeImportIdentifierName = (
49
j: JSCodeshift,
510
source: Collection<any>,
6-
defaultImportName: string
11+
{ identifierName, literalValue }: RemoveImportIdentifierNameOptions
712
) => {
813
source
914
.find(j.ImportDeclaration, {
10-
specifiers: [{ local: { name: defaultImportName } }],
11-
source: { value: "aws-sdk" },
15+
specifiers: [{ local: { name: identifierName } }],
16+
source: { value: literalValue },
1217
})
1318
.forEach((declerationPath) => {
1419
// Remove default import from ImportDeclaration.
1520
declerationPath.value.specifiers = declerationPath.value.specifiers.filter(
16-
(specifier) => specifier.local.name !== defaultImportName
21+
(specifier) => specifier.local.name !== identifierName
1722
);
1823
// Remove ImportDeclaration if there are no other imports.
1924
if (declerationPath.value.specifiers.length === 0) {

src/transforms/v2-to-v3/utils/removeDefaultRequire.ts renamed to src/transforms/v2-to-v3/utils/removeRequireIdentifierName.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,21 @@ import { Collection, Identifier, JSCodeshift, VariableDeclarator } from "jscodes
22

33
import { getRequireVariableDeclaration } from "./getRequireVariableDeclaration";
44

5-
export const removeDefaultRequire = (
5+
export interface RemoveRequireIdentifierNameOptions {
6+
identifierName: string;
7+
literalValue: string;
8+
}
9+
10+
export const removeRequireIdentifierName = (
611
j: JSCodeshift,
712
source: Collection<any>,
8-
defaultRequireName: string
13+
{ identifierName, literalValue }: RemoveRequireIdentifierNameOptions
914
) => {
10-
getRequireVariableDeclaration(j, source, "aws-sdk")
15+
getRequireVariableDeclaration(j, source, literalValue)
1116
.filter(
1217
(nodePath) =>
1318
((nodePath.value.declarations[0] as VariableDeclarator).id as Identifier).name ===
14-
defaultRequireName
19+
identifierName
1520
)
1621
.remove();
1722
};

src/transforms/v2-to-v3/utils/removeV2ClientImport.ts

Lines changed: 0 additions & 28 deletions
This file was deleted.
Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,19 @@
11
import { Collection, JSCodeshift } from "jscodeshift";
22

33
import { containsRequire } from "./containsRequire";
4-
import { removeV2ClientImport } from "./removeV2ClientImport";
5-
import { removeV2ClientRequire } from "./removeV2ClientRequire";
4+
import { removeImportIdentifierName } from "./removeImportIdentifierName";
5+
import { removeRequireIdentifierName } from "./removeRequireIdentifierName";
66

77
export const removeV2ClientModule = (
88
j: JSCodeshift,
99
source: Collection<any>,
1010
v2ClientName: string
11-
) =>
12-
containsRequire(j, source)
13-
? removeV2ClientRequire(j, source, v2ClientName)
14-
: removeV2ClientImport(j, source, v2ClientName);
11+
) => {
12+
const removeIdentifierNameOptions = {
13+
identifierName: v2ClientName,
14+
literalValue: `aws-sdk/clients/${v2ClientName.toLowerCase()}`,
15+
};
16+
return containsRequire(j, source)
17+
? removeRequireIdentifierName(j, source, removeIdentifierNameOptions)
18+
: removeImportIdentifierName(j, source, removeIdentifierNameOptions);
19+
};

src/transforms/v2-to-v3/utils/removeV2ClientRequire.ts

Lines changed: 0 additions & 18 deletions
This file was deleted.

0 commit comments

Comments
 (0)