Skip to content

Commit 4c966e8

Browse files
authored
Handle DynamoDB DocumentClient in getTSQualifiedNameFromClientName (#830)
1 parent cf39a69 commit 4c966e8

File tree

3 files changed

+33
-60
lines changed

3 files changed

+33
-60
lines changed

src/transforms/v2-to-v3/ts-type/getClientTypeNames.ts

Lines changed: 3 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,14 @@ import { Collection, Identifier, JSCodeshift, TSQualifiedName, TSTypeReference }
33
import { ImportSpecifierType } from "../modules";
44
import { getImportSpecifiers } from "../modules/importModule";
55
import { getClientDeepImportPath } from "../utils";
6+
import { DeepPartial, getTSQualifiedNameFromClientName } from "./getTSQualifiedNameFromClientName";
67

78
export interface GetClientTypeNamesOptions {
89
v2ClientName: string;
910
v2GlobalName?: string;
1011
v2ClientLocalName: string;
1112
}
1213

13-
type DeepPartial<T> = Partial<{ [P in keyof T]: DeepPartial<T[P]> }>;
14-
1514
const getRightIdentifierName = (
1615
j: JSCodeshift,
1716
source: Collection<unknown>,
@@ -32,46 +31,18 @@ export const getClientTypeNames = (
3231
const clientTypeNames = [];
3332

3433
if (v2GlobalName) {
35-
// Support for DynamoDB.DocumentClient
36-
const [clientName, subClientName] = v2ClientName.split(".");
37-
3834
clientTypeNames.push(
3935
...getRightIdentifierName(j, source, {
4036
typeName: {
41-
left: {
42-
...(subClientName
43-
? {
44-
left: {
45-
left: { type: "Identifier", name: v2GlobalName },
46-
right: { type: "Identifier", name: clientName },
47-
},
48-
right: { type: "Identifier", name: subClientName },
49-
}
50-
: {
51-
left: { type: "Identifier", name: v2GlobalName },
52-
right: { type: "Identifier", name: clientName },
53-
}),
54-
},
37+
left: getTSQualifiedNameFromClientName(v2ClientName, v2GlobalName),
5538
},
5639
})
5740
);
5841
}
5942

60-
// Support for DynamoDB.DocumentClient
61-
const [clientName, subClientName] = v2ClientLocalName!.split(".");
62-
6343
clientTypeNames.push(
6444
...getRightIdentifierName(j, source, {
65-
typeName: {
66-
...(subClientName
67-
? {
68-
left: {
69-
left: { type: "Identifier", name: clientName },
70-
right: { type: "Identifier", name: subClientName },
71-
},
72-
}
73-
: { left: { type: "Identifier", name: clientName } }),
74-
},
45+
typeName: getTSQualifiedNameFromClientName(v2ClientLocalName),
7546
})
7647
);
7748

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,39 @@
11
import { TSQualifiedName } from "jscodeshift";
22

3+
export type DeepPartial<T> = Partial<{ [P in keyof T]: DeepPartial<T[P]> }>;
4+
35
export const getTSQualifiedNameFromClientName = (
4-
v2GlobalName: string,
5-
clientName: string
6-
): TSQualifiedName => {
6+
v2ClientName: string,
7+
v2GlobalName?: string
8+
): DeepPartial<TSQualifiedName> => {
79
// Support for DynamoDB.DocumentClient
8-
const [clientNamePrefix, clientNameSuffix] = clientName.split(".");
10+
const [clientNamePrefix, clientNameSuffix] = v2ClientName.split(".");
11+
12+
if (v2GlobalName) {
13+
if (clientNameSuffix) {
14+
return {
15+
left: {
16+
left: { type: "Identifier", name: v2GlobalName },
17+
right: { type: "Identifier", name: clientNamePrefix },
18+
},
19+
right: { type: "Identifier", name: clientNameSuffix },
20+
};
21+
}
22+
23+
return {
24+
left: { type: "Identifier", name: v2GlobalName },
25+
right: { type: "Identifier", name: clientNamePrefix },
26+
};
27+
}
928

1029
if (clientNameSuffix) {
1130
return {
1231
left: {
13-
left: { type: "Identifier", name: v2GlobalName },
14-
right: { type: "Identifier", name: clientNamePrefix },
32+
left: { type: "Identifier", name: clientNamePrefix },
33+
right: { type: "Identifier", name: clientNameSuffix },
1534
},
16-
right: { type: "Identifier", name: clientNameSuffix },
17-
} as TSQualifiedName;
35+
};
1836
}
1937

20-
return {
21-
left: { type: "Identifier", name: v2GlobalName },
22-
right: { type: "Identifier", name: clientNamePrefix },
23-
} as TSQualifiedName;
38+
return { left: { type: "Identifier", name: clientNamePrefix } };
2439
};

src/transforms/v2-to-v3/ts-type/replaceTSTypeReference.ts

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ export const replaceTSTypeReference = (
3131
// Replace type reference to client created with global name.
3232
source
3333
.find(j.TSTypeReference, {
34-
typeName: getTSQualifiedNameFromClientName(v2GlobalName, v2ClientName),
34+
typeName: getTSQualifiedNameFromClientName(v2ClientName, v2GlobalName),
3535
})
3636
.replaceWith((v2ClientType) =>
3737
j.tsTypeReference(j.identifier(v3ClientName), v2ClientType.node.typeParameters)
@@ -41,7 +41,7 @@ export const replaceTSTypeReference = (
4141
source
4242
.find(j.TSTypeReference, {
4343
typeName: {
44-
left: getTSQualifiedNameFromClientName(v2GlobalName, v2ClientName),
44+
left: getTSQualifiedNameFromClientName(v2ClientName, v2GlobalName),
4545
},
4646
})
4747
.filter((v2ClientType) => isRightSectionIdentifier(v2ClientType.node))
@@ -58,21 +58,8 @@ export const replaceTSTypeReference = (
5858
.replaceWith(() => j.tsTypeReference(j.identifier(v3ClientName)));
5959
}
6060

61-
const [clientNamePrefix, clientNameSuffix] = v2ClientLocalName.split(".");
62-
// Replace reference to client types created with client module.
6361
source
64-
.find(j.TSTypeReference, {
65-
typeName: {
66-
...(clientNameSuffix
67-
? {
68-
left: {
69-
left: { type: "Identifier", name: clientNamePrefix },
70-
right: { type: "Identifier", name: clientNameSuffix },
71-
},
72-
}
73-
: { left: { type: "Identifier", name: clientNamePrefix } }),
74-
},
75-
})
62+
.find(j.TSTypeReference, { typeName: getTSQualifiedNameFromClientName(v2ClientLocalName) })
7663
.filter((v2ClientType) => isRightSectionIdentifier(v2ClientType.node))
7764
.replaceWith((v2ClientType) => {
7865
const v2ClientTypeName = getRightIdentifierName(v2ClientType.node);

0 commit comments

Comments
 (0)