Skip to content

Commit 06a92c7

Browse files
authored
Compute variable name for import equals from v2ClientName (#426)
1 parent 962e179 commit 06a92c7

10 files changed

+95
-9
lines changed

.changeset/brown-pears-call.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+
Compute variable name for import equals from v2ClientName
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { CLIENTS_TO_TEST } from "./config";
2+
import { getClientDeepImportPath } from "./getClientDeepImportPath";
3+
import { getClientNameWithLocalSuffix } from "./getClientNameWithLocalSuffix";
4+
import { getV2ClientsNewExpressionCode } from "./getV2ClientsNewExpressionCode";
5+
6+
export const getServiceImportEqualsWithNameInput = (codegenComment: string) => {
7+
let content = `${codegenComment}\n`;
8+
9+
for (const clientName of CLIENTS_TO_TEST) {
10+
const importName = getClientNameWithLocalSuffix(clientName);
11+
content += `import ${importName} = require("${getClientDeepImportPath(clientName)}");\n`;
12+
}
13+
content += getV2ClientsNewExpressionCode(CLIENTS_TO_TEST.map(getClientNameWithLocalSuffix));
14+
15+
return content;
16+
};
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { CLIENTS_TO_TEST } from "./config";
2+
import { getClientNameWithLocalSuffix } from "./getClientNameWithLocalSuffix";
3+
import { getV3ClientsNewExpressionCode } from "./getV3ClientsNewExpressionCode";
4+
import { getV3PackageImportEqualsCode } from "./getV3PackageImportEqualsCode";
5+
6+
export const getServiceImportEqualsWithNameOutput = (codegenComment: string) => {
7+
let content = `${codegenComment};\n`;
8+
9+
content += getV3PackageImportEqualsCode(CLIENTS_TO_TEST, { useLocalSuffix: true });
10+
content += getV3ClientsNewExpressionCode(CLIENTS_TO_TEST.map(getClientNameWithLocalSuffix));
11+
12+
return content;
13+
};

scripts/generateNewClientTests/getV3PackageImportEqualsCode.ts

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,31 @@ import {
44
CLIENT_PACKAGE_NAMES_MAP,
55
} from "../../src/transforms/v2-to-v3/config";
66
import { getV3DefaultLocalName } from "../../src/transforms/v2-to-v3/utils";
7+
import { getClientNameWithLocalSuffix } from "./getClientNameWithLocalSuffix";
78

8-
export const getV3PackageImportEqualsCode = (clientsToTest: typeof CLIENT_NAMES) => {
9+
export interface V3PackageImportEqualsCodeOptions {
10+
useLocalSuffix?: boolean;
11+
}
12+
13+
export const getV3PackageImportEqualsCode = (
14+
clientsToTest: typeof CLIENT_NAMES,
15+
options?: V3PackageImportEqualsCodeOptions
16+
) => {
917
let content = ``;
18+
const { useLocalSuffix = false } = options || {};
1019

1120
for (const v2ClientName of clientsToTest) {
1221
const v3ClientDefaultLocalName = getV3DefaultLocalName(v2ClientName);
1322
const v3ClientPackageName = `@aws-sdk/${CLIENT_PACKAGE_NAMES_MAP[v2ClientName]}`;
1423
content += `import ${v3ClientDefaultLocalName} = require("${v3ClientPackageName}");\n\n`;
1524

1625
const v3ClientName = CLIENT_NAMES_MAP[v2ClientName];
26+
const v2ClientLocalName = useLocalSuffix
27+
? getClientNameWithLocalSuffix(v2ClientName)
28+
: v2ClientName;
29+
1730
const v3ObjectPattern =
18-
v3ClientName === v2ClientName ? v3ClientName : `${v3ClientName}: ${v2ClientName}`;
31+
v3ClientName === v2ClientLocalName ? v3ClientName : `${v3ClientName}: ${v2ClientLocalName}`;
1932
content +=
2033
`const {\n` + ` ${v3ObjectPattern}\n` + `} = ${getV3DefaultLocalName(v2ClientName)};\n\n`;
2134
}

scripts/generateNewClientTests/index.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ import { getServiceImportDeepWithNameInput } from "./getServiceImportDeepWithNam
2525
import { getServiceImportDeepWithNameOutput } from "./getServiceImportDeepWithNameOutput";
2626
import { getServiceImportEqualsInput } from "./getServiceImportEqualsInput";
2727
import { getServiceImportEqualsOutput } from "./getServiceImportEqualsOutput";
28+
import { getServiceImportEqualsWithNameInput } from "./getServiceImportEqualsWithNameInput";
29+
import { getServiceImportEqualsWithNameOutput } from "./getServiceImportEqualsWithNameOutput";
2830
import { getServiceImportInput } from "./getServiceImportInput";
2931
import { getServiceImportOutput } from "./getServiceImportOutput";
3032
import { getServiceImportWithNameInput } from "./getServiceImportWithNameInput";
@@ -64,6 +66,8 @@ const newClientTestsPath = join(__dirname, "..", "..", newClientsTestsFolder);
6466
["service-import.output.js", getServiceImportOutput],
6567
["service-import-equals.input.ts", getServiceImportEqualsInput],
6668
["service-import-equals.output.ts", getServiceImportEqualsOutput],
69+
["service-import-equals-with-name.input.ts", getServiceImportEqualsWithNameInput],
70+
["service-import-equals-with-name.output.ts", getServiceImportEqualsWithNameOutput],
6771
["service-import-deep.input.js", getServiceImportDeepInput],
6872
["service-import-deep.output.js", getServiceImportDeepOutput],
6973
["service-import-deep-with-name.input.js", getServiceImportDeepWithNameInput],
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
// This file is generated by scripts/generateNewClientTests/index.ts
2+
// Do not edit this file directly. Instead, edit the script and run it to regenerate this file.
3+
"use strict";
4+
import ACMClient = require("aws-sdk/clients/acm");
5+
import AccessAnalyzerClient = require("aws-sdk/clients/accessanalyzer");
6+
import DiscoveryClient = require("aws-sdk/clients/discovery");
7+
new ACMClient();
8+
new AccessAnalyzerClient();
9+
new DiscoveryClient();
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
// This file is generated by scripts/generateNewClientTests/index.ts
2+
// Do not edit this file directly. Instead, edit the script and run it to regenerate this file.
3+
"use strict";;
4+
import AWS_ACM = require("@aws-sdk/client-acm");
5+
6+
const {
7+
ACM: ACMClient
8+
} = AWS_ACM;
9+
10+
import AWS_AccessAnalyzer = require("@aws-sdk/client-accessanalyzer");
11+
12+
const {
13+
AccessAnalyzer: AccessAnalyzerClient
14+
} = AWS_AccessAnalyzer;
15+
16+
import AWS_Discovery = require("@aws-sdk/client-application-discovery-service");
17+
18+
const {
19+
ApplicationDiscoveryService: DiscoveryClient
20+
} = AWS_Discovery;
21+
22+
new ACMClient();
23+
new AccessAnalyzerClient();
24+
new DiscoveryClient();

src/transforms/v2-to-v3/modules/addV3ClientDefaultImportEquals.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { Collection, JSCodeshift } from "jscodeshift";
22

33
import { getV3DefaultLocalName } from "../utils";
44
import { getImportEqualsDeclaration } from "./getImportEqualsDeclaration";
5+
import { getImportEqualsLocalNameSuffix } from "./getImportEqualsLocalNameSuffix";
56
import { getV2ImportEqualsDeclaration } from "./getV2ImportEqualsDeclaration";
67
import { V3ClientModulesOptions } from "./types";
78

@@ -10,9 +11,7 @@ export const addV3ClientDefaultImportEquals = (
1011
source: Collection<unknown>,
1112
{ v2ClientLocalName, v2ClientName, v2GlobalName, v3ClientPackageName }: V3ClientModulesOptions
1213
) => {
13-
const localNameSuffix = v3ClientPackageName.startsWith("@aws-sdk/client-")
14-
? v2ClientLocalName
15-
: v3ClientPackageName.substring(9).replace(/-/g, "_");
14+
const localNameSuffix = getImportEqualsLocalNameSuffix(v2ClientName, v3ClientPackageName);
1615
const v3ClientDefaultLocalName = getV3DefaultLocalName(localNameSuffix);
1716
const existingImportEquals = source.find(
1817
j.TSImportEqualsDeclaration,

src/transforms/v2-to-v3/modules/addV3ClientNamedImportEquals.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { Collection, JSCodeshift } from "jscodeshift";
33
import { getV3DefaultLocalName } from "../utils";
44
import { addV3ClientDefaultImportEquals } from "./addV3ClientDefaultImportEquals";
55
import { getImportEqualsDeclaration } from "./getImportEqualsDeclaration";
6+
import { getImportEqualsLocalNameSuffix } from "./getImportEqualsLocalNameSuffix";
67
import { getV3ClientRequireProperty } from "./getV3ClientRequireProperty";
78
import { objectPatternPropertyCompareFn } from "./objectPatternPropertyCompareFn";
89
import { V3ClientModulesOptions, V3ClientRequirePropertyOptions } from "./types";
@@ -13,11 +14,9 @@ export const addV3ClientNamedImportEquals = (
1314
options: V3ClientModulesOptions & V3ClientRequirePropertyOptions
1415
) => {
1516
const { keyName, valueName, ...v3ClientModulesOptions } = options;
16-
const { v2ClientLocalName, v3ClientPackageName } = v3ClientModulesOptions;
17+
const { v2ClientName, v3ClientPackageName } = v3ClientModulesOptions;
1718

18-
const localNameSuffix = v3ClientPackageName.startsWith("@aws-sdk/client-")
19-
? v2ClientLocalName
20-
: v3ClientPackageName.substring(9).replace(/-/g, "_");
19+
const localNameSuffix = getImportEqualsLocalNameSuffix(v2ClientName, v3ClientPackageName);
2120
const v3ClientDefaultLocalName = getV3DefaultLocalName(localNameSuffix);
2221
const namedImportObjectProperty = getV3ClientRequireProperty(j, { keyName, valueName });
2322

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
export const getImportEqualsLocalNameSuffix = (v2ClientName: string, v3ClientPackageName: string) =>
2+
v3ClientPackageName.startsWith("@aws-sdk/client-")
3+
? v2ClientName
4+
: v3ClientPackageName.substring(9).replace(/-/g, "_");

0 commit comments

Comments
 (0)