Skip to content

Commit

Permalink
Add utils remove(Require|Import)IdentifierName (#74)
Browse files Browse the repository at this point in the history
  • Loading branch information
trivikr committed Mar 8, 2022
1 parent 38a16cc commit 34c3fb7
Show file tree
Hide file tree
Showing 7 changed files with 43 additions and 65 deletions.
5 changes: 5 additions & 0 deletions .changeset/cold-clouds-hope.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"aws-sdk-js-codemod": patch
---

Add utils remove(Require|Import)IdentifierName
12 changes: 8 additions & 4 deletions src/transforms/v2-to-v3/utils/removeDefaultModuleIfNotUsed.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { Collection, JSCodeshift } from "jscodeshift";

import { containsRequire } from "./containsRequire";
import { removeDefaultImport } from "./removeDefaultImport";
import { removeDefaultRequire } from "./removeDefaultRequire";
import { removeImportIdentifierName } from "./removeImportIdentifierName";
import { removeRequireIdentifierName } from "./removeRequireIdentifierName";

export const removeDefaultModuleIfNotUsed = (
j: JSCodeshift,
Expand All @@ -13,10 +13,14 @@ export const removeDefaultModuleIfNotUsed = (

// Only usage is import/require.
if (identifierUsages.size() === 1) {
const removeIdentifierNameOptions = {
identifierName: defaultModuleName,
literalValue: "aws-sdk",
};
if (containsRequire(j, source)) {
removeDefaultRequire(j, source, defaultModuleName);
removeRequireIdentifierName(j, source, removeIdentifierNameOptions);
} else {
removeDefaultImport(j, source, defaultModuleName);
removeImportIdentifierName(j, source, removeIdentifierNameOptions);
}
}
};
Original file line number Diff line number Diff line change
@@ -1,19 +1,24 @@
import { Collection, JSCodeshift } from "jscodeshift";

export const removeDefaultImport = (
export interface RemoveImportIdentifierNameOptions {
identifierName: string;
literalValue: string;
}

export const removeImportIdentifierName = (
j: JSCodeshift,
source: Collection<any>,
defaultImportName: string
{ identifierName, literalValue }: RemoveImportIdentifierNameOptions
) => {
source
.find(j.ImportDeclaration, {
specifiers: [{ local: { name: defaultImportName } }],
source: { value: "aws-sdk" },
specifiers: [{ local: { name: identifierName } }],
source: { value: literalValue },
})
.forEach((declerationPath) => {
// Remove default import from ImportDeclaration.
declerationPath.value.specifiers = declerationPath.value.specifiers.filter(
(specifier) => specifier.local.name !== defaultImportName
(specifier) => specifier.local.name !== identifierName
);
// Remove ImportDeclaration if there are no other imports.
if (declerationPath.value.specifiers.length === 0) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,21 @@ import { Collection, Identifier, JSCodeshift, VariableDeclarator } from "jscodes

import { getRequireVariableDeclaration } from "./getRequireVariableDeclaration";

export const removeDefaultRequire = (
export interface RemoveRequireIdentifierNameOptions {
identifierName: string;
literalValue: string;
}

export const removeRequireIdentifierName = (
j: JSCodeshift,
source: Collection<any>,
defaultRequireName: string
{ identifierName, literalValue }: RemoveRequireIdentifierNameOptions
) => {
getRequireVariableDeclaration(j, source, "aws-sdk")
getRequireVariableDeclaration(j, source, literalValue)
.filter(
(nodePath) =>
((nodePath.value.declarations[0] as VariableDeclarator).id as Identifier).name ===
defaultRequireName
identifierName
)
.remove();
};
28 changes: 0 additions & 28 deletions src/transforms/v2-to-v3/utils/removeV2ClientImport.ts

This file was deleted.

17 changes: 11 additions & 6 deletions src/transforms/v2-to-v3/utils/removeV2ClientModule.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,19 @@
import { Collection, JSCodeshift } from "jscodeshift";

import { containsRequire } from "./containsRequire";
import { removeV2ClientImport } from "./removeV2ClientImport";
import { removeV2ClientRequire } from "./removeV2ClientRequire";
import { removeImportIdentifierName } from "./removeImportIdentifierName";
import { removeRequireIdentifierName } from "./removeRequireIdentifierName";

export const removeV2ClientModule = (
j: JSCodeshift,
source: Collection<any>,
v2ClientName: string
) =>
containsRequire(j, source)
? removeV2ClientRequire(j, source, v2ClientName)
: removeV2ClientImport(j, source, v2ClientName);
) => {
const removeIdentifierNameOptions = {
identifierName: v2ClientName,
literalValue: `aws-sdk/clients/${v2ClientName.toLowerCase()}`,
};
return containsRequire(j, source)
? removeRequireIdentifierName(j, source, removeIdentifierNameOptions)
: removeImportIdentifierName(j, source, removeIdentifierNameOptions);
};
18 changes: 0 additions & 18 deletions src/transforms/v2-to-v3/utils/removeV2ClientRequire.ts

This file was deleted.

0 comments on commit 34c3fb7

Please sign in to comment.