const estreePlugin = require('prettier/plugins/estree'); function hasSpecifierComments(node) { return node.specifiers?.some((specifier) => specifier.comments?.length > 0) ?? false; } function flattenImportLines(doc) { if (typeof doc === 'string') { return doc; } if (Array.isArray(doc)) { return doc.map(flattenImportLines); } if (!doc || typeof doc !== 'object') { return doc; } if (doc.type === 'line') { return ' '; } if ('contents' in doc) { return { ...doc, contents: flattenImportLines(doc.contents) }; } if (doc.type === 'fill' && 'parts' in doc) { return { ...doc, parts: flattenImportLines(doc.parts) }; } if (doc.type === 'if-break') { return { ...doc, breakContents: flattenImportLines(doc.breakContents), flatContents: flattenImportLines(doc.flatContents) }; } if (doc.type === 'group' && 'expandedStates' in doc) { return { ...doc, expandedStates: flattenImportLines(doc.expandedStates) }; } return doc; } const estreePrinter = estreePlugin.printers.estree; module.exports = { printers: { estree: { ...estreePrinter, print(path, options, print, args) { const printed = estreePrinter.print(path, options, print, args); const node = path.getNode(); if (node?.type === 'ImportDeclaration' && !hasSpecifierComments(node)) { return flattenImportLines(printed); } return printed; } } } };