@trivago/prettier-plugin-sort-imports
Version:
A prettier plugins to sort imports in provided RegEx order
36 lines (35 loc) • 2.29 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.preprocessor = preprocessor;
var parser_1 = require("@babel/parser");
var extract_ast_nodes_1 = require("../utils/extract-ast-nodes");
var get_code_from_ast_1 = require("../utils/get-code-from-ast");
var get_experimental_parser_plugins_1 = require("../utils/get-experimental-parser-plugins");
var get_sorted_nodes_1 = require("../utils/get-sorted-nodes");
var is_sort_imports_ignored_1 = require("../utils/is-sort-imports-ignored");
function preprocessor(code, options) {
var importOrderParserPlugins = options.importOrderParserPlugins, importOrder = options.importOrder, importOrderCaseInsensitive = options.importOrderCaseInsensitive, importOrderSeparation = options.importOrderSeparation, importOrderGroupNamespaceSpecifiers = options.importOrderGroupNamespaceSpecifiers, importOrderSortSpecifiers = options.importOrderSortSpecifiers, importOrderSideEffects = options.importOrderSideEffects, importOrderImportAttributesKeyword = options.importOrderImportAttributesKeyword;
var parserOptions = {
sourceType: 'module',
plugins: (0, get_experimental_parser_plugins_1.getExperimentalParserPlugins)(importOrderParserPlugins),
};
var ast = (0, parser_1.parse)(code, parserOptions);
var interpreter = ast.program.interpreter;
var _a = (0, extract_ast_nodes_1.extractASTNodes)(ast), importNodes = _a.importNodes, directives = _a.directives;
// short-circuit if there are no import declaration
if (importNodes.length === 0)
return code;
if ((0, is_sort_imports_ignored_1.isSortImportsIgnored)(importNodes))
return code;
var allImports = (0, get_sorted_nodes_1.getSortedNodes)(importNodes, {
importOrder: importOrder,
importOrderCaseInsensitive: importOrderCaseInsensitive,
importOrderSeparation: importOrderSeparation,
importOrderGroupNamespaceSpecifiers: importOrderGroupNamespaceSpecifiers,
importOrderSortSpecifiers: importOrderSortSpecifiers,
importOrderSideEffects: importOrderSideEffects,
});
return (0, get_code_from_ast_1.getCodeFromAst)(allImports, directives, code, interpreter, {
importOrderImportAttributesKeyword: importOrderImportAttributesKeyword,
});
}