UNPKG

@serverless-guru/prettier-plugin-import-order

Version:

A prettier plugin to sort TS/JS import declarations by provided Regular Expression order

53 lines (52 loc) 2.92 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.preprocessor = void 0; var parser_1 = require("@babel/parser"); var traverse_1 = __importDefault(require("@babel/traverse")); var types_1 = require("@babel/types"); 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"); function preprocessor(code, options) { var importOrderParserPlugins = options.importOrderParserPlugins, importOrder = options.importOrder, importOrderBuiltinModulesToTop = options.importOrderBuiltinModulesToTop, importOrderTypeImportsToTop = options.importOrderTypeImportsToTop, importOrderCaseInsensitive = options.importOrderCaseInsensitive, importOrderNamespaceImportsToGroupTop = options.importOrderNamespaceImportsToGroupTop, importOrderMergeDuplicateImports = options.importOrderMergeDuplicateImports, importOrderSeparation = options.importOrderSeparation, importOrderSortIndividualImports = options.importOrderSortIndividualImports; var allOriginalImportNodes = []; var parserOptions = { sourceType: 'module', plugins: (0, get_experimental_parser_plugins_1.getExperimentalParserPlugins)(importOrderParserPlugins), }; var ast = (0, parser_1.parse)(code, parserOptions); var directives = ast.program.directives; var interpreter = ast.program.interpreter; (0, traverse_1.default)(ast, { ImportDeclaration: function (path) { var tsModuleParent = path.findParent(function (p) { return (0, types_1.isTSModuleDeclaration)(p); }); if (!tsModuleParent) { allOriginalImportNodes.push(path.node); } }, }); if (allOriginalImportNodes.length === 0) { return code; } var nodesToOutput = (0, get_sorted_nodes_1.getSortedNodes)(allOriginalImportNodes, { importOrder: importOrder, importOrderBuiltinModulesToTop: importOrderBuiltinModulesToTop, importOrderTypeImportsToTop: importOrderTypeImportsToTop, importOrderCaseInsensitive: importOrderCaseInsensitive, importOrderNamespaceImportsToGroupTop: importOrderNamespaceImportsToGroupTop, importOrderMergeDuplicateImports: importOrderMergeDuplicateImports, importOrderSeparation: importOrderSeparation, importOrderSortIndividualImports: importOrderSortIndividualImports, }); return (0, get_code_from_ast_1.getCodeFromAst)({ nodesToOutput: nodesToOutput, allOriginalImportNodes: allOriginalImportNodes, originalCode: code, directives: directives, interpreter: interpreter, }); } exports.preprocessor = preprocessor;