Skip to content

Commit c38b72a

Browse files
authored
Update existing v3 import if already present (#37)
1 parent 0311aa5 commit c38b72a

File tree

6 files changed

+38
-0
lines changed

6 files changed

+38
-0
lines changed

.changeset/lucky-socks-occur.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+
Update existing v3 import if already present
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import AWS from "aws-sdk";
2+
import { DynamoDB } from "@aws-sdk/client-dynamodb";
3+
4+
const client1 = new AWS.DynamoDB();
5+
const client2 = new DynamoDB();
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import { DynamoDB } from "@aws-sdk/client-dynamodb";
2+
3+
const client1 = new DynamoDB();
4+
const client2 = new DynamoDB();
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import AWS from "aws-sdk";
2+
import { DynamoDBClient } from "@aws-sdk/client-dynamodb";
3+
4+
const client1 = new AWS.DynamoDB();
5+
const client2 = new DynamoDBClient();
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import { DynamoDBClient, DynamoDB } from "@aws-sdk/client-dynamodb";
2+
3+
const client1 = new DynamoDB();
4+
const client2 = new DynamoDBClient();

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

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,21 @@ export const addV3ClientImport = (
1010
source: Collection<any>,
1111
{ v3ClientName, v3ClientPackageName }: AddV3ClientImportOptions
1212
): void => {
13+
const existingImports = source.find(j.ImportDeclaration, {
14+
source: { value: v3ClientPackageName },
15+
});
16+
17+
// Import decleration already exists.
18+
if (existingImports.size()) {
19+
existingImports.forEach((nodePath) => {
20+
// Append to existing import if specifier not present.
21+
if (!nodePath.value.specifiers.find((specifier) => specifier.local.name === v3ClientName)) {
22+
nodePath.value.specifiers.push(j.importSpecifier(j.identifier(v3ClientName)));
23+
}
24+
});
25+
return;
26+
}
27+
1328
source
1429
.find(j.ImportDeclaration)
1530
.filter((path) => path.value.source.value === "aws-sdk")

0 commit comments

Comments
 (0)