UNPKG

reporemix

Version:

A opiniated repomix tool for Rust and NextJS projects.

52 lines (51 loc) 2.53 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.optimizeJS = optimizeJS; const tree_sitter_parser_1 = require("../tree-sitter-parser"); function optimizeJS(content, filePath) { return __awaiter(this, void 0, void 0, function* () { const tree = yield tree_sitter_parser_1.treeSitterParser.parseFile(content, filePath); if (!tree) return content; const imports = new Set(); const usages = new Set(); function traverse(node) { if (node.type === 'import_declaration') { for (let i = 0; i < node.childCount; i++) { const child = node.child(i); if ((child === null || child === void 0 ? void 0 : child.type) === 'named_imports') { for (let j = 0; j < child.childCount; j++) { const spec = child.child(j); if ((spec === null || spec === void 0 ? void 0 : spec.type) === 'import_specifier') { imports.add(spec.text); } } } } } else if (node.type === 'identifier') { usages.add(node.text); } for (let i = 0; i < node.childCount; i++) { const child = node.child(i); if (child) { traverse(child); } } } traverse(tree.rootNode); // Remove unused imports (simplified; would need to reconstruct the import statement) // For now, just log; implement removal in refactor console.log(`Unused imports in ${filePath}:`, Array.from(imports).filter((imp) => !usages.has(imp))); return content; // Placeholder }); }