diff --git a/packages/prompts/src/__snapshots__/index.test.ts.snap b/packages/prompts/src/__snapshots__/index.test.ts.snap index 6437aef..7338ca6 100644 --- a/packages/prompts/src/__snapshots__/index.test.ts.snap +++ b/packages/prompts/src/__snapshots__/index.test.ts.snap @@ -1767,6 +1767,20 @@ exports[`prompts (isCI = false) > spinner > stop > renders message 1`] = ` ] `; +exports[`prompts (isCI = false) > spinner > stop > renders message without removing dots 1`] = ` +[ + "[?25l", + "│ +", + "◒ ", + "", + "", + "◇ foo. +", + "[?25h", +] +`; + exports[`prompts (isCI = false) > spinner > stop > renders submit symbol and stops spinner 1`] = ` [ "[?25l", @@ -3758,6 +3772,22 @@ exports[`prompts (isCI = true) > spinner > stop > renders message 1`] = ` ] `; +exports[`prompts (isCI = true) > spinner > stop > renders message without removing dots 1`] = ` +[ + "[?25l", + "│ +", + "◒ ...", + " +", + "", + "", + "◇ foo. +", + "[?25h", +] +`; + exports[`prompts (isCI = true) > spinner > stop > renders submit symbol and stops spinner 1`] = ` [ "[?25l", diff --git a/packages/prompts/src/index.test.ts b/packages/prompts/src/index.test.ts index 3a41d7d..3960f67 100644 --- a/packages/prompts/src/index.test.ts +++ b/packages/prompts/src/index.test.ts @@ -167,6 +167,18 @@ describe.each(['true', 'false'])('prompts (isCI = %s)', (isCI) => { expect(output.buffer).toMatchSnapshot(); }); + + test('renders message without removing dots', () => { + const result = prompts.spinner({ output }); + + result.start(); + + vi.advanceTimersByTime(80); + + result.stop('foo.'); + + expect(output.buffer).toMatchSnapshot(); + }); }); describe('message', () => { diff --git a/packages/prompts/src/index.ts b/packages/prompts/src/index.ts index d49c735..e7c71a3 100644 --- a/packages/prompts/src/index.ts +++ b/packages/prompts/src/index.ts @@ -853,7 +853,7 @@ export const spinner = ({ output.write(erase.down(prevLines.length)); }; - const parseMessage = (msg: string): string => { + const removeTrailingDots = (msg: string): string => { return msg.replace(/\.+$/, ''); }; @@ -867,7 +867,7 @@ export const spinner = ({ const start = (msg = ''): void => { isSpinnerActive = true; unblock = block({ output }); - _message = parseMessage(msg); + _message = removeTrailingDots(msg); _origin = performance.now(); output.write(`${color.gray(S_BAR)}\n`); let frameIndex = 0; @@ -905,7 +905,7 @@ export const spinner = ({ : code === 1 ? color.red(S_STEP_CANCEL) : color.red(S_STEP_ERROR); - _message = parseMessage(msg ?? _message); + _message = msg ?? _message; if (indicator === 'timer') { output.write(`${step} ${_message} ${formatTimer(_origin)}\n`); } else { @@ -916,7 +916,7 @@ export const spinner = ({ }; const message = (msg = ''): void => { - _message = parseMessage(msg ?? _message); + _message = removeTrailingDots(msg ?? _message); }; return {