Skip to content

Commit 316883b

Browse files
authored
Create utility getV2DefaultImportName (#21)
1 parent 26968bd commit 316883b

File tree

5 files changed

+39
-18
lines changed

5 files changed

+39
-18
lines changed

src/transforms/v2-to-v3/transformer.ts

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,28 +4,32 @@ import findImports from "jscodeshift-find-imports";
44
import {
55
addV3ClientImport,
66
getV2ClientNames,
7+
getV2DefaultImportName,
78
getV3ClientName,
89
getV3ClientPackageName,
910
replaceClientCreation,
1011
} from "./utils";
1112

1213
export default function transformer(file: FileInfo, api: API) {
1314
const j = api.jscodeshift;
14-
const { statement } = j.template;
1515
const source = j(file.source);
1616

17-
const imports = findImports(source, statement`import AWS from 'aws-sdk'`);
18-
for (const importObj of Object.values(imports)) {
19-
if (importObj.type === "Identifier") {
20-
const v2ClientNames = getV2ClientNames(j, source, importObj);
17+
const v2DefaultImportName = getV2DefaultImportName(j, source);
18+
if (!v2DefaultImportName) {
19+
return source.toSource();
20+
}
21+
22+
const v2ClientNames = getV2ClientNames(j, source, v2DefaultImportName);
2123

22-
for (const v2ClientName of v2ClientNames) {
23-
const v3ClientName = getV3ClientName(v2ClientName);
24-
const v3ClientPackageName = getV3ClientPackageName(v2ClientName);
25-
addV3ClientImport(j, source, { v3ClientName, v3ClientPackageName });
26-
replaceClientCreation(j, source, { importObj, v2ClientName, v3ClientName });
27-
}
28-
}
24+
for (const v2ClientName of v2ClientNames) {
25+
const v3ClientName = getV3ClientName(v2ClientName);
26+
const v3ClientPackageName = getV3ClientPackageName(v2ClientName);
27+
addV3ClientImport(j, source, { v3ClientName, v3ClientPackageName });
28+
replaceClientCreation(j, source, {
29+
v2DefaultImportName,
30+
v2ClientName,
31+
v3ClientName,
32+
});
2933
}
3034

3135
return source.toSource();

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@ import { Collection, Identifier, JSCodeshift, MemberExpression } from "jscodeshi
33
export const getV2ClientNames = (
44
j: JSCodeshift,
55
source: Collection<any>,
6-
importObj: Identifier
6+
v2DefaultImportName: string
77
): Array<string> =>
88
source
99
.find(j.NewExpression, {
1010
callee: {
1111
type: "MemberExpression",
12-
object: { type: "Identifier", name: importObj.name },
12+
object: { type: "Identifier", name: v2DefaultImportName },
1313
property: { type: "Identifier" },
1414
},
1515
})
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { Collection, JSCodeshift } from "jscodeshift";
2+
import findImports from "jscodeshift-find-imports";
3+
4+
export const getV2DefaultImportName = (
5+
j: JSCodeshift,
6+
source: Collection<any>
7+
): string | undefined => {
8+
const { statement } = j.template;
9+
const imports = findImports(source, statement`import AWS from 'aws-sdk'`);
10+
11+
for (const importObj of Object.values(imports)) {
12+
if (importObj.type === "Identifier") return importObj.name;
13+
}
14+
15+
return undefined;
16+
};
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
export * from "./addV3ClientImport";
22
export * from "./getV2ClientNames";
3+
export * from "./getV2DefaultImportName";
34
export * from "./getV3ClientName";
45
export * from "./getV3ClientPackageName";
56
export * from "./replaceClientCreation";

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
1-
import { Collection, Identifier, JSCodeshift } from "jscodeshift";
1+
import { Collection, JSCodeshift } from "jscodeshift";
22

33
export interface ReplaceClientCreationOptions {
4-
importObj: Identifier;
54
v2ClientName: string;
65
v3ClientName: string;
6+
v2DefaultImportName: string;
77
}
88

99
// Replace v2 client creation with v3 client creation.
1010
export const replaceClientCreation = (
1111
j: JSCodeshift,
1212
source: Collection<any>,
13-
{ importObj, v2ClientName, v3ClientName }: ReplaceClientCreationOptions
13+
{ v2DefaultImportName, v2ClientName, v3ClientName }: ReplaceClientCreationOptions
1414
): void => {
1515
source
1616
.find(j.NewExpression, {
1717
callee: {
18-
object: { type: "Identifier", name: importObj.name },
18+
object: { type: "Identifier", name: v2DefaultImportName },
1919
property: { type: "Identifier", name: v2ClientName },
2020
},
2121
})

0 commit comments

Comments
 (0)