UNPKG

@trivago/prettier-plugin-sort-imports

Version:

A prettier plugins to sort imports in provided RegEx order

37 lines (36 loc) 1.41 kB
import generateModule from '@babel/generator'; import { file } from '@babel/types'; import { newLineCharacters } from '../constants.js'; import { assembleUpdatedCode } from './assemble-updated-code.js'; import { getAllCommentsFromNodes } from './get-all-comments-from-nodes.js'; const generate = generateModule.default || generateModule; /** * This function generate a code string from the passed nodes. * @param nodes all imports * @param originalCode */ export const getCodeFromAst = (nodes, originalCode, injectIdx = 0, options) => { const allCommentsFromImports = getAllCommentsFromNodes(nodes); const nodesToRemoveFromCode = [...nodes, ...allCommentsFromImports]; const newAST = file({ type: 'Program', body: nodes, directives: [], sourceType: 'module', leadingComments: [], innerComments: [], trailingComments: [], start: 0, end: 0, loc: { filename: '', identifierName: '', start: { line: 0, column: 0, index: 0 }, end: { line: 0, column: 0, index: 0 }, }, }); const { code } = generate(newAST, { importAttributesKeyword: options?.importOrderImportAttributesKeyword, }); return assembleUpdatedCode(originalCode, nodesToRemoveFromCode, code.replace(/"PRETTIER_PLUGIN_SORT_IMPORTS_NEW_LINE";/gi, newLineCharacters), injectIdx); };