prettier-plugin-imports
Version:
A prettier plugins to sort imports in provided RegEx order
30 lines (26 loc) • 792 B
text/typescript
import { parse as babelParser } from '@babel/parser';
import traverse from '@babel/traverse';
import { ImportDeclaration, isTSModuleDeclaration } from '@babel/types';
import type { ParserOptions } from '@babel/parser';
import type { NodePath } from '@babel/traverse';
export const getImportNodes = (
code: string,
options?: ParserOptions,
): ImportDeclaration[] => {
const importNodes: ImportDeclaration[] = [];
const ast = babelParser(code, {
...options,
sourceType: 'module',
});
traverse(ast, {
ImportDeclaration(path: NodePath<ImportDeclaration>) {
const tsModuleParent = path.findParent((p) =>
isTSModuleDeclaration(p.node),
);
if (!tsModuleParent) {
importNodes.push(path.node);
}
},
});
return importNodes;
};