Skip to content

Commit 1225844

Browse files
authored
Transform checks for error.code to error.name in callbacks (#820)
1 parent cd5ccc8 commit 1225844

11 files changed

+132
-1
lines changed

.changeset/four-pets-push.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+
Transform checks for error.code to error.name in callbacks

src/transforms/v2-to-v3/__fixtures__/aws-error-name/global-import.input.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,3 +56,15 @@ client
5656
}
5757
}
5858
);
59+
60+
client.createBucket({ Bucket }, (error, response) => {
61+
if (error) {
62+
if (error.code === "BucketAlreadyExists") {
63+
// Handle BucketAlreadyExists error
64+
} else {
65+
// Handle other error.
66+
}
67+
} else {
68+
// Consume the response
69+
}
70+
});

src/transforms/v2-to-v3/__fixtures__/aws-error-name/global-import.input.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,3 +63,17 @@ export const funcPromiseCatchCallback = async (client: AWS.S3) => {
6363
}
6464
);
6565
}
66+
67+
export const funcCallback = async (client: AWS.S3) => {
68+
client.createBucket({ Bucket }, (error, response) => {
69+
if (error) {
70+
if (error.code === "BucketAlreadyExists") {
71+
// Handle BucketAlreadyExists error
72+
} else {
73+
// Handle other error.
74+
}
75+
} else {
76+
// Consume the response
77+
}
78+
});
79+
}

src/transforms/v2-to-v3/__fixtures__/aws-error-name/global-import.output.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,3 +53,15 @@ client
5353
}
5454
}
5555
);
56+
57+
client.createBucket({ Bucket }, (error, response) => {
58+
if (error) {
59+
if (error.name === "BucketAlreadyExists") {
60+
// Handle BucketAlreadyExists error
61+
} else {
62+
// Handle other error.
63+
}
64+
} else {
65+
// Consume the response
66+
}
67+
});

src/transforms/v2-to-v3/__fixtures__/aws-error-name/global-import.output.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,3 +60,17 @@ export const funcPromiseCatchCallback = async (client: S3) => {
6060
}
6161
);
6262
}
63+
64+
export const funcCallback = async (client: S3) => {
65+
client.createBucket({ Bucket }, (error, response) => {
66+
if (error) {
67+
if (error.name === "BucketAlreadyExists") {
68+
// Handle BucketAlreadyExists error
69+
} else {
70+
// Handle other error.
71+
}
72+
} else {
73+
// Consume the response
74+
}
75+
});
76+
}

src/transforms/v2-to-v3/__fixtures__/aws-error-name/service-import.input.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,3 +56,15 @@ client
5656
}
5757
}
5858
);
59+
60+
client.createBucket({ Bucket }, (error, response) => {
61+
if (error) {
62+
if (error.code === "BucketAlreadyExists") {
63+
// Handle BucketAlreadyExists error
64+
} else {
65+
// Handle other error.
66+
}
67+
} else {
68+
// Consume the response
69+
}
70+
});

src/transforms/v2-to-v3/__fixtures__/aws-error-name/service-import.input.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,3 +63,17 @@ export const funcPromiseCatchCallback = async (client: S3) => {
6363
}
6464
);
6565
}
66+
67+
export const funcCallback = async (client: S3) => {
68+
client.createBucket({ Bucket }, (error, response) => {
69+
if (error) {
70+
if (error.code === "BucketAlreadyExists") {
71+
// Handle BucketAlreadyExists error
72+
} else {
73+
// Handle other error.
74+
}
75+
} else {
76+
// Consume the response
77+
}
78+
});
79+
}

src/transforms/v2-to-v3/__fixtures__/aws-error-name/service-import.output.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,4 +53,16 @@ client
5353
}
5454
}
5555
);
56+
57+
client.createBucket({ Bucket }, (error, response) => {
58+
if (error) {
59+
if (error.name === "BucketAlreadyExists") {
60+
// Handle BucketAlreadyExists error
61+
} else {
62+
// Handle other error.
63+
}
64+
} else {
65+
// Consume the response
66+
}
67+
});
5668

src/transforms/v2-to-v3/__fixtures__/aws-error-name/service-import.output.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,3 +60,17 @@ export const funcPromiseCatchCallback = async (client: S3) => {
6060
}
6161
);
6262
}
63+
64+
export const funcCallback = async (client: S3) => {
65+
client.createBucket({ Bucket }, (error, response) => {
66+
if (error) {
67+
if (error.name === "BucketAlreadyExists") {
68+
// Handle BucketAlreadyExists error
69+
} else {
70+
// Handle other error.
71+
}
72+
} else {
73+
// Consume the response
74+
}
75+
});
76+
}

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

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,5 +129,27 @@ export const renameErrorCodeWithName = (
129129

130130
renameCodeWithName(j, j(failureCallbackFunction.body), errorParam.name);
131131
});
132+
133+
// Replace error.code with error.name in callbacks.
134+
callExpressions.forEach((callExpression) => {
135+
if (callExpression.value.arguments.length !== 2) {
136+
return;
137+
}
138+
139+
if (!FUNCTION_EXPRESSION_TYPES.includes(callExpression.value.arguments[1].type)) {
140+
return;
141+
}
142+
143+
const callbackFunction = callExpression.value.arguments[1] as
144+
| FunctionExpression
145+
| ArrowFunctionExpression;
146+
const errorParam = callbackFunction.params[0];
147+
148+
if (errorParam?.type !== "Identifier") {
149+
return;
150+
}
151+
152+
renameCodeWithName(j, j(callbackFunction.body), errorParam.name);
153+
});
132154
}
133155
};

0 commit comments

Comments
 (0)