@johnmusans/arcadia-ui-style-engine
Version:
Shared style system logic and types for Arcadia UI components
32 lines (23 loc) • 1.07 kB
text/typescript
import type { SourceFile } from "ts-morph";
import type { Transformer } from "./index";
export const transformImport: Transformer = ({ sourceFile }) => {
const importDeclarations = sourceFile.getImportDeclarations();
for (const importDeclaration of importDeclarations) {
const moduleSpecifier = importDeclaration.getModuleSpecifier();
const moduleSpecifierText = moduleSpecifier.getText();
const moduleSpecifierValue = moduleSpecifierText.slice(1, -1);
if (moduleSpecifierValue.startsWith("@arcadia-ui/ui/")) {
const newImportPath = moduleSpecifierValue.replace("@arcadia-ui/ui/", "@/");
importDeclaration.setModuleSpecifier(newImportPath);
if (!_useSemicolon(sourceFile)) {
const newText = importDeclaration.getText().replace(";", "");
importDeclaration.replaceWithText(newText);
}
}
}
return Promise.resolve(sourceFile);
};
function _useSemicolon(sourceFile: SourceFile) {
const firstImport = sourceFile.getImportDeclarations()[0];
return firstImport?.getText().endsWith(";") ?? false;
}