Skip to content

Commit 10ba465

Browse files
authored
Clean up adding import as object pattern (#787)
1 parent bee398b commit 10ba465

File tree

4 files changed

+12
-82
lines changed

4 files changed

+12
-82
lines changed

.changeset/metal-pianos-visit.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+
Clean up adding import as object pattern

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

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

src/transforms/v2-to-v3/modules/importModule/addNamedModule.ts

Lines changed: 2 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,8 @@
1-
import {
2-
Collection,
3-
ImportNamespaceSpecifier,
4-
ImportSpecifier,
5-
JSCodeshift,
6-
Property,
7-
ObjectProperty,
8-
} from "jscodeshift";
1+
import { Collection, ImportSpecifier, JSCodeshift } from "jscodeshift";
92

10-
import { OBJECT_PROPERTY_TYPE_LIST, PACKAGE_NAME } from "../../config";
3+
import { PACKAGE_NAME } from "../../config";
114
import { getImportSpecifiers } from "../getImportSpecifiers";
12-
import { getRequireProperty } from "../getRequireProperty";
135
import { importSpecifierCompareFn } from "../importSpecifierCompareFn";
14-
import { objectPatternPropertyCompareFn } from "../objectPatternPropertyCompareFn";
156
import { ModulesOptions } from "../types";
167

178
export const addNamedModule = (
@@ -41,62 +32,6 @@ export const addNamedModule = (
4132
return;
4233
}
4334

44-
const importNamespaceSpecifiers = importSpecifiers.filter(
45-
(importSpecifier) => importSpecifier?.type === "ImportNamespaceSpecifier"
46-
) as ImportNamespaceSpecifier[];
47-
48-
// If namespace import exists.
49-
if (importNamespaceSpecifiers.length > 0) {
50-
const defaultLocalName = importNamespaceSpecifiers[0].local!.name;
51-
const namedImportObjectProperty = getRequireProperty(j, { importedName, localName });
52-
53-
const existingVarDeclarator = source.find(j.VariableDeclarator, {
54-
type: "VariableDeclarator",
55-
init: { type: "Identifier", name: defaultLocalName },
56-
});
57-
58-
// If variable declarator exists.
59-
if (existingVarDeclarator.size()) {
60-
// Return if property exists.
61-
if (
62-
existingVarDeclarator.some((varDeclarator) => {
63-
const id = varDeclarator.node.id;
64-
if (id.type !== "ObjectPattern") return false;
65-
for (const property of id.properties) {
66-
if (!OBJECT_PROPERTY_TYPE_LIST.includes(property.type)) continue;
67-
const propertyKey = (property as Property | ObjectProperty).key;
68-
if (propertyKey.type !== "Identifier") continue;
69-
if (propertyKey.name === importedName) return true;
70-
}
71-
return false;
72-
})
73-
)
74-
return;
75-
76-
// Add property to the first declarator.
77-
const firstDeclaratorProperties = existingVarDeclarator.get(0).node.id.properties;
78-
firstDeclaratorProperties.push(namedImportObjectProperty);
79-
firstDeclaratorProperties.sort(objectPatternPropertyCompareFn);
80-
return;
81-
}
82-
83-
const varDeclaration = j.variableDeclaration("const", [
84-
j.variableDeclarator(
85-
j.objectPattern([namedImportObjectProperty]),
86-
j.identifier(defaultLocalName)
87-
),
88-
]);
89-
90-
source
91-
.find(j.ImportDeclaration, {
92-
type: "ImportDeclaration",
93-
specifiers: [importNamespaceSpecifiers[0]],
94-
source: { value: packageName },
95-
})
96-
.insertAfter(varDeclaration);
97-
return;
98-
}
99-
10035
// Add named import to the first import declaration.
10136
const firstImportDeclSpecifiers = importDeclarations.nodes()[0].specifiers;
10237
if (firstImportDeclSpecifiers) {

src/transforms/v2-to-v3/modules/requireModule/addNamedModule.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import {
99
} from "jscodeshift";
1010

1111
import { OBJECT_PROPERTY_TYPE_LIST, PACKAGE_NAME, STRING_LITERAL_TYPE_LIST } from "../../config";
12-
import { getRequireProperty } from "../getRequireProperty";
1312
import { objectPatternPropertyCompareFn } from "../objectPatternPropertyCompareFn";
1413
import { getRequireDeclarators } from "../requireModule";
1514
import { ModulesOptions } from "../types";
@@ -21,7 +20,11 @@ export const addNamedModule = (
2120
) => {
2221
const { importedName, localName = importedName, packageName } = options;
2322

24-
const clientObjectProperty = getRequireProperty(j, { importedName, localName });
23+
const clientObjectProperty = j.objectProperty.from({
24+
key: j.identifier(importedName),
25+
value: j.identifier(localName ?? importedName),
26+
shorthand: true,
27+
});
2528
const existingRequires = getRequireDeclarators(j, source, packageName);
2629

2730
if (existingRequires && existingRequires.nodes().length > 0) {

0 commit comments

Comments
 (0)