Skip to content

Commit 59a8b7a

Browse files
authored
Simplify getClientNamedRecord using import specifiers utilities (#792)
1 parent d8a511c commit 59a8b7a

File tree

4 files changed

+39
-85
lines changed

4 files changed

+39
-85
lines changed

.changeset/gold-cheetahs-occur.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": minor
3+
---
4+
5+
Simplify getClientNamedRecord using import specifiers utilities

src/transforms/v2-to-v3/client-names/getClientNamesRecord.ts

Lines changed: 34 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,49 @@
11
import { Collection, JSCodeshift } from "jscodeshift";
22

3+
import { CLIENT_NAMES, PACKAGE_NAME } from "../config";
34
import { ImportType } from "../modules";
5+
import * as importEqualsModule from "../modules/importEqualsModule";
6+
import * as importModule from "../modules/importModule";
7+
import * as requireModule from "../modules/requireModule";
8+
import { getClientDeepImportPath } from "../utils";
49
import { getClientNamesFromDeepImport } from "./getClientNamesFromDeepImport";
5-
import { getClientNamesRecordFromImport } from "./getClientNamesRecordFromImport";
6-
import { getClientNamesRecordFromRequire } from "./getClientNamesRecordFromRequire";
710

811
export const getClientNamesRecord = (
912
j: JSCodeshift,
1013
source: Collection<unknown>,
1114
importType: ImportType
1215
) => {
13-
const clientNamesFromDeepImport = getClientNamesFromDeepImport(source.toSource());
16+
const clientNamesRecord: Record<string, string> = {};
1417

15-
const clientNamesRecord =
18+
const { getImportSpecifiers } =
1619
importType === ImportType.REQUIRE
17-
? getClientNamesRecordFromRequire(j, source, clientNamesFromDeepImport)
18-
: getClientNamesRecordFromImport(j, source, clientNamesFromDeepImport);
20+
? requireModule
21+
: importType === ImportType.IMPORT_EQUALS
22+
? importEqualsModule
23+
: importModule;
24+
25+
const specifiersFromNamedImport = getImportSpecifiers(j, source, PACKAGE_NAME).filter(
26+
(importSpecifier) => importSpecifier.importedName
27+
);
28+
29+
for (const { importedName, localName } of specifiersFromNamedImport) {
30+
const clientName = importedName ?? localName;
31+
if (CLIENT_NAMES.includes(clientName)) {
32+
clientNamesRecord[clientName] = localName;
33+
}
34+
}
35+
36+
const clientNamesFromDeepImport = getClientNamesFromDeepImport(source.toSource());
37+
for (const clientName of clientNamesFromDeepImport) {
38+
const deepImportPath = getClientDeepImportPath(clientName);
39+
40+
const specifiersFromDeepImport = getImportSpecifiers(j, source, deepImportPath).filter(
41+
(importSpecifier) => !importSpecifier.importedName
42+
);
43+
if (specifiersFromDeepImport.length > 0) {
44+
clientNamesRecord[clientName] = specifiersFromDeepImport[0].localName;
45+
}
46+
}
1947

2048
// Populate client names for type transformations
2149
// Ref: https://github.com/aws/aws-sdk-js-codemod/issues/663

src/transforms/v2-to-v3/client-names/getClientNamesRecordFromImport.ts

Lines changed: 0 additions & 43 deletions
This file was deleted.

src/transforms/v2-to-v3/client-names/getClientNamesRecordFromRequire.ts

Lines changed: 0 additions & 36 deletions
This file was deleted.

0 commit comments

Comments
 (0)