Skip to content

Commit

Permalink
Simplify getClientNamedRecord using import specifiers utilities (#792)
Browse files Browse the repository at this point in the history
  • Loading branch information
trivikr authored Feb 29, 2024
1 parent d8a511c commit 59a8b7a
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 85 deletions.
5 changes: 5 additions & 0 deletions .changeset/gold-cheetahs-occur.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"aws-sdk-js-codemod": minor
---

Simplify getClientNamedRecord using import specifiers utilities
40 changes: 34 additions & 6 deletions src/transforms/v2-to-v3/client-names/getClientNamesRecord.ts
Original file line number Diff line number Diff line change
@@ -1,21 +1,49 @@
import { Collection, JSCodeshift } from "jscodeshift";

import { CLIENT_NAMES, PACKAGE_NAME } from "../config";
import { ImportType } from "../modules";
import * as importEqualsModule from "../modules/importEqualsModule";
import * as importModule from "../modules/importModule";
import * as requireModule from "../modules/requireModule";
import { getClientDeepImportPath } from "../utils";
import { getClientNamesFromDeepImport } from "./getClientNamesFromDeepImport";
import { getClientNamesRecordFromImport } from "./getClientNamesRecordFromImport";
import { getClientNamesRecordFromRequire } from "./getClientNamesRecordFromRequire";

export const getClientNamesRecord = (
j: JSCodeshift,
source: Collection<unknown>,
importType: ImportType
) => {
const clientNamesFromDeepImport = getClientNamesFromDeepImport(source.toSource());
const clientNamesRecord: Record<string, string> = {};

const clientNamesRecord =
const { getImportSpecifiers } =
importType === ImportType.REQUIRE
? getClientNamesRecordFromRequire(j, source, clientNamesFromDeepImport)
: getClientNamesRecordFromImport(j, source, clientNamesFromDeepImport);
? requireModule
: importType === ImportType.IMPORT_EQUALS
? importEqualsModule
: importModule;

const specifiersFromNamedImport = getImportSpecifiers(j, source, PACKAGE_NAME).filter(
(importSpecifier) => importSpecifier.importedName
);

for (const { importedName, localName } of specifiersFromNamedImport) {
const clientName = importedName ?? localName;
if (CLIENT_NAMES.includes(clientName)) {
clientNamesRecord[clientName] = localName;
}
}

const clientNamesFromDeepImport = getClientNamesFromDeepImport(source.toSource());
for (const clientName of clientNamesFromDeepImport) {
const deepImportPath = getClientDeepImportPath(clientName);

const specifiersFromDeepImport = getImportSpecifiers(j, source, deepImportPath).filter(
(importSpecifier) => !importSpecifier.importedName
);
if (specifiersFromDeepImport.length > 0) {
clientNamesRecord[clientName] = specifiersFromDeepImport[0].localName;
}
}

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

This file was deleted.

This file was deleted.

0 comments on commit 59a8b7a

Please sign in to comment.