@trivago/prettier-plugin-sort-imports
Version:
A prettier plugins to sort imports in provided RegEx order
52 lines (51 loc) • 2.46 kB
JavaScript
;
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getCodeFromAst = void 0;
var generator_1 = __importDefault(require("@babel/generator"));
var types_1 = require("@babel/types");
var constants_1 = require("../constants");
var get_all_comments_from_nodes_1 = require("./get-all-comments-from-nodes");
var remove_nodes_from_original_code_1 = require("./remove-nodes-from-original-code");
/**
* This function generate a code string from the passed nodes.
* @param nodes all imports
* @param originalCode
*/
var getCodeFromAst = function (nodes, directives, originalCode, interpreter, options) {
var allCommentsFromImports = (0, get_all_comments_from_nodes_1.getAllCommentsFromNodes)(nodes);
var nodesToRemoveFromCode = __spreadArray(__spreadArray(__spreadArray(__spreadArray([], directives, true), nodes, true), allCommentsFromImports, true), (interpreter ? [interpreter] : []), true);
var codeWithoutImportsAndInterpreter = (0, remove_nodes_from_original_code_1.removeNodesFromOriginalCode)(originalCode, nodesToRemoveFromCode);
var newAST = (0, types_1.file)({
type: 'Program',
body: nodes,
directives: directives,
sourceType: 'module',
interpreter: interpreter,
leadingComments: [],
innerComments: [],
trailingComments: [],
start: 0,
end: 0,
loc: {
filename: '',
identifierName: '',
start: { line: 0, column: 0, index: 0 },
end: { line: 0, column: 0, index: 0 },
},
});
var code = (0, generator_1.default)(newAST, { importAttributesKeyword: options === null || options === void 0 ? void 0 : options.importOrderImportAttributesKeyword }).code;
return (code.replace(/"PRETTIER_PLUGIN_SORT_IMPORTS_NEW_LINE";/gi, constants_1.newLineCharacters) + codeWithoutImportsAndInterpreter.trim());
};
exports.getCodeFromAst = getCodeFromAst;