aws / aws/aws-sdk-js-codemod

[Bug?]: Codemod incorrectly generates duplicate WriteRequest imports for DynamoDB (v2 → v3 transform)

Open
#1,013 0 comments 0 reactions 0 assignees View on GitHub
bug triage
Dominant language
TypeScript
Stars
89
Forks
13
Avg merge
9h 59m
Merged PRs (30d)
1

Description

### Self-service

- [ ] I'd be willing to implement a fix

### Describe the bug

When migrating from aws-sdk v2 to v3 using the codemod (npx aws-sdk-js-codemod -t v2-to-v3 src), the tool fails to distinguish between AWS.DynamoDB.WriteRequest and AWS.DynamoDB.DocumentClient.WriteRequest.

As a result, it produces duplicate v3 imports for WriteRequest from both:
```js
import WriteRequest = AWS_lib_dynamodb.WriteRequest;
import WriteRequest = AWS_client_dynamodb.WriteRequest
```
which causes a Duplicate identifier 'WriteRequest' error.

**1. Start with v2 code using both:**

```js
AWS.DynamoDB.WriteRequest
AWS.DynamoDB.DocumentClient.WriteRequest
```

**2. Run:**

```console
npx aws-sdk-js-codemod -t v2-to-v3 src
```

**3. Output contains conflicting imports:**

```js
import WriteRequest = AWS_lib_dynamodb.WriteRequest;
import WriteRequest = AWS_client_dynamodb.WriteRequest;
```

### Observed behavior

Duplicate identifier 'WriteRequest'.

### Expected behavior

**Codemod should differentiate between:**

```
DocumentClient.WriteRequest → @aws-sdk/lib-dynamodb equivalents
DynamoDB.WriteRequest → @aws-sdk/client-dynamodb models
```

**OR**

Automatically rename one of them

### Environment

```shell
aws-sdk-js-codemod: 3.0.2
- jscodeshift: 17.3.0
- recast: 0.23.11
```

### Additional context

_No response_

Contributor guide

Open the contributing guide

Research direction

Start by running `npx aws-sdk-js-codemod -t v2-to-v3 src` on v2 input containing both `AWS.DynamoDB.WriteRequest` and `AWS.DynamoDB.DocumentClient.WriteRequest`. Trace the v2-to-v3 transform and its generated imports, then verify that the two types resolve to their intended packages without a duplicate identifier, or are renamed consistently.

Written by the indexing model from the issue text.

Assessment

Tech stack
aws, javascript, node.js, typescript
Domain
tooling
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.