Skip to content

Commit

Permalink
Add utility getV2ClientNamesFromDefault (#226)
Browse files Browse the repository at this point in the history
  • Loading branch information
trivikr committed Dec 27, 2022
1 parent d80c999 commit 9d2c537
Show file tree
Hide file tree
Showing 6 changed files with 53 additions and 50 deletions.
5 changes: 5 additions & 0 deletions .changeset/chatty-beds-fry.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"aws-sdk-js-codemod": patch
---

Add utility getV2ClientNamesFromDefault
14 changes: 10 additions & 4 deletions src/transforms/v2-to-v3/transformer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ import {
addV3ClientModules,
getClientMetadata,
getV2ClientNames,
getV2ClientNamesFromDefault,
getV2DefaultModuleName,
getV2ServiceModuleNames,
isTypeScriptFile,
removeDefaultModuleIfNotUsed,
removePromiseCalls,
Expand All @@ -18,13 +18,19 @@ export default function transformer(file: FileInfo, api: API) {
const j = isTypeScriptFile(file.path) ? api.jscodeshift.withParser("ts") : api.jscodeshift;
const source = j(file.source);

// ToDo: Make v2DefaultModuleName optional downstream as it can be undefined.
// ToDo: Rename v2DefaultModuleName to v2GlobalName to align with v2ClientName.
const v2DefaultModuleName = getV2DefaultModuleName(j, source) as string;
const v2ServiceModuleNames = getV2ServiceModuleNames(j, source);
if (!v2DefaultModuleName && v2ServiceModuleNames.length === 0) {
const v2ClientNames = getV2ClientNames(j, source);

if (!v2DefaultModuleName && v2ClientNames.length === 0) {
return source.toSource();
}

const v2ClientNames = getV2ClientNames(j, source, { v2DefaultModuleName, v2ServiceModuleNames });
if (v2DefaultModuleName) {
v2ClientNames.push(...getV2ClientNamesFromDefault(j, source, v2DefaultModuleName));
}

const clientMetadata = getClientMetadata(v2ClientNames);

for (const [v2ClientName, v3ClientMetadata] of Object.entries(clientMetadata).reverse()) {
Expand Down
40 changes: 21 additions & 19 deletions src/transforms/v2-to-v3/utils/get/getV2ClientNames.ts
Original file line number Diff line number Diff line change
@@ -1,24 +1,26 @@
import { Collection, JSCodeshift } from "jscodeshift";

import { getMergedArrayWithoutDuplicates } from "./getMergedArrayWithoutDuplicates";
import { getV2ClientNamesFromNewExpr } from "./getV2ClientNamesFromNewExpr";
import { getV2ClientNamesFromTSTypeRef } from "./getV2ClientNamesFromTSTypeRef";
import { CLIENT_NAMES } from "../config";
import { containsRequire } from "../containsRequire";
import { getImportSpecifiers } from "./getImportSpecifiers";
import { getRequireIdentifierName } from "./getRequireIdentifierName";
import { getV2ServiceModulePath } from "./getV2ServiceModulePath";

export interface GetV2ClientNamesOptions {
v2DefaultModuleName: string;
v2ServiceModuleNames: string[];
}
export const getV2ClientNames = (j: JSCodeshift, source: Collection<unknown>): string[] => {
if (containsRequire(j, source)) {
return CLIENT_NAMES.map((clientName) =>
getRequireIdentifierName(j, source, getV2ServiceModulePath(clientName))
).filter((v2ServiceModuleName) => v2ServiceModuleName !== undefined) as string[];
}

export const getV2ClientNames = (
j: JSCodeshift,
source: Collection<unknown>,
{ v2DefaultModuleName, v2ServiceModuleNames }: GetV2ClientNamesOptions
): string[] => {
const v2ClientNamesFromNewExpr = getV2ClientNamesFromNewExpr(j, source, v2DefaultModuleName);
const v2ClientNamesFromTSTypeRef = getV2ClientNamesFromTSTypeRef(j, source, v2DefaultModuleName);

return getMergedArrayWithoutDuplicates(
getMergedArrayWithoutDuplicates(v2ClientNamesFromNewExpr, v2ClientNamesFromTSTypeRef),
v2ServiceModuleNames
);
return CLIENT_NAMES.filter((clientName) => {
const importSpecifiers = getImportSpecifiers(j, source, getV2ServiceModulePath(clientName));
if (
importSpecifiers &&
importSpecifiers.map((importSpecifier) => importSpecifier.local?.name).includes(clientName)
) {
return true;
}
return false;
});
};
16 changes: 16 additions & 0 deletions src/transforms/v2-to-v3/utils/get/getV2ClientNamesFromDefault.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { Collection, JSCodeshift } from "jscodeshift";

import { getMergedArrayWithoutDuplicates } from "./getMergedArrayWithoutDuplicates";
import { getV2ClientNamesFromNewExpr } from "./getV2ClientNamesFromNewExpr";
import { getV2ClientNamesFromTSTypeRef } from "./getV2ClientNamesFromTSTypeRef";

export const getV2ClientNamesFromDefault = (
j: JSCodeshift,
source: Collection<unknown>,
v2DefaultModuleName: string
): string[] => {
const v2ClientNamesFromNewExpr = getV2ClientNamesFromNewExpr(j, source, v2DefaultModuleName);
const v2ClientNamesFromTSTypeRef = getV2ClientNamesFromTSTypeRef(j, source, v2DefaultModuleName);

return getMergedArrayWithoutDuplicates(v2ClientNamesFromNewExpr, v2ClientNamesFromTSTypeRef);
};
26 changes: 0 additions & 26 deletions src/transforms/v2-to-v3/utils/get/getV2ServiceModuleNames.ts

This file was deleted.

2 changes: 1 addition & 1 deletion src/transforms/v2-to-v3/utils/get/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ export * from "./getRequireVariableDeclaration";
export * from "./getV2ClientIdentifiers";
export * from "./getV2ClientIdThisExpressions";
export * from "./getV2ClientNames";
export * from "./getV2ClientNamesFromDefault";
export * from "./getV2ClientTypeNames";
export * from "./getV2DefaultModuleName";
export * from "./getV2ServiceModuleNames";
export * from "./getV2ServiceModulePath";
export * from "./getV3ClientTypeName";
export * from "./getV3ClientTypeNames";

0 comments on commit 9d2c537

Please sign in to comment.