npm / wrap-ansi / 10.0.2

wrap-ansi 10.0.2

Source
https://github.com/chalk/wrap-ansi
Tag scanned
v10.0.2
Compared with
v10.0.1 (0 signals introduced since)
Files
6 scanned, 2 skipped (binary, oversized, or unrecognised)
Signals
0 critical · 0 warn · 12 info
Scan time
0.1 s
LLM review
LLM review by claude-haiku-5-5 (Anthropic): nothing at warn or critical to review.
Disclude version
4.0.0
Scanned (UTC)
2026-10-14 19:02

Signals

Ordered by severity, then signals introduced in this release. Hidden characters are shown as ⟨U+…⟩.

  1. info unicode-surrogate test.js:124:26

    surrogate pair \uD83C\uDE00 (non-scalar Unicode codepoints in string literal) (token pass, confidence 0.70)

    test('supports unicode surrogate pairs', () => {
    	assert.equal(wrapAnsi('a\uD83C\uDE00bc', 2, {hard: true}), 'a\n\uD83C\uDE00\nbc');
    	assert.equal(wrapAnsi('a\uD83C\uDE00bc\uD83C\uDE00d\uD83C\uDE00', 2, {hard: true}), 'a\n\uD83C\uDE00\nbc\n\uD83C\uDE00\nd\n\uD83C\uDE00');
    });
  2. info unicode-surrogate test.js:124:65

    surrogate pair \uD83C\uDE00 (non-scalar Unicode codepoints in string literal) (token pass, confidence 0.70)

    test('supports unicode surrogate pairs', () => {
    	assert.equal(wrapAnsi('a\uD83C\uDE00bc', 2, {hard: true}), 'a\n\uD83C\uDE00\nbc');
    	assert.equal(wrapAnsi('a\uD83C\uDE00bc\uD83C\uDE00d\uD83C\uDE00', 2, {hard: true}), 'a\n\uD83C\uDE00\nbc\n\uD83C\uDE00\nd\n\uD83C\uDE00');
    });
  3. info unicode-surrogate test.js:125:26

    surrogate pair \uD83C\uDE00 (non-scalar Unicode codepoints in string literal) (token pass, confidence 0.70)

    	assert.equal(wrapAnsi('a\uD83C\uDE00bc', 2, {hard: true}), 'a\n\uD83C\uDE00\nbc');
    	assert.equal(wrapAnsi('a\uD83C\uDE00bc\uD83C\uDE00d\uD83C\uDE00', 2, {hard: true}), 'a\n\uD83C\uDE00\nbc\n\uD83C\uDE00\nd\n\uD83C\uDE00');
    });
  4. info unicode-surrogate test.js:125:40

    surrogate pair \uD83C\uDE00 (non-scalar Unicode codepoints in string literal) (token pass, confidence 0.70)

    	assert.equal(wrapAnsi('a\uD83C\uDE00bc', 2, {hard: true}), 'a\n\uD83C\uDE00\nbc');
    	assert.equal(wrapAnsi('a\uD83C\uDE00bc\uD83C\uDE00d\uD83C\uDE00', 2, {hard: true}), 'a\n\uD83C\uDE00\nbc\n\uD83C\uDE00\nd\n\uD83C\uDE00');
    });
  5. info unicode-surrogate test.js:125:53

    surrogate pair \uD83C\uDE00 (non-scalar Unicode codepoints in string literal) (token pass, confidence 0.70)

    	assert.equal(wrapAnsi('a\uD83C\uDE00bc', 2, {hard: true}), 'a\n\uD83C\uDE00\nbc');
    	assert.equal(wrapAnsi('a\uD83C\uDE00bc\uD83C\uDE00d\uD83C\uDE00', 2, {hard: true}), 'a\n\uD83C\uDE00\nbc\n\uD83C\uDE00\nd\n\uD83C\uDE00');
    });
  6. info unicode-surrogate test.js:125:90

    surrogate pair \uD83C\uDE00 (non-scalar Unicode codepoints in string literal) (token pass, confidence 0.70)

    	assert.equal(wrapAnsi('a\uD83C\uDE00bc', 2, {hard: true}), 'a\n\uD83C\uDE00\nbc');
    	assert.equal(wrapAnsi('a\uD83C\uDE00bc\uD83C\uDE00d\uD83C\uDE00', 2, {hard: true}), 'a\n\uD83C\uDE00\nbc\n\uD83C\uDE00\nd\n\uD83C\uDE00');
    });
  7. info unicode-surrogate test.js:125:108

    surrogate pair \uD83C\uDE00 (non-scalar Unicode codepoints in string literal) (token pass, confidence 0.70)

    	assert.equal(wrapAnsi('a\uD83C\uDE00bc', 2, {hard: true}), 'a\n\uD83C\uDE00\nbc');
    	assert.equal(wrapAnsi('a\uD83C\uDE00bc\uD83C\uDE00d\uD83C\uDE00', 2, {hard: true}), 'a\n\uD83C\uDE00\nbc\n\uD83C\uDE00\nd\n\uD83C\uDE00');
    });
  8. info unicode-surrogate test.js:125:125

    surrogate pair \uD83C\uDE00 (non-scalar Unicode codepoints in string literal) (token pass, confidence 0.70)

    	assert.equal(wrapAnsi('a\uD83C\uDE00bc', 2, {hard: true}), 'a\n\uD83C\uDE00\nbc');
    	assert.equal(wrapAnsi('a\uD83C\uDE00bc\uD83C\uDE00d\uD83C\uDE00', 2, {hard: true}), 'a\n\uD83C\uDE00\nbc\n\uD83C\uDE00\nd\n\uD83C\uDE00');
    });
  9. info unicode-surrogate test.js:322:80

    surrogate pair \uD83C\uDE00 (non-scalar Unicode codepoints in string literal) (token pass, confidence 0.70)

    
    	const result2 = wrapAnsi(`Check out \u001B]8;;https://www.example.com\u0007my \uD83C\uDE00 ${chalk.bgGreen('website')}\u001B]8;;\u0007, it ${chalk.bgRed('is \u001B]8;;https://www.example.com\u0007super\uD83C\uDE00califragilisticexpialidocious\u001B]8;;\u0007')}.`, 16, {hard: true});
  10. info unicode-surrogate test.js:322:203

    surrogate pair \uD83C\uDE00 (non-scalar Unicode codepoints in string literal) (token pass, confidence 0.70)

    
    	const result2 = wrapAnsi(`Check out \u001B]8;;https://www.example.com\u0007my \uD83C\uDE00 ${chalk.bgGreen('website')}\u001B]8;;\u0007, it ${chalk.bgRed('is \u001B]8;;https://www.example.com\u0007super\uD83C\uDE00califragilisticexpialidocious\u001B]8;;\u0007')}.`, 16, {hard: true});
  11. info unicode-zero-width test.js:583:31

    U+200D ZERO WIDTH JOINER in source (in string/comment) (raw pass, confidence 0.45)

    test('preserves tab stops across ANSI-split grapheme clusters', () => {
    	const input = '👨\u001B[31m⟨U+200D⟩👩⟨U+200D⟩👧⟨U+200D⟩👦\tX';
    	assert.equal(wrapAnsi(input, 30, {trim: false}), '👨\u001B[31m⟨U+200D⟩👩⟨U+200D⟩👧⟨U+200D⟩👦      X');
    });
  12. info unicode-zero-width test.js:584:66

    U+200D ZERO WIDTH JOINER in source (in string/comment) (raw pass, confidence 0.45)

    	const input = '👨\u001B[31m⟨U+200D⟩👩⟨U+200D⟩👧⟨U+200D⟩👦\tX';
    	assert.equal(wrapAnsi(input, 30, {trim: false}), '👨\u001B[31m⟨U+200D⟩👩⟨U+200D⟩👧⟨U+200D⟩👦      X');
    });

Reproduce This Scan

Run disclude locally to verify. Add --format sarif for SARIF output. Add --llm (with an API key in the environment) to include the LLM review.

cargo install disclude --version 4.0.0
git clone https://github.com/chalk/wrap-ansi wrap-ansi && cd wrap-ansi
git checkout v10.0.2
disclude scan --severity info --diff v10.0.1 .