Skip to content

Commit ea0bd92

Browse files
authored
add support for require imports (#22)
* add support for require imports * small ui fix, finish implementation for supporting require in javasctipt * changelog
1 parent 2fe8179 commit ea0bd92

File tree

6 files changed

+550
-322
lines changed

6 files changed

+550
-322
lines changed

packages/app/src/components/ApiTree/ApiTree.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ export default function ApiTree(props: {
208208
>
209209
<div className="absolute bottom-6 inset-x-4 z-10 flex justify-around">
210210
<div className="flex gap-3 items-center">
211-
<div className="bg-background-light dark:bg-background-dark flex gap-4 py-2 px-3 rounded-md">
211+
<div className="bg-background-light dark:bg-background-dark flex gap-4 py-2 px-3 rounded-lg">
212212
<Button
213213
size="1"
214214
variant="ghost"

packages/cli/CHANGELOG.md

+2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
## [Unreleased]
44

5+
Add support for require import in javascript
6+
57
## [0.0.14] - 2024-10-30
68

79
Fix padding and size discrepancy with toolbar
+13-38
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
11
import fs from "fs";
22
import Parser from "tree-sitter";
3-
import {
4-
extractJavascriptFileImports,
5-
removeInvalidJavascriptFileImports,
6-
removeJavascriptAnnotations,
7-
removeJavascriptDeletedImportUsage,
8-
removeUnusedJavascriptImports,
9-
} from "./languages/javascript";
3+
import { cleanupJavascriptFile } from "./languages/javascript/cleanup";
4+
import { extractJavascriptFileImports } from "./languages/javascript/imports";
5+
106
import { getParserLanguageFromFile, resolveFilePath } from "./file";
117
import { Dependencies, Group } from "./types";
128

@@ -28,11 +24,10 @@ export function getDependencyTree(filePath: string): Dependencies {
2824
parser.setLanguage(language);
2925

3026
const sourceCode = fs.readFileSync(currentFilePath, "utf8");
31-
const tree = parser.parse(sourceCode);
3227

3328
let imports: string[] = [];
3429
if (["javascript", "typescript"].includes(language.name)) {
35-
imports = extractJavascriptFileImports(tree.rootNode);
30+
imports = extractJavascriptFileImports(parser, sourceCode);
3631
} else {
3732
throw new Error(`Unsupported language: ${language.name}`);
3833
}
@@ -61,51 +56,31 @@ export function cleanupFile(filePath: string, group: Group) {
6156
parser.setLanguage(language);
6257

6358
const sourceCode = fs.readFileSync(filePath, "utf8");
64-
let tree = parser.parse(sourceCode);
6559

6660
let dependencies: string[] = [];
6761
if (["javascript", "typescript"].includes(language.name)) {
68-
dependencies = extractJavascriptFileImports(tree.rootNode);
62+
dependencies = extractJavascriptFileImports(parser, sourceCode);
6963
} else {
7064
throw new Error(`Unsupported language: ${language.language}`);
7165
}
7266

73-
// Check if we can resolve the path for each dependency
74-
// If we cannot, we need to remove it
67+
// Check if we can resolve the path for each dependency. If we cannot, we need to remove it
7568
const invalidDependencies = dependencies.filter(
7669
(dep) => !resolveFilePath(dep, filePath),
7770
);
7871

72+
let updatedSourceCode: string;
73+
7974
if (["javascript", "typescript"].includes(language.name)) {
80-
const newSourceCode = removeJavascriptAnnotations(
81-
tree.rootNode,
75+
updatedSourceCode = cleanupJavascriptFile(
76+
parser,
8277
sourceCode,
8378
group,
79+
invalidDependencies,
8480
);
85-
tree = parser.parse(newSourceCode);
86-
87-
const { updatedSourceCode, removedImportsNames } =
88-
removeInvalidJavascriptFileImports(
89-
tree.rootNode,
90-
newSourceCode,
91-
invalidDependencies,
92-
);
93-
tree = parser.parse(updatedSourceCode);
94-
95-
let finalUpdatedSourceCode = removeJavascriptDeletedImportUsage(
96-
tree.rootNode,
97-
updatedSourceCode,
98-
removedImportsNames,
99-
);
100-
tree = parser.parse(finalUpdatedSourceCode);
101-
102-
finalUpdatedSourceCode = removeUnusedJavascriptImports(
103-
tree.rootNode,
104-
finalUpdatedSourceCode,
105-
);
106-
107-
fs.writeFileSync(filePath, finalUpdatedSourceCode, "utf8");
10881
} else {
10982
throw new Error(`Unsupported language: ${language.language}`);
11083
}
84+
85+
fs.writeFileSync(filePath, updatedSourceCode, "utf8");
11186
}

packages/cli/src/helper/languages/javascript.ts

-283
This file was deleted.

0 commit comments

Comments
 (0)