UNPKG

@johnmusans/arcadia-ui-style-engine

Version:

Shared style system logic and types for Arcadia UI components

32 lines (23 loc) 1.07 kB
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; }