npm / string-width / 8.3.0

string-width 8.3.0

Source
https://github.com/sindresorhus/string-width
Tag scanned
v8.3.0
Compared with
v8.2.2 (0 signals introduced since)
Files
6 scanned, 1 skipped (binary, oversized, or unrecognised)
Signals
0 critical · 0 warn · 6 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.1.0
Scanned (UTC)
2026-10-22 10:06

Signals

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

  1. info unicode-mixed-script test.js:45:83

    identifier `ꥠᅡ` mixes scripts: Other + Hangul (in string/comment) (raw pass, confidence 0.40)

    test('leading jamo followed by trailing jamo without vowel does not compose', macro, 'ᄀᆨ', 3);
    test('extended leading jamo U+A960 + standard vowel composes to width 2', macro, 'ꥠᅡ', 2);
    test('standard leading jamo + extended vowel U+D7B0 composes to width 2', macro, 'ᄀힰ', 2);
  2. info unicode-mixed-script test.js:46:83

    identifier `ᄀힰ` mixes scripts: Hangul + Other (in string/comment) (raw pass, confidence 0.40)

    test('extended leading jamo U+A960 + standard vowel composes to width 2', macro, 'ꥠᅡ', 2);
    test('standard leading jamo + extended vowel U+D7B0 composes to width 2', macro, 'ᄀힰ', 2);
    test('extended leading + standard vowel + standard trailing composes to width 2', macro, 'ꥠᅡᆨ', 2);
  3. info unicode-mixed-script test.js:47:91

    identifier `ꥠᅡᆨ` mixes scripts: Other + Hangul (in string/comment) (raw pass, confidence 0.40)

    test('standard leading jamo + extended vowel U+D7B0 composes to width 2', macro, 'ᄀힰ', 2);
    test('extended leading + standard vowel + standard trailing composes to width 2', macro, 'ꥠᅡᆨ', 2);
    test('Hangul Compatibility Jamo is full-width via EAW', macro, 'ㄱ', 2);
  4. info unicode-mixed-script test.js:96:41

    identifier `Cه` mixes scripts: Latin + Arabic (in string/comment) (raw pass, confidence 0.40)

    test('ZWJ alone', macro, '\u200D', 0);
    test('Arabic with ZWNJ', macro, 'ب\u200Cه', 2);
    test('multiple ZWNJ between ASCII', macro, 'a\u200C\u200Cb', 2);
    test('Indic conjunct via ZWJ', macro, 'क्\u200Dष', 1);
  5. info unicode-mixed-script test.js:98:51

    identifier `Dष` mixes scripts: Latin + Other (in string/comment) (raw pass, confidence 0.40)

    test('multiple ZWNJ between ASCII', macro, 'a\u200C\u200Cb', 2);
    test('Indic conjunct via ZWJ', macro, 'क्\u200Dष', 1);
    
    // Combining characters
  6. info unicode-surrogate test.js:165:37

    orphaned high surrogate \uD800 (no matching low surrogate) (token pass, confidence 0.65)

    test('only zero-width characters', macro, '\u200B\u200C\u200D', 0);
    test('malformed surrogate', macro, '\uD800', 0);
    test('mixed control and text', macro, 'a\u0000b\u0001c', 3);
    test('double-width with combining', macro, '你\u0301好', 4);

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.1.0
git clone https://github.com/sindresorhus/string-width string-width && cd string-width
git checkout v8.3.0
disclude scan --severity info --diff v8.2.2 .