From 3cbcf569f4a1b4d13ba3ade8a599fa371bd75cb2 Mon Sep 17 00:00:00 2001 From: Trivikram Kamat <16024985+trivikr@users.noreply.github.com> Date: Sun, 28 Jul 2024 09:40:44 -0700 Subject: [PATCH] Remove type assertions for Identifier (#920) --- .changeset/itchy-mugs-rest.md | 5 ++++ .../getObjectWithUpdatedAwsConfigKeys.ts | 2 +- .../getNamesFromTSQualifiedName.ts | 1 + .../modules/getGlobalNameFromModule.ts | 6 ++-- .../getRequireDeclaratorsWithProperty.ts | 9 ++++-- .../requireModule/getImportSpecifiers.ts | 9 ++++-- .../v2-to-v3/ts-type/getClientTypeNames.ts | 10 ++----- .../ts-type/replaceTSTypeReference.ts | 28 ++++++++----------- 8 files changed, 35 insertions(+), 35 deletions(-) create mode 100644 .changeset/itchy-mugs-rest.md diff --git a/.changeset/itchy-mugs-rest.md b/.changeset/itchy-mugs-rest.md new file mode 100644 index 000000000..8aa4f8041 --- /dev/null +++ b/.changeset/itchy-mugs-rest.md @@ -0,0 +1,5 @@ +--- +"aws-sdk-js-codemod": patch +--- + +Remove type assertions for Identifier diff --git a/src/transforms/v2-to-v3/client-instances/getObjectWithUpdatedAwsConfigKeys.ts b/src/transforms/v2-to-v3/client-instances/getObjectWithUpdatedAwsConfigKeys.ts index ade188c4d..75e241056 100644 --- a/src/transforms/v2-to-v3/client-instances/getObjectWithUpdatedAwsConfigKeys.ts +++ b/src/transforms/v2-to-v3/client-instances/getObjectWithUpdatedAwsConfigKeys.ts @@ -42,7 +42,7 @@ export const getObjectWithUpdatedAwsConfigKeys = ( continue; } - const propertyKeyName = (propertyKey as Identifier).name; + const propertyKeyName = propertyKey.name; if ( !propertiesToUpdate .filter((propertyToUpdate) => OBJECT_PROPERTY_TYPE_LIST.includes(propertyToUpdate.type)) diff --git a/src/transforms/v2-to-v3/client-names/getNamesFromTSQualifiedName.ts b/src/transforms/v2-to-v3/client-names/getNamesFromTSQualifiedName.ts index 88c1aefb9..3340aafe4 100644 --- a/src/transforms/v2-to-v3/client-names/getNamesFromTSQualifiedName.ts +++ b/src/transforms/v2-to-v3/client-names/getNamesFromTSQualifiedName.ts @@ -8,6 +8,7 @@ export const getNamesFromTSQualifiedName = ( source .find(j.TSQualifiedName, { left: { name: v2GlobalName }, + right: { type: "Identifier" }, }) .nodes() .map((tsTypeReference) => (tsTypeReference.right as Identifier).name); diff --git a/src/transforms/v2-to-v3/modules/getGlobalNameFromModule.ts b/src/transforms/v2-to-v3/modules/getGlobalNameFromModule.ts index b05c65ff6..f765ee29a 100644 --- a/src/transforms/v2-to-v3/modules/getGlobalNameFromModule.ts +++ b/src/transforms/v2-to-v3/modules/getGlobalNameFromModule.ts @@ -1,4 +1,4 @@ -import type { Collection, Identifier, JSCodeshift } from "jscodeshift"; +import type { Collection, JSCodeshift } from "jscodeshift"; import { PACKAGE_NAME } from "../config"; import { getImportSpecifiers as getImportEqualsSpecifiers } from "../modules/importEqualsModule"; @@ -13,8 +13,8 @@ export const getGlobalNameFromModule = ( .filter((declarator) => declarator.value.id.type === "Identifier") .nodes(); - if (requireIdentifiers.length > 0) { - return (requireIdentifiers[0]?.id as Identifier).name; + if (requireIdentifiers.length > 0 && requireIdentifiers[0].id.type === "Identifier") { + return requireIdentifiers[0].id.name; } const importDefaultSpecifiers = getImportSpecifiers(j, source, PACKAGE_NAME).filter( diff --git a/src/transforms/v2-to-v3/modules/getRequireDeclaratorsWithProperty.ts b/src/transforms/v2-to-v3/modules/getRequireDeclaratorsWithProperty.ts index 08adb9efc..db25ccbaa 100644 --- a/src/transforms/v2-to-v3/modules/getRequireDeclaratorsWithProperty.ts +++ b/src/transforms/v2-to-v3/modules/getRequireDeclaratorsWithProperty.ts @@ -1,4 +1,4 @@ -import type { Collection, Identifier, JSCodeshift } from "jscodeshift"; +import type { Collection, JSCodeshift } from "jscodeshift"; import { getRequireDeclarators } from "./requireModule"; export interface GetRequireDeclaratorsWithPropertyOptions { @@ -18,8 +18,11 @@ export const getRequireDeclaratorsWithProperty = ( if (declaratorId.type === "Identifier") { const declaratorIdName = declaratorId.name; - if (declaratorInit?.type === "MemberExpression") { - const importedName = (declaratorInit.property as Identifier).name; + if ( + declaratorInit?.type === "MemberExpression" && + declaratorInit.property.type === "Identifier" + ) { + const importedName = declaratorInit.property.name; if (localName === declaratorIdName && identifierName === importedName) { return true; } diff --git a/src/transforms/v2-to-v3/modules/requireModule/getImportSpecifiers.ts b/src/transforms/v2-to-v3/modules/requireModule/getImportSpecifiers.ts index a7de463e1..5148ca87f 100644 --- a/src/transforms/v2-to-v3/modules/requireModule/getImportSpecifiers.ts +++ b/src/transforms/v2-to-v3/modules/requireModule/getImportSpecifiers.ts @@ -1,4 +1,4 @@ -import type { Collection, Identifier, JSCodeshift, ObjectProperty, Property } from "jscodeshift"; +import type { Collection, JSCodeshift, ObjectProperty, Property } from "jscodeshift"; import { OBJECT_PROPERTY_TYPE_LIST } from "../../config"; import type { ImportSpecifierType } from "../types"; import { getRequireDeclarators } from "./getRequireDeclarators"; @@ -37,9 +37,12 @@ export const getImportSpecifiers = ( if (declaratorId.type === "Identifier") { const declaratorIdName = declaratorId.name; - if (declaratorInit?.type === "MemberExpression") { + if ( + declaratorInit?.type === "MemberExpression" && + declaratorInit.property.type === "Identifier" + ) { importSpecifiers.add({ - importedName: (declaratorInit.property as Identifier).name, + importedName: declaratorInit.property.name, localName: declaratorIdName, }); } else { diff --git a/src/transforms/v2-to-v3/ts-type/getClientTypeNames.ts b/src/transforms/v2-to-v3/ts-type/getClientTypeNames.ts index bc640dab1..21e1bbcda 100644 --- a/src/transforms/v2-to-v3/ts-type/getClientTypeNames.ts +++ b/src/transforms/v2-to-v3/ts-type/getClientTypeNames.ts @@ -1,10 +1,4 @@ -import type { - Collection, - Identifier, - JSCodeshift, - TSQualifiedName, - TSTypeReference, -} from "jscodeshift"; +import type { Collection, JSCodeshift, TSQualifiedName, TSTypeReference } from "jscodeshift"; import type { ImportSpecifierType } from "../modules"; import { getImportSpecifiers } from "../modules/importModule"; @@ -30,7 +24,7 @@ const getRightIdentifierName = ( .nodes() .map((node) => (node.typeName as TSQualifiedName).right) .filter((node) => node.type === "Identifier") - .map((node) => (node as Identifier).name); + .map((node) => node.name); export const getClientTypeNames = ( j: JSCodeshift, diff --git a/src/transforms/v2-to-v3/ts-type/replaceTSTypeReference.ts b/src/transforms/v2-to-v3/ts-type/replaceTSTypeReference.ts index ec45bccd6..88208a6b7 100644 --- a/src/transforms/v2-to-v3/ts-type/replaceTSTypeReference.ts +++ b/src/transforms/v2-to-v3/ts-type/replaceTSTypeReference.ts @@ -1,10 +1,4 @@ -import type { - Collection, - Identifier, - JSCodeshift, - TSQualifiedName, - TSTypeReference, -} from "jscodeshift"; +import type { Collection, Identifier, JSCodeshift, TSQualifiedName } from "jscodeshift"; import { DOCUMENT_CLIENT, DYNAMODB, DYNAMODB_DOCUMENT, DYNAMODB_DOCUMENT_CLIENT } from "../config"; import { getClientTypeNames } from "./getClientTypeNames"; @@ -18,12 +12,6 @@ export interface ReplaceTSTypeReferenceOptions { v3ClientName: string; } -const isRightSectionIdentifier = (node: TSTypeReference) => - (node.typeName as TSQualifiedName).right.type === "Identifier"; - -const getRightIdentifierName = (node: TSTypeReference) => - ((node.typeName as TSQualifiedName).right as Identifier).name; - // Replace v2 client type reference with v3 client type reference. export const replaceTSTypeReference = ( j: JSCodeshift, @@ -66,9 +54,12 @@ export const replaceTSTypeReference = ( left: getTSQualifiedNameFromClientName(v2ClientName, v2GlobalName), }, }) - .filter((v2ClientType) => isRightSectionIdentifier(v2ClientType.node)) .replaceWith((v2ClientType) => { - const v2ClientTypeName = getRightIdentifierName(v2ClientType.node); + const tSQualifiedName = v2ClientType.node.typeName as TSQualifiedName; + if (tSQualifiedName.right.type !== "Identifier") { + return v2ClientType; + } + const v2ClientTypeName = tSQualifiedName.right.name; return getV3ClientType(j, { ...clientTypeOptions, v2ClientTypeName }); }); } @@ -81,9 +72,12 @@ export const replaceTSTypeReference = ( .find(j.TSTypeReference, { typeName: { left: getTSQualifiedNameFromClientName(v2ClientLocalName) }, }) - .filter((v2ClientType) => isRightSectionIdentifier(v2ClientType.node)) .replaceWith((v2ClientType) => { - const v2ClientTypeName = getRightIdentifierName(v2ClientType.node); + const tSQualifiedName = v2ClientType.node.typeName as TSQualifiedName; + if (tSQualifiedName.right.type !== "Identifier") { + return v2ClientType; + } + const v2ClientTypeName = tSQualifiedName.right.name; return getV3ClientType(j, { ...clientTypeOptions, v2ClientTypeName }); });