Skip to content

Commit bca11ad

Browse files
authored
Add arguments in ArrowFunction/Return while removing promise() (#353)
1 parent ff9b034 commit bca11ad

File tree

6 files changed

+51
-15
lines changed

6 files changed

+51
-15
lines changed

.changeset/heavy-lemons-train.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 callExpression arguments in ArrowFunction/Return while remove promise()

src/transforms/v2-to-v3/__fixtures__/api-promise/global-import.input.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import AWS from "aws-sdk";
22

3-
export const listTables = (client: AWS.DynamoDB) => client.listTables().promise();
3+
export const listTables = async (client: AWS.DynamoDB) => client.listTables().promise();
4+
export const listTagsOfResource = async (client: AWS.DynamoDB) =>
5+
client.listTagsOfResource({ ResourceArn: "STRING_VALUE" }).promise();
46

57
// Client as class member
68
class ClientClassMember {
@@ -11,6 +13,10 @@ class ClientClassMember {
1113
}
1214

1315
async listTables() {
14-
return await this.clientInClass.listTables().promise();
16+
return this.clientInClass.listTables().promise();
17+
}
18+
19+
async listTagsOfResource() {
20+
return this.clientInClass.listTagsOfResource({ ResourceArn: "STRING_VALUE" }).promise();
1521
}
1622
}

src/transforms/v2-to-v3/__fixtures__/api-promise/global-import.output.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import { DynamoDB } from "@aws-sdk/client-dynamodb";
22

3-
export const listTables = (client: DynamoDB) => client.listTables();
3+
export const listTables = async (client: DynamoDB) => client.listTables();
4+
export const listTagsOfResource = async (client: DynamoDB) =>
5+
client.listTagsOfResource({ ResourceArn: "STRING_VALUE" });
46

57
// Client as class member
68
class ClientClassMember {
@@ -11,6 +13,10 @@ class ClientClassMember {
1113
}
1214

1315
async listTables() {
14-
return await this.clientInClass.listTables();
16+
return this.clientInClass.listTables();
17+
}
18+
19+
async listTagsOfResource() {
20+
return this.clientInClass.listTagsOfResource({ ResourceArn: "STRING_VALUE" });
1521
}
1622
}

src/transforms/v2-to-v3/__fixtures__/api-promise/service-import.input.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import DynamoDB from "aws-sdk/clients/dynamodb";
22

3-
export const listTables = (client: DynamoDB) => client.listTables().promise();
3+
export const listTables = async (client: DynamoDB) => client.listTables().promise();
4+
export const listTagsOfResource = async (client: DynamoDB) =>
5+
client.listTagsOfResource({ ResourceArn: "STRING_VALUE" }).promise();
46

57
// Client as class member
68
class ClientClassMember {
@@ -11,6 +13,10 @@ class ClientClassMember {
1113
}
1214

1315
async listTables() {
14-
return await this.clientInClass.listTables().promise();
16+
return this.clientInClass.listTables().promise();
17+
}
18+
19+
async listTagsOfResource() {
20+
return this.clientInClass.listTagsOfResource({ ResourceArn: "STRING_VALUE" }).promise();
1521
}
1622
}

src/transforms/v2-to-v3/__fixtures__/api-promise/service-import.output.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import { DynamoDB } from "@aws-sdk/client-dynamodb";
22

3-
export const listTables = (client: DynamoDB) => client.listTables();
3+
export const listTables = async (client: DynamoDB) => client.listTables();
4+
export const listTagsOfResource = async (client: DynamoDB) =>
5+
client.listTagsOfResource({ ResourceArn: "STRING_VALUE" });
46

57
// Client as class member
68
class ClientClassMember {
@@ -11,6 +13,10 @@ class ClientClassMember {
1113
}
1214

1315
async listTables() {
14-
return await this.clientInClass.listTables();
16+
return this.clientInClass.listTables();
17+
}
18+
19+
async listTagsOfResource() {
20+
return this.clientInClass.listTagsOfResource({ ResourceArn: "STRING_VALUE" });
1521
}
1622
}

src/transforms/v2-to-v3/apis/removePromiseForCallExpression.ts

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,34 @@ import { ASTPath, CallExpression, MemberExpression } from "jscodeshift";
22

33
export const removePromiseForCallExpression = (callExpression: ASTPath<CallExpression>) => {
44
switch (callExpression.parentPath.value.type) {
5-
case "AwaitExpression":
5+
case "AwaitExpression": {
66
callExpression.parentPath.value.argument = (
77
callExpression.value.callee as MemberExpression
88
).object;
99
break;
10-
case "MemberExpression":
10+
}
11+
case "MemberExpression": {
1112
callExpression.parentPath.value.object = (
1213
callExpression.value.callee as MemberExpression
1314
).object;
1415
break;
15-
case "VariableDeclarator":
16+
}
17+
case "VariableDeclarator": {
1618
callExpression.parentPath.value.init = (
1719
callExpression.value.callee as MemberExpression
1820
).object;
1921
break;
22+
}
2023
case "ArrowFunctionExpression":
21-
case "ReturnStatement":
22-
callExpression.value.callee = (
23-
(callExpression.value.callee as MemberExpression).object as CallExpression
24-
).callee;
24+
case "ReturnStatement": {
25+
const currentCalleeObject = (callExpression.value.callee as MemberExpression)
26+
.object as CallExpression;
27+
if (currentCalleeObject.arguments.length > 0) {
28+
callExpression.value.arguments = currentCalleeObject.arguments;
29+
}
30+
callExpression.value.callee = currentCalleeObject.callee;
2531
break;
32+
}
2633
default:
2734
throw new Error(
2835
`Removal of .promise() not implemented for ${callExpression.parentPath.value.type}`

0 commit comments

Comments
 (0)