npm / fast-uri / 4.2.3

fast-uri 4.2.3

Source
https://github.com/fastify/fast-uri
Tag scanned
v4.2.3
Compared with
v4.2.2 (0 signals introduced since)
Files
44 scanned, 5 skipped (binary, oversized, or unrecognised)
Signals
0 critical · 0 warn · 8 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-20 00:25

Signals

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

  1. info unicode-surrogate lib/schemes.js:284:57

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

      const escaped = chars.replace(/[\\\]^-]/gu, '\\$&')
      const cls = allowNonAscii ? `[${escaped}]|[^\\0-\\x7F\\uD800-\\uDFFF]` : `[${escaped}]`
      return { all: new RegExp(`^(?:${cls})*$`, 'u'), table, allowNonAscii }
    }
  2. info unicode-surrogate lib/schemes.js:284:65

    orphaned low surrogate \uDFFF (no preceding high surrogate) (token pass, confidence 0.65)

      const escaped = chars.replace(/[\\\]^-]/gu, '\\$&')
      const cls = allowNonAscii ? `[${escaped}]|[^\\0-\\x7F\\uD800-\\uDFFF]` : `[${escaped}]`
      return { all: new RegExp(`^(?:${cls})*$`, 'u'), table, allowNonAscii }
    }
  3. identifier `Kſ` mixes scripts: Other + Latin (in string/comment) (raw pass, confidence 0.40)

      t.equal(
        fastURI.serialize({ query: 'Kſ' }),
        '?%E2%84%AA%C5%BF',
        'Unicode characters that case-fold to ASCII are still UTF-8 encoded'
  4. info unicode-surrogate test/parse.test.js:387:17

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

      // the generic query/path normalizers no longer run to do it.
      const lone = '\uD800'
      const trailing = '\uDC00'
  5. info unicode-surrogate test/parse.test.js:388:21

    orphaned low surrogate \uDC00 (no preceding high surrogate) (token pass, confidence 0.65)

      const lone = '\uD800'
      const trailing = '\uDC00'
    
      t.deepEqual(
  6. identifier `Kſ` mixes scripts: Other + Latin (in string/comment) (raw pass, confidence 0.40)

      t.equal(
        fastURI.normalize('http://example.com/Kſ'),
        'http://example.com/%E2%84%AA%C5%BF',
        'UTF-8 encodes Unicode characters that case-fold to ASCII'
  7. identifier `Kſ` mixes scripts: Other + Latin (in string/comment) (raw pass, confidence 0.40)

      t.equal(
        fastURI.serialize({ path: '/Kſ' }),
        '/%E2%84%AA%C5%BF',
        'UTF-8 encodes Unicode characters that case-fold to ASCII'
  8. info unicode-mixed-script test/scheme-validation.test.js:17:4

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

      'éxample:value',
      'Kttp://example.com/',
      'ſcheme:value',
      // RFC 3986 section 3.1 does not allow percent-encoding in a scheme.

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/fastify/fast-uri fast-uri && cd fast-uri
git checkout v4.2.3
disclude scan --severity info --diff v4.2.2 .