···11-import { wrap } from '@clack/core';
22-import { stdin, stdout } from 'node:process';
33-import * as readline from 'readline';
44-import { cursor, erase } from 'sisteransi';
55-import color from 'picocolors';
66-77-function createLogger({ input = stdin, output = stdout } = {}) {
88- let previousLineCount = 0;
99- let previousWidth = output.columns ?? 80;
1010- let previousFormatted = '';
1111-1212- function log(message = '') {
1313- const width = output.columns ?? 80;
1414- let formatted = wrap(message, width) + '\n'
1515- let currLineCount = formatted.split('\n').length;
1616- if (previousLineCount > 0 && currLineCount > previousLineCount) {
1717- previousLineCount = wrap(previousFormatted, width).split('\n').length;
1818- }
1919- if (formatted === previousFormatted && previousWidth === width) {
2020- return;
2121- }
2222- previousFormatted = formatted;
2323- previousWidth = width;
2424-2525- output.write(erase.lines(previousLineCount) + formatted);
2626- previousLineCount = formatted.split('\n').length;
2727- }
2828-2929- return { log };
3030-}
3131-3232-const paragraph = `Lorem ipsum dolor sit ${color.red('amet')}, ${color.green('consectetur')} adipiscing elit. Fusce sed urna a ${color.inverse(' sem ')} aliquet efficitur sit amet quis turpis.\n\nDonec consectetur neque eget consequat ultricies. Integer ornare ipsum quis maximus tempor. Fusce quis sem eget dolor maximus sollicitudin quis sodales enim. Mauris a finibus risus, vitae porta dolor. Aliquam nec dui vitae dui fermentum dictum eget mattis mauris. Suspendisse condimentum sodales nisl, quis vestibulum dolor pretium vel. Etiam dignissim maximus leo, eget auctor felis congue non. Vestibulum venenatis mi sapien, nec sagittis dui finibus quis. Ut neque lacus, vestibulum nec congue non, finibus in lorem. Cras consectetur, neque non pretium luctus, orci massa auctor orci, id scelerisque velit mi quis erat. Proin a nibh placerat, sollicitudin dui ut, pretium nisi.`;
3333-3434-const rl = readline.createInterface({
3535- input: process.stdin,
3636- output: process.stdout,
3737- prompt: ''
3838-});
3939-4040-async function main() {
4141- const logger = createLogger();
4242- logger.log(paragraph)
4343- process.stdout.on('resize', () => logger.log(paragraph))
4444-}
4545-4646-main();